# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1273584462 -10800 # Node ID 3d340a0166ff572e4061f9eaa4cc079eb3f65837 # Parent 0aa5fbdfbc30309953f5c41c7ddefcd8ef688401 Revision: 201017 Kit: 201019 diff -r 0aa5fbdfbc30 -r 3d340a0166ff CommonAdapter/inc/GlobalNoteImpl.h --- a/CommonAdapter/inc/GlobalNoteImpl.h Tue Apr 27 16:55:05 2010 +0300 +++ b/CommonAdapter/inc/GlobalNoteImpl.h Tue May 11 16:27:42 2010 +0300 @@ -22,7 +22,7 @@ // INCLUDES #include #include -#include +#include // CLASS DECLARATION diff -r 0aa5fbdfbc30 -r 3d340a0166ff CommonAdapter/src/GlobalNote.cpp --- a/CommonAdapter/src/GlobalNote.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/CommonAdapter/src/GlobalNote.cpp Tue May 11 16:27:42 2010 +0300 @@ -17,7 +17,7 @@ // INCLUDE FILES -#include +#include #include // For softkey resources #include "GlobalNoteImpl.h" diff -r 0aa5fbdfbc30 -r 3d340a0166ff akntouchgesturefw/cenrep/2002676F.txt Binary file akntouchgesturefw/cenrep/2002676F.txt has changed diff -r 0aa5fbdfbc30 -r 3d340a0166ff akntouchgesturefw/conf/s60/akntouchgesturefw.confml Binary file akntouchgesturefw/conf/s60/akntouchgesturefw.confml has changed diff -r 0aa5fbdfbc30 -r 3d340a0166ff akntouchgesturefw/inc/akntouchgesturefwdefs.h --- a/akntouchgesturefw/inc/akntouchgesturefwdefs.h Tue Apr 27 16:55:05 2010 +0300 +++ b/akntouchgesturefw/inc/akntouchgesturefwdefs.h Tue May 11 16:27:42 2010 +0300 @@ -47,7 +47,7 @@ const TInt KTapThreshold = 20; /// Pixel threshold value used for deciding if pointer has been dragged. -const TInt KDefaultDragThreshold = 20; +const TInt KDefaultDragThreshold = 40; /// Initial threshold for pinch. This is used when both pointers are /// just set down. diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_plat/avkon_localised_texts_api/loc/avkon.loc --- a/classicui_plat/avkon_localised_texts_api/loc/avkon.loc Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_plat/avkon_localised_texts_api/loc/avkon.loc Tue May 11 16:27:42 2010 +0300 @@ -4304,4 +4304,18 @@ //r: 5.0 #define qtn_activate_korean_mode "Korean mode" +//d:Command in options menu. +//d:Mark multiple -operation. Launches list multiple marking mode. +//l:list_single_pane_t1_cp2/opt3 +//r: TB9.2 +// +#define qtn_options_list_mark_multiple "Mark multiple" + +//d: Text shown in navi pane when phone is in marking mode +//l: navi_text_pane_t1 +//r: TB9.2 +// +#define qtn_navi_pane_marking_mode "Marking mode" + // End of File + diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_plat/avkon_secondary_display_api/group/bld.inf --- a/classicui_plat/avkon_secondary_display_api/group/bld.inf Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_plat/avkon_secondary_display_api/group/bld.inf Tue May 11 16:27:42 2010 +0300 @@ -24,4 +24,4 @@ PRJ_EXPORTS -../inc/SecondaryDisplay/AknSecondaryDisplayDefs.h MW_LAYER_PLATFORM_EXPORT_PATH(SecondaryDisplay/AknSecondaryDisplayDefs.h) +../inc/SecondaryDisplay/AknSecondaryDisplayDefs.h MW_LAYER_PLATFORM_EXPORT_PATH(secondarydisplay/AknSecondaryDisplayDefs.h) diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_plat/extended_dialogs_api/inc/EikDialogExt.h --- a/classicui_plat/extended_dialogs_api/inc/EikDialogExt.h Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_plat/extended_dialogs_api/inc/EikDialogExt.h Tue May 11 16:27:42 2010 +0300 @@ -109,6 +109,8 @@ public: TBitFlags iPublicFlags; TBool iInitialMade; + TInt iButtonGroupResourceId; + TBool iDeleteEmbeddedCba; } ; diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_plat/extended_notifiers_api/inc/aknkeylocknotifier.h --- a/classicui_plat/extended_notifiers_api/inc/aknkeylocknotifier.h Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_plat/extended_notifiers_api/inc/aknkeylocknotifier.h Tue May 11 16:27:42 2010 +0300 @@ -98,8 +98,8 @@ CAknKeyLockControl(); ~CAknKeyLockControl(); void ConstructL(); - void EnableKeylock(TBool aShowNote = ETrue); - void DisableKeylock(); + void EnableKeylock(TBool aShowNote = ETrue, TBool aNotifySysApp = ETrue); + void DisableKeylock(TBool aNotifySysApp = ETrue); void OfferKeylock(); void DisplayLockedNote(); diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_plat/extended_options_menu_api/inc/akncollection.h --- a/classicui_plat/extended_options_menu_api/inc/akncollection.h Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_plat/extended_options_menu_api/inc/akncollection.h Tue May 11 16:27:42 2010 +0300 @@ -61,6 +61,17 @@ }; /** + * Enum for collection extension types. + */ + enum TExtensionType + { + /** + * Collection supports multiple marking mode + */ + EAknMarkingCollection = 1 + }; + + /** * Returns the collection state. The state is combination of * flags defined in @c TStateFlag. * @@ -85,4 +96,89 @@ TUint aExtensionId, TAny*& a0, TAny* a1 ) = 0; }; + +/** + * Collection marking mode handler. + * + * This interface is intended for those collections that implement + * multiple marking mode and wish to use mode directly from options menu. + * + * @lib eikcoctl + * @since S60 v5.2 + */ +class MAknMarkingCollection + { +public: + + /** + * Extension type. + */ + enum { TYPE = MAknCollection::EAknMarkingCollection }; + + /** + * Enum for collection state flags. + */ + enum TStateFlag + { + /** + * Collection is in multiple marking mode. + */ + EStateMarkingMode = 0x00000001, + /** + * Collection has marked items. + */ + EStateMarkedItems = 0x00000002, + /** + * Collection is empty + */ + EStateCollectionEmpty = 0x00000004 + }; + + /** + * Sets multiple marking state. + * + * @param aActive ETrue if multiple marking should be active. + */ + virtual void SetMultipleMarkingState( TBool aActive ) = 0; + + /** + * Request to end marking mode + * + * @return ETrue if marking mode can be ended + */ + virtual TBool ExitMarkingMode() = 0; + + /** + * Returns the collection marking state. The state is combination of + * flags defined in @c TStateFlag. + * + * @return Marking state. + */ + virtual TUint MarkingState() const = 0; + + /** + * Marks the currently selected item. + */ + virtual void MarkCurrentItemL() = 0; + + /** + * Marks all items in the collection. + */ + virtual void MarkAllL() = 0; + + /** + * Unmarks all items in the collection. + */ + virtual void UnmarkAll() = 0; + + /* + * Can current item be marked + * + * @return ETrue if item is markable + */ + virtual TBool CurrentItemMarkable() = 0; + + }; + #endif // M_AKNCOLLECTION_H + diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_plat/extended_options_menu_api/inc/aknitemactionmenu.h --- a/classicui_plat/extended_options_menu_api/inc/aknitemactionmenu.h Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_plat/extended_options_menu_api/inc/aknitemactionmenu.h Tue May 11 16:27:42 2010 +0300 @@ -27,6 +27,7 @@ class CAknStylusPopUpMenu; class CEikMenuBar; class CAknItemActionMenuData; +class CAknMarkingMode; /** * Item action menu. @@ -222,6 +223,14 @@ */ MObjectProvider* Owner() const; + /** + * Provides marking mode handler. + * + * @internal + * @return Marking mode handler. + */ + CAknMarkingMode& MarkingMode(); + private: /** @@ -328,6 +337,12 @@ * Not own */ MObjectProvider* iOwner; + + /** + * Multiple marking handler. + * Own. + */ + CAknMarkingMode* iMarking; }; #endif // C_AKNITEMACTIONMENU_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_plat/find_item_ui_api/inc/finditemdialog.h --- a/classicui_plat/find_item_ui_api/inc/finditemdialog.h Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_plat/find_item_ui_api/inc/finditemdialog.h Tue May 11 16:27:42 2010 +0300 @@ -59,6 +59,7 @@ class CRichTextEditorContainer; class CSendUi; class CItemFinderExtension; +class MTouchFeedback; // CLASS DECLARATION @@ -167,6 +168,14 @@ * @return CAknDialog::ExecuteLD() */ IMPORT_C TInt ExecuteLD(); + + /** + * Enable single click + * @since S60 5.2 + * @param aEnable Enables single click. + * Disabled by default. + */ + IMPORT_C void EnableSingleClick ( TBool aEnable ); public: // Functions from base classes /** @@ -179,6 +188,13 @@ IMPORT_C TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); + + /** + * From CCoeControl + * Handle pointer events. + * @param aPointerEvent information about the pointerevent + */ + void HandlePointerEventL ( const TPointerEvent& aPointerEvent ); protected: // Functions from base classes @@ -424,6 +440,26 @@ */ void CreateInternetCallL(); + /** + * Handles pointer events in single click mode. + * + * @param aPointerEvent information about the pointerevent + */ + void DoHandlePointerEventL ( const TPointerEvent& aPointerEvent ); + + /** + * Returns ETrue if current item has visible highlight + * + * @return ETrue if current item has visible highlight + */ + TBool CurrentItemHasHighlight(); + + /** + * Highlights current item. + */ + void HighlightCurrentItem(); + + private: //data // Pointer to controller which controls engine and dialog CFindItemController* iController; @@ -507,8 +543,17 @@ // Rows used in viewer. TInt iRows; - CItemFinderExtension* iExtension; + CItemFinderExtension* iExtension; + + // Last tapped item + TPoint iLastTappedItem; + // Is single click enabled + TBool iSingleClick; + + // Tactile Feedback interface + MTouchFeedback* iFeedback; + public: // new methods void DeleteMeL(); static TInt DeleteMe(TAny* aThis); @@ -516,7 +561,6 @@ private: // new methods void FormatDialDataL( TInt aCommandId ); TBool IsSendKeyCallVoIP() const; - }; #endif // FINDITEMDIALOG_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_plat/find_item_ui_api/tsrc/conf/tctestdomfinditemdialog.cfg --- a/classicui_plat/find_item_ui_api/tsrc/conf/tctestdomfinditemdialog.cfg Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_plat/find_item_ui_api/tsrc/conf/tctestdomfinditemdialog.cfg Tue May 11 16:27:42 2010 +0300 @@ -21,3 +21,9 @@ title TestDialogOfferKeyEventL run testscripter c:\testframework\ui_testdomfinditemdialog.cfg 5 [Endtest] + + +[Test] +title TestDialogEnableSingleClick +run testscripter c:\testframework\ui_testdomfinditemdialog.cfg 6 +[Endtest] diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_plat/find_item_ui_api/tsrc/conf/ui_testdomfinditemdialog.cfg --- a/classicui_plat/find_item_ui_api/tsrc/conf/ui_testdomfinditemdialog.cfg Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_plat/find_item_ui_api/tsrc/conf/ui_testdomfinditemdialog.cfg Tue May 11 16:27:42 2010 +0300 @@ -39,3 +39,9 @@ [Endtest] +[Test] +title TestDialogEnableSingleClick +create testdomfinditem test +test TestDialogEnableSingleClick +delete test +[Endtest] diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_plat/find_item_ui_api/tsrc/group/testdomfinditem.mmp --- a/classicui_plat/find_item_ui_api/tsrc/group/testdomfinditem.mmp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_plat/find_item_ui_api/tsrc/group/testdomfinditem.mmp Tue May 11 16:27:42 2010 +0300 @@ -37,7 +37,7 @@ MW_LAYER_SYSTEMINCLUDE SOURCEPATH ../data - START RESOURCE testdomfineitem.rss + START RESOURCE testdomfinditem.rss HEADER TARGETPATH RESOURCE_FILES_DIR LANGUAGE_IDS diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_plat/find_item_ui_api/tsrc/inc/testdomfinditem.h --- a/classicui_plat/find_item_ui_api/tsrc/inc/testdomfinditem.h Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_plat/find_item_ui_api/tsrc/inc/testdomfinditem.h Tue May 11 16:27:42 2010 +0300 @@ -128,6 +128,14 @@ */ virtual TInt TestDialogOfferKeyEventL( CStifItemParser& aItem ); + /** + * test EnableSingleClick method. + * @since S60 5.2 + * @param aItem never used. + * @return Symbian OS error code. + */ + virtual TInt TestDialogEnableSingleClick( CStifItemParser& aItem ); + private: // test functions in finditemmenu.h /** diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_plat/find_item_ui_api/tsrc/src/testdomfinditem.cpp --- a/classicui_plat/find_item_ui_api/tsrc/src/testdomfinditem.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_plat/find_item_ui_api/tsrc/src/testdomfinditem.cpp Tue May 11 16:27:42 2010 +0300 @@ -105,7 +105,13 @@ EFalse ); _LIT( KResourceFile, "C:\\resource\\testdomfinditem.rsc" ); - iOffset = CCoeEnv::Static()->AddResourceFileL( KResourceFile ); + TRAPD ( err, iOffset = CCoeEnv::Static()->AddResourceFileL( KResourceFile ) ); + + if ( KErrNone != err ) + { + _LIT( KZResourceFile, "Z:\\resource\\testdomfinditem.rsc" ); + iOffset = CCoeEnv::Static()->AddResourceFileL( KZResourceFile ); + } SendTestClassVersion(); diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_plat/find_item_ui_api/tsrc/src/testdomfinditemblocks.cpp --- a/classicui_plat/find_item_ui_api/tsrc/src/testdomfinditemblocks.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_plat/find_item_ui_api/tsrc/src/testdomfinditemblocks.cpp Tue May 11 16:27:42 2010 +0300 @@ -44,6 +44,7 @@ ENTRY( "TestDialogExecuteLD", Ctestdomfinditem::TestDialogExecuteLDL ), ENTRY( "TestDialogProcessCommandL", Ctestdomfinditem::TestDialogProcessCommandL ), ENTRY( "TestDialogOfferKeyEventL", Ctestdomfinditem::TestDialogOfferKeyEventL ), + ENTRY( "TestDialogEnableSingleClick", Ctestdomfinditem::TestDialogEnableSingleClick ), // test functions in finditemmenu.h ENTRY( "TestMenuNewL", Ctestdomfinditem::TestMenuNewL ), diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_plat/find_item_ui_api/tsrc/src/testdomfinditemblocksdialog.cpp --- a/classicui_plat/find_item_ui_api/tsrc/src/testdomfinditemblocksdialog.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_plat/find_item_ui_api/tsrc/src/testdomfinditemblocksdialog.cpp Tue May 11 16:27:42 2010 +0300 @@ -131,3 +131,29 @@ } + +// ----------------------------------------------------------------------------- +// Ctestdomfinditem::TestDialogEnableSingleClick +// ----------------------------------------------------------------------------- +// +TInt Ctestdomfinditem::TestDialogEnableSingleClick( CStifItemParser& /*aItem*/ ) + { + // Print to UI + _LIT( Ktestdomfinditem, "testdomfinditem" ); + _LIT( KTestEnableSingleClick, "In DialogEnableSingleClick" ); + TestModuleIf().Printf( 0, Ktestdomfinditem, KTestEnableSingleClick ); + // Print to log file + iLog->Log( KTestEnableSingleClick ); + + CFindItemDialog* dialog = CFindItemDialog::NewL( KUrlDes, + CFindItemEngine::EFindItemSearchURLBin ); + CleanupStack::PushL( dialog ); + STIF_ASSERT_NOT_NULL( dialog ); + + dialog->EnableSingleClick ( EFalse ); + dialog->EnableSingleClick ( ETrue ); + + CleanupStack::PopAndDestroy( dialog ); + return KErrNone; + } + diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_plat/ganes_api/inc/ganes/HgVgMediaWall.h --- a/classicui_plat/ganes_api/inc/ganes/HgVgMediaWall.h Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_plat/ganes_api/inc/ganes/HgVgMediaWall.h Tue May 11 16:27:42 2010 +0300 @@ -793,9 +793,7 @@ CAlfCompositionSource* iCompositionSource; - CFbsBitmap* iSurfaceBitmap; CPeriodic* iDelayedInit; - TBool iFirstTime; diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_plat/item_finder_api/inc/ItemFinder.h --- a/classicui_plat/item_finder_api/inc/ItemFinder.h Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_plat/item_finder_api/inc/ItemFinder.h Tue May 11 16:27:42 2010 +0300 @@ -37,6 +37,7 @@ class MAknItemFinderObserver; class CCoeEnv; class CCoeControl; +class MTouchFeedback; // CLASS DECLARATION class MItemFinderObserver @@ -395,6 +396,11 @@ * Drag threshold */ TInt iDragThreshold; + + /** + * Tactile Feedback interface + */ + MTouchFeedback* iFeedback; }; diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_plat/stylus_activated_popup_api/tsrc/inc/testdomstylusactivepopup.h --- a/classicui_plat/stylus_activated_popup_api/tsrc/inc/testdomstylusactivepopup.h Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_plat/stylus_activated_popup_api/tsrc/inc/testdomstylusactivepopup.h Tue May 11 16:27:42 2010 +0300 @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include "testdomstylusactivepopupcontainer.h" diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/animation_api/tsrc/src/testsdkanimationblocks.cpp --- a/classicui_pub/animation_api/tsrc/src/testsdkanimationblocks.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/animation_api/tsrc/src/testsdkanimationblocks.cpp Tue May 11 16:27:42 2010 +0300 @@ -27,7 +27,7 @@ #include #include #include -#include +#include #include #include "testsdkacontrol.h" diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/buttons_api/inc/eikcba.h --- a/classicui_pub/buttons_api/inc/eikcba.h Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/buttons_api/inc/eikcba.h Tue May 11 16:27:42 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -950,6 +950,17 @@ */ void UpdateItemSpecificSoftkey( TBool aVisibleCollection = ETrue ); + /** + * Updates RSK when multiple marking is activated or deactivated. + */ + void UpdateMultipleMarkingSoftkey(); + + /** + * Checks wheter softkey command change is allowed. + * + * @return ETrue if softkey command change is allowed. + */ + TBool CommandChangeAllowed(); private: // new methods @@ -1007,11 +1018,6 @@ * to CEikCbaButtons. */ void BroadcastPostingTransparency( TBool aEnable ); - - /** - * Sets the CBA fading according to button content. - */ - void SetFadeState(); /** * A better version of AddCommandToStackL diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/buttons_api/tsrc/src/testsdkbuttonsblockseikcba.cpp --- a/classicui_pub/buttons_api/tsrc/src/testsdkbuttonsblockseikcba.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/buttons_api/tsrc/src/testsdkbuttonsblockseikcba.cpp Tue May 11 16:27:42 2010 +0300 @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/document_handler_api/tsrc/inc/testsdkdocumenthandlerobserver.h --- a/classicui_pub/document_handler_api/tsrc/inc/testsdkdocumenthandlerobserver.h Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/document_handler_api/tsrc/inc/testsdkdocumenthandlerobserver.h Tue May 11 16:27:42 2010 +0300 @@ -18,7 +18,7 @@ #ifndef C_TESTSDKDOCUMENTHANDLEROBSERVER_H #define C_TESTSDKDOCUMENTHANDLEROBSERVER_H -#include +#include class CTestSDKDocumentHandlerObserver : public CBase, public MAknServerAppExitObserver diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/editors_api/inc/EIKEDWIN.H --- a/classicui_pub/editors_api/inc/EIKEDWIN.H Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/editors_api/inc/EIKEDWIN.H Tue May 11 16:27:42 2010 +0300 @@ -3057,6 +3057,13 @@ * context. */ void DrawViewBackground( TBool aStart ) const; + + /** + * Returns ETrue if editor content fits to view rect. + * + * @return ETrue if editor content fits to view rect. + */ + TBool ContentFitsToViewRect() const; protected: diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/editors_api/tsrc/conf/tctestsdkeditorsedwin.cfg --- a/classicui_pub/editors_api/tsrc/conf/tctestsdkeditorsedwin.cfg Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/editors_api/tsrc/conf/tctestsdkeditorsedwin.cfg Tue May 11 16:27:42 2010 +0300 @@ -987,3 +987,8 @@ title TestEEnableKineticScrollingL run testscripter c:\testframework\ui_testsdkeditorsedwin.cfg 199 [Endtest] + +[Test] +title TestEEnableKineticScrollingPhysicsL +run testscripter c:\testframework\ui_testsdkeditorsedwin.cfg 200 +[Endtest] \ No newline at end of file diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/editors_api/tsrc/conf/ui_testsdkeditorsedwin.cfg --- a/classicui_pub/editors_api/tsrc/conf/ui_testsdkeditorsedwin.cfg Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/editors_api/tsrc/conf/ui_testsdkeditorsedwin.cfg Tue May 11 16:27:42 2010 +0300 @@ -2210,3 +2210,11 @@ sendtobackground [Endtest] +[Test] +title TestEEnableKineticScrollingPhysicsL +create testsdkeditors test +bringtoforeground +test TestEEnableKineticScrollingPhysicsL +delete test +sendtobackground +[Endtest] \ No newline at end of file diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/editors_api/tsrc/group/testsdkeditors.mmp --- a/classicui_pub/editors_api/tsrc/group/testsdkeditors.mmp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/editors_api/tsrc/group/testsdkeditors.mmp Tue May 11 16:27:42 2010 +0300 @@ -120,6 +120,7 @@ LIBRARY fbscli.lib LIBRARY print.lib LIBRARY apparc.lib +LIBRARY aknphysics.lib LANG SC diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/editors_api/tsrc/inc/testsdkeditors.h --- a/classicui_pub/editors_api/tsrc/inc/testsdkeditors.h Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/editors_api/tsrc/inc/testsdkeditors.h Tue May 11 16:27:42 2010 +0300 @@ -27,6 +27,7 @@ #include #include #include +#include #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS #include #endif //SYMBIAN_ENABLE_SPLIT_HEADERS @@ -3203,6 +3204,30 @@ */ virtual TInt TestEEnableKineticScrollingL( CStifItemParser& aItem ); + /** + * TPhysicsObserver test class for testing the + * kinetic scrolling feature of CEikEdwin. + */ + NONSHARABLE_CLASS (TPhysicsObserver) : public MAknPhysicsObserver + { + public: + + void ViewPositionChanged( const TPoint& aNewPosition, + TBool aDrawNow, TUint aFlags ); + void PhysicEmulationEnded(); + TPoint ViewPosition() const; + }; + + /** + * TestEEnableKineticScrollingPhysicsL test function for testing the + * kinetic scrolling feature of CEikEdwin. + * + * @since S60 5.2 + * @param aItem never used + * @return Symbian OS error code. + */ + virtual TInt TestEEnableKineticScrollingPhysicsL( CStifItemParser& aItem ); + //EikGTED.h /* class CEikGlobalTextEditor */ /** diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/editors_api/tsrc/src/testsdkeditorsblocks.cpp --- a/classicui_pub/editors_api/tsrc/src/testsdkeditorsblocks.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/editors_api/tsrc/src/testsdkeditorsblocks.cpp Tue May 11 16:27:42 2010 +0300 @@ -661,6 +661,7 @@ ENTRY( "TestMFNETOEHandlePointerEventL", CTestSDKEditors::TestMFNETOEHandlePointerEventL ), ENTRY( "TestEikEdwinSmileyInputL", CTestSDKEditors::TestEikEdwinSmileyInputL ), ENTRY( "TestEEnableKineticScrollingL", CTestSDKEditors::TestEEnableKineticScrollingL ), + ENTRY( "TestEEnableKineticScrollingPhysicsL", CTestSDKEditors::TestEEnableKineticScrollingPhysicsL ), }; const TInt count = sizeof( KFunctions ) / sizeof( TStifFunctionInfo ); diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/editors_api/tsrc/src/testsdkeditorsblocksedwin.cpp --- a/classicui_pub/editors_api/tsrc/src/testsdkeditorsblocksedwin.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/editors_api/tsrc/src/testsdkeditorsblocksedwin.cpp Tue May 11 16:27:42 2010 +0300 @@ -36,6 +36,7 @@ #include #include #include +#include #include @@ -6027,3 +6028,127 @@ return err; } + +// ----------------------------------------------------------------------------- +// CTestSDKEditors::TPhysicsObserver::ViewPositionChanged +// ----------------------------------------------------------------------------- +// +void CTestSDKEditors::TPhysicsObserver::ViewPositionChanged( + const TPoint& /*aNewPosition*/, TBool /*aDrawNow*/, TUint /*aFlags*/ ) + { + } + + +// ----------------------------------------------------------------------------- +// CTestSDKEditors::TPhysicsObserver::PhysicEmulationEnded +// ----------------------------------------------------------------------------- +// +void CTestSDKEditors::TPhysicsObserver::PhysicEmulationEnded() + { + } + + +// ----------------------------------------------------------------------------- +// CTestSDKEditors::TPhysicsObserver::ViewPosition +// ----------------------------------------------------------------------------- +// +TPoint CTestSDKEditors::TPhysicsObserver::ViewPosition() const + { + TPoint point (0,0); + return point; + } + + +// ----------------------------------------------------------------------------- +// CTestSDKEditors::TestEEnableKineticScrollingPhysicsL +// ----------------------------------------------------------------------------- +// +TInt CTestSDKEditors::TestEEnableKineticScrollingPhysicsL( CStifItemParser& + /*aItem*/ ) + { + CTestEditorsControl* control = CTestEditorsControl::NewL(); + CleanupStack::PushL( control ); + STIF_ASSERT_NOT_NULL( control ); + + CTestSDKEditorsEdwin* edwin = new ( ELeave ) CTestSDKEditorsEdwin; + CleanupStack::PushL( edwin ); + STIF_ASSERT_NOT_NULL( edwin ); + // Enable kinetic scrolling + + TPhysicsObserver obs; + CAknPhysics* physics ( NULL ); + STIF_ASSERT_TRUE ( CAknPhysics::FeatureEnabled() ); + + physics = CAknPhysics::NewL( obs, control ); + CleanupStack::PushL( physics ); + + edwin->EnableKineticScrollingL( physics ); + edwin->SetContainerWindowL( *control ); + + TResourceReader reader; + CCoeEnv::Static()->CreateResourceReaderLC( reader, R_TESTSDK_EDWIN ); + edwin->ConstructFromResourceL( reader ); + CleanupStack::PopAndDestroy(); + + // CreateLayoutL + CParaFormatLayer* paraFormatLayer = CParaFormatLayer::NewL(); + CleanupStack::PushL( paraFormatLayer ); + CCharFormatLayer* charFormatLayer = CCharFormatLayer::NewL(); + CleanupStack::PushL( charFormatLayer ); + CGlobalText * globalText = + CGlobalText::NewL( paraFormatLayer, charFormatLayer ); + CleanupStack::PushL( globalText ); + edwin->CreateLayoutL( globalText ); + CleanupStack::Pop( globalText ); + CleanupStack::Pop( charFormatLayer ); + CleanupStack::Pop( paraFormatLayer ); + + edwin->CreateTextViewL(); + + // SetTextL + _LIT( KText, "one text" ); + TBuf text( KText ); + edwin->SetTextL( &text ); + + edwin->ForceScrollBarUpdateL(); + edwin->HandleSizeChangedL(); + + // Set selection + const TInt KSelectionPosition( 2 ); + edwin->SetSelectionL( 0, KSelectionPosition ); + TCursorSelection cursorSelection( 0, KSelectionPosition ); + STIF_ASSERT_TRUE( + cursorSelection.iCursorPos == edwin->Selection().iCursorPos ); + STIF_ASSERT_TRUE( + cursorSelection.iAnchorPos == edwin->Selection().iAnchorPos ); + edwin->ClearSelectionL(); + STIF_ASSERT_TRUE( 0 == edwin->Selection().iCursorPos ); + + edwin->MoveCursorL( TCursorPosition::EFRight, ETrue ); + STIF_ASSERT_FALSE( edwin->IdleL( edwin ) ); + + // HandlePointerEventL + TPointerEvent event; + event.iType = TPointerEvent::EButton1Down; + edwin->HandlePointerEventL( event ); + + // HandleScrollEventL + CEikScrollBar* scrollBar = new ( ELeave ) CEikScrollBar; + CleanupStack::PushL( scrollBar ); + STIF_ASSERT_NOT_NULL( scrollBar ); + scrollBar->ConstructL( static_cast( edwin ), + control, + CEikScrollBar::EVertical, + KLength, + CEikScrollBar::EEikScrollBarDefaultBehaviour ); + TAknDoubleSpanScrollBarModel doubleModel; + scrollBar->SetModel( &doubleModel ); + edwin->HandleScrollEventL( scrollBar, EEikScrollThumbDragHoriz ); + CleanupStack::PopAndDestroy( scrollBar ); + + CleanupStack::PopAndDestroy( physics ); + CleanupStack::PopAndDestroy( edwin ); + CleanupStack::PopAndDestroy( control ); + + return KErrNone; + } diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/editors_api/tsrc/src/testsdkeditorsblocksnumedwin.cpp --- a/classicui_pub/editors_api/tsrc/src/testsdkeditorsblocksnumedwin.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/editors_api/tsrc/src/testsdkeditorsblocksnumedwin.cpp Tue May 11 16:27:42 2010 +0300 @@ -19,11 +19,11 @@ // [INCLUDE FILES] -#include +#include #include #include #include -#include +#include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/editors_api/tsrc/src/testsdkeditorsblockssecrettext.cpp --- a/classicui_pub/editors_api/tsrc/src/testsdkeditorsblockssecrettext.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/editors_api/tsrc/src/testsdkeditorsblockssecrettext.cpp Tue May 11 16:27:42 2010 +0300 @@ -29,7 +29,7 @@ #include #include #include -#include +#include #include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/hierarchical_lists_api/inc/akntreelist.h --- a/classicui_pub/hierarchical_lists_api/inc/akntreelist.h Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/hierarchical_lists_api/inc/akntreelist.h Tue May 11 16:27:42 2010 +0300 @@ -24,6 +24,7 @@ #include #include #include // TScaleMode +#include class CAknTree; class CAknTreeListView; @@ -920,6 +921,15 @@ */ IMPORT_C void SetEmptyTextL(const TDesC& aText); + /** + * Sets the marking mode observer. + * + * @since S60 5.2 + * + * @param aObserver Marking mode observer, @c NULL removes the existing + * observer. + */ + IMPORT_C void SetMarkingModeObserver( MAknMarkingModeObserver* aObserver ); // From base class CCoeControl @@ -1009,6 +1019,15 @@ */ CCoeControl* ComponentControl( TInt aIndex ) const; + /** + * Returns the marking mode observer. + * + * @since S60 5.2 + * + * @return Pointer to the marking mode observer. + */ + MAknMarkingModeObserver* MarkingModeObserver(); + protected: /** @@ -1133,6 +1152,10 @@ */ TInt iIndex; + /** + * Marking mode observer + */ + MAknMarkingModeObserver* iMarkingModeObserver; }; diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/hierarchical_lists_api/tsrc/src/testsdkhierarchicallistsblockstl.cpp --- a/classicui_pub/hierarchical_lists_api/tsrc/src/testsdkhierarchicallistsblockstl.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/hierarchical_lists_api/tsrc/src/testsdkhierarchicallistsblockstl.cpp Tue May 11 16:27:42 2010 +0300 @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include "testsdkhierarchicallists.h" #include "testsdkhierarchicallistsordering.h" diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/labels_api/tsrc/src/testsdklabelsblockslabel.cpp --- a/classicui_pub/labels_api/tsrc/src/testsdklabelsblockslabel.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/labels_api/tsrc/src/testsdklabelsblockslabel.cpp Tue May 11 16:27:42 2010 +0300 @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/labels_api/tsrc/src/testsdklabelslblocksfilename.cpp --- a/classicui_pub/labels_api/tsrc/src/testsdklabelslblocksfilename.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/labels_api/tsrc/src/testsdklabelslblocksfilename.cpp Tue May 11 16:27:42 2010 +0300 @@ -20,7 +20,7 @@ // [INCLUDE FILES] #include -#include +#include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/lists_api/group/bld.inf --- a/classicui_pub/lists_api/group/bld.inf Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/lists_api/group/bld.inf Tue May 11 16:27:42 2010 +0300 @@ -43,3 +43,4 @@ ../inc/EIKLBD.H MW_LAYER_PUBLIC_EXPORT_PATH(eiklbd.h) ../inc/AknSelectionList.h MW_LAYER_PUBLIC_EXPORT_PATH(aknselectionlist.h) ../inc/EIKLBO.H MW_LAYER_PUBLIC_EXPORT_PATH(eiklbo.h) +../inc/aknmarkingmodeobserver.h MW_LAYER_PUBLIC_EXPORT_PATH(aknmarkingmodeobserver.h) diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/lists_api/inc/EIKCLB.H --- a/classicui_pub/lists_api/inc/EIKCLB.H Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/lists_api/inc/EIKCLB.H Tue May 11 16:27:42 2010 +0300 @@ -199,15 +199,6 @@ protected: - /** - * Draw the item background. - * - * Internal member, not intended for use. - * - * @param aRect Drawing area. - */ - void DrawCurrentItemRect(const TRect& aRect) const; - /** * Array of properties. */ diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/lists_api/inc/EIKLBI.H --- a/classicui_pub/lists_api/inc/EIKLBI.H Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/lists_api/inc/EIKLBI.H Tue May 11 16:27:42 2010 +0300 @@ -326,7 +326,31 @@ /** * This flag indicates that simley icon is enabled. */ - EDrawSmileyIcon = 0x0100 + EDrawSmileyIcon = 0x0100, + + /** + * This flag indicates that marking mode is enabled. + */ + EMarkingModeEnabled = 0x0200, + + /** + * If set then itemdrawer draws the whole list area's background in one + * frame while scrolling. Normally background is drawn separately for + * each list item. + */ + EDrawWholeBackground = 0x0400, + + /** + * Always set unless client application has implemented a custom item + * drawer that overrides background drawing code. + */ + ENativeImplementation = 0x0800, + + /** + * This flag is used during scrolling to indicate that background has + * been already drawn. + */ + EBackgroundDrawn = 0x1000 }; public: diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/lists_api/inc/EIKLBV.H --- a/classicui_pub/lists_api/inc/EIKLBV.H Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/lists_api/inc/EIKLBV.H Tue May 11 16:27:42 2010 +0300 @@ -846,6 +846,18 @@ * @c EFalse if it's not visible or fully visible. */ IMPORT_C TBool ItemIsPartiallyVisible( TInt aItemIndex ) const; + + /** + * Resets the selection state so that there is nothing selected. + * + * @param aDrawItems Whether or not to draw the items which are + * deselected. + * + * @panic EEikPanicListBoxNoSelIndexArray Panics if selection indexes + * have not been defined for + * this class. + */ + void ClearSelection( TBool aDrawItems ); protected: diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/lists_api/inc/EIKLBX.H --- a/classicui_pub/lists_api/inc/EIKLBX.H Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/lists_api/inc/EIKLBX.H Tue May 11 16:27:42 2010 +0300 @@ -40,6 +40,7 @@ class CMatchBuffer; class CListBoxExt; class CEikListBox; +class MAknMarkingModeObserver; // CLASS DECLARATION @@ -1530,6 +1531,26 @@ */ IMPORT_C TBool IsHighlightEnabled(); + /** + * Turns the marking mode on / off. + * + * @since S60 5.2 + * + * @param aEnable @c ETrue to turn marking mode on + * @c EFalse to turn marking mode off + */ + IMPORT_C void SetMarkingMode( TBool aEnable ); + + /** + * Sets the marking mode observer. + * + * @since S60 5.2 + * + * @param aObserver Marking mode observer, @c NULL removes the existing + * observer. + */ + IMPORT_C void SetMarkingModeObserver( MAknMarkingModeObserver* aObserver ); + private: IMPORT_C virtual void CEikListBox_Reserved(); // listbox use only void HorizontalScroll(TInt aScrollAmountInPixels); @@ -1573,6 +1594,24 @@ */ void UpdateHighlightL( TInt aItemIndex ); + /** + * Checks whether marking mode is on or off. + * + * @since S60 5.2 + * + * @return @c ETrue if marking mode is on, otherwise @c EFalse + */ + TBool MarkingMode() const; + + /** + * Returns the marking mode observer. + * + * @since S60 5.2 + * + * @return Pointer to the marking mode observer. + */ + MAknMarkingModeObserver* MarkingModeObserver(); + public: /** * Sets this control as visible or invisible. diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/lists_api/inc/aknmarkingmodeobserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/classicui_pub/lists_api/inc/aknmarkingmodeobserver.h Tue May 11 16:27:42 2010 +0300 @@ -0,0 +1,51 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Marking mode observer interface. +* +*/ + +#ifndef M_AKNMARKINGMODEOBSERVER_H +#define M_AKNMARKINGMODEOBSERVER_H + +/** + * Collection observer. + * + * This interface is intended for those objects that are interested + * of collection state and need to receive collection notifications. + * + * @lib eikcoctl + * @since S60 v5.2 + */ +class MAknMarkingModeObserver + { +public: + + /** + * This method is called when marking mode is activated or deactivated. + * + * @param aActivated @c ETrue if marking mode was activate, @c EFalse + * if marking mode was deactivated. + */ + virtual void MarkingModeStatusChanged( TBool aActivated ) = 0; + + /** + * This method is called just before marking mode is closed. Client can + * either accept or decline closing. + * + * @return @c ETrue if marking mode should be closed, otherwise @c EFalse. + */ + virtual TBool ExitMarkingMode() const = 0; + }; + +#endif // M_AKNMARKINGMODEOBSERVER_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/lists_api/inc/eikfrlb.h --- a/classicui_pub/lists_api/inc/eikfrlb.h Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/lists_api/inc/eikfrlb.h Tue May 11 16:27:42 2010 +0300 @@ -221,13 +221,6 @@ protected: /** - * Draws current item rectangle. - * - * @param aRect Current item rectangle. - */ - void DrawCurrentItemRect(const TRect& aRect) const; - - /** * @c WordWrapListItem is used with @c CAknDouble* style listboxes. * If listbox does not have 2nd line defined, @c WordWrapListItem * wraps 1st line to 2nd line, if text does not fit to 1st line. diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/lists_api/inc/eikfrlbd.h --- a/classicui_pub/lists_api/inc/eikfrlbd.h Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/lists_api/inc/eikfrlbd.h Tue May 11 16:27:42 2010 +0300 @@ -1061,37 +1061,6 @@ TBool aHighlight) const; /** - * Renders a settings animated highlight. - * - * @param aGc Graphics context used for drawing. - * @param aItemRect the area of the screen for drawing. - * @param aHighlight If @c ETrue highlight is rendered - * if @c EFalse, nothing is done. - */ - void DrawSettingHighlight(CWindowGc &aGc, - const TRect &aItemRect, - TBool aHighlight) const; - - /** - * Renders a popup animated highlight. - * - * @param aGc Graphics context used for drawing. - * @param aItemRect the area of the screen for drawing. - * @param aHighlight If @c ETrue highlight is rendered - * if @c EFalse, nothing is done. - */ - void DrawPopupHighlight(CWindowGc &aGc, - const TRect &aItemRect, - TBool aHighlight) const; - - /** - * Draws a popup frame. - * - * @param aGc Graphics context used for drawing. - */ - void DrawPopupFrame(CWindowGc &aGc) const; - - /** * Disables logical-to-visual conversion in subcells between indexes. * * @param aFirstIndex First subcell not to use logical-to-visual conversion. diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/lists_api/tsrc/src/testsdklistsblockseikclbd.cpp --- a/classicui_pub/lists_api/tsrc/src/testsdklistsblockseikclbd.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/lists_api/tsrc/src/testsdklistsblockseikclbd.cpp Tue May 11 16:27:42 2010 +0300 @@ -29,8 +29,8 @@ #include #include #include -#include -#include +#include +#include #include "testsdklists.h" #include "testsdkcontainer.h" diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/misc_controls_api/inc/EIKCAPC.H --- a/classicui_pub/misc_controls_api/inc/EIKCAPC.H Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/misc_controls_api/inc/EIKCAPC.H Tue May 11 16:27:42 2010 +0300 @@ -35,7 +35,7 @@ #include #include -#include +#include class CEikImage ; class CEikDialogPage; @@ -367,7 +367,7 @@ * If the dialog instance is not registered, them flags set with SetFormFlags() are used. */ void PositionFormComponents(); - void ScrollBackEditor(); + void ScrollBackEditorL(); public: void DrawClosingLine() const; diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/notes_api/tsrc/src/testsdknotesblocksand.cpp --- a/classicui_pub/notes_api/tsrc/src/testsdknotesblocksand.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/notes_api/tsrc/src/testsdknotesblocksand.cpp Tue May 11 16:27:42 2010 +0300 @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/notes_api/tsrc/src/testsdknotesblockseikprogi.cpp --- a/classicui_pub/notes_api/tsrc/src/testsdknotesblockseikprogi.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/notes_api/tsrc/src/testsdknotesblockseikprogi.cpp Tue May 11 16:27:42 2010 +0300 @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/notes_api/tsrc/src/testsdknotesblockssdn.cpp --- a/classicui_pub/notes_api/tsrc/src/testsdknotesblockssdn.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/notes_api/tsrc/src/testsdknotesblockssdn.cpp Tue May 11 16:27:42 2010 +0300 @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include #include "testsdknotesstaticnotedialog.h" diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/options_menu_api/inc/EIKMENUP.H --- a/classicui_pub/options_menu_api/inc/EIKMENUP.H Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/options_menu_api/inc/EIKMENUP.H Tue May 11 16:27:42 2010 +0300 @@ -886,12 +886,14 @@ static CEikMenuPane* NewItemCommandMenuL( MEikMenuObserver* aObserver ); /** - * Sets item specific commands dimmed. + * Sets item specific commands state. * * @internal * @since S60 v5.2 + * @param aDimmed If ETrue, item specific commands are dimmed. If EFalse, + * other than item specific commands are dimmed. */ - void SetItemCommandsDimmed(); + void SetItemCommandsStateL( TBool aDimmed ); /** * Adds menu items to this menu and item action menu data. @@ -910,12 +912,18 @@ * @since S60 v5.2 * @param aCascadeId Cascade menu id. * @param aItemSpecific If ETrue, adds only item specific items. + * @param aAddToItemActionMenu If ETrue, adds items to item action menu, + * otherwise to iItemArray * @param aMenuData Item action menu data. + * @param aItemIndex specifies to which position to add submenu items, + * used only when aAddToItemActionMenu is EFalse */ - void AddCascadeMenuItemsToActionMenuL( + void AddCascadeMenuItemsToMenuL( TInt aCascadeId, TBool aItemSpecific, - CAknItemActionMenuData& aMenuData ); + TBool aAddToItemActionMenu, + CAknItemActionMenuData* aMenuData = NULL, + TInt aItemIndex = 0 ); /** * Enables the default highlight in menu @@ -1086,7 +1094,12 @@ CMenuScroller* iScroller; CEikButtonBase* iLaunchingButton; // for popouts only TInt iSubPopupWidth; // 0..2 - TInt iSpare; + + /** + * Used to track if object has been deleted while calling client callback. + */ + TBool* iIsDeleted; + CEikMenuPaneExtension* iExtension; }; diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/queries_api/inc/aknlistquerydialog.h --- a/classicui_pub/queries_api/inc/aknlistquerydialog.h Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/queries_api/inc/aknlistquerydialog.h Tue May 11 16:27:42 2010 +0300 @@ -282,6 +282,13 @@ */ IMPORT_C CAknSearchField* FindBox() const; + private: + /** + * Returns whether the left softkey is shown + * @return ETrue If the left softkey is shown + */ + TBool IsLeftSoftkeyShown(); + public: /** * Sets the tone for the dialog. diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/searchfield_api/inc/aknsfld.h --- a/classicui_pub/searchfield_api/inc/aknsfld.h Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/searchfield_api/inc/aknsfld.h Tue May 11 16:27:42 2010 +0300 @@ -282,7 +282,7 @@ IMPORT_C void ShowAdaptiveSearchGrid() const; /** - * Set column filter flag for adaptive search grid + * Set column filter flag * @since 5.0 * @param aFlag The bit flag shows which columns take into account * during filtering. @@ -290,7 +290,7 @@ IMPORT_C void SetListColumnFilterFlags( const TBitFlags32 aFlag ); /** - * Send column filter flag for adaptive search grid + * Send column filter flag * @since 5.0 * @return aFlag The bit flag shows which columns take into account * during filtering. diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/server_application_api/tsrc/inc/testsdkappservice.h --- a/classicui_pub/server_application_api/tsrc/inc/testsdkappservice.h Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/server_application_api/tsrc/inc/testsdkappservice.h Tue May 11 16:27:42 2010 +0300 @@ -15,7 +15,7 @@ * */ -#include +#include diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/server_application_api/tsrc/inc/testsdkappservicebase.h --- a/classicui_pub/server_application_api/tsrc/inc/testsdkappservicebase.h Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/server_application_api/tsrc/inc/testsdkappservicebase.h Tue May 11 16:27:42 2010 +0300 @@ -15,7 +15,7 @@ * */ -#include +#include #ifndef C_TESTSDKAPPSERVICEBASE_H #define C_TESTSDKAPPSERVICEBASE_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/server_application_api/tsrc/src/testsdkserverapplicationblocks.cpp --- a/classicui_pub/server_application_api/tsrc/src/testsdkserverapplicationblocks.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/server_application_api/tsrc/src/testsdkserverapplicationblocks.cpp Tue May 11 16:27:42 2010 +0300 @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/setting_pages_api/inc/AknTextSettingPage.h --- a/classicui_pub/setting_pages_api/inc/AknTextSettingPage.h Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/setting_pages_api/inc/AknTextSettingPage.h Tue May 11 16:27:42 2010 +0300 @@ -30,7 +30,7 @@ #include #include #include "aknsettingpage.h" -#include "aknnumedwin.h" +#include "AknNumEdwin.h" /** * This class is an intermediate pure virtual class for all setting page classes that host diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/tsrc/bc/apps/S60_SDK3.0/bctestappfrm/src/bctestaknapplication.cpp --- a/classicui_pub/tsrc/bc/apps/S60_SDK3.0/bctestappfrm/src/bctestaknapplication.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/tsrc/bc/apps/S60_SDK3.0/bctestappfrm/src/bctestaknapplication.cpp Tue May 11 16:27:42 2010 +0300 @@ -21,7 +21,7 @@ -#include +#include #include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/tsrc/bc/apps/S60_SDK3.0/bctestdocandinit/inc/bctestDocAndInitcase.h --- a/classicui_pub/tsrc/bc/apps/S60_SDK3.0/bctestdocandinit/inc/bctestDocAndInitcase.h Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/tsrc/bc/apps/S60_SDK3.0/bctestdocandinit/inc/bctestDocAndInitcase.h Tue May 11 16:27:42 2010 +0300 @@ -29,7 +29,7 @@ #include #include #include -#include +#include #include "bctestcase.h" diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/tsrc/bc/apps/S60_SDK3.0/bctesteditor/inc/bctesteditorcase.h --- a/classicui_pub/tsrc/bc/apps/S60_SDK3.0/bctesteditor/inc/bctesteditorcase.h Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/tsrc/bc/apps/S60_SDK3.0/bctesteditor/inc/bctesteditorcase.h Tue May 11 16:27:42 2010 +0300 @@ -31,7 +31,7 @@ #include #include #include -#include +#include #include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/tsrc/bc/apps/S60_SDK3.0/bctestlabelinfoindicators/src/bctestlabelinfoindicatorscase.cpp --- a/classicui_pub/tsrc/bc/apps/S60_SDK3.0/bctestlabelinfoindicators/src/bctestlabelinfoindicatorscase.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/tsrc/bc/apps/S60_SDK3.0/bctestlabelinfoindicators/src/bctestlabelinfoindicatorscase.cpp Tue May 11 16:27:42 2010 +0300 @@ -35,7 +35,7 @@ #include #include // CAknInfoPopupNoteController #include // TGulAlignmentValue -#include // KAknsMessageSkinChange +#include // KAknsMessageSkinChange #include // KEikDynamicLayoutVariantSwitch #include // CAknPictographInterface #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/tsrc/bc/apps/S60_SDK3.0/bctestlist/src/bctestlistcolumnbasecase.cpp --- a/classicui_pub/tsrc/bc/apps/S60_SDK3.0/bctestlist/src/bctestlistcolumnbasecase.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/tsrc/bc/apps/S60_SDK3.0/bctestlist/src/bctestlistcolumnbasecase.cpp Tue May 11 16:27:42 2010 +0300 @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/tsrc/bc/apps/S60_SDK3.0/bctestlist/src/bctestlistformatbasecase.cpp --- a/classicui_pub/tsrc/bc/apps/S60_SDK3.0/bctestlist/src/bctestlistformatbasecase.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/tsrc/bc/apps/S60_SDK3.0/bctestlist/src/bctestlistformatbasecase.cpp Tue May 11 16:27:42 2010 +0300 @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/tsrc/bc/apps/S60_SDK3.0/bctestserverapp/inc/bctestserverappcase.h --- a/classicui_pub/tsrc/bc/apps/S60_SDK3.0/bctestserverapp/inc/bctestserverappcase.h Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/tsrc/bc/apps/S60_SDK3.0/bctestserverapp/inc/bctestserverappcase.h Tue May 11 16:27:42 2010 +0300 @@ -27,7 +27,7 @@ #define BCTEST_SERVERAPPCASE_H #include "bctestcase.h" -#include +#include #include //TUid Kmysimpleserver = { 0x06C22C0C }; diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/tsrc/bc/apps/S60_SDK3.0/bctestserverapp/src/bctestserverappcase.cpp --- a/classicui_pub/tsrc/bc/apps/S60_SDK3.0/bctestserverapp/src/bctestserverappcase.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/tsrc/bc/apps/S60_SDK3.0/bctestserverapp/src/bctestserverappcase.cpp Tue May 11 16:27:42 2010 +0300 @@ -25,7 +25,7 @@ #include #include -#include +#include #include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/tsrc/bc/apps/S60_SDK3.1/bctestmisc/src/bctestmisccase.cpp --- a/classicui_pub/tsrc/bc/apps/S60_SDK3.1/bctestmisc/src/bctestmisccase.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/tsrc/bc/apps/S60_SDK3.1/bctestmisc/src/bctestmisccase.cpp Tue May 11 16:27:42 2010 +0300 @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/tsrc/bc/apps/S60_SDK5.0/bctesttouchpane/src/bctesttouchpanecase.cpp --- a/classicui_pub/tsrc/bc/apps/S60_SDK5.0/bctesttouchpane/src/bctesttouchpanecase.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/tsrc/bc/apps/S60_SDK5.0/bctesttouchpane/src/bctesttouchpanecase.cpp Tue May 11 16:27:42 2010 +0300 @@ -29,7 +29,7 @@ #include #include #include -#include +#include #include #include "bctesttouchpanecase.h" diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/ui_framework_definitions_api/inc/EIKON.HRH --- a/classicui_pub/ui_framework_definitions_api/inc/EIKON.HRH Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/ui_framework_definitions_api/inc/EIKON.HRH Tue May 11 16:27:42 2010 +0300 @@ -833,6 +833,7 @@ #define EEikDialogFlagVirtualInput 0x800000 // New flag for postponing the disappear effect after OkToExitL. #define EEikDialogFlagDelayEffects 0x01000000 +#define EEikDialogFlagNoEmbeddedSoftkeys 0x2000000 #define EEikDlgItemNoSeparator 0 @@ -877,6 +878,7 @@ #define EEikFormShowBitmaps 2 #define EEikFormEditModeOnly 4 #define EEikFormUseDoubleSpacedFormat 8 +#define EEikFormDisableHighlightInViewMode 16 // EIKSPANE.HRH // diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/ui_framework_definitions_api/inc/avkon.hrh --- a/classicui_pub/ui_framework_definitions_api/inc/avkon.hrh Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/ui_framework_definitions_api/inc/avkon.hrh Tue May 11 16:27:42 2010 +0300 @@ -381,7 +381,15 @@ EChinFepCmdModePinyinPhrase, EChinFepCmdModeZhuyinPhrase, - EChinFepCmdModeStrokePhrase, + EChinFepCmdModeStrokePhrase, + + /** + * Command ids for multiple marking state. + */ + EAknCmdMarkingModeEnter, + EAknCmdMarkingModeMarkOne, + EAknCmdMarkingModeMarkAll, + EAknCmdMarkingModeUnmarkAll, /** * @deprecated diff -r 0aa5fbdfbc30 -r 3d340a0166ff classicui_pub/ui_framework_utilities_api/tsrc/src/testsdkuifwutilblocksaknutils.cpp --- a/classicui_pub/ui_framework_utilities_api/tsrc/src/testsdkuifwutilblocksaknutils.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/classicui_pub/ui_framework_utilities_api/tsrc/src/testsdkuifwutilblocksaknutils.cpp Tue May 11 16:27:42 2010 +0300 @@ -29,8 +29,8 @@ #include #include #include -#include -#include +#include +#include #include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff commonuis/CommonDialogs/loc/commondialogs.loc --- a/commonuis/CommonDialogs/loc/commondialogs.loc Tue Apr 27 16:55:05 2010 +0300 +++ b/commonuis/CommonDialogs/loc/commondialogs.loc Tue May 11 16:27:42 2010 +0300 @@ -208,3 +208,20 @@ //l:list_set_graphic_pane_t1 #define qtn_mem_memory_card_defaul_setting_list "%U: Memory card" +//d:Text for USB Memory (no name) in memory selection +//l:list_single_graphic_pane_t1_cp2 +#define qtn_memc_USB_available_single_list "%U USB memory" + +//d:Text for USB Memory in memory selection when USB memory is unavilable +//l:list_single_graphic_pane_t1_cp2 +#define qtn_memc_usb_unavailable_single_list "%U USB memory unavailable" + +//d:Text for USB Memory (no name) in memory selection +//l:list_double_large_graphic_pane_t1_cp2 +#define qtn_memc_USB_available_double "%U USB memory" + +//d:Text for USB Memory in memory selection when USB memory is unavilable +//l:list_double_large_graphic_pane_t1_cp2 +#define qtn_memc_usb_unavailable_double "%U USB memory unavailable" + + diff -r 0aa5fbdfbc30 -r 3d340a0166ff commonuis/CommonUi/EABI/CommonUIU.DEF --- a/commonuis/CommonUi/EABI/CommonUIU.DEF Tue Apr 27 16:55:05 2010 +0300 +++ b/commonuis/CommonUi/EABI/CommonUIU.DEF Tue May 11 16:27:42 2010 +0300 @@ -120,4 +120,5 @@ _ZN13CFindItemMenu21SetMenuItemVisibilityENS_9TMenuItemEi @ 119 NONAME _ZN12MPBAiwNotify13HandleNotifyLEiiR20CAiwGenericParamListRKS0_ @ 120 NONAME _ZN11CItemFinder22SetItemFinderObserverLEP22MAknItemFinderObserver @ 121 NONAME + _ZN15CFindItemDialog17EnableSingleClickEi @ 122 NONAME diff -r 0aa5fbdfbc30 -r 3d340a0166ff commonuis/CommonUi/bwins/CommonUIU.def --- a/commonuis/CommonUi/bwins/CommonUIU.def Tue Apr 27 16:55:05 2010 +0300 +++ b/commonuis/CommonUi/bwins/CommonUIU.def Tue May 11 16:27:42 2010 +0300 @@ -90,4 +90,5 @@ ?SetMenuItemVisibility@CFindItemMenu@@QAEXW4TMenuItem@1@H@Z @ 89 NONAME ; void CFindItemMenu::SetMenuItemVisibility(enum CFindItemMenu::TMenuItem, int) ?HandleNotifyL@MPBAiwNotify@@UAEHHHAAVCAiwGenericParamList@@ABV2@@Z @ 90 NONAME ; int MPBAiwNotify::HandleNotifyL(int, int, class CAiwGenericParamList &, class CAiwGenericParamList const &) ?SetItemFinderObserverL@CItemFinder@@QAEXPAVMAknItemFinderObserver@@@Z @ 91 NONAME ; void CItemFinder::SetItemFinderObserverL(class MAknItemFinderObserver *) + ?EnableSingleClick@CFindItemDialog@@QAEXH@Z @ 92 NONAME ; void CFindItemDialog::EnableSingleClick(int) diff -r 0aa5fbdfbc30 -r 3d340a0166ff commonuis/CommonUi/group/CommonUI.mmp --- a/commonuis/CommonUi/group/CommonUI.mmp Tue Apr 27 16:55:05 2010 +0300 +++ b/commonuis/CommonUi/group/CommonUI.mmp Tue May 11 16:27:42 2010 +0300 @@ -163,5 +163,6 @@ #endif LIBRARY AknLayout2Scalable.lib +LIBRARY touchfeedback.lib // End of file. diff -r 0aa5fbdfbc30 -r 3d340a0166ff commonuis/CommonUi/src/FindItemDialog.cpp --- a/commonuis/CommonUi/src/FindItemDialog.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/commonuis/CommonUi/src/FindItemDialog.cpp Tue May 11 16:27:42 2010 +0300 @@ -95,6 +95,7 @@ #include // for changing the lable of navipane #include // for testability hooks +#include _LIT( KResFileName, "z:\\resource\\finditemui.rsc" ); // Panic @@ -236,51 +237,50 @@ } NONSHARABLE_CLASS(CItemFinderExtension) : public CBase - { + { public: - ~CItemFinderExtension(); - static CItemFinderExtension* NewL(); - - //new function + ~CItemFinderExtension(); + static CItemFinderExtension* NewL(); + + //new function public: - PBAiwNotify* CallBack(); - + PBAiwNotify* CallBack(); + private: - CItemFinderExtension(); - void ConstructL(); - + CItemFinderExtension(); + void ConstructL(); + public: - PBAiwNotify iCallBack; - }; + PBAiwNotify iCallBack; + }; CItemFinderExtension::~CItemFinderExtension() - { - - } + { + } CItemFinderExtension* CItemFinderExtension::NewL() - { - CItemFinderExtension* self = new ( ELeave )CItemFinderExtension; - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } + { + CItemFinderExtension* self = new ( ELeave )CItemFinderExtension; + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(); + return self; + } PBAiwNotify* CItemFinderExtension::CallBack() - { - return &iCallBack; - } + { + return &iCallBack; + } CItemFinderExtension::CItemFinderExtension() - { - - } + { + + } void CItemFinderExtension::ConstructL() - { - - } + { + + } @@ -457,8 +457,126 @@ iFindItemVoIPExtension = CFindItemVoIPExtension::NewL(); iExtension = CItemFinderExtension::NewL(); + iFeedback = MTouchFeedback::Instance(); + } + +// ----------------------------------------------------------------------------- +// CFindItemDialog::HandlePointerEventL +// ----------------------------------------------------------------------------- +// +void CFindItemDialog::HandlePointerEventL( const TPointerEvent& aPointerEvent ) + { + if ( !iSingleClick ) + { + if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) + { + this->PointerEvent( NULL, aPointerEvent ); + } + } + else + { + DoHandlePointerEventL( aPointerEvent ); + if ( aPointerEvent.iType == TPointerEvent::EButton1Up ) + { + iEdwin->ClearSelectionL(); + iEdwin->DrawDeferred(); + } + } } +// ----------------------------------------------------------------------------- +// CFindItemDialog::DoHandlePointerEventL +// ----------------------------------------------------------------------------- +// +void CFindItemDialog::DoHandlePointerEventL ( const TPointerEvent& aPointerEvent ) + { + if ( aPointerEvent.iType == TPointerEvent::EButton1Up || + aPointerEvent.iType == TPointerEvent::EButton1Down ) + { + TPoint tapPoint( aPointerEvent.iPosition - iTappingOffset ); + TInt pos = 0; + TInt len = iEdwin->TextLayout()->PosRangeInBand( pos ); + CFindItemEngine::SFoundItem item; + TRect rect; + TInt i = 0; + while ( i < iController->ItemCount() ) // Check visible rects + { + if ( !iController->Item( i, item ) ) // Get item. + { + break; // Error: invalid item. + } + TInt end = item.iStartPos + item.iLength - 1; + if ( end < pos ) + { + i++; + continue; // item not visible. + } + TInt start = item.iStartPos; + if ( start >= ( pos + len ) ) + { + break; // item not visible. + } + TInt lastLine = iEdwin->TextLayout()->GetLineNumber( end ); + TInt nextLine = 0; + TInt lastPos = start; + do // Check all rects of one item. + { + TInt error = KErrNone; + TRAP( error, rect = + iEdwin->TextLayout()->GetLineRectL( start, end ) ); + if ( error == KErrNone ) + { + if ( rect.Contains( tapPoint ) ) // Item rect tapped. + { + if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) + { + TRAP( error, iController->TappedItemL( i ) ); + // Change selection + if ( error != KErrNone ) + { + return; // Error: no selection made. + } + if ( iFeedback ) + { + iFeedback->InstantFeedback( ETouchFeedbackBasicButton ); + } + iLastTappedItem = TPoint ( item.iStartPos, item.iLength + + item.iStartPos ); + return; // Hit, no further handling. + } + else if ( aPointerEvent.iType == TPointerEvent::EButton1Up ) + { + if ( iLastTappedItem == TPoint ( item.iStartPos, + item.iLength + item.iStartPos ) ) + { + iIsSensitiveMenu = ETrue; + iMenuBar->SetMenuType( CEikMenuBar::EMenuContext ); + TRAP_IGNORE( CAknDialog::DisplayMenuL() ); + } + return; // Hit, no further handling. + } + } + } + else + { + return; // Error: no rect. + } + TPoint midPoint( rect.iBr.iX, + ( rect.iBr.iY + rect.iTl.iY ) / 2 ); + TRAP( error, lastPos = + iEdwin->TextLayout()->XyPosToDocPosL( midPoint ) ); + if ( error != KErrNone ) + { + return; // Error: no last pos. + } + start = lastPos + 1; + nextLine = iEdwin->TextLayout()->GetLineNumber( lastPos ); + } while ( nextLine != lastLine ); + i++; + } + } + return; // No hit, no further handling. + } // ----------------------------------------------------------------------------- // CFindItemDialog::DoCopyToClipboardL @@ -826,12 +944,38 @@ } // ----------------------------------------------------------------------------- +// CFindItemDialog::EnableSingleClick +// ----------------------------------------------------------------------------- +// +EXPORT_C void CFindItemDialog::EnableSingleClick ( TBool aEnable ) + { + iSingleClick = aEnable; + } + // CFindItemDialog::ProcessCommandL // Prosesses menu commands // ----------------------------------------------------------------------------- // EXPORT_C void CFindItemDialog::ProcessCommandL( TInt aCommandId ) { + TBool selectionVisibility ( ETrue ); + if ( iSingleClick && iEdwin && iEdwin->TextView() ) + { + selectionVisibility = iEdwin->TextView()->SelectionVisible(); + iEdwin->TextView()->SetSelectionVisibilityL( EFalse ); + + CFindItemEngine::SFoundItem item; + TBool founditem = iController->Item( item ); + if ( founditem ) + { + iEdwin->SetSelectionL( item.iStartPos, item.iStartPos + item.iLength ); + } + else + { + iEdwin->SetSelectionL( iLastTappedItem.iX, iLastTappedItem.iY ); + } + } + CAknDialog::ProcessCommandL( aCommandId ); switch (aCommandId) { @@ -890,7 +1034,7 @@ #ifndef RD_UNIFIED_EDITOR if( !iMMSFeatureSupported ) { - mtmFilter->AppendL(KSenduiMtmMmsUid); + mtmFilter->AppendL(KSenduiMtmMmsUid); } #endif @@ -915,7 +1059,7 @@ item.iItemType == CFindItemEngine::EFindItemSearchPhoneNumberBin && iSearchCase == KSearchTelInternetNumber ) ) ) { - mtmFilter->AppendL(KSenduiMtmSmtpUid); + mtmFilter->AppendL(KSenduiMtmSmtpUid); mtmFilter->AppendL(KSenduiMtmImap4Uid); mtmFilter->AppendL(KSenduiMtmPop3Uid); mtmFilter->AppendL(KSenduiMtmSyncMLEmailUid); @@ -943,6 +1087,12 @@ { if ( LaunchGenericUriL() ) { + if ( iSingleClick && iEdwin && iEdwin->TextView() ) + { + iEdwin->TextView()->SetSelectionVisibilityL( selectionVisibility ); + iEdwin->ClearSelectionL(); + iEdwin->DrawDeferred(); + } return; } break; @@ -1014,6 +1164,15 @@ break; } } + if ( iSingleClick && iEdwin && iEdwin->TextView() ) + { + iEdwin->TextView()->SetSelectionVisibilityL( selectionVisibility ); + if ( aCommandId != EFindItemCmdNextItem && aCommandId != EFindItemCmdPrevItem ) + { + iEdwin->ClearSelectionL(); + } + iEdwin->DrawDeferred(); + } } // ----------------------------------------------------------------------------- @@ -1031,15 +1190,23 @@ } CFindItemEngine::SFoundItem item; - TBool founditem = iController->Item( item ); - + TBool foundItem = iController->Item( item ); + if ( iSingleClick ) + { + // foundItem remains as ETrue, if item found by controller is exactly + // same as highlighted selection + foundItem = foundItem && ( item.iLength == iEdwin->SelectionLength() + && item.iStartPos == Min( iEdwin->Selection().iCursorPos, + iEdwin->Selection().iAnchorPos ) ); + } + if ( aMenuId == R_FINDITEM_CALLUI_AIW_SUBMENU ) { if ( iFindItemVoIPExtension->IsVoIPSupported() && ( iSearchCase == CFindItemEngine::EFindItemSearchMailAddressBin || ( iSearchCase == KSearchTelInternetNumber && - founditem && item.iItemType == + foundItem && item.iItemType == CFindItemEngine::EFindItemSearchMailAddressBin ) ) ) { CAiwGenericParamList* inList = CAiwGenericParamList::NewLC(); @@ -1123,11 +1290,49 @@ aMenuPane->AddMenuItemsL( resource, EAknFormMaxDefault - 1, ETrue ); + if ( iSingleClick && !foundItem ) + { + switch ( resource ) + { + case (R_FINDITEM_MAIL_ADDRESS_MENU): + { + aMenuPane->SetItemDimmed ( EFindItemCmdCopy, ETrue ); + aMenuPane->SetItemDimmed ( EFindItemSubMenuSend, ETrue ); + aMenuPane->SetItemDimmed ( EFindItemCmdCreateContactCard, ETrue ); + break; + } + + case (R_FINDITEM_URL_ADDRESS_MENU): + { + aMenuPane->SetItemDimmed ( EFindItemCmdGoToUrl, ETrue ); + aMenuPane->SetItemDimmed ( EFindItemCmdAddToBookmark, ETrue ); + aMenuPane->SetItemDimmed ( EFindItemCmdCreateContactCard, ETrue ); + aMenuPane->SetItemDimmed ( EFindItemCmdCopy, ETrue ); + break; + } + + case (R_FINDITEM_PHONENUMBER_MENU): // fall through + case (R_FINDITEM_TELINTERNETNUMBER_MENU): + { + aMenuPane->SetItemDimmed ( EFindItemCmdCall, ETrue ); + aMenuPane->SetItemDimmed ( EFindItemCmdCopy, ETrue ); + aMenuPane->SetItemDimmed ( EFindItemSubMenuSend, ETrue ); + aMenuPane->SetItemDimmed ( EFindItemCmdCreateContactCard, ETrue ); + break; + } + + default: + { + break; + } + } + } + if ( iSearchCase == KSearchTelInternetNumber && iFindItemVoIPExtension->VoIPProfilesExistL() || iSearchCase == KSearchTelInternetNumber && !iFindItemVoIPExtension->VoIPProfilesExistL() && - founditem && + foundItem && item.iItemType == CFindItemEngine::EFindItemSearchPhoneNumberBin || iSearchCase & CFindItemEngine::EFindItemSearchMailAddressBin && @@ -1149,10 +1354,13 @@ iSearchCase & CFindItemEngine::EFindItemSearchPhoneNumberBin && !iHideCallMenu ) { - aMenuPane->SetItemDimmed( EFindItemCmdCall, ETrue ); - aMenuPane->AddMenuItemsL( - R_FINDITEM_CALLUI_AIW_ITEM, - EFindItemCmdCall ); + if ( !iSingleClick || foundItem ) + { + aMenuPane->SetItemDimmed( EFindItemCmdCall, ETrue ); + aMenuPane->AddMenuItemsL( + R_FINDITEM_CALLUI_AIW_ITEM, + EFindItemCmdCall ); + } } aMenuPane->DeleteMenuItem( EAknFormCmdEdit ); @@ -1162,14 +1370,20 @@ aMenuPane->DeleteMenuItem( EAknFormCmdDelete ); #ifndef RD_VIRTUAL_PHONEBOOK - iPbkDataSave->AddMenuItemsL( - aMenuPane, - EFindItemCmdCreateContactCard ); + if ( !iSingleClick || foundItem ) + { + iPbkDataSave->AddMenuItemsL( + aMenuPane, + EFindItemCmdCreateContactCard ); + } #else - aMenuPane->SetItemDimmed( EFindItemCmdCreateContactCard, ETrue ); - aMenuPane->AddMenuItemsL( - R_FINDITEM_CONTACTS_AIW_ITEM, - EFindItemCmdCreateContactCard ); + if ( !iSingleClick || foundItem ) + { + aMenuPane->SetItemDimmed( EFindItemCmdCreateContactCard, ETrue ); + aMenuPane->AddMenuItemsL( + R_FINDITEM_CONTACTS_AIW_ITEM, + EFindItemCmdCreateContactCard ); + } #endif // !RD_VIRTUAL_PHONEBOOK // Delete next/prev item items from menu if a last/next @@ -1238,29 +1452,59 @@ switch ( code ) { case EKeyRightArrow: + if ( iSingleClick && !CurrentItemHasHighlight() ) + { + HighlightCurrentItem(); + break; + } iController->NextItemL(); break; case EKeyDownArrow: - iController->MoveDownL(); + if ( iSingleClick && !CurrentItemHasHighlight() ) + { + HighlightCurrentItem(); + break; + } + iController->MoveDownL(); break; case EKeyLeftArrow: - iController->PrevItemL(); + if ( iSingleClick && !CurrentItemHasHighlight() ) + { + HighlightCurrentItem(); + break; + } + iController->PrevItemL(); break; case EKeyUpArrow: + if ( iSingleClick && !CurrentItemHasHighlight() ) + { + HighlightCurrentItem(); + break; + } iController->MoveUpL(); break; case EKeyOK: case EKeyEnter: + if ( iSingleClick && !CurrentItemHasHighlight() ) + { + HighlightCurrentItem(); + break; + } iIsSensitiveMenu = ETrue; iMenuBar->SetMenuType(CEikMenuBar::EMenuContext); CAknDialog::DisplayMenuL(); break; case EKeyPhoneSend: + if ( iSingleClick && !CurrentItemHasHighlight() ) + { + HighlightCurrentItem(); + break; + } + if ( !iDialData ) { break; } - CFindItemEngine::SFoundItem item; founditem = iController->Item( item ); @@ -1388,23 +1632,24 @@ TRgb color; MAknsSkinInstance* skin = AknsUtils::SkinInstance(); TInt error = AknsUtils::GetCachedColor(skin, color, KAknsIIDQsnTextColors, - EAknsCIQsnTextColorsCG6 ); + EAknsCIQsnTextColorsCG6 ); if(error==KErrNone) - { - TCharFormat charFormat; - TCharFormatMask charFormatMask; - charFormatMask.SetAttrib(EAttColor); - charFormat.iFontPresentation.iTextColor = color; - - CRichText * richText = NULL; - richText = iEdwin->RichText(); - if( NULL!=richText ) - { - TInt length = richText->DocumentLength(); - length++; - // apply the color to text - TRAP_IGNORE(richText->ApplyCharFormatL( charFormat, charFormatMask, 0, length )); - } + { + TCharFormat charFormat; + TCharFormatMask charFormatMask; + charFormatMask.SetAttrib(EAttColor); + charFormat.iFontPresentation.iTextColor = color; + + CRichText * richText = NULL; + richText = iEdwin->RichText(); + if( NULL!=richText ) + { + TInt length = richText->DocumentLength(); + length++; + // apply the color to text + TRAP_IGNORE(richText->ApplyCharFormatL( charFormat, + charFormatMask, 0, length )); + } } if ( anyFound ) { @@ -1555,7 +1800,7 @@ { return EFalse; } - TBool pos2 = EFalse; + TBool pos2 = EFalse; TPoint point2; TRAP( error, pos2 = iEdwin->TextLayout()->DocPosToXyPosL( aItem2, point2, CLayoutData::EFWholeTBoxesOnly ) ); @@ -1681,7 +1926,10 @@ UpdateScrollIndicatorL(); iEdwin->TextView()->SetSelectionVisibilityL( ETrue ); - iEdwin->SetSelectionL( item.iStartPos, item.iLength + item.iStartPos ); + if ( !iSingleClick ) + { + iEdwin->SetSelectionL( item.iStartPos, item.iLength + item.iStartPos ); + } } else {// Let's show a information note if no items were found @@ -1807,17 +2055,17 @@ KPosIndicator, iController->Position() + 1, iController->ItemCount() ); if(NULL == iNaviDecorator) - { - iNaviDecorator = iNaviPane->CreateNavigationLabelL( naviText ); - iNaviDecorator->SetNaviDecoratorObserver( this ); - iNaviDecorator->MakeScrollButtonVisible( ETrue ); - } + { + iNaviDecorator = iNaviPane->CreateNavigationLabelL( naviText ); + iNaviDecorator->SetNaviDecoratorObserver( this ); + iNaviDecorator->MakeScrollButtonVisible( ETrue ); + } else - { - // Change the label on Nave pane control... - CAknNaviLabel * label =( CAknNaviLabel* )iNaviDecorator->DecoratedControl(); - label->SetTextL(naviText); - } + { + // Change the label on Nave pane control... + CAknNaviLabel * label =( CAknNaviLabel* )iNaviDecorator->DecoratedControl(); + label->SetTextL(naviText); + } // Dimm arrows if needed if ( iController->LastItem() ) @@ -1936,10 +2184,10 @@ { //Update Horizantal Scroll bar color if skin changes if( aType == KAknsMessageSkinChange) - { - CAknScrollBar *scrollBar = iSBFrame->VerticalScrollBar(); - scrollBar->HandleResourceChange(aType); - } + { + CAknScrollBar *scrollBar = iSBFrame->VerticalScrollBar(); + scrollBar->HandleResourceChange(aType); + } CAknDialog::HandleResourceChange( aType ); } @@ -1978,7 +2226,7 @@ { TRAP_IGNORE( iEdwin->MoveDisplayL( TCursorPosition::EFPageDown ) ); } - } + } TRAP_IGNORE( UpdateScrollIndicatorL() ); } @@ -2035,7 +2283,7 @@ if ( AknLayoutUtils::PenEnabled() && aPointerEvent.iType == TPointerEvent::EButton1Down ) { - TPoint tapPoint( aPointerEvent.iPosition - iTappingOffset ); + TPoint tapPoint( aPointerEvent.iPosition - iTappingOffset ); TInt pos = 0; TInt len = iEdwin->TextLayout()->PosRangeInBand( pos ); CFindItemEngine::SFoundItem item; @@ -2047,12 +2295,12 @@ { break; // Error: invalid item. }; - TInt end = item.iStartPos + item.iLength - 1; + TInt end = item.iStartPos + item.iLength - 1; if ( end < pos ) { i++; - continue; // item not visible. - }; + continue; // item not visible. + }; TInt start = item.iStartPos; if ( start >= ( pos + len ) ) { @@ -2062,13 +2310,13 @@ TInt nextLine = 0; TInt lastPos = start; do // Check all rects of one item. - { - TInt error = KErrNone; + { + TInt error = KErrNone; TRAP( error, rect = iEdwin->TextLayout()->GetLineRectL( start, end ) ); if ( error == KErrNone ) { if ( rect.Contains( tapPoint ) ) // Item rect tapped. - { + { TRAP( error, iController->TappedItemL( i ) ); // Change selection if ( error != KErrNone ) { @@ -2083,15 +2331,15 @@ else { return false; // Error: no rect. - } + } TPoint midPoint( rect.iBr.iX, ( rect.iBr.iY + rect.iTl.iY) / 2 ); - TRAP( error, lastPos = iEdwin->TextLayout()->XyPosToDocPosL( midPoint ) ); + TRAP( error, lastPos = iEdwin->TextLayout()->XyPosToDocPosL( midPoint ) ); if ( error != KErrNone ) { return false; // Error: no last pos. } start = lastPos + 1; - nextLine = iEdwin->TextLayout()->GetLineNumber( lastPos ); + nextLine = iEdwin->TextLayout()->GetLineNumber( lastPos ); } while ( nextLine != lastLine ); i++; } @@ -2156,7 +2404,47 @@ default: break; } - } + } + +// ---------------------------------------------------------------------------- +// CFindItemDialog::CurrentItemHasHighlight +// ---------------------------------------------------------------------------- +// +TBool CFindItemDialog::CurrentItemHasHighlight() + { + CFindItemEngine::SFoundItem item; + TBool foundItem = iController->Item( item ); + + // foundItem remains as ETrue, if item found by controller is exactly + // same as highlighted selection + + TCursorSelection selection( iEdwin->Selection() ); + TInt selectionLength = iEdwin->SelectionLength(); + + foundItem = foundItem && ( ( item.iLength == selectionLength ) && ( item.iStartPos == Min( selection.iCursorPos, selection.iAnchorPos ) ) ); + + foundItem = foundItem && ( iEdwin && iEdwin->TextView() + && iEdwin->TextView()->SelectionVisible() ); + + return foundItem; + } + +// ---------------------------------------------------------------------------- +// CFindItemDialog::HighlightCurrentItem +// ---------------------------------------------------------------------------- +// +void CFindItemDialog::HighlightCurrentItem() + { + CFindItemEngine::SFoundItem item; + TBool found = iController->Item( item ); + + if ( found && iEdwin && iEdwin->TextView() ) + { + iEdwin->TextView()->SetSelectionVisibilityL( ETrue ); + iEdwin->SetSelectionL( item.iStartPos, item.iStartPos + item.iLength ); + } + } + // // CONTAINER CLASS @@ -2242,24 +2530,24 @@ TRgb color; MAknsSkinInstance* skin = AknsUtils::SkinInstance(); TInt error = AknsUtils::GetCachedColor(skin, color, KAknsIIDQsnTextColors, - EAknsCIQsnTextColorsCG6 ); + EAknsCIQsnTextColorsCG6 ); if(error==KErrNone) - { - TCharFormat charFormat; - TCharFormatMask charFormatMask; - charFormatMask.SetAttrib(EAttColor); - charFormat.iFontPresentation.iTextColor = color; - - CRichText * richText = NULL; - richText = iEditor->RichText(); - if( NULL!=richText ) - { - TInt length = richText->DocumentLength(); - length++; - // apply the color to the text - TRAP_IGNORE(richText->ApplyCharFormatL( charFormat, charFormatMask, 0, length )); - } - } + { + TCharFormat charFormat; + TCharFormatMask charFormatMask; + charFormatMask.SetAttrib(EAttColor); + charFormat.iFontPresentation.iTextColor = color; + + CRichText * richText = NULL; + richText = iEditor->RichText(); + if( NULL!=richText ) + { + TInt length = richText->DocumentLength(); + length++; + // apply the color to the text + TRAP_IGNORE(richText->ApplyCharFormatL( charFormat, charFormatMask, 0, length )); + } + } } } diff -r 0aa5fbdfbc30 -r 3d340a0166ff commonuis/CommonUi/src/ItemFinder.cpp --- a/commonuis/CommonUi/src/ItemFinder.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/commonuis/CommonUi/src/ItemFinder.cpp Tue May 11 16:27:42 2010 +0300 @@ -29,6 +29,7 @@ #include #include // for AknUtils #include +#include // scheme recog #include @@ -217,6 +218,7 @@ CRichText::ActivateParserL(this); iSchemeResolver = CSchemeResolver::NewL(); iMinDigitsToFind = GetMinDigitsToFindL(); // variated. + iFeedback = MTouchFeedback::Instance(); } TInt CItemFinder::GetMinDigitsToFindL() @@ -1290,6 +1292,10 @@ // if no item was tapped remove selection if ( tapped ) { + if ( iFeedback ) + { + iFeedback->InstantFeedback( ETouchFeedbackBasicButton ); + } iTapPoint = tapPoint; } else diff -r 0aa5fbdfbc30 -r 3d340a0166ff commonuisupport/uikon/srvsrc/EIKNFYSV.CPP --- a/commonuisupport/uikon/srvsrc/EIKNFYSV.CPP Tue Apr 27 16:55:05 2010 +0300 +++ b/commonuisupport/uikon/srvsrc/EIKNFYSV.CPP Tue May 11 16:27:42 2010 +0300 @@ -988,6 +988,7 @@ void CEikSrvNotifierManager::LookForNotifierInObservedListL(TUid aNotifierUid, TUid aChannelUid, RArray& aNotifierPositions) { + CleanupClosePushL(aNotifierPositions); const TInt count = iObservedList->Count(); for (TInt ii = 0; ii < count; ii++) { @@ -996,6 +997,7 @@ if (info.iUid == aNotifierUid && (aChannelUid == KNonExistentUid || info.iChannel == aChannelUid)) User::LeaveIfError(aNotifierPositions.Append(ii)); } + CleanupStack::Pop(&aNotifierPositions); } void CEikSrvNotifierManager::NotifierStartAndGetResponseL(TUid aNotifierUid, const TDesC8& aBuffer, TInt aReplySlot, diff -r 0aa5fbdfbc30 -r 3d340a0166ff lafagnosticuifoundation/cone/src/COECNTSS.CPP --- a/lafagnosticuifoundation/cone/src/COECNTSS.CPP Tue Apr 27 16:55:05 2010 +0300 +++ b/lafagnosticuifoundation/cone/src/COECNTSS.CPP Tue May 11 16:27:42 2010 +0300 @@ -208,6 +208,7 @@ @param aLogicalToPixelSizes TInt array to be poulated with font sizes */ EXPORT_C void CCoeControlStaticSettings::GetLogicalToPixelFontSizesL(RArray& aLogicalToPixelSizes) { + CleanupClosePushL(aLogicalToPixelSizes); CCoeControlStaticSettings* self = Self(); aLogicalToPixelSizes.Reset(); @@ -224,6 +225,7 @@ User::LeaveIfError(aLogicalToPixelSizes.Append(22)); User::LeaveIfError(aLogicalToPixelSizes.Append(26)); } + CleanupStack::Pop(&aLogicalToPixelSizes); } /** diff -r 0aa5fbdfbc30 -r 3d340a0166ff lafagnosticuifoundation/cone/src/COEMAINSECUREFEP.CPP --- a/lafagnosticuifoundation/cone/src/COEMAINSECUREFEP.CPP Tue Apr 27 16:55:05 2010 +0300 +++ b/lafagnosticuifoundation/cone/src/COEMAINSECUREFEP.CPP Tue May 11 16:27:42 2010 +0300 @@ -74,6 +74,7 @@ @param aDisplayNames The array of FEP display names to be filled. May be passed as NULL if display names are not required. */ { + CleanupClosePushL(aUids); aUids.Reset(); if(aDisplayNames) { @@ -93,6 +94,7 @@ } } CleanupStack::PopAndDestroy(&implementationArray); + CleanupStack::Pop(&aUids); } EXPORT_C void CCoeEnv::InstallFepL(TUid aFepUid) diff -r 0aa5fbdfbc30 -r 3d340a0166ff lafagnosticuifoundation/cone/src/CoeEnvExtra.cpp --- a/lafagnosticuifoundation/cone/src/CoeEnvExtra.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/lafagnosticuifoundation/cone/src/CoeEnvExtra.cpp Tue May 11 16:27:42 2010 +0300 @@ -169,11 +169,13 @@ void CCoeEnvExtra::AddObserverL(RArray& aArrayOfObservers, TAny* aObserver) { __ASSERT_ALWAYS(aObserver!=NULL, Panic(ECoePanicIllegalNullParameter3)); + CleanupClosePushL(aArrayOfObservers); for (TInt i=aArrayOfObservers.Count()-1; i>=0; --i) { __ASSERT_ALWAYS(aArrayOfObservers[i]!=aObserver, Panic(ECoePanicFocusObserverHasAlreadyBeenAdded)); } User::LeaveIfError(aArrayOfObservers.Append(aObserver)); + CleanupStack::Pop(&aArrayOfObservers); } void CCoeEnvExtra::RemoveObserver(RArray& aArrayOfObservers, const TAny* aObserver) diff -r 0aa5fbdfbc30 -r 3d340a0166ff lafagnosticuifoundation/uigraphicsutils/tulsrc/tulphonenumberutils.cpp --- a/lafagnosticuifoundation/uigraphicsutils/tulsrc/tulphonenumberutils.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/lafagnosticuifoundation/uigraphicsutils/tulsrc/tulphonenumberutils.cpp Tue May 11 16:27:42 2010 +0300 @@ -28,7 +28,7 @@ _LIT(KContactCardCharsToParse, " ./"); _LIT(KPhoneClientValidChars, "+1234567890()-pw#* ./"); _LIT(KPhoneClientCharsToParse, "()- ./"); -_LIT(KSMSNumberValidChars, "+1234567890()- ./*"); +_LIT(KSMSNumberValidChars, "+1234567890()- ./*#"); // DEFINES const TInt KPhoneNoUtilsMinNumbers = 1; diff -r 0aa5fbdfbc30 -r 3d340a0166ff ode/src/collision_kernel.cpp --- a/ode/src/collision_kernel.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/ode/src/collision_kernel.cpp Tue May 11 16:27:42 2010 +0300 @@ -978,6 +978,8 @@ EXPORT_C void dInitODE() { #ifndef __WINSCW__ + // clean up cached object if there is any. + dClearPosrCache(); Mem::FillZ( GetGlobalData(), sizeof( TOdeStaticData ) ); GetGlobalData()->autoEnableDepth = 2; #endif // !__WINSCW__ diff -r 0aa5fbdfbc30 -r 3d340a0166ff psln/PslnFramework/src/PslnFWBaseView.cpp --- a/psln/PslnFramework/src/PslnFWBaseView.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/psln/PslnFramework/src/PslnFWBaseView.cpp Tue May 11 16:27:42 2010 +0300 @@ -187,20 +187,27 @@ if ( appUi ) { CEikStatusPane* sp = appUi->StatusPane(); - iNaviControlContainer = static_cast - ( sp->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) ); + if ( sp ) + { + iNaviControlContainer = static_cast + ( sp->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) ); + } } } - if ( iNaviPaneContext && ( aTabLocation > 0 ) ) + + if ( iNaviControlContainer ) { - CAknTabGroup* tabGrp = static_cast - ( iNaviPaneContext->DecoratedControl() ); - tabGrp->SetActiveTabByIndex( aTabLocation ); - iNaviControlContainer->PushL( *iNaviPaneContext ); - } - else - { - iNaviControlContainer->PushDefaultL(); + if ( iNaviPaneContext && ( aTabLocation > 0 ) ) + { + CAknTabGroup* tabGrp = static_cast + ( iNaviPaneContext->DecoratedControl() ); + tabGrp->SetActiveTabByIndex( aTabLocation ); + iNaviControlContainer->PushL( *iNaviPaneContext ); + } + else + { + iNaviControlContainer->PushDefaultL(); + } } PSLN_TRACE_DEBUG("CPslnFWBaseView::SetNaviPaneL w/ param END"); } diff -r 0aa5fbdfbc30 -r 3d340a0166ff psln/Rss/Psln.rss --- a/psln/Rss/Psln.rss Tue Apr 27 16:55:05 2010 +0300 +++ b/psln/Rss/Psln.rss Tue May 11 16:27:42 2010 +0300 @@ -539,7 +539,7 @@ { command = EPslnCmdAppChangeScreenSaver; txt = qtn_options_change; - flags = EEikMenuItemSpecific; + flags = EEikMenuItemAction; }, MENU_ITEM { @@ -798,7 +798,7 @@ { command = EPslnCmdAppChangeWallpaper; txt = qtn_options_change; - flags = EEikMenuItemSpecific; + flags = EEikMenuItemAction; } #ifdef RD_SLIDESHOW_WALLPAPER , diff -r 0aa5fbdfbc30 -r 3d340a0166ff psln/Src/PslnScreenSaverView.cpp --- a/psln/Src/PslnScreenSaverView.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/psln/Src/PslnScreenSaverView.cpp Tue May 11 16:27:42 2010 +0300 @@ -48,7 +48,7 @@ // CONSTANTS // Number of default system screensavers. -const TInt KPslnSystemScreenSavers = 2; +const TInt KPslnSystemScreenSavers = 3; // Value in PubSub when screensaver preview is off. const TInt KPslnScreenSaverPreviewOff = 0; @@ -426,6 +426,8 @@ { // Remove Set screensaver, if current selection is already active. aMenuPane->SetItemDimmed( EPslnCmdAppSetScreenSaver, ETrue ); + // Remove Settings which works exactly the same as Change + aMenuPane->SetItemDimmed( EPslnCmdAppSettings, ETrue ); } else if ( IsApplyCommandVisibleL() ) { diff -r 0aa5fbdfbc30 -r 3d340a0166ff psln/pslnslidesetdialog/src/pslnslidesetdialog.cpp --- a/psln/pslnslidesetdialog/src/pslnslidesetdialog.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/psln/pslnslidesetdialog/src/pslnslidesetdialog.cpp Tue May 11 16:27:42 2010 +0300 @@ -539,6 +539,7 @@ // If images is selected, start MGFetch. if ( current != KPslnSlideSetRandomIndex ) { + aSettingPage->MakeVisible( EFalse ); HandleLaunchMGFetchL(); } else diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AknGlobalUI/AknCapServer/src/AknMemoryCardDialogImpl.cpp --- a/uifw/AknGlobalUI/AknCapServer/src/AknMemoryCardDialogImpl.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AknGlobalUI/AknCapServer/src/AknMemoryCardDialogImpl.cpp Tue May 11 16:27:42 2010 +0300 @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include "AknCapServerEntry.h" #include "AknCapServerDefs.h" #include "AknMemoryCardDialogImpl.h" diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AknGlobalUI/NotifierWrapper/src/AknNotiferAppServerApplication.cpp --- a/uifw/AknGlobalUI/NotifierWrapper/src/AknNotiferAppServerApplication.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AknGlobalUI/NotifierWrapper/src/AknNotiferAppServerApplication.cpp Tue May 11 16:27:42 2010 +0300 @@ -36,7 +36,7 @@ #include "AknNotiferAppServerApplicationInterface.h" #include -#include +#include #include //---- Awkward, but declaring base classes otherwise in Akncapserver entry would break app fw. diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AknGlobalUI/OldStyleNotif/Inc/AknNotifyPlugin.h --- a/uifw/AknGlobalUI/OldStyleNotif/Inc/AknNotifyPlugin.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AknGlobalUI/OldStyleNotif/Inc/AknNotifyPlugin.h Tue May 11 16:27:42 2010 +0300 @@ -28,7 +28,7 @@ #include #include #include -#include +#include class CAknIndicatorData; diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AknGlobalUI/OldStyleNotif/Inc/AknSoftNotificationPlugin.h --- a/uifw/AknGlobalUI/OldStyleNotif/Inc/AknSoftNotificationPlugin.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AknGlobalUI/OldStyleNotif/Inc/AknSoftNotificationPlugin.h Tue May 11 16:27:42 2010 +0300 @@ -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 0aa5fbdfbc30 -r 3d340a0166ff uifw/AknGlobalUI/OldStyleNotif/Src/AknSystemListMsgPopup.cpp --- a/uifw/AknGlobalUI/OldStyleNotif/Src/AknSystemListMsgPopup.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AknGlobalUI/OldStyleNotif/Src/AknSystemListMsgPopup.cpp Tue May 11 16:27:42 2010 +0300 @@ -35,7 +35,7 @@ #include #include -#include +#include #include "AknAppsKeyCleanup.inl" diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AknGlobalUI/OldStyleNotif/Src/AknSystemListPopup.cpp --- a/uifw/AknGlobalUI/OldStyleNotif/Src/AknSystemListPopup.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AknGlobalUI/OldStyleNotif/Src/AknSystemListPopup.cpp Tue May 11 16:27:42 2010 +0300 @@ -32,7 +32,7 @@ #include #include -#include +#include #include "AknAppsKeyCleanup.inl" diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AknGlobalUI/OldStyleNotif/Src/AknSystemPopup.cpp --- a/uifw/AknGlobalUI/OldStyleNotif/Src/AknSystemPopup.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AknGlobalUI/OldStyleNotif/Src/AknSystemPopup.cpp Tue May 11 16:27:42 2010 +0300 @@ -49,7 +49,7 @@ #include #include -#include +#include #include #include #include "GlobalWindowPriorities.h" diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AknGlobalUI/OldStyleNotif/Src/aknkeylocknotifier.cpp --- a/uifw/AknGlobalUI/OldStyleNotif/Src/aknkeylocknotifier.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AknGlobalUI/OldStyleNotif/Src/aknkeylocknotifier.cpp Tue May 11 16:27:42 2010 +0300 @@ -33,7 +33,7 @@ #include #include -#include +#include #include // KPSUidAvkonDomain, KAknKeyguardStatus, TAknKeyguardStatus #include // KStartupSecurityCodeQueryStatus #include // KCoreAppUIsAutolockStatus @@ -1131,7 +1131,7 @@ // Enable key lock. // --------------------------------------------------------------------------- // -void CAknKeyLockControl::EnableKeylock( TBool aShowNote ) +void CAknKeyLockControl::EnableKeylock( TBool aShowNote, TBool aNotifySysApp ) { TRACES( RDebug::Print(_L("(KeyGuard)CAknKeyLockControl::EnableKeylock %d"), aShowNote); ) @@ -1153,7 +1153,7 @@ EKeyguardLocked ); iKeyLockEnabled = ETrue; - if ( !iAutolockEnabled ) + if ( !iAutolockEnabled && aNotifySysApp ) { SendMessageToSysAp( EEikKeyLockEnabled ); } @@ -1208,23 +1208,23 @@ } } - // in case Telephone-app is topmost, then the user is confused because he sees but can't use it. - // therefore it's required to hide it, by sending to background. ETMA-7M8A2Y 20090105 - if ( AknLayoutUtils::PenEnabled() ) - { - TApaTaskList apaTaskList(CCoeEnv::Static()->WsSession()); - #define KPhoneAppUid TUid::Uid(0x100058B3) + // in case Telephone-app is topmost, then the user is confused because he sees but can't use it. + // therefore it's required to hide it, by sending to background. ETMA-7M8A2Y 20090105 + if ( AknLayoutUtils::PenEnabled() ) + { + TApaTaskList apaTaskList(CCoeEnv::Static()->WsSession()); + #define KPhoneAppUid TUid::Uid(0x100058B3) - TApaTask apaTask = apaTaskList.FindApp(KPhoneAppUid); - if (apaTask.Exists()) - { - #if defined(_DEBUG) - RDebug::Print(_L("(KeyGuard)CAknKeyLockControl::EnableKeylock() Bring phone to background")); - #endif - // Bring phone to background - apaTask.SendToBackground(); - } - } + TApaTask apaTask = apaTaskList.FindApp(KPhoneAppUid); + if (apaTask.Exists()) + { + #if defined(_DEBUG) + RDebug::Print(_L("(KeyGuard)CAknKeyLockControl::EnableKeylock() Bring phone to background")); + #endif + // Bring phone to background + apaTask.SendToBackground(); + } + } // Start capturing system keys. CaptureSystemKeys(); @@ -1266,7 +1266,7 @@ // Disable key lock. // --------------------------------------------------------------------------- // -void CAknKeyLockControl::DisableKeylock() +void CAknKeyLockControl::DisableKeylock(TBool aNotifySysApp) { TRACES( RDebug::Print(_L("(KeyGuard)CAknKeyLockControl::DisableKeylock")); ) @@ -1301,38 +1301,39 @@ iStatusProperty.Set( EKeyguardNotActive ); iKeyLockEnabled = EFalse; - if ( !iAutolockEnabled ) // only when Autolock was user-activated + if ( !iAutolockEnabled ) // only when Autolock was user-activated { - // in case Telephone-app was topmost and sent to background, then the user is confused because he expects to see it again. - // therefore it's required to show it, by sending to foreground. - if ( AknLayoutUtils::PenEnabled() ) - { - TInt callState; - RProperty::Get( KPSUidCtsyCallInformation, KCTsyCallState, callState ); - #if defined(_DEBUG) - RDebug::Printf( "%s %s (%u) callState=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, callState ); - RDebug::Printf( "%s %s (%u) EPSCTsyCallStateNone=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, EPSCTsyCallStateNone ); - #endif - if (callState != EPSCTsyCallStateNone ) - { - - TApaTaskList apaTaskList(CCoeEnv::Static()->WsSession()); - #define KPhoneAppUid TUid::Uid(0x100058B3) - - TApaTask apaTask = apaTaskList.FindApp(KPhoneAppUid); - if (apaTask.Exists()) - { - RDebug::Printf( "%s %s (%u) foreground=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 ); - #if defined(_DEBUG) - RDebug::Print(_L("(AUTOLOCK)CAknKeyLockControl::EnableKeylock() Send phone to foreground")); - #endif - // Bring phone to foreground - apaTask.BringToForeground(); - } - } - } // PenEnabled() + // in case Telephone-app was topmost and sent to background, then the user is confused because he expects to see it again. + // therefore it's required to show it, by sending to foreground. + if ( AknLayoutUtils::PenEnabled() ) + { + TInt callState; + RProperty::Get( KPSUidCtsyCallInformation, KCTsyCallState, callState ); + #if defined(_DEBUG) + RDebug::Printf( "%s %s (%u) callState=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, callState ); + RDebug::Printf( "%s %s (%u) EPSCTsyCallStateNone=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, EPSCTsyCallStateNone ); + #endif + if (callState != EPSCTsyCallStateNone ) + { + TApaTaskList apaTaskList(CCoeEnv::Static()->WsSession()); + #define KPhoneAppUid TUid::Uid(0x100058B3) + TApaTask apaTask = apaTaskList.FindApp(KPhoneAppUid); + if (apaTask.Exists()) + { + RDebug::Printf( "%s %s (%u) foreground=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 ); + #if defined(_DEBUG) + RDebug::Print(_L("(AUTOLOCK)CAknKeyLockControl::EnableKeylock() Send phone to foreground")); + #endif + // Bring phone to foreground + apaTask.BringToForeground(); + } + } + } // PenEnabled() - SendMessageToSysAp( EEikKeyLockDisabled ); + if (aNotifySysApp) + { + SendMessageToSysAp( EEikKeyLockDisabled ); + } } if ( iNotif ) { @@ -2393,13 +2394,13 @@ // We'll have to disable keylock if we are changing autolock status. if ( IsKeyLockEnabled() && aAutoLockOn != iKeyLockControl->iAutolockEnabled ) { - iKeyLockControl->DisableKeylock(); + iKeyLockControl->DisableKeylock(EFalse); } if ( !IsKeyLockEnabled() ) { iKeyLockControl->AutolockEnabled( aAutoLockOn ); - iKeyLockControl->EnableKeylock(); + iKeyLockControl->EnableKeylock(ETrue, EFalse); } } diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AknGlobalUI/OldStyleNotif/Src/aknmessagereaderlongpressdetector.cpp --- a/uifw/AknGlobalUI/OldStyleNotif/Src/aknmessagereaderlongpressdetector.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AknGlobalUI/OldStyleNotif/Src/aknmessagereaderlongpressdetector.cpp Tue May 11 16:27:42 2010 +0300 @@ -461,22 +461,17 @@ if (Layout_Meta_Data::IsLandscapeOrientation()) { - TAknWindowComponentLayout rightAreaLayout( - AknLayoutScalable_Avkon::area_side_right_pane(0)); - - layoutRect.LayoutRect( - containerRect, - TAknWindowComponentLayout::Compose( - rightAreaLayout, - AknLayoutScalable_Avkon::sctrl_sk_bottom_pane()).LayoutLine()); - - TRect bottomSKRect(layoutRect.Rect()); + layoutRect.LayoutRect(containerRect, + AknLayoutScalable_Avkon::popup_sk_window_g1(0)); - layoutRect.LayoutRect( - bottomSKRect, - AknLayoutScalable_Avkon::aid_touch_sctrl_bottom().LayoutLine()); - - button1Rect = layoutRect.Rect(); + // Button widths are calculated based on cba area width + // margin width is taken from layout + TInt margin = layoutRect.Rect().iTl.iX - containerRect.iTl.iX; + TInt buttonWidth = (containerRect.Width() - margin * 2) / 2; + TSize buttonSize(buttonWidth, layoutRect.Rect().Height()); + + button1Rect = TRect(TPoint(containerRect.iTl.iX + margin, + layoutRect.Rect().iTl.iY), buttonSize); } else { diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AknGlobalUI/OldStyleNotif/Src/aknsystemconfirmationpopup.cpp --- a/uifw/AknGlobalUI/OldStyleNotif/Src/aknsystemconfirmationpopup.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AknGlobalUI/OldStyleNotif/Src/aknsystemconfirmationpopup.cpp Tue May 11 16:27:42 2010 +0300 @@ -35,7 +35,7 @@ #include #include -#include +#include const TInt KCharsInTInt = 4; // TInt32 takes 4 chars. diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AknGlobalUI/OldStyleNotif/Src/aknsystemmsgpopup.cpp --- a/uifw/AknGlobalUI/OldStyleNotif/Src/aknsystemmsgpopup.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AknGlobalUI/OldStyleNotif/Src/aknsystemmsgpopup.cpp Tue May 11 16:27:42 2010 +0300 @@ -34,7 +34,7 @@ #include #include #include -#include +#include #include "AknAppsKeyCleanup.inl" const TInt KCharsInTInt = 4; // TInt32 takes 4 chars. diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AknGlobalUI/OldStyleNotif/Src/aknsystemprogresspopup.cpp --- a/uifw/AknGlobalUI/OldStyleNotif/Src/aknsystemprogresspopup.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AknGlobalUI/OldStyleNotif/Src/aknsystemprogresspopup.cpp Tue May 11 16:27:42 2010 +0300 @@ -38,7 +38,7 @@ #include #include #include -#include +#include #include "AknAppsKeyCleanup.inl" const TInt KCharsInTInt = 4; // TInt32 takes 4 chars. diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AknGlobalUI/cdma/notpisrc/aknkeylocknotifierCdma.cpp --- a/uifw/AknGlobalUI/cdma/notpisrc/aknkeylocknotifierCdma.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AknGlobalUI/cdma/notpisrc/aknkeylocknotifierCdma.cpp Tue May 11 16:27:42 2010 +0300 @@ -41,7 +41,7 @@ #include #include #include -#include +#include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/aknhlist/BWINS/aknhlistU.def --- a/uifw/AvKon/aknhlist/BWINS/aknhlistU.def Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/aknhlist/BWINS/aknhlistU.def Tue May 11 16:27:42 2010 +0300 @@ -73,4 +73,5 @@ ?Sort@CAknTreeList@@QAEXPAVMAknCustomTreeOrdering@@W4TFocusBehaviour@1@H@Z @ 72 NONAME ; void CAknTreeList::Sort(class MAknCustomTreeOrdering *, enum CAknTreeList::TFocusBehaviour, int) ?SetEmptyTextL@CAknTreeList@@QAEXABVTDesC16@@@Z @ 73 NONAME ; void CAknTreeList::SetEmptyTextL(class TDesC16 const &) ?VisibleItemIndex@CAknTreeList@@QBEHH@Z @ 74 NONAME ; int CAknTreeList::VisibleItemIndex(int) const + ?SetMarkingModeObserver@CAknTreeList@@QAEXPAVMAknMarkingModeObserver@@@Z @ 75 NONAME ; void CAknTreeList::SetMarkingModeObserver(class MAknMarkingModeObserver *) diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/aknhlist/EABI/aknhlistU.def --- a/uifw/AvKon/aknhlist/EABI/aknhlistU.def Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/aknhlist/EABI/aknhlistU.def Tue May 11 16:27:42 2010 +0300 @@ -73,4 +73,5 @@ _ZNK12CAknTreeList16FocusedItemIndexEv @ 72 NONAME _ZN12CAknTreeList13SetEmptyTextLERK7TDesC16 @ 73 NONAME _ZNK12CAknTreeList16VisibleItemIndexEi @ 74 NONAME + _ZN12CAknTreeList22SetMarkingModeObserverEP23MAknMarkingModeObserver @ 75 NONAME diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/aknhlist/group/aknhlist.mmp --- a/uifw/AvKon/aknhlist/group/aknhlist.mmp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/aknhlist/group/aknhlist.mmp Tue May 11 16:27:42 2010 +0300 @@ -88,3 +88,4 @@ LIBRARY aknlistloadertfx.lib #endif //RD_UI_TRANSITION_EFFECTS_LIST DEFFILE aknhlist.def +LIBRARY fbscli.lib diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/aknhlist/inc/akntreelistview.h --- a/uifw/AvKon/aknhlist/inc/akntreelistview.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/aknhlist/inc/akntreelistview.h Tue May 11 16:27:42 2010 +0300 @@ -29,6 +29,7 @@ #include #include #include +#include #include "akntreeobserver.h" #include "akntreelistviewitem.h" @@ -40,6 +41,7 @@ class CEikScrollBarFrame; class CAknTreeListPhysicsHandler; class CAknItemActionMenu; +class CAknIconArray; /** * Hierarchical list view. @@ -58,8 +60,8 @@ public MAknsEffectAnimObserver, public MEikCommandObserver, public MAknCollection, - public MAknLongTapDetectorCallBack - + public MAknLongTapDetectorCallBack, + public MAknMarkingCollection { public: @@ -813,23 +815,23 @@ void DoHandleLongPressL(); /** - * Enters marking mode. When in marking mode, the list controls the MSK + * Enters normal marking. When in marking state, the list controls the MSK * commands depending on whether the currently focused item is marked or - * unmarked. Marking mode is entered after specified timeout, when user + * unmarked. Marking state is entered after specified timeout, when user * keeps one of the marking modifier keys pressed. * * Notifications of the beginning and ending of marking mode is sent to * list observers, so that they would not update the MSK commands, when * they are handled by the list. */ - void EnterMarkingMode(); + void EnterMarking(); /** - * Exits marking mode. Marking mode is exited when user releases + * Exits marking state. Marking state is exited when user releases * all the marking modifier keys. After that, the list no longer * handles the MSK commands. */ - void ExitMarkingMode(); + void ExitMarking(); /** * Updates correct mark/unmark command to MSK depending on the marking @@ -870,6 +872,10 @@ */ void UpdateIndexes(); + /** + * Loads marking mode icons. + */ + void LoadMarkingIconsL(); // from base class CCoeControl @@ -894,8 +900,9 @@ * Enables or disables highlight * * @param ETrue to enable highlight, EFalse to disable - */ - void EnableHighlight( TBool aEnabled ); + * @param aPointerEnabled ETrue if highlight was enabled by pointer event. + */ + void EnableHighlight( TBool aEnabled, TBool aPointerEnabled = EFalse ); /** * Is highlight enabled @@ -922,7 +929,7 @@ * * @return ETrue if list has marked items */ - TBool HasMarkedItemsL(); + TBool HasMarkedItemsL() const; // From MAknCollection /** @@ -948,6 +955,55 @@ */ TInt CollectionExtension( TUint aExtensionId, TAny*& a0, TAny* a1 ); +// From MAknMarkingCollection + /** + * Sets multiple marking state. + * + * @param aActive ETrue if multiple marking should be active. + */ + void SetMultipleMarkingState( TBool aActive ); + + /** + * Returns the collection marking state. The state is combination of + * flags defined in @c TStateFlag. + * + * @return Collection state. + */ + TUint MarkingState() const; + + /** + * Marks the currently selected item. + */ + void MarkCurrentItemL(); + + /** + * Marks all items in the collection. + */ + void MarkAllL(); + + /** + * Unmarks all items in the collection. + */ + void UnmarkAll(); + + /* + * Can current item be marked. + */ + TBool CurrentItemMarkable(); + + /** + * Returns whether the observer accepts ending of marking mode + * + * @return ETrue if observer accepts exiting marking mode + */ + TBool ExitMarkingMode(); + + /** + * Reports collection change event. + */ + void ReportCollectionChangedEvent(); + + // From MAknLongTapDetectorCallBack /** * Long tap detector callback @@ -1099,14 +1155,23 @@ */ TBool iMirroredLayoutInUse; - /** * Remember pointer to bottom item. Use for drawing line seperator only. * iBottomIndex is not valid in some case becaue of iItems already changed. * Not own. */ CAknTreeItem* iBottomItem; + + /** + * Whether marking mode is activated or not. + */ + TBool iMarkingMode; + + /** + * Array for marking mode icons. + * Own. + */ + CAknIconArray* iMarkingIconArray; }; - #endif // C_AKNTREELISTVIEW_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/aknhlist/src/akntreelist.cpp --- a/uifw/AvKon/aknhlist/src/akntreelist.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/aknhlist/src/akntreelist.cpp Tue May 11 16:27:42 2010 +0300 @@ -664,6 +664,17 @@ // --------------------------------------------------------------------------- +// CAknTreeList::SetMarkingModeObserver +// --------------------------------------------------------------------------- +// +EXPORT_C void CAknTreeList::SetMarkingModeObserver( + MAknMarkingModeObserver* aObserver ) + { + iMarkingModeObserver = aObserver; + } + + +// --------------------------------------------------------------------------- // Handles key events by mediating them to the view. // --------------------------------------------------------------------------- // @@ -924,6 +935,16 @@ // --------------------------------------------------------------------------- +// Marking mode observer +// --------------------------------------------------------------------------- +// +MAknMarkingModeObserver* CAknTreeList::MarkingModeObserver() + { + return iMarkingModeObserver; + } + + +// --------------------------------------------------------------------------- // Does nothing, the draw request is mediated to the view through component // control structure. // --------------------------------------------------------------------------- diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/aknhlist/src/akntreelistphysicshandler.cpp --- a/uifw/AvKon/aknhlist/src/akntreelistphysicshandler.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/aknhlist/src/akntreelistphysicshandler.cpp Tue May 11 16:27:42 2010 +0300 @@ -163,7 +163,7 @@ // flicking was ongoing when content stopped if ( iFeedback ) { - iFeedback->InstantFeedback( ETouchFeedbackBasic ); + iFeedback->InstantFeedback( ETouchFeedbackList ); } wasFlicking = ETrue; } @@ -326,23 +326,10 @@ // also on up event -> play basic list feedback if ( iFeedback ) { - TTouchLogicalFeedback fbType = ETouchFeedbackList; if ( iItemToBeSelected != NULL ) { - if ( iItemToBeSelected->IsLeaf() && iItemToBeSelected->IsMarkable() ) - { - fbType = ETouchFeedbackCheckbox; - } - else if ( iItemToBeSelected->Node() != NULL ) - { - if ( iItemToBeSelected->Node()->ChildCount() == 0 && - iItemToBeSelected->Node()->IsMarkable() ) - { - fbType = ETouchFeedbackCheckbox; - } - } iFeedback->InstantFeedback( iTreeListView, - fbType, + ETouchFeedbackList, ETouchFeedbackVibra, aPointerEvent ); } diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/aknhlist/src/akntreelistview.cpp --- a/uifw/AvKon/aknhlist/src/akntreelistview.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/aknhlist/src/akntreelistview.cpp Tue May 11 16:27:42 2010 +0300 @@ -26,6 +26,9 @@ #include #include // for testability hooks #include +#include +#include +#include #include "akntreelistview.h" #include "akntree.h" #include "akntreelist.h" @@ -49,6 +52,8 @@ // Number of additional items to draw const TInt KAdditionalItems = 2; +// Space for check box in marking mode +const TInt KCheckBoxOffset = 30; // Tree list view flag definitions. enum TAknTreeListViewFlags @@ -58,7 +63,7 @@ EFlagLooping, EFlagUpdateBackground, EFlagMarkingEnabled, // Marking of list items is enabled. - EFlagMarkingMode, // List in marking mode (MSK controlled by list). + EFlagMarkingState, // List in marking state (MSK controlled by list). EFlagMark, // List items are being marked. EFlagUnmark, // List items are being unmarked. EFlagSimultaneousMarking, // Simultaneous marking ongoing. @@ -112,6 +117,13 @@ } delete iLongTapDetector; + if ( iMarkingIconArray ) + { + iMarkingIconArray->ResetAndDestroy(); + } + + delete iMarkingIconArray; + #ifdef RD_UI_TRANSITION_EFFECTS_LIST if ( CAknListLoader::TfxApiInternal( iGc ) ) { @@ -470,7 +482,21 @@ // void CAknTreeListView::SelectItem( CAknTreeItem* aSelectedItem ) { - SelectItem( aSelectedItem, EFalse ); + if ( iMarkingMode ) + { + if ( aSelectedItem->IsMarkable() ) + { + MarkItem( aSelectedItem, !aSelectedItem->IsMarked(), ETrue ); + } + else if ( aSelectedItem->IsNode() ) + { + SelectItem( aSelectedItem, EFalse ); + } + } + else + { + SelectItem( aSelectedItem, EFalse ); + } } @@ -787,6 +813,11 @@ switch ( aType ) { + case KEikMessageWindowsFadeChange: + { + ReportCollectionChangedEvent(); + } + case KAknsMessageSkinChange: { TRAPD( error, CreateAnimationL() ) @@ -795,6 +826,8 @@ delete iAnimation; iAnimation = NULL; } + + TRAP_IGNORE( LoadMarkingIconsL() ); break; } @@ -1308,6 +1341,7 @@ } iMirroredLayoutInUse = AknLayoutUtils::LayoutMirrored(); + LoadMarkingIconsL(); } @@ -1639,13 +1673,16 @@ CAknTreeItem* item = FocusedItem(); if ( item ) { - if ( MarkingOngoing() ) + if ( iMarkingMode ) { - MarkItem( item, !item->IsMarked(), ETrue ); + if ( item->IsMarkable() ) + { + MarkItem( item, !item->IsMarked(), ETrue ); + } } else { - SelectItem( item, true ); + SelectItem( item, EFalse ); } } } @@ -1989,6 +2026,11 @@ iterator.Previous(); } + if ( iMarkingMode ) + { + itemRect.iBr.iX -= KCheckBoxOffset; + } + // Update items and their rectangles. for ( TInt ii = 0; ii < iItems.Count(); ++ii ) { @@ -2581,9 +2623,9 @@ } // Exits marking mode. - if ( iFlags.IsSet( EFlagMarkingMode ) ) + if ( iFlags.IsSet( EFlagMarkingState ) ) { - ExitMarkingMode(); + ExitMarking(); } // Remove MSK observer. @@ -2644,18 +2686,18 @@ // void CAknTreeListView::DoHandleLongPressL() { - if ( iFlags.IsClear( EFlagMarkingMode ) ) + if ( iFlags.IsClear( EFlagMarkingState ) ) { - EnterMarkingMode(); + EnterMarking(); } } // --------------------------------------------------------------------------- -// Enters marking mode. +// Enters marking state. // --------------------------------------------------------------------------- // -void CAknTreeListView::EnterMarkingMode() +void CAknTreeListView::EnterMarking() { CEikButtonGroupContainer* bgc; CCoeControl* MSK = NULL; @@ -2689,7 +2731,7 @@ { ReportTreeListEvent( MAknTreeListObserver::EMarkingModeEnabled, iTree.Id( FocusedItem() ) ); - iFlags.Set( EFlagMarkingMode ); + iFlags.Set( EFlagMarkingState ); bgc->DrawNow(); } } @@ -2697,12 +2739,12 @@ // --------------------------------------------------------------------------- -// Exits marking mode. +// Exits marking state. // --------------------------------------------------------------------------- // -void CAknTreeListView::ExitMarkingMode() +void CAknTreeListView::ExitMarking() { - if ( iFlags.IsSet( EFlagMarkingMode ) ) + if ( iFlags.IsSet( EFlagMarkingState ) ) { CEikButtonGroupContainer* bgc = NULL; CCoeControl* MSK = NULL; @@ -2722,7 +2764,7 @@ } ReportTreeListEvent( MAknTreeListObserver::EMarkingModeDisabled, iTree.Id( FocusedItem() ) ); - iFlags.Clear( EFlagMarkingMode ); + iFlags.Clear( EFlagMarkingState ); } } @@ -2768,8 +2810,7 @@ void CAknTreeListView::DrawItemsWithPhysics( const TRect& aRect ) const { TBool empty = IsEmpty(); - TInt offset = Offset(); - + TInt offset = Offset(); #ifdef RD_UI_TRANSITION_EFFECTS_LIST CWindowGc& gc = iGc && !empty ? *iGc : SystemGc(); #else @@ -2827,11 +2868,53 @@ KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 ); + if ( iMarkingMode && iMarkingIconArray && iMarkingIconArray->Count()== 2 ) + { + // Set sizes for marking icon bitmaps + TRect drawRect; + if ( iItems.Count() > 0 ) + { + drawRect = iItems[0].Rect(); + drawRect.iBr.iX += KCheckBoxOffset; + } + + // Rect for the marking icon + TRect iconRect = RectFromLayout( drawRect, + AknLayoutScalable_Avkon::list_single_graphic_pane_g1( 0 ) ); + iconRect.Move( 0, -offset ); + + gc.SetPenColor( textColor ); + gc.SetPenStyle( CGraphicsContext::ESolidPen ); + + for ( TInt ii = 0; ii < iMarkingIconArray->Count(); ++ii ) + { + CGulIcon* icon = (*iMarkingIconArray)[ii]; + CFbsBitmap* bitmap = icon->Bitmap(); + + if ( bitmap ) + { + TSize size( bitmap->SizeInPixels() ); // set size if not already + TSize targetSize( iconRect.Size() ); + + if ( size.iWidth != targetSize.iWidth && size.iHeight + != targetSize.iHeight ) + { + AknIconUtils::SetSize( bitmap, targetSize, + EAspectRatioPreservedAndUnusedSpaceRemoved ); + } + } + } + } const TInt itemCount = iItems.Count(); for ( TInt ii = 0; ii < itemCount; ++ii ) { TRect drawRect( iItems[ii].Rect() ); + if ( iMarkingMode ) + { + drawRect.iBr.iX += KCheckBoxOffset; + } + if ( iItems[ii].Item() ) { @@ -2875,6 +2958,30 @@ } #endif + if ( iMarkingMode && iMarkingIconArray && iMarkingIconArray->Count()== 2 ) + { + // Rect for the marking icon + TRect iconRect = RectFromLayout( drawRect, + AknLayoutScalable_Avkon::list_single_graphic_pane_g1( 0 ) ); + + iconRect.Move( 0, -offset ); + CGulIcon* icon = (*iMarkingIconArray)[1]; // unchecked + + TBool marked = ( iItems[ii].Item()->IsMarked() ); + if ( marked ) + { + icon = (*iMarkingIconArray)[0]; + } + + CFbsBitmap* bitmap = icon->Bitmap(); + + if ( bitmap ) + { + gc.BitBltMasked( iconRect.iTl, bitmap, + iconRect.Size(), icon->Mask(), EFalse ); + } + } + if ( iItems[ii].Item() != iBottomItem ) { TRect offsetRect( drawRect ); @@ -2882,6 +2989,12 @@ AknListUtils::DrawSeparator( gc, offsetRect, textColor, skin ); } + if ( iMarkingMode ) + { + gc.SetOrigin( TPoint( KCheckBoxOffset, 0 ) ); + drawRect.iBr.iX -= KCheckBoxOffset; + } + TBool focused = ( FocusedItem() && iItems[ii].Item() == FocusedItem() ); @@ -2944,9 +3057,26 @@ } #endif //RD_UI_TRANSITION_EFFECTS_LIST - // Draw item. - iItems[ii].Draw( gc, iTree, drawRect, focused, iViewLevel, - StructureLines(), Indention(), IndentionWidth() ); + if ( iMarkingMode ) + { + TBool marked = iItems[ii].Item()->IsMarked(); + if ( marked ) + { + iItems[ii].Item()->SetMarked( EFalse ); + } + iItems[ii].Draw( gc, iTree, drawRect, focused, iViewLevel, + StructureLines(), Indention(), IndentionWidth() ); + + if ( marked ) + { + iItems[ii].Item()->SetMarked( ETrue ); + } + } + else + { + iItems[ii].Draw( gc, iTree, drawRect, focused, iViewLevel, + StructureLines(), Indention(), IndentionWidth() ); + } #ifdef RD_UI_TRANSITION_EFFECTS_LIST if ( transApi ) @@ -2959,6 +3089,10 @@ } #endif //RD_UI_TRANSITION_EFFECTS_LIST + if ( iMarkingMode ) + { + gc.SetOrigin( TPoint( 0, 0 ) ); + } } } } @@ -3070,8 +3204,11 @@ // Enables or disables the highlight drawing // --------------------------------------------------------------------------- // -void CAknTreeListView::EnableHighlight( TBool aEnabled ) +void CAknTreeListView::EnableHighlight( TBool aEnabled, + TBool aPointerEnabled ) { + TBool wasEnabled = iFlags.IsSet( EFlagHighlightEnabled ); + if ( aEnabled ) { iFlags.Set( EFlagHighlightEnabled ); @@ -3080,6 +3217,13 @@ { iFlags.Clear( EFlagHighlightEnabled ); } + + if ( !aPointerEnabled + && ( ( wasEnabled && !aEnabled ) + || ( !wasEnabled && aEnabled ) ) ) + { + ReportCollectionChangedEvent(); + } } // --------------------------------------------------------------------------- @@ -3111,7 +3255,7 @@ TUint CAknTreeListView::CollectionState() const { TUint state( 0 ); - if ( IsVisible() ) + if ( IsVisible() && ( !DrawableWindow() || !DrawableWindow()->IsFaded() ) ) { state |= MAknCollection::EStateCollectionVisible; } @@ -3119,6 +3263,12 @@ { state |= MAknCollection::EStateHighlightVisible; } + + if ( iList.Flags() & KAknTreeListMarkable ) + { + state |= MAknCollection::EStateMultipleSelection; + } + return state; } @@ -3137,12 +3287,174 @@ // CAknTreeListView::CollectionExtension // ----------------------------------------------------------------------------- // -TInt CAknTreeListView::CollectionExtension( TUint /*aExtensionId*/, - TAny*& /*a0*/, TAny* /*a1*/ ) +TInt CAknTreeListView::CollectionExtension( + TUint aExtensionId, TAny*& a0, TAny* /*a1*/ ) { + if ( aExtensionId == MAknMarkingCollection::TYPE ) + { + a0 = static_cast( this ); + } + return KErrNone; } + +// ----------------------------------------------------------------------------- +// CAknTreeListView::SetMultipleMarkingState +// ----------------------------------------------------------------------------- +// +void CAknTreeListView::SetMultipleMarkingState( TBool aActive ) + { + if ( iMarkingMode != aActive ) + { + if ( !aActive ) + { + TBool markedItems( EFalse ); + TRAP_IGNORE( markedItems = HasMarkedItemsL() ); + if ( markedItems ) + { + UnmarkAll(); + } + } + + EnableMarking( aActive ); + iMarkingMode = aActive; + LayoutView(); + DrawDeferred(); + + if ( iList.MarkingModeObserver() ) + { + iList.MarkingModeObserver()->MarkingModeStatusChanged( aActive ); + } + } + } + + +// ----------------------------------------------------------------------------- +// CAknTreeListView::MarkingState +// ----------------------------------------------------------------------------- +// +TUint CAknTreeListView::MarkingState() const + { + TUint state( 0 ); + + if ( iMarkingMode ) + { + state |= MAknMarkingCollection::EStateMarkingMode; + + TBool markedItems ( EFalse ); + TRAP_IGNORE( markedItems = HasMarkedItemsL() ); + if ( markedItems ) + { + state |= MAknMarkingCollection::EStateMarkedItems; + } + if ( iItems.Count() == 0 ) + { + state |= MAknMarkingCollection::EStateCollectionEmpty; + } + } + return state; + } + + +// ----------------------------------------------------------------------------- +// CAknTreeListView::MarkCurrentItemL +// ----------------------------------------------------------------------------- +// +void CAknTreeListView::MarkCurrentItemL() + { + if ( iMarkingMode && FocusedItem() && FocusedItem()->IsMarkable() ) + { + MarkItem( FocusedItem(), ETrue, ETrue ); + } + } + + +// ----------------------------------------------------------------------------- +// CAknTreeListView::MarkAllL +// ----------------------------------------------------------------------------- +// +void CAknTreeListView::MarkAllL() + { + if ( iMarkingMode ) + { + TAknTreeIterator iterator = iTree.Iterator(); + CAknTreeItem* item = NULL; + item = iterator.First(); + while ( item && iterator.HasNext() ) + { + if ( item->IsMarkable() ) + { + MarkItem( item, ETrue, EFalse ); + } + item = iterator.Next(); + } + DrawDeferred(); + } + } + + +// ----------------------------------------------------------------------------- +// CAknTreeListView::UnmarkAll +// ----------------------------------------------------------------------------- +// +void CAknTreeListView::UnmarkAll() + { + if ( iMarkingMode ) + { + TAknTreeIterator iterator = iTree.Iterator(); + CAknTreeItem* item = NULL; + item = iterator.First(); + while ( item && iterator.HasNext() ) + { + MarkItem( item, EFalse, EFalse ); + item = iterator.Next(); + } + DrawDeferred(); + } + } + + + // ----------------------------------------------------------------------------- +// CAknTreeListView::CurrentItemMarkable +// ----------------------------------------------------------------------------- +// +TBool CAknTreeListView::CurrentItemMarkable() + { + if ( FocusedItem() && !FocusedItem()->IsMarkable() ) + { + return EFalse; + } + return ETrue; + } + +// ----------------------------------------------------------------------------- +// CAknTreeListView::ExitMarkingMode +// ----------------------------------------------------------------------------- +// +TBool CAknTreeListView::ExitMarkingMode() + { + if ( iList.MarkingModeObserver() ) + { + return iList.MarkingModeObserver()->ExitMarkingMode(); + } + return ETrue; + } + + +// ----------------------------------------------------------------------------- +// CAknTreeListView::ReportCollectionChangedEvent +// ----------------------------------------------------------------------------- +// +void CAknTreeListView::ReportCollectionChangedEvent() + { + if ( iItemActionMenu ) + { + iItemActionMenu->CollectionChanged( *this ); + } + } + + // --------------------------------------------------------------------------- // CAknTreeListView::HandleLongTapEventL // --------------------------------------------------------------------------- @@ -3186,7 +3498,7 @@ // CAknTreeListView::HasMarkedItemsL // --------------------------------------------------------------------------- // -TBool CAknTreeListView::HasMarkedItemsL() +TBool CAknTreeListView::HasMarkedItemsL() const { RArray selection; CleanupClosePushL( selection ); @@ -3265,3 +3577,43 @@ } } + +// ----------------------------------------------------------------------------- +// CAknTreeListView::LoadMarkingIconsL +// ----------------------------------------------------------------------------- +// +void CAknTreeListView::LoadMarkingIconsL() + { + if ( !iMarkingIconArray ) + { + iMarkingIconArray = new ( ELeave ) CAknIconArray( 2 ); + } + else + { + iMarkingIconArray->ResetAndDestroy(); + } + + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + const TDesC& avkonIconFile = AknIconUtils::AvkonIconFileName(); + + CGulIcon* icon = AknsUtils::CreateGulIconL( skin, + KAknsIIDQgnPropCheckboxOn, + avkonIconFile, + EMbmAvkonQgn_prop_checkbox_on, + EMbmAvkonQgn_prop_checkbox_on_mask ); + + CleanupStack::PushL( icon ); + iMarkingIconArray->AppendL( icon ); + CleanupStack::Pop( icon ); + + icon = AknsUtils::CreateGulIconL( skin, + KAknsIIDQgnPropCheckboxOff, + avkonIconFile, + EMbmAvkonQgn_prop_checkbox_off, + EMbmAvkonQgn_prop_checkbox_off_mask ); + + CleanupStack::PushL( icon ); + iMarkingIconArray->AppendL( icon ); + CleanupStack::Pop( icon ); + } + diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/aknphysics/src/aknphysics.cpp --- a/uifw/AvKon/aknphysics/src/aknphysics.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/aknphysics/src/aknphysics.cpp Tue May 11 16:27:42 2010 +0300 @@ -426,7 +426,15 @@ const TTime& aStartTime ) { // Check that world really exists - if ( !iEngine || !iEngine->WorldExists() ) + if ( iEngine ) + { + if ( ( !iLandscape && iWorldSize.iHeight <= iViewSize.iHeight ) || + ( iLandscape && iWorldSize.iWidth <= iViewSize.iWidth ) ) + { + return EFalse; + } + } + else { return EFalse; } @@ -544,6 +552,14 @@ // EXPORT_C void CAknPhysics::RegisterPanningPosition( const TPoint& aDelta ) { + TInt viewSize = !iLandscape ? iViewSize.iHeight : iViewSize.iWidth; + TInt worldSize = !iLandscape ? iWorldSize.iHeight : iWorldSize.iWidth; + + if ( worldSize <= viewSize ) + { + return; + } + TTimeIntervalMicroSeconds time; TInt err( KErrNone ); if ( iNullThread.Handle() ) @@ -589,7 +605,8 @@ iPanningDrawOmitted = !drawNow; TPoint position( iObserver.ViewPosition() ); - position += aDelta; + + TPoint movement( aDelta ); if ( iRestrictor && iRestrictor->AllowedViewPosition( position ) ) { @@ -602,6 +619,23 @@ iEngine->StartFpsLogging(); } } + + // reduce movement if content is dragged over boundaries + if ( OngoingPhysicsAction() == EAknPhysicsActionDragging ) + { + TInt currentPosition = !iLandscape ? position.iY : position.iX; + TInt* movementPtr = !iLandscape ? &movement.iY : &movement.iX; + + TInt top = viewSize / 2; + TInt bottom = worldSize - top; + + if ( currentPosition < top || currentPosition > bottom ) + { + *movementPtr /= 2; + } + } + + position += movement; NotifyViewPositionChanged( position, drawNow ); diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/aknphysics/src/aknphysicsconeobserver.cpp --- a/uifw/AvKon/aknphysics/src/aknphysicsconeobserver.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/aknphysics/src/aknphysicsconeobserver.cpp Tue May 11 16:27:42 2010 +0300 @@ -319,7 +319,8 @@ } if ( aEvent->iType == TPointerEvent::EButton1Up && - iPhysics->IsPanningDrawOmitted() ) + iPhysics->IsPanningDrawOmitted() && + eventTarget == ETargetViewControl ) { // Ensure that the last panning position gets drawn if the last // view redraw was omitted due to too high CPU use. diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/group/avkon_icons_dc.mk --- a/uifw/AvKon/group/avkon_icons_dc.mk Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/group/avkon_icons_dc.mk Tue May 11 16:27:42 2010 +0300 @@ -136,7 +136,7 @@ $(OLDURELZDIR)\resource\apps\aknmemorycardui.mif \ $(OLDUDEBZDIR)\resource\apps\aknmemorycardui.mbm \ $(OLDURELZDIR)\resource\apps\aknmemorycardui.mbm \ - ..\avkon2mifheader\avkon2mifheader_inst.cpp + ..\Avkon2Mifheader\avkon2mifheader_inst.cpp FREEZE : ; diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/group/bld.inf --- a/uifw/AvKon/group/bld.inf Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/group/bld.inf Tue May 11 16:27:42 2010 +0300 @@ -18,6 +18,7 @@ #include + PRJ_EXPORTS // OEM headers - not in SDK! @@ -46,29 +47,39 @@ ../conf/s60/avkon_102858F2.crml APP_LAYER_CRML(avkon_102858F2.crml) ../conf/s60/testability_2001844B.crml APP_LAYER_CRML(testability_2001844B.crml) -mif2cdlindex.xml /epoc32/tools/makefile_templates/s60/mif2cdindex.xml -mif2cdlindex.flm /epoc32/tools/makefile_templates/s60/mif2cdlindex.flm -mif2cdlindex.meta /epoc32/tools/makefile_templates/s60/mif2cdlindex.meta +mif2cdlindex.xml /epoc32/tools/makefile_templates/s60/mif2cdindex.xml +mif2cdlindex.flm /epoc32/tools/makefile_templates/s60/mif2cdlindex.flm +mif2cdlindex.meta /epoc32/tools/makefile_templates/s60/mif2cdlindex.meta + +smiley.mbg /epoc32/include/smiley.mbg -../srcdata/avkonsystemsounds/volume_min.wav /epoc32/data/z/resource/avkonsystemsounds/volume_min.wav -../srcdata/avkonsystemsounds/volume_max.wav /epoc32/data/z/resource/avkonsystemsounds/volume_max.wav -../srcdata/avkonsystemsounds/battery_low.wav /epoc32/data/z/resource/avkonsystemsounds/battery_low.wav -../srcdata/avkonsystemsounds/default_beep.wav /epoc32/data/z/resource/avkonsystemsounds/default_beep.wav -../srcdata/avkonsystemsounds/battery_dead.wav /epoc32/data/z/resource/avkonsystemsounds/battery_dead.wav +smiley.mif /epoc32/data/z/resource/apps/smiley.mif +smiley.mif /epoc32/release/winscw/udeb/z/resource/apps/smiley.mif +smiley.mif /epoc32/release/winscw/urel/z/resource/apps/smiley.mif +smiley.mif /epoc32/release/armv5/udeb/Z/resource/apps/smiley.mif +smiley.mif /epoc32/release/armv5/urel/z/resource/apps/smiley.mif -../srcdata/avkonsystemsounds/volume_min.wav /epoc32/release/winscw/udeb/z/resource/avkonsystemsounds/volume_min.wav -../srcdata/avkonsystemsounds/volume_max.wav /epoc32/release/winscw/udeb/z/resource/avkonsystemsounds/volume_max.wav -../srcdata/avkonsystemsounds/battery_low.wav /epoc32/release/winscw/udeb/z/resource/avkonsystemsounds/battery_low.wav -../srcdata/avkonsystemsounds/default_beep.wav /epoc32/release/winscw/udeb/z/resource/avkonsystemsounds/default_beep.wav -../srcdata/avkonsystemsounds/battery_dead.wav /epoc32/release/winscw/udeb/z/resource/avkonsystemsounds/battery_dead.wav +../srcdata/AvkonSystemSounds/volume_min.wav /epoc32/data/z/resource/avkonsystemsounds/volume_min.wav +../srcdata/AvkonSystemSounds/volume_max.wav /epoc32/data/z/resource/avkonsystemsounds/volume_max.wav +../srcdata/AvkonSystemSounds/battery_low.wav /epoc32/data/z/resource/avkonsystemsounds/battery_low.wav +../srcdata/AvkonSystemSounds/default_beep.wav /epoc32/data/z/resource/avkonsystemsounds/default_beep.wav +../srcdata/AvkonSystemSounds/battery_dead.wav /epoc32/data/z/resource/avkonsystemsounds/battery_dead.wav -../srcdata/avkonsystemsounds/volume_min.wav /epoc32/release/winscw/urel/z/resource/avkonsystemsounds/volume_min.wav -../srcdata/avkonsystemsounds/volume_max.wav /epoc32/release/winscw/urel/z/resource/avkonsystemsounds/volume_max.wav -../srcdata/avkonsystemsounds/battery_low.wav /epoc32/release/winscw/urel/z/resource/avkonsystemsounds/battery_low.wav -../srcdata/avkonsystemsounds/default_beep.wav /epoc32/release/winscw/urel/z/resource/avkonsystemsounds/default_beep.wav -../srcdata/avkonsystemsounds/battery_dead.wav /epoc32/release/winscw/urel/z/resource/avkonsystemsounds/battery_dead.wav +../srcdata/AvkonSystemSounds/volume_min.wav /epoc32/release/winscw/udeb/z/resource/avkonsystemsounds/volume_min.wav +../srcdata/AvkonSystemSounds/volume_max.wav /epoc32/release/winscw/udeb/z/resource/avkonsystemsounds/volume_max.wav +../srcdata/AvkonSystemSounds/battery_low.wav /epoc32/release/winscw/udeb/z/resource/avkonsystemsounds/battery_low.wav +../srcdata/AvkonSystemSounds/default_beep.wav /epoc32/release/winscw/udeb/z/resource/avkonsystemsounds/default_beep.wav +../srcdata/AvkonSystemSounds/battery_dead.wav /epoc32/release/winscw/udeb/z/resource/avkonsystemsounds/battery_dead.wav + +../srcdata/AvkonSystemSounds/volume_min.wav /epoc32/release/winscw/urel/z/resource/avkonsystemsounds/volume_min.wav +../srcdata/AvkonSystemSounds/volume_max.wav /epoc32/release/winscw/urel/z/resource/avkonsystemsounds/volume_max.wav +../srcdata/AvkonSystemSounds/battery_low.wav /epoc32/release/winscw/urel/z/resource/avkonsystemsounds/battery_low.wav +../srcdata/AvkonSystemSounds/default_beep.wav /epoc32/release/winscw/urel/z/resource/avkonsystemsounds/default_beep.wav +../srcdata/AvkonSystemSounds/battery_dead.wav /epoc32/release/winscw/urel/z/resource/avkonsystemsounds/battery_dead.wav + PRJ_MMPFILES + // Specify the .mmp files required for building the important component releasables. // Note that you should specify any .mmp files for test programs further down the file. // @@ -117,7 +128,7 @@ END START EXTENSION s60/mif2cdlindex -OPTION TARGETFILE Avkon2mifheader_inst.cpp +OPTION TARGETFILE avkon2mifheader_inst.cpp OPTION GENPATH ../Avkon2MifHeader OPTION MIFFILE avkon2.mif // OPTION MIFDIR armv5 uses $(EPOCROOT)epoc32/data/Z/resource/apps and for winscw uses $(EPOCROOT)epoc32/release/winscw/$(CFG)/z/resource/apps @@ -137,11 +148,11 @@ OPTION SOURCEFILE Iconlist3.txt END -START EXTENSION s60/mifconv -OPTION TARGETFILE smiley.mif -OPTION HEADERFILE smiley.mbg -OPTION SOURCEFILE smileyiconlist2.txt -END +//START EXTENSION s60/mifconv +//OPTION TARGETFILE smiley.mif +//OPTION HEADERFILE smiley.mbg +//OPTION SOURCEFILE smileyiconlist2.txt +//END #endif #endif diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/group/mif2cdlindex.flm --- a/uifw/AvKon/group/mif2cdlindex.flm Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/group/mif2cdlindex.flm Tue May 11 16:27:42 2010 +0300 @@ -6,7 +6,7 @@ # The file destinations relative to EPOCROOT ## Parameters that are expected: -# TARGETFILE Avkon2mifheader_inst.cpp +# TARGETFILE avkon2mifheader_inst.cpp # GENPATH # MIFFILE avkon2.mif # DLLNAME Avkon2MifHeader diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/group/smiley.mbg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uifw/AvKon/group/smiley.mbg Tue May 11 16:27:42 2010 +0300 @@ -0,0 +1,58 @@ + +/* This file has been generated, DO NOT MODIFY. */ +enum TMifSmiley + { + EMbmSmileyQgn_indi_switch_smiley2 = 16384, + EMbmSmileyQgn_indi_switch_sct2 = 16386, + EMbmSmileyQgn_indi_smiley_angry = 16388, + EMbmSmileyQgn_indi_smiley_bigsmile = 16390, + EMbmSmileyQgn_indi_smiley_cry = 16392, + EMbmSmileyQgn_indi_smiley_evil = 16394, + EMbmSmileyQgn_indi_smiley_eyebrows = 16396, + EMbmSmileyQgn_indi_smiley_heart = 16398, + EMbmSmileyQgn_indi_smiley_irritated = 16400, + EMbmSmileyQgn_indi_smiley_kissing = 16402, + EMbmSmileyQgn_indi_smiley_nerd = 16404, + EMbmSmileyQgn_indi_smiley_neutral = 16406, + EMbmSmileyQgn_indi_smiley_pirate = 16408, + EMbmSmileyQgn_indi_smiley_sarcastic = 16410, + EMbmSmileyQgn_indi_smiley_sarcastic_mad = 16412, + EMbmSmileyQgn_indi_smiley_smile = 16414, + EMbmSmileyQgn_indi_smiley_spring = 16416, + EMbmSmileyQgn_indi_smiley_suprised = 16418, + EMbmSmileyQgn_indi_smiley_tongue = 16420, + EMbmSmileyQgn_indi_smiley_unhappy = 16422, + EMbmSmileyQgn_indi_smiley_verycool = 16424, + EMbmSmileyQgn_indi_smiley_wink = 16426, + EMbmSmileyQgn_indi_smiley_wink_grin = 16428, + EMbmSmileyQgn_indi_smiley_wondering = 16430, + EMbmSmileyQgn_indi_smiley_coffee = 16432, + EMbmSmileyQgn_indi_smiley_connive = 16434, + EMbmSmileyQgn_indi_smiley_denial = 16436, + EMbmSmileyQgn_indi_smiley_flirt = 16438, + EMbmSmileyQgn_indi_smiley_frustrated = 16440, + EMbmSmileyQgn_indi_smiley_gum = 16442, + EMbmSmileyQgn_indi_smiley_idea = 16444, + EMbmSmileyQgn_indi_smiley_innocent = 16446, + EMbmSmileyQgn_indi_smiley_laugh = 16448, + EMbmSmileyQgn_indi_smiley_party = 16450, + EMbmSmileyQgn_indi_smiley_run = 16452, + EMbmSmileyQgn_indi_smiley_silly = 16454, + EMbmSmileyQgn_indi_smiley_sleep = 16456, + EMbmSmileyQgn_indi_smiley_surprised = 16458, + EMbmSmileyQgn_indi_smiley_anim_coffee = 16460, + EMbmSmileyQgn_indi_smiley_anim_connive = 16462, + EMbmSmileyQgn_indi_smiley_anim_denial = 16464, + EMbmSmileyQgn_indi_smiley_anim_flirt = 16466, + EMbmSmileyQgn_indi_smiley_anim_frustrated = 16468, + EMbmSmileyQgn_indi_smiley_anim_gum = 16470, + EMbmSmileyQgn_indi_smiley_anim_idea = 16472, + EMbmSmileyQgn_indi_smiley_anim_innocent = 16474, + EMbmSmileyQgn_indi_smiley_anim_laugh = 16476, + EMbmSmileyQgn_indi_smiley_anim_party = 16478, + EMbmSmileyQgn_indi_smiley_anim_run = 16480, + EMbmSmileyQgn_indi_smiley_anim_silly = 16482, + EMbmSmileyQgn_indi_smiley_anim_sleep = 16484, + EMbmSmileyQgn_indi_smiley_anim_surprised = 16486, + EMbmSmileyLastElement + }; diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/group/smiley.mif Binary file uifw/AvKon/group/smiley.mif has changed diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/notifsrc/AknSDData.cpp --- a/uifw/AvKon/notifsrc/AknSDData.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/notifsrc/AknSDData.cpp Tue May 11 16:27:42 2010 +0300 @@ -15,7 +15,7 @@ * */ -#include +#include #include #include "aknSDData.h" diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/AknAdaptiveSearchGrid.cpp --- a/uifw/AvKon/src/AknAdaptiveSearchGrid.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/AknAdaptiveSearchGrid.cpp Tue May 11 16:27:42 2010 +0300 @@ -499,22 +499,6 @@ AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EControlPane, controlPaneRect ); currentWindowRect.iBr.iY = controlPaneRect.iTl.iY; - - TRect mainPaneRect; - AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, - mainPaneRect ); - - if ( 0 != iFindpaneRect.Size().iWidth - && iFindpaneRect.Size().iWidth <= mainPaneRect.Size().iWidth ) - { - currentWindowRect.iBr.iX = currentWindowRect.iTl.iX - + iFindpaneRect.Size().iWidth; - } - else - { - currentWindowRect.iBr.iX = currentWindowRect.iTl.iX - + mainPaneRect.Size().iWidth; - } } TRect grid_pane = RectFromLayout( currentWindowRect, AknLayoutScalable_Apps::grid_afind_pane( iLayoutOption ) ); @@ -1163,24 +1147,15 @@ TPointerEvent& pointerEvent = *aEvent.Pointer(); if( pointerEvent.iType == TPointerEvent::EButton1Down ) - { - if ( !iFindpaneRect.Contains( pointerEvent.iPosition ) && - aDestination != this ) - { - MTouchFeedback* feedback = MTouchFeedback::Instance(); - - // according to Touch UI spec tapping on input frame should cause feedback, - // even if action is to cancel dialog.. - if ( feedback ) + { + if ( !iFindpaneRect.Contains( pointerEvent.iPosition ) && + aDestination != this ) { - feedback->InstantFeedback( this, ETouchFeedbackBasic ); + HideL(); + return; } - - HideL(); - return; - } - } - } + } + } } diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/AknAppUi.cpp --- a/uifw/AvKon/src/AknAppUi.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/AknAppUi.cpp Tue May 11 16:27:42 2010 +0300 @@ -69,7 +69,7 @@ #include #include -#include +#include #include #include "transitionmanager.h" @@ -1809,6 +1809,12 @@ EXPORT_C void CAknAppUi::PrepareToExit() { + // Hide application toolbar to prevent it from showing + // after views are deleted + if ( CurrentFixedToolbar() ) + { + CurrentFixedToolbar()->SetToolbarVisibility( EFalse ); + } if( IsForeground() && Document() ) { //only if focused, otherwise next app HandleForeground may never come. diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/AknCharMap.cpp --- a/uifw/AvKon/src/AknCharMap.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/AknCharMap.cpp Tue May 11 16:27:42 2010 +0300 @@ -584,7 +584,7 @@ void CAknSctNaviButton::SetFocused(TBool aState) { iButtonControl->SetFocus(aState); - iButtonControl->DrawNow(); + iButtonControl->DrawDeferred(); } void CAknSctNaviButton::SetEnabled(TBool aState) @@ -1753,7 +1753,7 @@ void CAknSctCategoryButton::SetFocused(TBool aState) { iButtonControl->SetFocus(aState); - iButtonControl->DrawNow(); + iButtonControl->DrawDeferred(); } @@ -2962,7 +2962,10 @@ iPictographCases.Close(); iPictographPages.Close(); MTouchFeedback* feedback = MTouchFeedback::Instance(); - feedback->RemoveFeedbackForControl( this ); + if ( feedback != NULL ) + { + feedback->RemoveFeedbackForControl( this ); + } } void CAknCharMap::DoLayout() diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/AknCheckBoxSettingPage.cpp --- a/uifw/AvKon/src/AknCheckBoxSettingPage.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/AknCheckBoxSettingPage.cpp Tue May 11 16:27:42 2010 +0300 @@ -146,15 +146,21 @@ CreateCheckBoxBitmapsL(); + // Only a reference to the CBase object; not owned + CAknSetStyleListBox* listBox = ListBoxControl(); + + // + // SelectItemL make the view item drawn by default, SetDisableRedraw can remove flick + // + TBool bRedrawDisabled = listBox->View()->RedrawDisabled(); + listBox->View()->SetDisableRedraw( ETrue ); GenerateInternalArrayAndGiveToListBoxL(); + listBox->View()->SetDisableRedraw( bRedrawDisabled ); // This updates the CBA CheckAndSetDataValidity(); UpdateCbaL(); - // Only a reference to the CBase object; not owned - CAknSetStyleListBox* listBox = ListBoxControl(); - listBox->SetListBoxObserver(this); // Set the scroller indication to appear when needed diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/AknIndicatorContainer.cpp --- a/uifw/AvKon/src/AknIndicatorContainer.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/AknIndicatorContainer.cpp Tue May 11 16:27:42 2010 +0300 @@ -1158,6 +1158,16 @@ CAknSmallIndicator* indicatorNotifier = CAknSmallIndicator::NewLC( TUid::Uid( 0 ) ); indicatorNotifier->HandleIndicatorTapL(); + //for indicator popup event + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if ( feedback ) + { + feedback->InstantFeedback( + this, + ETouchFeedbackPopUp, + ETouchFeedbackVibra, + aPointerEvent ); + } CleanupStack::PopAndDestroy( indicatorNotifier ); } @@ -4058,9 +4068,8 @@ } } - if ( indicator && - indicator->IndicatorState() || - indicator->Priority() != KIndicatorNotShown ) + if (indicator && (indicator->IndicatorState() || + indicator->Priority()!= KIndicatorNotShown)) { SizeChanged(); DrawDeferred(); diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/AknInfoPopupNote.cpp --- a/uifw/AvKon/src/AknInfoPopupNote.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/AknInfoPopupNote.cpp Tue May 11 16:27:42 2010 +0300 @@ -472,7 +472,8 @@ || aPointerEvent.iType == TPointerEvent::EButton1Up || aPointerEvent.iType == TPointerEvent::EDrag ) { - if ( aPointerEvent.iType == TPointerEvent::EButton1Up ) + Hide(); + if ( aPointerEvent.iType == TPointerEvent::EButton1Down && !IsVisible() ) { MTouchFeedback* feedback = MTouchFeedback::Instance(); if ( feedback ) @@ -481,7 +482,6 @@ } } - Hide(); SetPointerCapture( EFalse ); } } diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/AknNoteDialog.cpp --- a/uifw/AvKon/src/AknNoteDialog.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/AknNoteDialog.cpp Tue May 11 16:27:42 2010 +0300 @@ -77,7 +77,7 @@ if ( nodeWindowGroupId == focusedWindowGroupId ) { - return ETrue; + return aThis->IsFocused(); } TInt count = wsSession.NumWindowGroups( 0 ); @@ -860,18 +860,21 @@ // Add tactile feedbacup when tap can close note. if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) { - if ( DialogFlags()&EEikDialogFlagCloseDialogWhenTapped ) - { - MTouchFeedback* feedback = MTouchFeedback::Instance(); - if ( feedback ) + if ( DialogFlags() & EEikDialogFlagCloseDialogWhenTapped ) + { + if( Rect().Contains( aPointerEvent.iPosition ) ) { - feedback->InstantFeedback( ETouchFeedbackPopUp ); + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if ( feedback ) + { + feedback->InstantFeedback( ETouchFeedbackPopUp ); + } } - } + } } else if ( aPointerEvent.iType == TPointerEvent::EButton1Up ) { - if ( DialogFlags()&EEikDialogFlagCloseDialogWhenTapped ) + if ( DialogFlags() & EEikDialogFlagCloseDialogWhenTapped ) { if ( ctrl ) { diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/AknPopupSettingPage.cpp --- a/uifw/AvKon/src/AknPopupSettingPage.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/AknPopupSettingPage.cpp Tue May 11 16:27:42 2010 +0300 @@ -677,7 +677,14 @@ SetEditedItemFrameIID( KAknsIIDQsnFrSetOpt, KAknsIIDQsnFrSetOptCenter ); iQueryValue.SetQueryMode( MAknQueryValue::ESettingPageMode ); + // + // SetQueryValue make the view item drawn by default, SetDisableRedraw can remove flick + // + TBool bRedrawDisabled = PopupSettingListBox()->View()->RedrawDisabled(); + PopupSettingListBox()->View()->SetDisableRedraw( ETrue ); PopupSettingListBox()->SetQueryValueL( &iQueryValue ); + PopupSettingListBox()->View()->SetDisableRedraw( bRedrawDisabled); + CheckAndSetDataValidity(); UpdateCbaL(); diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/AknPreviewPopUp.cpp --- a/uifw/AvKon/src/AknPreviewPopUp.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/AknPreviewPopUp.cpp Tue May 11 16:27:42 2010 +0300 @@ -218,8 +218,12 @@ return; } + // Skip disappear transition if the popup is either permanent, fixed or + // faded. Fading status is checked because there can't be two parallel + // effects applied to the same window. TBool useTfx = !( iFlags & CAknPreviewPopUpController::EPermanentMode - || iFlags & CAknPreviewPopUpController::EFixedMode ); + || iFlags & CAknPreviewPopUpController::EFixedMode ) + && !Window().IsFaded(); if ( useTfx && GfxTransEffect::IsRegistered( this ) ) { diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/AknQueryControl.cpp --- a/uifw/AvKon/src/AknQueryControl.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/AknQueryControl.cpp Tue May 11 16:27:42 2010 +0300 @@ -237,8 +237,11 @@ if ( iParent->QueryType() == EPinLayout ) { _AKNTRACE( "[%s][%s] ", "RevealSecretText( EFalse )", __FUNCTION__); - static_cast - ( iParent->ControlByLayoutOrNull( EPinLayout ) )->RevealSecretText( EFalse ); + if( iParent->ControlByLayoutOrNull( EPinLayout ) ) + { + static_cast + ( iParent->ControlByLayoutOrNull( EPinLayout ) )->RevealSecretText( EFalse ); + } } } diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/AknSettingPage.cpp --- a/uifw/AvKon/src/AknSettingPage.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/AknSettingPage.cpp Tue May 11 16:27:42 2010 +0300 @@ -1694,6 +1694,11 @@ } } + // + // Set editor control to be invisible + // + iEditorControl->MakeVisible( EFalse ); + DynamicInitL(); ActivateL(); @@ -1711,11 +1716,13 @@ demarcation ); GfxTransEffect::SetDemarcation( this, demarcation ); + iEditorControl->MakeVisible( ETrue ); MakeVisible( ETrue ); GfxTransEffect::End( this ); } else { + iEditorControl->MakeVisible( ETrue ); MakeVisible( ETrue ); } @@ -1777,7 +1784,9 @@ StartActiveScheduler(); } else - AttemptExitL(EFalse); + { + AttemptExitL(EFalse); + } iEikonEnv->EikAppUi()->RemoveFromStack(this); CleanupStack::Pop(); // this diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/AknTransparentCameraSettingPage.cpp --- a/uifw/AvKon/src/AknTransparentCameraSettingPage.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/AknTransparentCameraSettingPage.cpp Tue May 11 16:27:42 2010 +0300 @@ -225,7 +225,16 @@ // Set the current "pushed in" indication if ( iCurrentSelectionIndex != -1 ) - listBox->View()->SelectItemL( iCurrentSelectionIndex ); + { + // + // SelectItemL make the view item drawn by default, SetDisableRedraw can remove flick + // + TBool bRedrawDisabled = listBox->View()->RedrawDisabled(); + listBox->View()->SetDisableRedraw( ETrue ); + + listBox->View()->SelectItemL( iCurrentSelectionIndex ); + listBox->View()->SetDisableRedraw( bRedrawDisabled ); + } // Set the scroller indication off listBox->CreateScrollBarFrameL(ETrue); @@ -235,7 +244,9 @@ listBox->UpdateScrollBarsL(); if(!IsBackgroundDrawingEnabled()) - listBox->ScrollBarFrame()->DrawBackground(EFalse, EFalse); + { + listBox->ScrollBarFrame()->DrawBackground(EFalse, EFalse); + } // Force a size changed diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/AknViewAppUi.cpp --- a/uifw/AvKon/src/AknViewAppUi.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/AknViewAppUi.cpp Tue May 11 16:27:42 2010 +0300 @@ -270,13 +270,6 @@ RemoveFromStack( iExtension->iNavigator ); #endif // RD_SPLIT_VIEW - // Hide application toolbar to prevent it from showing - // after views are deleted - if ( CAknAppUi::CurrentFixedToolbar() ) - { - CAknAppUi::CurrentFixedToolbar()->SetToolbarVisibility( EFalse ); - } - delete iClearer; delete iShutter; delete iActivationTick; diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/Aknslider.cpp --- a/uifw/AvKon/src/Aknslider.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/Aknslider.cpp Tue May 11 16:27:42 2010 +0300 @@ -65,8 +65,6 @@ const TInt KScrollRepeatTimeout = 250000; // 0.25 seconds const TInt KStableFeedbackIntesity = 100; const TInt KFeedbackTimeout = 100000; -const TInt KNoFeedbackTimeout = 0; -const TInt KStepThreshold = 15; // ============================================================================ // Internal class to hold slider control data, primarily coming from resource. NONSHARABLE_CLASS( CAknSliderData ): public CBase @@ -4255,7 +4253,7 @@ { intensity = FeedbackIntensity(); } - feedback->StartFeedback( this, ETouchContinuousSlider, aPointerEvent, intensity, aTimeout ); + feedback->StartFeedback( this, ETouchDynamicSlider, aPointerEvent, intensity, aTimeout ); iExt->SetFlag( CAknSliderExtension::EFlagPlayingContinuousFb ); } } diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/aknApp.cpp --- a/uifw/AvKon/src/aknApp.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/aknApp.cpp Tue May 11 16:27:42 2010 +0300 @@ -31,6 +31,7 @@ #include #include #include +#include LOCAL_C TBool IsInHiddenList(const TUid& aUid) { @@ -64,15 +65,40 @@ CApaWindowGroupName* wgName = CApaWindowGroupName::NewLC(ws, myWg); wgName->SetAppUid(uid); wgName->SetWindowGroupName(env->RootWin()); - - // Use a CAknTaskList to check for root instances of apps - CAknTaskList* taskList = CAknTaskList::NewLC(ws); - TBool foundInstance = EFalse; - + + // Use a CAknTaskList to check for root instances of apps + CAknTaskList* taskList = CAknTaskList::NewLC(ws); + TBool foundInstance = EFalse; + // Look for another instance of this app while (wgId>=0) { - if (wgId && wgId != myWg && taskList->IsRootWindowGroup(wgId)) + TBool rootTask = taskList->IsRootWindowGroup(wgId); + TBool rootWg = EFalse; + TInt wndPriority = -1; + if ( wgId != myWg && wgId > 0 && !rootTask ) + { + wndPriority = ws.GetWindowGroupOrdinalPriority( wgId ); + RArray wgs; + // it seems effecient to call WindowGroupList here, this codes will seldom executed. + ws.WindowGroupList( wndPriority, &wgs ); + + TInt count = wgs.Count(); + for ( TInt ii=0; iiInstantFeedback( ETouchFeedbackSensitiveButton ); + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if ( feedback ) + { + feedback->InstantFeedback( ETouchFeedbackSensitiveButton ); + } } } } @@ -647,6 +650,15 @@ CAknSmallIndicator* indicatorNotifier = CAknSmallIndicator::NewLC( TUid::Uid( 0 ) ); indicatorNotifier->HandleIndicatorTapL(); + //for indicator popup event + if ( feedback ) + { + feedback->InstantFeedback( + this, + ETouchFeedbackPopUp, + ETouchFeedbackVibra, + aPointerEvent ); + } CleanupStack::PopAndDestroy( indicatorNotifier ); } } diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/aknchoicelist.cpp --- a/uifw/AvKon/src/aknchoicelist.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/aknchoicelist.cpp Tue May 11 16:27:42 2010 +0300 @@ -474,7 +474,8 @@ if ( aKeyEvent.iScanCode == EStdKeyUpArrow || aKeyEvent.iScanCode == EStdKeyDownArrow || aKeyEvent.iScanCode == EStdKeyEnter || - aKeyEvent.iScanCode == EStdKeyDevice3 ) + aKeyEvent.iScanCode == EStdKeyDevice3 || + aKeyEvent.iScanCode == EStdKeyNkpEnter ) { return iList->OfferKeyEventL(aKeyEvent, aType); } diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/akncombinedpane.cpp --- a/uifw/AvKon/src/akncombinedpane.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/akncombinedpane.cpp Tue May 11 16:27:42 2010 +0300 @@ -25,6 +25,7 @@ #include #include #include +#include #include "akncombinedpane.h" #include "aknstatuspanedatasubscriber.h" @@ -192,6 +193,16 @@ CAknSmallIndicator* indicatorNotifier = CAknSmallIndicator::NewLC( TUid::Uid( 0 ) ); indicatorNotifier->HandleIndicatorTapL(); + //for indicator popup event + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if ( feedback ) + { + feedback->InstantFeedback( + this, + ETouchFeedbackPopUp, + ETouchFeedbackVibra, + aPointerEvent ); + } CleanupStack::PopAndDestroy( indicatorNotifier ); } diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/akndigitalclock.cpp --- a/uifw/AvKon/src/akndigitalclock.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/akndigitalclock.cpp Tue May 11 16:27:42 2010 +0300 @@ -445,6 +445,16 @@ CAknSmallIndicator* indicatorNotifier = CAknSmallIndicator::NewLC( TUid::Uid( 0 ) ); indicatorNotifier->HandleIndicatorTapL(); + //for indicator popup event + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if ( feedback ) + { + feedback->InstantFeedback( + this, + ETouchFeedbackPopUp, + ETouchFeedbackVibra, + aPointerEvent ); + } CleanupStack::PopAndDestroy( indicatorNotifier ); // Up event received, reset button down flag. diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/akndiscreetpopupcontrol.cpp --- a/uifw/AvKon/src/akndiscreetpopupcontrol.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/akndiscreetpopupcontrol.cpp Tue May 11 16:27:42 2010 +0300 @@ -49,7 +49,8 @@ EPressedDown, // Pointer down is received in popup area EDismissed, // Popup is dismissed (pointer up is received in popup area) EGlobal, // Popup is global - EDragged // Pointer is dragged while popup open + EDragged, // Pointer is dragged while popup open + EStartTimerAgain // Start timer again when timer is out and keep pressing }; @@ -412,13 +413,19 @@ void CAknDiscreetPopupControl::DoTimeOut() { _AKNTRACE_FUNC_ENTER; - if ( !iInternalFlags.IsSet( EPressedDown ) ) + if ( !iInternalFlags.IsSet( EPressedDown ) || + iInternalFlags.IsSet( EStartTimerAgain ) ) { TRAP_IGNORE( RequestExitL() ); } else { iTimer->Cancel(); + // if time is out and keep pressing, start short timer again. + iInternalFlags.Set( EStartTimerAgain ); + iTimer->Start( KShortTimeout, + 0, + TCallBack( TimeOut, this ) ); } _AKNTRACE_FUNC_EXIT; } @@ -438,6 +445,7 @@ } HidePopup(); ReportEventL( MCoeControlObserver::EEventRequestExit ); + iInternalFlags.Clear( EStartTimerAgain ); iInternalFlags.Clear( EPressedDown ); _AKNTRACE_FUNC_EXIT; } @@ -763,52 +771,46 @@ { TBool eventInRect( Rect().Contains( aPointerEvent.iPosition ) ); - // The discreet popup which is global won't handle pointer event if there is notifier be popping up. - if( !iInternalFlags.IsSet( EGlobal ) || iCoeEnv->RootWin().OrdinalPriority() < ECoeWinPriorityAlwaysAtFront ) + // Pointer down - set pressed-down state (popup completely visible while + // pressed-down) + if ( aPointerEvent.iType == TPointerEvent::EButton1Down + && eventInRect + && iInternalFlags.IsClear( EDismissed ) ) { - // Pointer down - set pressed-down state (popup completely visible while - // pressed-down) - if ( aPointerEvent.iType == TPointerEvent::EButton1Down - && eventInRect - && iInternalFlags.IsClear( EDismissed ) ) - { - _AKNTRACE( "CAknDiscreetPopupControl::HandlePointerEventL, TPointerEvent::EButton1Down" ); - SetPressedDownState( ETrue ); - ImmediateFeedback( ETouchFeedbackSensitive ); - } - - // Pointer drag - reset pressed-down state if pointer out of popup area - else if ( aPointerEvent.iType == TPointerEvent::EDrag ) + _AKNTRACE( "CAknDiscreetPopupControl::HandlePointerEventL, TPointerEvent::EButton1Down" ); + SetPressedDownState( ETrue ); + ImmediateFeedback( ETouchFeedbackSensitive ); + } + + // Pointer drag - reset pressed-down state if pointer out of popup area + else if ( aPointerEvent.iType == TPointerEvent::EDrag ) + { + _AKNTRACE( "CAknDiscreetPopupControl::HandlePointerEventL, TPointerEvent::EDrag" ); + iInternalFlags.Set( EDragged ); + if ( !eventInRect && iInternalFlags.IsSet( EPressedDown ) ) { - _AKNTRACE( "CAknDiscreetPopupControl::HandlePointerEventL, TPointerEvent::EDrag" ); - iInternalFlags.Set( EDragged ); - if ( !eventInRect && iInternalFlags.IsSet( EPressedDown ) ) - { - iInternalFlags.Clear( EPressedDown ); - } - else if ( eventInRect && !iInternalFlags.IsSet( EPressedDown ) ) - { - iInternalFlags.Set( EPressedDown ); - } + iInternalFlags.Clear( EPressedDown ); } - - // Pointer up - reset pressed-down state - else if ( aPointerEvent.iType == TPointerEvent::EButton1Up ) - { - _AKNTRACE( "CAknDiscreetPopupControl::HandlePointerEventL, TPointerEvent::EButton1Up" ); - if ( eventInRect ) - { - NotifyObserverL(); - } - // Start fading away - if ( iInternalFlags.IsClear( EDismissed ) ) - { - iInternalFlags.Set( EDismissed ); - RequestExitL(); - } - SetPressedDownState( EFalse ); + else if ( eventInRect && !iInternalFlags.IsSet( EPressedDown ) ) + { + iInternalFlags.Set( EPressedDown ); } } + // Pointer up - reset pressed-down state + else if ( aPointerEvent.iType == TPointerEvent::EButton1Up ) + { + _AKNTRACE( "CAknDiscreetPopupControl::HandlePointerEventL, TPointerEvent::EButton1Up" ); + if ( eventInRect ) + { + NotifyObserverL(); + } + // Start fading away + if ( iInternalFlags.IsClear( EDismissed ) ) + { + iInternalFlags.Set( EDismissed ); + RequestExitL(); + } + SetPressedDownState( EFalse ); + } } - diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/aknindicator.cpp --- a/uifw/AvKon/src/aknindicator.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/aknindicator.cpp Tue May 11 16:27:42 2010 +0300 @@ -286,6 +286,11 @@ this->MakeVisible(EFalse); DeleteBitmaps(); } + else if (iState == EAknIndicatorStateAnimate ) + { + MakeVisible( ETrue ); + } + SizeChanged(); } diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/aknlistquerydialog.cpp --- a/uifw/AvKon/src/aknlistquerydialog.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/aknlistquerydialog.cpp Tue May 11 16:27:42 2010 +0300 @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include "aknPopupHeadingPane.h" #include "aknlistquerycontrol.h" @@ -262,9 +262,17 @@ listbox->SetListBoxObserver(this); CAknListQueryControl* listControl = ListControl(); - if (listControl) - listControl->SetLayout(&iLayout); - } + if ( listControl ) + { + listControl->SetLayout( &iLayout ); + } + + if ( iAvkonAppUi->IsSingleClickCompatible() && + !IsLeftSoftkeyShown() ) + { + MakeLeftSoftkeyVisible( EFalse ); + } + } if (FindBox()) { @@ -461,6 +469,16 @@ iIdle->Start(TCallBack(ClosePopupAcceptingChanges, this)); } } + + if( iAvkonAppUi->IsSingleClickCompatible() && + aListBox->IsMultiselection() ) + { + CEikListBox* listbox = ListBox(); + if( listbox ) + { + MakeLeftSoftkeyVisible( IsLeftSoftkeyShown() ); + } + } } break; default: @@ -565,16 +583,22 @@ } TInt currentSelection = listbox->CurrentItemIndex(); - if( currentSelection == KErrNotFound ) + TBool isSingleClick = iAvkonAppUi->IsSingleClickCompatible(); + if ( currentSelection == KErrNotFound ) { - MakeLeftSoftkeyVisible(EFalse); + MakeLeftSoftkeyVisible( EFalse ); } - else + else if ( isSingleClick ) { - MakeLeftSoftkeyVisible(ETrue); + MakeLeftSoftkeyVisible( IsLeftSoftkeyShown() ); } TKeyResponse response = listbox->OfferKeyEventL( aKeyEvent, aType); + + if ( isSingleClick && IsLeftSoftkeyShown() ) + { + MakeLeftSoftkeyVisible( ETrue ); + } if (currentSelection != listbox->CurrentItemIndex() && iMediatorObs) { iMediatorObs->UpdateL(listbox->CurrentItemIndex()); @@ -770,6 +794,18 @@ return NULL; } +TBool CAknListQueryDialog::IsLeftSoftkeyShown() + { + CEikListBox* listbox = ListBox(); + __ASSERT_DEBUG( listbox, Panic(EAknPanicNullPointer)); + // This flag indicators that listbox is a viewer listbox. + TBool isViewMode = listbox->View()->ItemDrawer()->Flags() & + CListItemDrawer::EDisableHighlight; + + return listbox->IsHighlightEnabled() || + listbox->SelectionIndexes()->Count() > 0 || isViewMode; + } + EXPORT_C void CAknListQueryDialog::SetTone(TInt aTone) { iTone = (TTone)aTone; diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/aknlists.cpp --- a/uifw/AvKon/src/aknlists.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/aknlists.cpp Tue May 11 16:27:42 2010 +0300 @@ -1612,6 +1612,12 @@ TInt pos = -1; TBool removeicon = (!aItemIsSelected && !ItemMarkReverse()) || (aItemIsSelected && ItemMarkReverse()); + + if ( Flags() & CListItemDrawer::EMarkingModeEnabled ) + { + removeicon = EFalse; + } + if ( Flags() & EDrawMarkSelection && ItemMarkPosition() != -1 && removeicon) { repl.Set( ItemMarkReplacement() ); @@ -3097,8 +3103,23 @@ transApi->StartDrawing( MAknListBoxTfxInternal::EListView ); } #endif //RD_UI_TRANSITION_EFFECTS_LIST - gc->SetBrushColor(this->BackColor()); - AknsDrawUtils::BackgroundBetweenRects( AknsUtils::SkinInstance(), cc, this, *gc, clientRect, this->iView->ViewRect() ); + + if ( this->iItemDrawer->Flags() + & CListItemDrawer::EDrawWholeBackground ) + { + AknsDrawUtils::Background( + AknsUtils::SkinInstance(), cc, this, *gc, clientRect ); + + this->iItemDrawer->SetFlags( CListItemDrawer::EBackgroundDrawn ); + } + else + { + gc->SetBrushColor(this->BackColor()); + AknsDrawUtils::BackgroundBetweenRects( + AknsUtils::SkinInstance(), cc, this, *gc, clientRect, + this->iView->ViewRect() ); + } + #ifdef RD_UI_TRANSITION_EFFECTS_LIST if ( transApi ) { diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/aknlongtapanimation.cpp --- a/uifw/AvKon/src/aknlongtapanimation.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/aknlongtapanimation.cpp Tue May 11 16:27:42 2010 +0300 @@ -24,8 +24,6 @@ #include // for testability hooks #include -const TInt KStartIntensity = 1; -const TInt KEndIntensity = 100; #include "aknlongtapanimation.h" enum TInternalFlags @@ -195,15 +193,9 @@ MTouchFeedback* feedback = MTouchFeedback::Instance(); if ( feedback ) { - CBitmapAnimClientData* animData = iAnim->BitmapAnimData(); - TInt interval = animData->FrameIntervalInMilliSeconds() - * KConversionFromMillisecondsToMicroseconds; - TInt frameCount = animData->FrameArray().Count(); - - // timeout should be greater than normal animation time - // so that timeout does not interfere into normal operation - TInt timeout = interval * (frameCount+1); - feedback->StartFeedback( this, ETouchContinuousSmooth, NULL, KStartIntensity, timeout ); + feedback->InstantFeedback( + this, ETouchFeedbackLongTap, + ETouchFeedbackVibra, TPointerEvent() ); } StartAnimation(); } @@ -375,11 +367,6 @@ { iExtension->iTimer->Cancel(); iExtension->iFlags &= ~EAnimationStarted; - MTouchFeedback* feedback = MTouchFeedback::Instance(); - if ( feedback ) - { - feedback->StopFeedback( this ); - } } } @@ -398,14 +385,6 @@ { iExtension->iIndex = frameCount - 1; } - MTouchFeedback* feedback = MTouchFeedback::Instance(); - if ( feedback ) - { - // intensity should go from 0 to 100 - TInt intensity = KEndIntensity - * (iExtension->iIndex+1) / frameCount; - feedback->ModifyFeedback( this, intensity ); - } DrawNow(); } diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/aknmessagequerydialog.cpp --- a/uifw/AvKon/src/aknmessagequerydialog.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/aknmessagequerydialog.cpp Tue May 11 16:27:42 2010 +0300 @@ -1061,7 +1061,7 @@ return EFalse; } TInt curLink = control->CurrentLink(); - TRAPD( err, iMsgQueryExtension->ExecuteLinkCallbackL( curLink ) ); + TRAP_IGNORE( iMsgQueryExtension->ExecuteLinkCallbackL( curLink ) ); control->DehighlightLink(); _AKNTRACE_FUNC_EXIT; return ETrue; diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/aknsfld.cpp --- a/uifw/AvKon/src/aknsfld.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/aknsfld.cpp Tue May 11 16:27:42 2010 +0300 @@ -246,7 +246,7 @@ { aFieldStyle = EPopupWindow; } - + iColumnFlag = 0xFFFFFFFF; switch ( aFieldStyle ) { case EFixed: @@ -304,8 +304,7 @@ case EAdaptiveSearch: bitmapId = EMbmAvkonQgn_indi_find_glass; bitmapMaskId = EMbmAvkonQgn_indi_find_glass_mask; - SetContainerWindowL( aParent ); - iColumnFlag = 0xFFFFFFFF; + SetContainerWindowL( aParent ); if( AknLayoutUtils::PenEnabled() ) { iAdaptiveSearch = CAknAdaptiveSearch::NewL( aTextLimit, aFieldStyle ); @@ -323,7 +322,6 @@ bitmapId = EMbmAvkonQgn_indi_find_glass; bitmapMaskId = EMbmAvkonQgn_indi_find_glass_mask; CreateWindowL( &aParent ); - iColumnFlag = 0xFFFFFFFF; if( AknLayoutUtils::PenEnabled() ) { iAdaptiveSearch = CAknAdaptiveSearch::NewL( aTextLimit, aFieldStyle ); @@ -342,7 +340,6 @@ bitmapMaskId = EMbmAvkonQgn_indi_find_glass_mask; flags |= CAknInputFrame::EPopupLayout; CreateWindowL(); - iColumnFlag = 0xFFFFFFFF; iIsPopup = ETrue; if( AknLayoutUtils::PenEnabled() ) { @@ -376,7 +373,6 @@ flags |= CAknInputFrame::EPopupWindowLayout; flags |= CAknInputFrame::EFixedFindWithoutLine; SetContainerWindowL( aParent ); - iColumnFlag = 0xFFFFFFFF; if( AknLayoutUtils::PenEnabled() ) { iAdaptiveSearch = CAknAdaptiveSearch::NewL( aTextLimit, aFieldStyle ); @@ -1180,7 +1176,7 @@ // ----------------------------------------------------------------------------- // CAknSearchField::SetListColumnFilterFlags -// Set flag of columns for adaptive search grid. +// Set flag of columns. // ----------------------------------------------------------------------------- // EXPORT_C void CAknSearchField::SetListColumnFilterFlags( const TBitFlags32 aFlag ) diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/aknutils.cpp --- a/uifw/AvKon/src/aknutils.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/aknutils.cpp Tue May 11 16:27:42 2010 +0300 @@ -1885,14 +1885,17 @@ // an index to end of array TInt indexEnd = iShownIndexes->Count(); + + TBitFlags32 columnFlag = iSearchField->ListColumnFilterFlags(); + HBufC16* temptext = HBufC16::NewL( KMatchingBufferLength ); + CleanupStack::PushL( temptext ); + TPtr ptr_temptext( temptext->Des() ); + // If adaptive search manage with next characters if( iSearchField && IsAdaptiveSearch() ) { ClearNextChars(); - TBitFlags32 columnFlag = iSearchField->ListColumnFilterFlags(); - HBufC16* temptext = HBufC16::NewL( KMatchingBufferLength ); - CleanupStack::PushL( temptext ); - TPtr ptr_temptext( temptext->Des() ); + for ( TInt i = iShownIndexes->Count()-1; i>=0; i-- ) { TInt realindex = iShownIndexes->At( i ); @@ -1945,15 +1948,17 @@ CleanupStack::PopAndDestroy(array); iSearchField->SetAdaptiveGridChars( *(iExtension->iNextChars) ); - CleanupStack::PopAndDestroy( temptext ); } else { for (TInt i = iShownIndexes->Count()-1; i>=0 ; i--) { - TInt realindex = iShownIndexes->At(i); - TPtrC itemtext = array->MdcaPoint(realindex); - TBool isItemVisible = IsItemVisible(itemtext, aCriteria); + + TInt realindex = iShownIndexes->At( i ); + TPtrC itemtext = arr->ItemTextArray()->MdcaPoint( realindex ); + AknFind::UpdateItemTextAccordingToFlag( itemtext, columnFlag, ptr_temptext ); + TBool isItemVisible = IsItemVisible( ptr_temptext, aCriteria ); + TBool isItemSelected = IsItemSelected(realindex); // EAJA-7SK9UC set indexToSet as current index when found item if ( isItemVisible ) @@ -1964,8 +1969,10 @@ { iShownIndexes->Delete(i); } + ptr_temptext.Zero(); } - } + } + CleanupStack::PopAndDestroy( temptext ); InstallEmptyTextL(); // Set highlight to the first match item in markable list @@ -1985,17 +1992,19 @@ // An index to set highlight after find pane updating TInt indexToSet = KInvalidIndex; iShownIndexes->Reset(); + + const MDesCArray *array = iModel->MatchableTextArray(); + const CAknFilteredTextListBoxModel* arr = (CAknFilteredTextListBoxModel*)( iModel->MatchableTextArray() ); + TInt count = array->MdcaCount(); + TBitFlags32 columnFlag = iSearchField->ListColumnFilterFlags(); + HBufC16* temptext = HBufC16::NewL( KMatchingBufferLength ); + CleanupStack::PushL( temptext ); + TPtr ptr_temptext( temptext->Des() ); + // If adaptive search field if( iSearchField && IsAdaptiveSearch() ) { ClearNextChars(); - TBitFlags32 columnFlag = iSearchField->ListColumnFilterFlags(); - HBufC16* temptext = HBufC16::NewL( KMatchingBufferLength ); - CleanupStack::PushL( temptext ); - TPtr ptr_temptext( temptext->Des() ); - const MDesCArray *array = iModel->MatchableTextArray(); - const CAknFilteredTextListBoxModel* arr = (CAknFilteredTextListBoxModel*)(iModel->MatchableTextArray()); - TInt count = array->MdcaCount(); for (TInt i = 0; i < count; i++) { @@ -2015,12 +2024,10 @@ } iSearchField->SetAdaptiveGridChars( *(iExtension->iNextChars) ); InstallEmptyTextL(); - CleanupStack::PopAndDestroy( temptext ); } else { - const MDesCArray *array = iModel->MatchableTextArray(); - TInt count = array->MdcaCount(); + TInt i; if ( aCriteria.Length() == 0) @@ -2040,8 +2047,10 @@ { for( i = 0; i < count ; i++ ) { - TPtrC itemtext = array->MdcaPoint(i); - TBool isItemVisible = IsItemVisible(itemtext, aCriteria); + + TPtrC itemtext = arr->ItemTextArray()->MdcaPoint( i ); + AknFind::UpdateItemTextAccordingToFlag( itemtext, columnFlag, ptr_temptext ); + TBool isItemVisible = IsItemVisible( temptext->Des(), aCriteria ); // Find first match item to set highlight if ((indexToSet == KInvalidIndex) && isItemVisible) @@ -2052,10 +2061,12 @@ { iShownIndexes->AppendL(i); } + ptr_temptext.Zero(); } InstallEmptyTextL(); } } + CleanupStack::PopAndDestroy( temptext ); // Set highlight to the first match item in markable list if ( iListBox && indexToSet != KInvalidIndex ) diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/eikfrlb.cpp --- a/uifw/AvKon/src/eikfrlb.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/eikfrlb.cpp Tue May 11 16:27:42 2010 +0300 @@ -162,17 +162,11 @@ { backgroundDrawer->Draw( *iGc, *control, r ); } - else if ( CAknEnv::Static()->TransparencyEnabled() ) + else { AknsDrawUtils::Background( AknsUtils::SkinInstance(), cc, control, *iGc, r, KAknsDrawParamNoClearUnderImage ); } - else - { - AknsDrawUtils::Background( AknsUtils::SkinInstance(), cc, control, *iGc, r, - KAknsDrawParamNoClearUnderImage | - KAknsDrawParamBottomLevelRGBOnly ); - } } else { @@ -219,6 +213,11 @@ #endif //RD_UI_TRANSITION_EFFECTS_LIST TBool removeicon = (!aItemIsSelected && !ItemMarkReverse()) || (aItemIsSelected && ItemMarkReverse()); + + if ( Flags() & CListItemDrawer::EMarkingModeEnabled ) + { + removeicon = EFalse; + } CFormattedCellListBoxData::TColors colors; colors.iText=iTextColor; @@ -404,18 +403,6 @@ iTopItemIndex = aTop; } -void -CFormattedCellListBoxItemDrawer::DrawCurrentItemRect(const TRect& aRect) const - { - _AKNTRACE_FUNC_ENTER; - iGc->SetClippingRect(iViewRect); - iGc->SetBrushStyle(CGraphicsContext::ENullBrush); - iGc->SetPenColor(iHighlightedBackColor); - iGc->DrawRect(aRect); - iGc->CancelClippingRect(); - _AKNTRACE_FUNC_EXIT; - } - // // CEikFormattedCellListBox @@ -812,7 +799,6 @@ itemDrawer->SetTopItemIndex( iTopItemIndex ); - TBool transparencyEnabled = CAknEnv::Static()->TransparencyEnabled(); TInt numberOfItems = iModel->NumberOfItems(); if ( numberOfItems > 0 ) @@ -824,149 +810,121 @@ CAknListLoader::TfxApiInternal( gc ); #endif // RD_UI_TRANSITION_EFFECTS_LIST - if ( transparencyEnabled ) - { - if ( iWin && iWin->GetDrawRect() == TRect::EUninitialized ) - { + if ( iWin && iWin->GetDrawRect() == TRect::EUninitialized ) + { #ifdef RD_UI_TRANSITION_EFFECTS_LIST - drawingInitiated = transApi && !transApi->EffectsDisabled(); + drawingInitiated = transApi && !transApi->EffectsDisabled(); #else - drawingInitiated = EFalse; + drawingInitiated = EFalse; #endif - } + } - if ( !drawingInitiated ) - { - iWin->Invalidate( *aClipRect ); - iWin->BeginRedraw( *aClipRect ); - } - } + if ( !drawingInitiated ) + { + iWin->Invalidate( *aClipRect ); + iWin->BeginRedraw( *aClipRect ); + } TInt lastPotentialItemIndex = Min( numberOfItems, iTopItemIndex + NumberOfItemsThatFitInRect( iViewRect ) ); + gc->SetClippingRect( iViewRect ); + while ( i < lastPotentialItemIndex ) { + DrawItem( i++ ); + } + + gc->CancelClippingRect(); + + if ( control && !static_cast( control )-> + BackgroundDrawingSuppressed() ) + { #ifdef RD_UI_TRANSITION_EFFECTS_LIST if ( transApi ) { - transApi->StartDrawing( MAknListBoxTfxInternal::EListNotSpecified ); - } -#endif // RD_UI_TRANSITION_EFFECTS_LIST - - gc->SetClippingRect( iViewRect ); - -#ifdef RD_UI_TRANSITION_EFFECTS_LIST - if ( transApi ) - { - transApi->StopDrawing(); + transApi->StartDrawing( MAknListBoxTfxInternal::EListView ); } -#endif // RD_UI_TRANSITION_EFFECTS_LIST - - DrawItem( i++ ); - -#ifdef RD_UI_TRANSITION_EFFECTS_LIST - if ( transApi ) - { - transApi->StartDrawing( MAknListBoxTfxInternal::EListNotSpecified ); - } -#endif // RD_UI_TRANSITION_EFFECTS_LIST - gc->CancelClippingRect(); - -#ifdef RD_UI_TRANSITION_EFFECTS_LIST - if ( transApi ) + if ( i > iBottomItemIndex + 1 ) { - transApi->StopDrawing(); + i = iBottomItemIndex + 1; } -#endif // RD_UI_TRANSITION_EFFECTS_LIST - } -#ifdef RD_UI_TRANSITION_EFFECTS_LIST - if ( transApi ) - { - transApi->StartDrawing( MAknListBoxTfxInternal::EListView ); - } - - if ( i > iBottomItemIndex + 1 ) - { - i = iBottomItemIndex + 1; - } - - TRect usedPortionOfViewRect( - iViewRect.iTl + TSize( 0, iVerticalOffset ), - TSize( iViewRect.Width(), ( i - iTopItemIndex ) * iItemHeight ) ); + TRect usedPortionOfViewRect( + iViewRect.iTl + TSize( 0, iVerticalOffset ), + TSize( iViewRect.Width(), ( i - iTopItemIndex ) * iItemHeight ) ); #else - // clear the unused portion of the viewing area - TRect usedPortionOfViewRect( iViewRect.iTl.iX, + // clear the unused portion of the viewing area + TRect usedPortionOfViewRect( iViewRect.iTl.iX, iViewRect.iTl.iY + iVerticalOffset, iViewRect.Width(), ItemPos( lastPotentialItemIndex ).iY ); - if ( aClipRect ) - { - usedPortionOfViewRect.iBr.iX = aClipRect->iBr.iX; - } - + if ( aClipRect ) + { + usedPortionOfViewRect.iBr.iX = aClipRect->iBr.iX; + } #endif - // Also draw the area behind scroll bar. - TRect sbbg( iViewRect ); // whole area behind scroll bar - - if ( AknLayoutUtils::LayoutMirrored() ) - { - _AKNTRACE("CFormattedCellListBoxView::Draw Layout mirrored"); - sbbg.iBr.iX = iViewRect.iBr.iX - itemDrawer->LafItemSize().iWidth; - } - else - { - sbbg.iTl.iX = iViewRect.iTl.iX + itemDrawer->LafItemSize().iWidth; - } - - // Unused portion will be cleared only if listbox background is drawn. - if ( itemDrawer->ColumnData()->IsBackgroundDrawingEnabled() ) - { - if ( control ) + // Also draw the area behind scroll bar. + TRect sbbg( iViewRect ); // whole area behind scroll bar + + if ( AknLayoutUtils::LayoutMirrored() ) { - if ( !control->FindBackground() ) - { - AknsDrawUtils::BackgroundBetweenRects( skin, - cc, - control, - *gc, - iViewRect, - usedPortionOfViewRect ); - - if ( !sbbg.IsEmpty() ) - { - AknsDrawUtils::Background( skin, - cc, - control, - *gc, - sbbg ); - } - } + _AKNTRACE("CFormattedCellListBoxView::Draw Layout mirrored"); + sbbg.iBr.iX = iViewRect.iBr.iX - itemDrawer->LafItemSize().iWidth; } else { - gc->SetBrushColor( BackColor() ); - DrawUtils::ClearBetweenRects( *gc, - iViewRect, - usedPortionOfViewRect ); - gc->Clear( sbbg ); + sbbg.iTl.iX = iViewRect.iTl.iX + itemDrawer->LafItemSize().iWidth; } - } + + // Unused portion will be cleared only if listbox background is drawn. + if ( itemDrawer->ColumnData()->IsBackgroundDrawingEnabled() ) + { + if ( control ) + { + if ( !control->FindBackground() ) + { + AknsDrawUtils::BackgroundBetweenRects( skin, + cc, + control, + *gc, + iViewRect, + usedPortionOfViewRect ); + + if ( !sbbg.IsEmpty() ) + { + AknsDrawUtils::Background( skin, + cc, + control, + *gc, + sbbg ); + } + } + } + else + { + gc->SetBrushColor( BackColor() ); + DrawUtils::ClearBetweenRects( *gc, + iViewRect, + usedPortionOfViewRect ); + gc->Clear( sbbg ); + } + } #ifdef RD_UI_TRANSITION_EFFECTS_LIST - if ( transApi ) - { - transApi->StopDrawing(); - } + if ( transApi ) + { + transApi->StopDrawing(); + } #endif //RD_UI_TRANSITION_EFFECTS_LIST + } - if ( transparencyEnabled && !drawingInitiated ) + if ( !drawingInitiated ) { iWin->EndRedraw(); } @@ -1343,9 +1301,14 @@ void CFormattedCellListBoxItemDrawer::DrawBackgroundAndSeparatorLines( const TRect& aItemTextRect, TBool aDrawSeparator ) const { + // If we get here background is drawn via avkon implementation -> raise the + // corresponding flag in item drawer. + const_cast( this )->SetFlags( ENativeImplementation ); + MAknsSkinInstance *skin = AknsUtils::SkinInstance(); CCoeControl* control = FormattedCellData()->Control(); MAknsControlContext *cc = AknsDrawUtils::ControlContext( control ); + CEikListBox* listbox = static_cast( control ); if ( !cc ) { @@ -1367,7 +1330,8 @@ #endif // RD_UI_TRANSITION_EFFECTS_LIST // background - if ( FormattedCellData()->IsBackgroundDrawingEnabled() ) + if ( FormattedCellData()->IsBackgroundDrawingEnabled() && listbox + && !listbox->BackgroundDrawingSuppressed() ) { #ifdef RD_UI_TRANSITION_EFFECTS_LIST MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal( iGc ); @@ -1387,19 +1351,12 @@ backgroundDrawer->Draw( *iGc, *control, aItemTextRect ); bgDrawn = ETrue; } - else if ( CAknEnv::Static()->TransparencyEnabled() ) + else { bgDrawn = AknsDrawUtils::Background( skin, cc, control, *iGc, aItemTextRect, KAknsDrawParamNoClearUnderImage ); } - else - { - bgDrawn = AknsDrawUtils::Background( - skin, cc, control, *iGc, aItemTextRect, - KAknsDrawParamNoClearUnderImage | - KAknsDrawParamBottomLevelRGBOnly ); - } } if ( !bgDrawn ) { @@ -1411,12 +1368,12 @@ transApi->StopDrawing(); } #endif // RD_UI_TRANSITION_EFFECTS_LIST + } - if ( aDrawSeparator && control && - static_cast( control )->ItemsInSingleLine() == 1 ) - { - AknListUtils::DrawSeparator( *iGc, aItemTextRect, iTextColor, skin ); - } + if ( aDrawSeparator && listbox && + listbox->ItemsInSingleLine() == 1 ) + { + AknListUtils::DrawSeparator( *iGc, aItemTextRect, iTextColor, skin ); } } diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/eikfrlbd.cpp --- a/uifw/AvKon/src/eikfrlbd.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/eikfrlbd.cpp Tue May 11 16:27:42 2010 +0300 @@ -40,6 +40,8 @@ #include #include #include +#include +#include #ifdef RD_UI_TRANSITION_EFFECTS_LIST @@ -183,6 +185,8 @@ TBool aUseLogicalToVisualConversion, const TRgb &aColor); TInt ConvertTextToSmiley( TDes& aText ); + void LoadMarkingIconsL(); + private: // New internal methods TBool DrawHighlightBackground( CFbsBitGc& aGc ); void PostDeleteAnimation(); @@ -277,6 +281,7 @@ TBool iKineticScrolling; CAknSmileyManager* iSmileyMan; TSize iSmileySize; // last set simley size + CAknIconArray* iMarkingIconArray; }; @@ -325,6 +330,7 @@ #endif iKineticScrolling = CAknPhysics::FeatureEnabled(); + LoadMarkingIconsL(); _AKNTRACE_FUNC_EXIT; } @@ -353,6 +359,13 @@ delete iAnimation; delete iColorBmp; delete iHiliBmp; + + if ( iMarkingIconArray ) + { + iMarkingIconArray->ResetAndDestroy(); + } + + delete iMarkingIconArray; _AKNTRACE_FUNC_EXIT; } @@ -697,6 +710,7 @@ DeleteAnim(); TryCreateAnimation(); TRAP_IGNORE(CreateColorBitmapsL()); + TRAP_IGNORE( LoadMarkingIconsL() ); _AKNTRACE_FUNC_EXIT; } @@ -1306,6 +1320,47 @@ return err == KErrNone ? count : err; } + +// ----------------------------------------------------------------------------- +// CFormattedCellListBoxDataExtension::LoadMarkingIconsL +// ----------------------------------------------------------------------------- +// +void CFormattedCellListBoxDataExtension::LoadMarkingIconsL() + { + if ( !iMarkingIconArray ) + { + iMarkingIconArray = new ( ELeave ) CAknIconArray( 2 ); + } + else + { + iMarkingIconArray->ResetAndDestroy(); + } + + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + const TDesC& avkonIconFile = AknIconUtils::AvkonIconFileName(); + + CGulIcon* icon = AknsUtils::CreateGulIconL( skin, + KAknsIIDQgnPropCheckboxOn, + avkonIconFile, + EMbmAvkonQgn_prop_checkbox_on, + EMbmAvkonQgn_prop_checkbox_on_mask ); + + CleanupStack::PushL( icon ); + iMarkingIconArray->AppendL( icon ); + CleanupStack::Pop( icon ); + + icon = AknsUtils::CreateGulIconL( skin, + KAknsIIDQgnPropCheckboxOff, + avkonIconFile, + EMbmAvkonQgn_prop_checkbox_off, + EMbmAvkonQgn_prop_checkbox_off_mask ); + + CleanupStack::PushL( icon ); + iMarkingIconArray->AppendL( icon ); + CleanupStack::Pop( icon ); + } + + EXPORT_C CCoeControl *CFormattedCellListBoxData::Control() const { __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); @@ -2274,7 +2329,11 @@ aItemRect.iBr.iY); __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); - CListBoxView* view = static_cast( iExtension->iControl )->View(); + __ASSERT_DEBUG( iExtension->iControl, Panic( EAknPanicNullPointer )); + + CEikListBox* listbox = static_cast( iExtension->iControl ); + CListBoxView* view = listbox->View(); + if (!view->ViewRect().Intersects(aItemRect)) { // outside of the clipping rect -> don't process this item @@ -2285,10 +2344,12 @@ { iExtension->iClippedSubcells = 0; } + + TBool backgroundDrawingSuppressed = listbox->BackgroundDrawingSuppressed(); #ifdef RD_UI_TRANSITION_EFFECTS_LIST MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( &aGc ); - if ( transApi ) + if ( transApi && !backgroundDrawingSuppressed ) { transApi->StartDrawing( MAknListBoxTfxInternal::EListItem ); if(transApi->EffectsDisabled()) @@ -2297,7 +2358,10 @@ } } #else - aGc.SetClippingRect( view->ViewRect() ); + if ( !backgroundDrawingSuppressed ) + { + aGc.SetClippingRect( view->ViewRect() ); + } #endif //RD_UI_TRANSITION_EFFECTS_LIST TRect vr(view->ViewRect()); _AKNTRACE("Clipping: Width %d, (%d,%d)", vr.Width(), vr.iTl.iX, vr.iBr.iX ); @@ -2318,7 +2382,7 @@ } #ifdef RD_UI_TRANSITION_EFFECTS_LIST - if ( transApi ) + if ( transApi && !backgroundDrawingSuppressed ) { if(transApi->EffectsDisabled()) { @@ -2328,7 +2392,10 @@ transApi->StopDrawing(); } #else - aGc.CancelClippingRect(); + if ( !backgroundDrawingSuppressed ) + { + aGc.CancelClippingRect(); + } #endif //RD_UI_TRANSITION_EFFECTS_LIST _AKNTRACE_FUNC_EXIT; } @@ -2410,6 +2477,46 @@ __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); TRect textRect(aItemRect); + + CEikListBox* listbox = static_cast( Control() ); + + if ( listbox->View()->ItemDrawer()->Flags() + & CListItemDrawer::EMarkingModeEnabled + && iExtension->iMarkingIconArray + && iExtension->iMarkingIconArray->Count() == 2 ) + { + textRect.iTl.iX += + AknLayoutScalable_Avkon::list_double_graphic_pane_t1( 0 ).LayoutLine().il; + + TAknLayoutRect layoutRect; + layoutRect.LayoutRect( aItemRect, + AknLayoutScalable_Avkon::list_double_graphic_pane_g1( 0 ) ); + + CGulIcon* icon = (*iExtension->iMarkingIconArray)[1]; // unchecked + + if ( listbox->View()->ItemIsSelected( + iExtension->iCurrentlyDrawnItemIndex ) ) + { + icon = (*iExtension->iMarkingIconArray)[0]; + } + + CFbsBitmap* bitmap = icon->Bitmap(); + + if ( bitmap ) + { + TSize size( bitmap->SizeInPixels() ); // set size if not already + TSize targetSize( layoutRect.Rect().Size() ); + + if ( size.iWidth != targetSize.iWidth && size.iHeight != targetSize.iHeight ) + { + AknIconUtils::SetSize( bitmap, targetSize, + EAspectRatioPreservedAndUnusedSpaceRemoved ); + } + + aGc.BitBltMasked( layoutRect.Rect().iTl, bitmap, TRect( layoutRect.Rect().Size() ), icon->Mask(), EFalse ); + } + } + const TColors *subcellColors = &aColors; TInt lastSubCell = Min( LastSubCell(), KMaxSubCellIndex ); @@ -2433,7 +2540,7 @@ if ( iExtension->iSubCellsMightIntersect ) { - CheckIfSubCellsIntersect( &textLines[0], &rectClipped[0], *aText, aItemRect ); + CheckIfSubCellsIntersect( &textLines[0], &rectClipped[0], *aText, textRect ); } TInt SCindex=0; @@ -2936,9 +3043,9 @@ { _AKNTRACE_FUNC_ENTER; const TRect &aItemRect = aRect; - - DrawPopupHighlight(aGc, aItemRect, aHighlight); - + + DrawDefaultHighlight( aGc, aItemRect, aHighlight ); + // Draw the actual items. DrawFormatted(aProperties,aGc,aText,aItemRect,aHighlight,aColors); _AKNTRACE_FUNC_EXIT; @@ -3041,43 +3148,6 @@ _AKNTRACE_FUNC_EXIT; } -void CFormattedCellListBoxData::DrawSettingHighlight(CWindowGc &aGc, const TRect &aItemRect, TBool aHighlight) const - { - _AKNTRACE_FUNC_ENTER; - DrawDefaultHighlight( aGc, aItemRect, aHighlight ); - _AKNTRACE_FUNC_EXIT; - } - -void CFormattedCellListBoxData::DrawPopupHighlight(CWindowGc &aGc, const TRect &aItemRect, TBool aHighlight) const - { - _AKNTRACE_FUNC_ENTER; - DrawDefaultHighlight( aGc, aItemRect, aHighlight ); - _AKNTRACE_FUNC_EXIT; - } - -void CFormattedCellListBoxData::DrawPopupFrame(CWindowGc &aGc) const - { - _AKNTRACE_FUNC_ENTER; - __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); - CCoeControl* control = Control(); - - if ( control ) - { - aGc.SetPenStyle( CGraphicsContext::ENullPen ); - - TBool done = AknsDrawUtils::Background( AknsUtils::SkinInstance(), - iExtension->iPopupFrame, - control, - aGc, - control->Rect() ); - - if ( !done ) - { - aGc.Clear( control->Rect() ); - } - } - _AKNTRACE_FUNC_EXIT; - } void CFormattedCellListBoxData::SetWordWrappedSubcellIndices( TInt aFirstIndex, @@ -4107,27 +4177,81 @@ { _AKNTRACE_FUNC_ENTER; __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); - - TRect aRect(aItemRect); - const TColors *subcellColors = &aColors; + _AKNTRACE( "DrawFormattedOld: aText=%S, aItemRect=(%d,%d,%d,%d)", + aText, aItemRect.iTl.iX, + aItemRect.iTl.iY, + aItemRect.iBr.iX, + aItemRect.iBr.iY ); + + TRect itemRect( aItemRect ); - TInt lastSubCell=LastSubCell(); - if (lastSubCell==KErrNotFound) + TInt lastSubCell = LastSubCell(); + if ( lastSubCell == KErrNotFound ) { - aGc.UseFont(CEikonEnv::Static()->NormalFont()); - aGc.DrawText(TPtrC(),aRect,0); // use draw text so that don't need to change pen color/style + aGc.UseFont( CEikonEnv::Static()->NormalFont() ); + // Use draw text so that there's no need to change pen color/style. + aGc.DrawText( TPtrC(), itemRect, 0 ); aGc.DiscardFont(); // Release the font cache _AKNTRACE_FUNC_EXIT; return; } + + CEikListBox* listbox = static_cast( Control() ); + + if ( listbox->View()->ItemDrawer()->Flags() + & CListItemDrawer::EMarkingModeEnabled && + iExtension->iMarkingIconArray && + iExtension->iMarkingIconArray->Count() == 2 ) + { + itemRect.iTl.iX += + AknLayoutScalable_Avkon::list_double_graphic_pane_t1( 0 ).LayoutLine().il; + + TAknLayoutRect layoutRect; + layoutRect.LayoutRect( + aItemRect, + AknLayoutScalable_Avkon::list_double_graphic_pane_g1( 0 ) ); + TRect iconRect( layoutRect.Rect() ); + + CGulIcon* icon = (*iExtension->iMarkingIconArray)[1]; // unchecked + + if ( listbox->View()->ItemIsSelected( + iExtension->iCurrentlyDrawnItemIndex ) ) + { + icon = (*iExtension->iMarkingIconArray)[0]; + } + + CFbsBitmap* bitmap = icon->Bitmap(); + + if ( bitmap ) + { + TSize size( bitmap->SizeInPixels() ); // set size if not already + TSize targetSize( layoutRect.Rect().Size() ); + + if ( size.iWidth != targetSize.iWidth && + size.iHeight != targetSize.iHeight ) + { + AknIconUtils::SetSize( bitmap, targetSize, + EAspectRatioPreservedAndUnusedSpaceRemoved ); + } + + aGc.BitBltMasked( iconRect.iTl, + bitmap, + TRect( iconRect.Size() ), + icon->Mask(), + EFalse ); + } + } + + const TColors* subcellColors = &aColors; + const CFont* font=SubCellFont(0); if (font==NULL) { font=CEikonEnv::Static()->NormalFont(); } - TRect textRect=aRect; - textRect.iBr.iX=aRect.iTl.iX; + TRect textRect( itemRect ); + textRect.iBr.iX = itemRect.iTl.iX; TInt subcell=0; TInt subcell2=0; @@ -4237,7 +4361,7 @@ } // This is called O(N^2) times - Do not put anything extra to it, it'll slow down drawing! - TRect bRect2 = TRect(SubCellPosition(subcell2),SubCellSize(subcell2)); + TRect bRect2( SubCellPosition( subcell2 ), SubCellSize( subcell2 ) ); if (cRect.Intersects(bRect2) && bRect.Intersects(bRect2) && !istrans && !SubCellIsTransparent(subcell2)) { cRect.iBr.iX = bRect2.iTl.iX; @@ -4255,7 +4379,7 @@ } // This is called O(N^2) times - Do not put anything extra to it, it'll slow down drawing! - TRect bRect2 = TRect(SubCellPosition(subcell2),SubCellSize(subcell2)); + TRect bRect2( SubCellPosition( subcell2 ), SubCellSize( subcell2 ) ); if (cRect.Intersects(bRect2) && bRect.Intersects(bRect2) && !istrans && !SubCellIsTransparent(subcell2)) { cRect.iTl.iX = bRect2.iBr.iX; @@ -4313,15 +4437,17 @@ if ( layoutMirrored ) { - TRect bRect = TRect(sc->iPosition,sc->iSize); - TRect cRect2 = TRect(bRect.iTl+TSize(m.iLeft,m.iTop),bRect.Size()-TSize(m.iRight+m.iLeft,m.iBottom+m.iTop)); + TRect bRect( sc->iPosition, sc->iSize ); + TRect cRect2( bRect.iTl + TSize( m.iLeft, m.iTop ), + bRect.Size() - TSize( m.iRight + m.iLeft, + m.iBottom + m.iTop ) ); TInt shift = (cRect2.Size() - sc->iRealTextSize).iWidth; cRect.iTl.iX += shift; cRect.iBr.iX += shift; } - textRect=TRect(aItemRect.iTl+cRect.iTl,cRect.Size()); + textRect = TRect( itemRect.iTl + cRect.iTl, cRect.Size() ); if (sc->iUseSubCellColors) { @@ -4451,8 +4577,7 @@ iExtension->i2ndLineMarquee; TBool marqueeDisabled = - static_cast( - Control() )->View()->ItemDrawer()->Flags() & CListItemDrawer::EDisableMarquee; + listbox->View()->ItemDrawer()->Flags() & CListItemDrawer::EDisableMarquee; if ( aHighlight && iExtension->IsMarqueeOn() && clipped && !marqueeDisabled ) { diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/src/eikslb.cpp --- a/uifw/AvKon/src/eikslb.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/src/eikslb.cpp Tue May 11 16:27:42 2010 +0300 @@ -87,9 +87,7 @@ } FormattedCellData()->SetCurrentlyDrawnItemIndex( aItemIndex ); - - FormattedCellData()->DrawSettingHighlight( *iGc, aItemTextRect, aItemIsCurrent ); - + FormattedCellData()->DrawDefaultHighlight( *iGc, aItemTextRect, aItemIsCurrent ); TBool drawBackground = ETrue; TPtrC temp = iModel->ItemText( aItemIndex ); TPtrC columnText; diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/srcdata/avkon.rss --- a/uifw/AvKon/srcdata/avkon.rss Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/srcdata/avkon.rss Tue May 11 16:27:42 2010 +0300 @@ -10187,6 +10187,54 @@ }; } + +// --------------------------------------------------------------------------- +// r_avkon_menupane_mark_multiple +// Multiple marking mode menu pane. +// --------------------------------------------------------------------------- +// +RESOURCE MENU_PANE r_avkon_menupane_mark_multiple + { + items = + { + MENU_ITEM + { + command = EAknCmdMarkingModeMarkOne; + txt = qtn_options_list_mark_one; + flags = EEikMenuItemSpecific; + }, + MENU_ITEM + { + command = EAknCmdMarkingModeMarkAll; + txt = qtn_options_list_mark_all; + flags = EEikMenuItemDimmed; + }, + MENU_ITEM + { + command = EAknCmdMarkingModeUnmarkAll; + txt = qtn_options_list_unmark_all; + flags = EEikMenuItemDimmed; + }, + MENU_ITEM + { + command = EAknCmdMarkingModeEnter; + txt = qtn_options_list_mark_multiple; + } + }; + } + + +// ---------------------------------------------------------------------------- +// r_marking_mode_navi_pane +// Multiple marking mode navi pane +// ---------------------------------------------------------------------------- +// +RESOURCE NAVI_LABEL r_marking_mode_navi_pane + { + txt = qtn_navi_pane_marking_mode; + } + + RESOURCE COMBINED_PANE r_avkon_status_pane_combined_default { panes = @@ -10238,3 +10286,4 @@ } // End of File + diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestappfrm/src/bctestaknapplication.cpp --- a/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestappfrm/src/bctestaknapplication.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestappfrm/src/bctestaknapplication.cpp Tue May 11 16:27:42 2010 +0300 @@ -14,7 +14,7 @@ * Description: * */ -#include +#include #include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestdocandinit/inc/bctestDocAndInitcase.h --- a/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestdocandinit/inc/bctestDocAndInitcase.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestdocandinit/inc/bctestDocAndInitcase.h Tue May 11 16:27:42 2010 +0300 @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include "bctestcase.h" diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/S60_SDK3.0/bctesteditor/inc/bctesteditorcase.h --- a/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctesteditor/inc/bctesteditorcase.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctesteditor/inc/bctesteditorcase.h Tue May 11 16:27:42 2010 +0300 @@ -24,7 +24,7 @@ #include #include #include -#include +#include #include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestlabelinfoindicators/src/bctestlabelinfoindicatorscase.cpp --- a/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestlabelinfoindicators/src/bctestlabelinfoindicatorscase.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestlabelinfoindicators/src/bctestlabelinfoindicatorscase.cpp Tue May 11 16:27:42 2010 +0300 @@ -28,7 +28,7 @@ #include #include // CAknInfoPopupNoteController #include // TGulAlignmentValue -#include // KAknsMessageSkinChange +#include // KAknsMessageSkinChange #include // KEikDynamicLayoutVariantSwitch #include // CAknPictographInterface #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestlist/src/bctestlistcolumnbasecase.cpp --- a/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestlist/src/bctestlistcolumnbasecase.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestlist/src/bctestlistcolumnbasecase.cpp Tue May 11 16:27:42 2010 +0300 @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestlist/src/bctestlistformatbasecase.cpp --- a/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestlist/src/bctestlistformatbasecase.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestlist/src/bctestlistformatbasecase.cpp Tue May 11 16:27:42 2010 +0300 @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestserverapp/inc/bctestserverappcase.h --- a/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestserverapp/inc/bctestserverappcase.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestserverapp/inc/bctestserverappcase.h Tue May 11 16:27:42 2010 +0300 @@ -20,7 +20,7 @@ #define BCTEST_SERVERAPPCASE_H #include "bctestcase.h" -#include +#include #include //TUid Kmysimpleserver = { 0x06C22C0C }; diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestserverapp/src/bctestserverappcase.cpp --- a/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestserverapp/src/bctestserverappcase.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestserverapp/src/bctestserverappcase.cpp Tue May 11 16:27:42 2010 +0300 @@ -18,7 +18,7 @@ #include #include -#include +#include #include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/S60_SDK3.1/bctestmisc/src/bctestmisccase.cpp --- a/uifw/AvKon/tsrc/bc/S60_SDK3.1/bctestmisc/src/bctestmisccase.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/S60_SDK3.1/bctestmisc/src/bctestmisccase.cpp Tue May 11 16:27:42 2010 +0300 @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/S60_SDK3.2/bctesttouchpane/src/bctesttouchpanecase.cpp --- a/uifw/AvKon/tsrc/bc/S60_SDK3.2/bctesttouchpane/src/bctesttouchpanecase.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/S60_SDK3.2/bctesttouchpane/src/bctesttouchpanecase.cpp Tue May 11 16:27:42 2010 +0300 @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include "bctesttouchpanecase.h" diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/S60_SDK5.0/bctestappfrm/src/bctestaknapplication.cpp --- a/uifw/AvKon/tsrc/bc/S60_SDK5.0/bctestappfrm/src/bctestaknapplication.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/S60_SDK5.0/bctestappfrm/src/bctestaknapplication.cpp Tue May 11 16:27:42 2010 +0300 @@ -14,7 +14,7 @@ * Description: * */ -#include +#include #include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/S60_SDK5.0/bctestdocandinit/inc/bctestDocAndInitcase.h --- a/uifw/AvKon/tsrc/bc/S60_SDK5.0/bctestdocandinit/inc/bctestDocAndInitcase.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/S60_SDK5.0/bctestdocandinit/inc/bctestDocAndInitcase.h Tue May 11 16:27:42 2010 +0300 @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include "bctestcase.h" diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/S60_SDK5.0/bctestmix50/inc/bctestmix50patchmisc.h --- a/uifw/AvKon/tsrc/bc/S60_SDK5.0/bctestmix50/inc/bctestmix50patchmisc.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/S60_SDK5.0/bctestmix50/inc/bctestmix50patchmisc.h Tue May 11 16:27:42 2010 +0300 @@ -38,7 +38,7 @@ #include #include #include -#include +#include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/S60_SDK5.0/bctestmix50/src/bctestmix50patchcontrolcase.cpp --- a/uifw/AvKon/tsrc/bc/S60_SDK5.0/bctestmix50/src/bctestmix50patchcontrolcase.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/S60_SDK5.0/bctestmix50/src/bctestmix50patchcontrolcase.cpp Tue May 11 16:27:42 2010 +0300 @@ -43,7 +43,7 @@ #include #include #include -#include +#include #include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/S60_SDKMCL/bctestmixmcl/inc/bctestmixmclgeneralcase.h --- a/uifw/AvKon/tsrc/bc/S60_SDKMCL/bctestmixmcl/inc/bctestmixmclgeneralcase.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/S60_SDKMCL/bctestmixmcl/inc/bctestmixmclgeneralcase.h Tue May 11 16:27:42 2010 +0300 @@ -133,6 +133,11 @@ */ void TestEditorKineticScrollingL(); + /* + * Tests editor's kinetic scrolling related functions. + */ + void TestEnableKineticScrollingPhysicsL(); + /** * Tests the SuspendPhysics() method in CAknPhysics. */ @@ -158,6 +163,12 @@ */ void TestItemFinder(); + /** + * Tests FindItemDialog. + */ + void TestFindItemDialog(); + + protected: // From base class MAknPhysicsObserver /** diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/S60_SDKMCL/bctestmixmcl/src/bctestmixmclgeneralcase.cpp --- a/uifw/AvKon/tsrc/bc/S60_SDKMCL/bctestmixmcl/src/bctestmixmclgeneralcase.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/S60_SDKMCL/bctestmixmcl/src/bctestmixmclgeneralcase.cpp Tue May 11 16:27:42 2010 +0300 @@ -34,6 +34,8 @@ #include #include #include +#include +#include #include "bctestmixmclgeneralcase.h" #include "bctestmixmclcontainer.h" @@ -130,7 +132,9 @@ TestRadioButtonSettingPageL(); TestPopupSettingPageL(); TestItemFinder(); + TestFindItemDialog(); TestEditorKineticScrollingL(); + TestEnableKineticScrollingPhysicsL(); TestAknPhysicsSuspendPhysicsL(); TestAknPhysicsResumePhysicsL(); TestCbaL(); @@ -521,6 +525,36 @@ AssertTrueL( ETrue, KEdwinEnableScrolling ); } + +// --------------------------------------------------------------------------- +// CBCTestMixMCLGeneralCase::TestEnableKineticScrollingPhysicsL +// --------------------------------------------------------------------------- +// +void CBCTestMixMCLGeneralCase::TestEnableKineticScrollingPhysicsL() + { + CEikEdwin* editor = new ( ELeave ) CEikEdwin; + CleanupStack::PushL( editor ); + + CAknPhysics* physics ( NULL ); + AssertTrueL ( CAknPhysics::FeatureEnabled() ); + CCoeControl* control ( NULL ); + control = new (ELeave) CCoeControl; + CleanupStack::PushL( control ); + + physics = CAknPhysics::NewL( *this, control ); + CleanupStack::PushL( physics ); + + editor->EnableKineticScrollingL( physics ); + + CleanupStack::PopAndDestroy( physics ); + CleanupStack::PopAndDestroy( control ); + CleanupStack::PopAndDestroy( editor ); + + _LIT( KEdwinEnableScrollingPhysics, + "CEikEdwin::TestEnableKineticScrollingPhysicsL tested" ); + AssertTrueL( ETrue, KEdwinEnableScrollingPhysics ); + } + // --------------------------------------------------------------------------- // CBCTestMixMCLGeneralCase::TestAknPhysicsSuspendPhysicsL // --------------------------------------------------------------------------- @@ -649,6 +683,28 @@ } +// ----------------------------------------------------------------------------- +// CBCTestMixMCLGeneralCase::TestFindItemDialog +// ----------------------------------------------------------------------------- +// +void CBCTestMixMCLGeneralCase::TestFindItemDialog() + { + _LIT( KEnableSingleClick, + "CFindItemDialog::EnableSingleClick() tested" ); + _LIT( KUrlDes, "http://www.symbian.com" ); + + CFindItemDialog* dialog = CFindItemDialog::NewL( KUrlDes, + CFindItemEngine::EFindItemSearchURLBin ); + CleanupStack::PushL( dialog ); + + dialog->EnableSingleClick ( EFalse ); + dialog->EnableSingleClick ( ETrue ); + AssertTrueL( ETrue, KEnableSingleClick ); + + CleanupStack::PopAndDestroy( dialog ); + } + + // --------------------------------------------------------------------------- // CBCTestMixMCLGeneralCase::HandleFindItemEventL // --------------------------------------------------------------------------- diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaiwaknapp.h --- a/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaiwaknapp.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaiwaknapp.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaiwaknapp.h -* Part of : BCTest / bctestdomaiwakn -* Description : declaration of app. -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_CBCTESTDOMAIWAKNAPP_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaiwaknappui.h --- a/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaiwaknappui.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaiwaknappui.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaiwaknappui.h -* Part of : BCTest / bctestdomaiwakn -* Description : declaration of appui. -* Version : %version: 2 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_CBCTESTDOMAIWAKNAPPUI_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaiwakncontainer.h --- a/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaiwakncontainer.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaiwakncontainer.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaiwakncontainer.h -* Part of : BCTest / bctestdomaiwakn -* Description : declaration of container. -* Version : %version: 2 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_CBCTESTDOMAIWAKNCONTAINER_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaiwakndocument.h --- a/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaiwakndocument.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaiwakndocument.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaiwakndocument.h -* Part of : BCTest / bctestdomaiwakn -* Description : declaration of document -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_CBCTESTDOMAIWAKNDOCUMENT_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaiwaknview.h --- a/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaiwaknview.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaiwaknview.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaiwaknview.h -* Part of : BCTest / bctestdomaiwakn -* Description : declaration of view -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_CBCTESTDOMAIWAKNVIEW_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaiwcase.h --- a/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaiwcase.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaiwcase.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaiwcase.h -* Part of : BCTest / bctestdomaiwakn -* Description : declaration of test case -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_CBCTESTDOMAIWCASE_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaiwserviceifmenu.h --- a/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaiwserviceifmenu.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaiwserviceifmenu.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaiwserviceifmenu.h -* Part of : BCTest / bctestdomaiwakn -* Description : for testing CAiwServiceIfMenu and CAiwServiceIfBase -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_CBCTESTDOMAIWSERVICEIFMENU_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaknanimdata.h --- a/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaknanimdata.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaknanimdata.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaknanimdata.h -* Part of : BCTest / bctestdomaiwakn -* Description : for testing APIs in aknAnimData.h -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_BCTESTDOMAKNANIMATIONDATA_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaknanimview.h --- a/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaknanimview.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaknanimview.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaknanimview.h -* Part of : BCTest / bctestdomaiwakn -* Description : for testing APIs of CAknAnimatedView -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_BCTESTDOMAKNANIMATEDVIEW_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaknbatterypane.h --- a/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaknbatterypane.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaknbatterypane.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestaknbattery.h -* Part of : BCTest / bctestdomaiwakn -* Description : for testing the protected methods of aknbattery.h -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomakncharmap.h --- a/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomakncharmap.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomakncharmap.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomakncharmap.h -* Part of : BCTest / bctestdomaiwakn -* Description : for indirectly testing APIs in akncharmap.h -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_CBCTESTDOMCAKNCHARMAP_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaknctrlcase.h --- a/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaknctrlcase.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaknctrlcase.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaknctrlcase.h -* Part of : BCTest / bctestdomaiwakn -* Description : declaration of test case -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaknecsdetector.h --- a/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaknecsdetector.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaknecsdetector.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaknecsdetector.h -* Part of : BCTest / bctestdomaiwakn -* Description : for testing the protected methods of CAknEcsDetector -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaknindicatorcontainer.h --- a/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaknindicatorcontainer.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaknindicatorcontainer.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaknindicatorcontainer.h -* Part of : BCTest / bctestdomaiwakn -* Description : for indirectly testing APIs in aknindicator.h -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_CBCTESTDOMAKNINDICATORCONTAINER_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaknnoctrlcase.h --- a/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaknnoctrlcase.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaknnoctrlcase.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaknnoctrlcase.h -* Part of : BCTest / bctestdomaiwakn -* Description : declaration of test case -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_CBCTESTDOMAKNNOCTRLCASE_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaknrclasscase.h --- a/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaknrclasscase.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomaknrclasscase.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaknrclasscase.h -* Part of : BCTest / bctestdomaiwakn -* Description : declaration of test case -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomuiservershutdownapps.h --- a/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomuiservershutdownapps.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomuiservershutdownapps.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomuiservershutdownapps.h -* Part of : BCTest / bctestdomaiwakn -* Description : test the asynchronous method RAknUiServer::ShutdownApps(). -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_CBCTESTDOMUISERVERSHUTDOWNAPPS_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomuiserverunlockmedia.h --- a/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomuiserverunlockmedia.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomaiwakn/inc/bctestdomuiserverunlockmedia.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomuiserverunlockmedia.h -* Part of : BCTest / bctestdomaiwakn -* Description : test the asynchronous methods of RAknUiServer. -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_CBCTESTDOMUISERVERUNLOCKMEDIA_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomfntlay/inc/bctestdomadapter.h --- a/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomfntlay/inc/bctestdomadapter.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomfntlay/inc/bctestdomadapter.h Tue May 11 16:27:42 2010 +0300 @@ -19,7 +19,7 @@ #ifndef C_CBCTESTDOMADAPTER_H #define C_CBCTESTDOMADAPTER_H -#include +#include #include class CBCTestDomAdapter: public CBase diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomfntlay/src/bctestdomlayoudatacase.cpp --- a/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomfntlay/src/bctestdomlayoudatacase.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomfntlay/src/bctestdomlayoudatacase.cpp Tue May 11 16:27:42 2010 +0300 @@ -20,8 +20,8 @@ #include #include -#include -#include +#include +#include #include "bctestdomlayoutdatacase.h" diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomfntlay/src/bctestdomskincase.cpp --- a/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomfntlay/src/bctestdomskincase.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomfntlay/src/bctestdomskincase.cpp Tue May 11 16:27:42 2010 +0300 @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaiwaknapp.h --- a/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaiwaknapp.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaiwaknapp.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaiwaknapp.h -* Part of : BCTest / bctestdomaiwakn -* Description : declaration of app. -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_CBCTESTDOMAIWAKNAPP_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaiwaknappui.h --- a/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaiwaknappui.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaiwaknappui.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaiwaknappui.h -* Part of : BCTest / bctestdomaiwakn -* Description : declaration of appui. -* Version : %version: 3 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_CBCTESTDOMAIWAKNAPPUI_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaiwakncontainer.h --- a/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaiwakncontainer.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaiwakncontainer.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaiwakncontainer.h -* Part of : BCTest / bctestdomaiwakn -* Description : declaration of container. -* Version : %version: 2 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_CBCTESTDOMAIWAKNCONTAINER_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaiwakndocument.h --- a/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaiwakndocument.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaiwakndocument.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaiwakndocument.h -* Part of : BCTest / bctestdomaiwakn -* Description : declaration of document -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_CBCTESTDOMAIWAKNDOCUMENT_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaiwaknview.h --- a/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaiwaknview.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaiwaknview.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaiwaknview.h -* Part of : BCTest / bctestdomaiwakn -* Description : declaration of view -* Version : %version: 2 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_CBCTESTDOMAIWAKNVIEW_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaiwcase.h --- a/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaiwcase.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaiwcase.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaiwcase.h -* Part of : BCTest / bctestdomaiwakn -* Description : declaration of test case -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_CBCTESTDOMAIWCASE_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaiwserviceifmenu.h --- a/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaiwserviceifmenu.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaiwserviceifmenu.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaiwserviceifmenu.h -* Part of : BCTest / bctestdomaiwakn -* Description : for testing CAiwServiceIfMenu and CAiwServiceIfBase -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_CBCTESTDOMAIWSERVICEIFMENU_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaknanimdata.h --- a/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaknanimdata.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaknanimdata.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaknanimdata.h -* Part of : BCTest / bctestdomaiwakn -* Description : for testing APIs in aknAnimData.h -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_BCTESTDOMAKNANIMATIONDATA_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaknanimview.h --- a/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaknanimview.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaknanimview.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaknanimview.h -* Part of : BCTest / bctestdomaiwakn -* Description : for testing APIs of CAknAnimatedView -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_BCTESTDOMAKNANIMATEDVIEW_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaknbatterypane.h --- a/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaknbatterypane.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaknbatterypane.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestaknbattery.h -* Part of : BCTest / bctestdomaiwakn -* Description : for testing the protected methods of aknbattery.h -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomakncharmap.h --- a/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomakncharmap.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomakncharmap.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomakncharmap.h -* Part of : BCTest / bctestdomaiwakn -* Description : for indirectly testing APIs in akncharmap.h -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_CBCTESTDOMCAKNCHARMAP_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaknctrlcase.h --- a/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaknctrlcase.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaknctrlcase.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaknctrlcase.h -* Part of : BCTest / bctestdomaiwakn -* Description : declaration of test case -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaknecsdetector.h --- a/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaknecsdetector.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaknecsdetector.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaknecsdetector.h -* Part of : BCTest / bctestdomaiwakn -* Description : for testing the protected methods of CAknEcsDetector -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaknindicatorcontainer.h --- a/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaknindicatorcontainer.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaknindicatorcontainer.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaknindicatorcontainer.h -* Part of : BCTest / bctestdomaiwakn -* Description : for indirectly testing APIs in aknindicator.h -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_CBCTESTDOMAKNINDICATORCONTAINER_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaknnoctrlcase.h --- a/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaknnoctrlcase.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaknnoctrlcase.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaknnoctrlcase.h -* Part of : BCTest / bctestdomaiwakn -* Description : declaration of test case -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_CBCTESTDOMAKNNOCTRLCASE_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaknrclasscase.h --- a/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaknrclasscase.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomaknrclasscase.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomaknrclasscase.h -* Part of : BCTest / bctestdomaiwakn -* Description : declaration of test case -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomuiservershutdownapps.h --- a/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomuiservershutdownapps.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomuiservershutdownapps.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomuiservershutdownapps.h -* Part of : BCTest / bctestdomaiwakn -* Description : test the asynchronous method RAknUiServer::ShutdownApps(). -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_CBCTESTDOMUISERVERSHUTDOWNAPPS_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomuiserverunlockmedia.h --- a/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomuiserverunlockmedia.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomaiwakn/inc/bctestdomuiserverunlockmedia.h Tue May 11 16:27:42 2010 +0300 @@ -1,20 +1,18 @@ /* -* ============================================================================ -* Name : bctestdomuiserverunlockmedia.h -* Part of : BCTest / bctestdomaiwakn -* Description : test the asynchronous methods of RAknUiServer. -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright © 2007. All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* ============================================================================ -* Template version: 4.2 +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* */ #ifndef C_CBCTESTDOMUISERVERUNLOCKMEDIA_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomfntlay/inc/bctestdomadapter.h --- a/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomfntlay/inc/bctestdomadapter.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomfntlay/inc/bctestdomadapter.h Tue May 11 16:27:42 2010 +0300 @@ -19,7 +19,7 @@ #ifndef C_CBCTESTDOMADAPTER_H #define C_CBCTESTDOMADAPTER_H -#include +#include #include class CBCTestDomAdapter: public CBase diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomfntlay/src/bctestdomlayoudatacase.cpp --- a/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomfntlay/src/bctestdomlayoudatacase.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomfntlay/src/bctestdomlayoudatacase.cpp Tue May 11 16:27:42 2010 +0300 @@ -20,8 +20,8 @@ #include #include -#include -#include +#include +#include #include "bctestdomlayoutdatacase.h" diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomfntlay/src/bctestdomskincase.cpp --- a/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomfntlay/src/bctestdomskincase.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomfntlay/src/bctestdomskincase.cpp Tue May 11 16:27:42 2010 +0300 @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include #include diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/AvKon/tsrc/bc/script/codetest_script/output/api_table.bak.xml --- a/uifw/AvKon/tsrc/bc/script/codetest_script/output/api_table.bak.xml Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/script/codetest_script/output/api_table.bak.xml Tue May 11 16:27:42 2010 +0300 @@ -56637,7 +56637,7 @@ - + @@ -56649,7 +56649,7 @@ - + @@ -56661,7 +56661,7 @@ - + @@ -56673,7 +56673,7 @@ - + @@ -56685,7 +56685,7 @@ - + @@ -56697,7 +56697,7 @@ - + @@ -56709,7 +56709,7 @@ - + @@ -56721,7 +56721,7 @@ - + @@ -56733,7 +56733,7 @@ - + @@ -56745,7 +56745,7 @@ - + @@ -56757,7 +56757,7 @@ - + @@ -56769,7 +56769,7 @@ - + @@ -56781,7 +56781,7 @@ - + @@ -56793,7 +56793,7 @@ - + @@ -56805,7 +56805,7 @@ - + diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/EABI/EIKCOCTLU.DEF --- a/uifw/EikStd/EABI/EIKCOCTLU.DEF Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/EABI/EIKCOCTLU.DEF Tue May 11 16:27:42 2010 +0300 @@ -2012,4 +2012,6 @@ _ZN18CAknItemActionMenu19RegisterCollectionLER14MAknCollectionP15MObjectProvider @ 2011 NONAME _ZN25AknItemActionMenuRegister30RemoveConstructingMenuBarOwnerEP15MObjectProvider @ 2012 NONAME _ZN11CEikListBox18IsHighlightEnabledEv @ 2013 NONAME + _ZN11CEikListBox14SetMarkingModeEi @ 2014 NONAME + _ZN11CEikListBox22SetMarkingModeObserverEP23MAknMarkingModeObserver @ 2015 NONAME diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/bwins/EIKCOCTLU.DEF --- a/uifw/EikStd/bwins/EIKCOCTLU.DEF Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/bwins/EIKCOCTLU.DEF Tue May 11 16:27:42 2010 +0300 @@ -1623,3 +1623,6 @@ ?RemoveConstructingMenuBarOwner@AknItemActionMenuRegister@@SAXPAVMObjectProvider@@@Z @ 1622 NONAME ; void AknItemActionMenuRegister::RemoveConstructingMenuBarOwner(class MObjectProvider *) ?RegisterCollectionL@CAknItemActionMenu@@SAPAV1@AAVMAknCollection@@PAVMObjectProvider@@@Z @ 1623 NONAME ; class CAknItemActionMenu * CAknItemActionMenu::RegisterCollectionL(class MAknCollection &, class MObjectProvider *) ?IsHighlightEnabled@CEikListBox@@QAEHXZ @ 1624 NONAME ; int CEikListBox::IsHighlightEnabled(void) + ?SetMarkingModeObserver@CEikListBox@@QAEXPAVMAknMarkingModeObserver@@@Z @ 1625 NONAME ; void CEikListBox::SetMarkingModeObserver(class MAknMarkingModeObserver *) + ?SetMarkingMode@CEikListBox@@QAEXH@Z @ 1626 NONAME ; void CEikListBox::SetMarkingMode(int) + diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/coctlinc/AknDoubleSpanScrollIndicator.h --- a/uifw/EikStd/coctlinc/AknDoubleSpanScrollIndicator.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/coctlinc/AknDoubleSpanScrollIndicator.h Tue May 11 16:27:42 2010 +0300 @@ -255,8 +255,7 @@ */ void CreateScrollBarItemsL(); - TInt ScrollHandleMaxVisibleSizeInPixels(); - TInt HandleBackgroundMinSizeInPixels(); + TInt HandleMaxSizeInPixels(); TInt HandleMinSizeInPixels(); /** @@ -267,14 +266,6 @@ */ void DrawBackground() const; - /** - * Layout scrollbar handle - * - * @since 3.1 - * - */ - void LayoutHandleGraphics(); - CAknDoubleSpanScrollIndicatorItem* LoadScrollIndicatorItemL( const TAknsItemID &aTopId, const TAknsItemID &aMidId, @@ -293,7 +284,6 @@ TInt iFieldPosition; // Size of the current field. (Optional double span) TInt iFieldSize; // Position inside the current field. (Optional double span) TBool iOwnsWindow; // Is window owning - TInt iSpare; TRect iBackgroundRect; // Rect for scrollbar background. TRect iHandleBackgroundRect; // Rect for scrollbar handle background. @@ -317,8 +307,17 @@ CAknDoubleSpanScrollIndicatorItem* iHighlightHandleBar; TInt iHeadItemSize; - TInt iMidItemSize; TInt iTailItemSize; + + /** + * Minimum handle size. + */ + TInt iHandleMinSize; + + /** + * Maximum handle size. + */ + TInt iHandleMaxSize; }; #endif diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/coctlinc/AknDoubleSpanScrollIndicatorItem.h --- a/uifw/EikStd/coctlinc/AknDoubleSpanScrollIndicatorItem.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/coctlinc/AknDoubleSpanScrollIndicatorItem.h Tue May 11 16:27:42 2010 +0300 @@ -94,40 +94,11 @@ ); - /** - * Creates a new bitmap and a mask based on the given skin item id. - * New bitmap will be rotated 90 degrees agains clock direction if wanted. - * - * @since 2.6 - * @param aID Skin item id for the bitmap and mask. - * @param aBitmap When this method returns this will contain a poiter - * to a new bitmap. - * @param aMask When this method returns this will contain a poiter - * to a new mask bitmap. - * @param aRotated If ETrue the skin source bitmap data is rotated - * 90 degrees. - * - */ - void CreateSkinnedBitmapAndMaskL(MAknsSkinInstance* aInstance, - const TAknsItemID& aID, - CFbsBitmap*& aBitmap, - CFbsBitmap*& aMask, - TBool aRotated); - - public: // data TAknsItemID iTopId; TAknsItemID iMidId; TAknsItemID iBottomId; - - CFbsBitmap* iTop; - CFbsBitmap* iTopMask; - CFbsBitmap* iMiddle; - CFbsBitmap* iMiddleMask; - CFbsBitmap* iBottom; - CFbsBitmap* iBottomMask; TSize iItemSize; - }; #endif diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/coctlinc/aknitemactionmenuregister.h --- a/uifw/EikStd/coctlinc/aknitemactionmenuregister.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/coctlinc/aknitemactionmenuregister.h Tue May 11 16:27:42 2010 +0300 @@ -326,14 +326,6 @@ 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 ); - - /** * Sets the current constructing menubar owner to NULL if it matches to * aMenuBarOwner. Otherwise constructing menubar owner is not modified. * @@ -404,11 +396,6 @@ MObjectProvider* iMenuBarOwner; /** - * Indicates if current menubar owner is a dialog - */ - TBool iIsConstructingDialog; - - /** * Unregistered menu data. */ RArray iUnregisteredMenus; diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/coctlinc/aknmarkingmode.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uifw/EikStd/coctlinc/aknmarkingmode.h Tue May 11 16:27:42 2010 +0300 @@ -0,0 +1,175 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Marking mode handler. +* +*/ + +#ifndef C_AKNMARKINGMODE_H +#define C_AKNMARKINGMODE_H + +#include + +class CAknNavigationDecorator; +class CAknItemActionMenu; +class MAknCollection; +class MAknMarkingCollection; + +typedef RPointerArray CollectionArray; + +/** + * Marking mode handler. + * + * @lib eikcoctl + * @since S60 v5.2 + */ +NONSHARABLE_CLASS( CAknMarkingMode ) : public CBase + { + +public: + + /** + * Two-phased constructor. + */ + static CAknMarkingMode* NewL( + CAknItemActionMenu& aItemActionMenu, + CollectionArray& aArray ); + + /** + * Destructor. + */ + virtual ~CAknMarkingMode(); + + /** + * Sets visible collection multiple marking state. + * + * @internal + * @param aActive ETrue if multiple marking should be active. + */ + void SetCollectionMultipleMarkingState( TBool aActive ); + + /** + * Ends marking mode if collection allows it + */ + void TryExitMarkingMode(); + + /** + * Returns ETrue if multiple marking state is active. + * + * @internal + * @return ETrue if multiple marking is active. + */ + TBool MultipleMarkingActive() const; + + /** + * Returns ETrue if there are marked items in visible list that is + * in multiple marking state. + * + * @internal + * @return ETrue if items are currently marked. + */ + TBool MarkedItems() const; + + /** + * Returns ETrue if the collection has no items + * + * @internal + * @return ETrue if there are no items + */ + TBool CollectionEmpty() const; + + /** + * Marks all items in the collection. + */ + void MarkAllL(); + + /** + * Unmarks all items in the collection. + */ + void UnmarkAll(); + + /** + * Marks the currently selected item in the collection. + */ + void MarkCurrentItemL(); + + /** + * Returns ETrue if current item can be marked + * + * @internal + * @return ETrue if current item can be marked + */ + TBool CurrentItemMarkable(); + +private: + + /** + * C++ constructor. + */ + CAknMarkingMode( + CAknItemActionMenu& aItemActionMenu, + CollectionArray& aArray ); + + /** + * Returns marking collection received from aCollection. + * + * @param aCollection Collection. + * @return Marking collection object. + */ + static MAknMarkingCollection* MarkingCollection( + MAknCollection& aCollection ); + + /** + * Returns marking collection. + * + * @return Marking collection object. + */ + MAknMarkingCollection* MarkingCollection(); + + /** + * Returns the activated marking collection i.e the one with marking mode + * turned on. + * + * @return Active marking collection. + */ + MAknMarkingCollection* ActiveMarkingCollection(); + + /** + * Updates navi pane when entering and exiting marking mode + * + * @param aEnable @c ETrue to set marking mode related text + * @c EFalse to remove marking mode related text + */ + void UpdateMarkingModeNaviPaneL( TBool aEnable ); + +private: // data + + /** + * Collection array owned by CAknItemActionMenu. + * Not own. + */ + CollectionArray& iCollections; + + /** + * Item action menu that owns this marking mode handler. + * Not own. + */ + CAknItemActionMenu& iItemActionMenu; + + /** + * Marking mode navi pane decorator + */ + CAknNavigationDecorator* iMarkingDecorator; + }; + +#endif // C_AKNMARKINGMODE_H diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/coctlsrc/AknButton.cpp --- a/uifw/EikStd/coctlsrc/AknButton.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/coctlsrc/AknButton.cpp Tue May 11 16:27:42 2010 +0300 @@ -1979,10 +1979,8 @@ { // show press changes iButtonPressed = ETrue; - if ( iExtension ) - { - iExtension->iPrePointerPos.SetXY( -1, -1 ); - } + iExtension->iPrePointerPos.SetXY( -1, -1 ); + if ( NeedsRedrawWhenPressed() ) { DrawNow(); @@ -2146,7 +2144,7 @@ EXPORT_C void CAknButton::SizeChanged() { //Reset state if observer modified the rectangel. - if ( iButtonPressed && iExtension && !Rect().Contains( iExtension->iPrePointerPos ) ) + if ( iButtonPressed && !Rect().Contains( iExtension->iPrePointerPos ) ) { ResetState(); } diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/coctlsrc/AknClearer.cpp --- a/uifw/EikStd/coctlsrc/AknClearer.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/coctlsrc/AknClearer.cpp Tue May 11 16:27:42 2010 +0300 @@ -309,11 +309,6 @@ ( usualSpLayout == R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL ) || ( idleSpLayout == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE ); - // Check that if in landscape mode statuspane is changed to stacon pane - TBool staconPaneUsedInLandscape = - ( usualSpLayout != R_AVKON_STATUS_PANE_LAYOUT_USUAL ) && - ( usualSpLayout != R_AVKON_STATUS_PANE_LAYOUT_USUAL_MIRRORED ); - TBool flatStatuspaneusedInLandscape = ( usualSpLayout == R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT ) || ( usualSpLayout == R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT ); diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/coctlsrc/AknDoubleSpanScrollIndicator.cpp --- a/uifw/EikStd/coctlsrc/AknDoubleSpanScrollIndicator.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/coctlsrc/AknDoubleSpanScrollIndicator.cpp Tue May 11 16:27:42 2010 +0300 @@ -93,13 +93,13 @@ DrawTiled(gc, iHandleRect, handleBar); } + void CAknDoubleSpanScrollIndicator::UpdateScrollBarLayout() { iHeadItemSize = 12; - iMidItemSize = 12 * 5; iTailItemSize = 12; - TRect rect = Rect(); + TRect rect( Rect() ); if(rect.IsEmpty()) { return; @@ -114,18 +114,13 @@ TAknLayoutRect layRect; TAknWindowComponentLayout layout = AknLayoutScalable_Avkon::scroll_bg_pane_g1( varietyIndex ); //top layRect.LayoutRect( rect, layout.LayoutLine() ); - TSize newSize = layRect.Rect().Size(); + TSize newSize( layRect.Rect().Size() ); iHeadItemSize = (iOrientation == CEikScrollBar::EVertical?newSize.iHeight:newSize.iWidth); layout = AknLayoutScalable_Avkon::scroll_bg_pane_g3(varietyIndex); // bottom layRect.LayoutRect(rect, layout.LayoutLine()); newSize = layRect.Rect().Size(); iTailItemSize = (iOrientation == CEikScrollBar::EVertical?newSize.iHeight:newSize.iWidth); - - layout = AknLayoutScalable_Avkon::scroll_bg_pane_g2(varietyIndex); //middle - layRect.LayoutRect(rect, layout.LayoutLine()); - newSize = layRect.Rect().Size(); - // iMidItemSize = (iOrientation == CEikScrollBar::EVertical?newSize.iHeight:newSize.iWidth) * 5; } void CAknDoubleSpanScrollIndicator::DrawTiled( @@ -155,7 +150,7 @@ midRect.iTl.iY += headRect.Height(); midRect.iBr.iY -= tailRect.Height(); midDrawLength = midRect.Height(); - midSize.SetSize(midRect.Width(), iMidItemSize); + midSize.SetSize(midRect.Width(), midDrawLength); } else { @@ -165,7 +160,7 @@ midRect.iTl.iX += iHeadItemSize; midRect.iBr.iX -= iTailItemSize; midDrawLength = midRect.Width(); - midSize.SetSize(iMidItemSize, midRect.Height()); + midSize.SetSize(midDrawLength, midRect.Height()); } MAknsSkinInstance* skin = AknsUtils::SkinInstance(); @@ -175,28 +170,20 @@ AknsUtils::GetCachedMaskedBitmap(skin, aIndicatorItem->iTopId, bmp, mask); AknIconUtils::SetSize(bmp, headRect.Size(), EAspectRatioNotPreserved); AknIconUtils::SetSize(mask, headRect.Size(), EAspectRatioNotPreserved); - aGc.BitBltMasked(headRect.iTl, bmp, TRect(TPoint(0, 0), headRect.Size()), mask, ETrue); + aGc.BitBltMasked(headRect.iTl, bmp, TRect(headRect.Size()), mask, ETrue); AknsUtils::GetCachedMaskedBitmap(skin, aIndicatorItem->iMidId, bmp, mask); AknIconUtils::SetSize(bmp, midSize, EAspectRatioNotPreserved); AknIconUtils::SetSize(mask, midSize, EAspectRatioNotPreserved); - TInt count = midDrawLength / iMidItemSize; TPoint destPos(midRect.iTl.iX, midRect.iTl.iY); - TRect sourRect(TPoint(0, 0), bmp->SizeInPixels()); - for(TInt i = 0; i < count; i++) - { - aGc.BitBltMasked(destPos, bmp, sourRect, mask, ETrue); - iOrientation == CEikScrollBar::EVertical?destPos.iY += iMidItemSize : destPos.iX += iMidItemSize; - } - iOrientation == CEikScrollBar::EVertical?sourRect.iBr.iY = midRect.Height() % iMidItemSize - :sourRect.iBr.iX = midRect.Width() % iMidItemSize; + TRect sourRect(bmp->SizeInPixels()); aGc.BitBltMasked(destPos, bmp, sourRect, mask, ETrue); AknsUtils::GetCachedMaskedBitmap(skin, aIndicatorItem->iBottomId, bmp, mask); AknIconUtils::SetSize(bmp, tailRect.Size(), EAspectRatioNotPreserved); AknIconUtils::SetSize(mask, tailRect.Size(), EAspectRatioNotPreserved); - aGc.BitBltMasked(tailRect.iTl, bmp, TRect(TPoint(0, 0), tailRect.Size()), mask, ETrue); + aGc.BitBltMasked(tailRect.iTl, bmp, TRect(tailRect.Size()), mask, ETrue); } void CAknDoubleSpanScrollIndicator::CalculateRects() @@ -258,21 +245,9 @@ scrollBarHeightInPixels = iBackgroundRect.Height(); } - // The code block below was probably used to prevent - // a truncation-vs-rounding error from happening - /* - if ((checkedWindowSize > 0) && (checkedScrollSpan > 0)) - { - if((checkedFocusPosition + checkedWindowSize) == checkedScrollSpan) - windowSizeInPixels = scrollBarHeightInPixels - focusPositionInPixels; - else - windowSizeInPixels = scrollBarHeightInPixels*checkedWindowSize/checkedScrollSpan; - } - */ - TInt windowSizeInPixels = Max( checkedWindowSize * scrollBarHeightInPixels / checkedScrollSpan, - HandleBackgroundMinSizeInPixels() ); + iHandleMinSize ); TInt roomForMovementInSpan = checkedScrollSpan - checkedWindowSize; TInt roomForMovementInPixels = @@ -289,28 +264,25 @@ // If window would cover whole scrollbar, then modify // it to leave the thumb little short from bottom - TInt scrollBarHandleMaxSizeInPixels = ScrollHandleMaxVisibleSizeInPixels(); + TInt scrollBarHandleMaxSizeInPixels = iHandleMaxSize; + if (windowSizeInPixels >= scrollBarHeightInPixels) { windowSizeInPixels = scrollBarHandleMaxSizeInPixels; } TBool doubleSpanInUse = (checkedFieldPosition >= 0) && (checkedFieldSize > 0); - TInt minHandleBackgroundSize = 0; + TInt minHandleBackgroundSize = iHandleMinSize; TInt fieldSizeInPixels = 0; // sub field size TInt fieldPositionInPixels = 0; + TInt handleMinSize = iHandleMinSize; + if (doubleSpanInUse) { fieldSizeInPixels = windowSizeInPixels/checkedFieldSize; fieldPositionInPixels = windowSizeInPixels*checkedFieldPosition/checkedFieldSize; - minHandleBackgroundSize = HandleBackgroundMinSizeInPixels(); } - else - { - minHandleBackgroundSize = HandleMinSizeInPixels(); - } - - TInt handleMinSize = HandleMinSizeInPixels(); + // Similar compensation for handle if double span is in use if (doubleSpanInUse && (fieldSizeInPixels < handleMinSize)) { @@ -496,10 +468,11 @@ { iOldRect = rect; AknsUtils::RegisterControlPosition( this ); + iHandleMinSize = HandleMinSizeInPixels(); + iHandleMaxSize = HandleMaxSizeInPixels(); CalculateRects(); + UpdateScrollBarLayout(); - UpdateScrollBarLayout(); - if (IsVisible() & iOwnsWindow) DrawDeferred(); } @@ -520,14 +493,9 @@ iWindowSize = aWindowSize; iFieldPosition = aFieldPosition; iFieldSize = aFieldSize; - + // Calculate the sizes for graphics CalculateRects(); - if( iWindowSize > 0 ) - { - // layout handle graphics - LayoutHandleGraphics(); - } } TInt CAknDoubleSpanScrollIndicator::ScrollSpan() @@ -682,9 +650,10 @@ return layRect.Rect().Width(); } -TInt CAknDoubleSpanScrollIndicator::ScrollHandleMaxVisibleSizeInPixels() + +TInt CAknDoubleSpanScrollIndicator::HandleMaxSizeInPixels() { - TRect scbRect = Rect(); + TRect scbRect( Rect() ); if ( iOrientation == CEikScrollBar::EHorizontal ) scbRect.SetRect(scbRect.iTl, TSize(scbRect.Height(), scbRect.Width())); @@ -694,10 +663,6 @@ return layRect.Rect().Height(); } -TInt CAknDoubleSpanScrollIndicator::HandleBackgroundMinSizeInPixels() - { - return HandleMinSizeInPixels(); - } TInt CAknDoubleSpanScrollIndicator::HandleMinSizeInPixels() { @@ -734,8 +699,8 @@ void CAknDoubleSpanScrollIndicator::DrawBackground() const { CWindowGc& gc=SystemGc(); - TPoint pos = Position(); - TRect rect = Rect(); + TPoint pos( Position() ); + TRect rect( Rect() ); MAknsSkinInstance* skin = AknsUtils::SkinInstance(); MAknsControlContext* cc = AknsDrawUtils::ControlContext( this ); @@ -761,56 +726,6 @@ } } -void CAknDoubleSpanScrollIndicator::LayoutHandleGraphics() - { - - // We layout the handle middle graphics here according to the given inidcator values - TRect rect = Rect(); - - if (!iHandleBar || rect.IsEmpty()) - return; - - TInt varietyIndex = 0; - TInt varietyIndexForHandle = 0; - if (iOrientation == CEikScrollBar::EHorizontal) - { - varietyIndex = 1; - varietyIndexForHandle = 2; - } - - TAknLayoutRect layRect; - TAknWindowComponentLayout // layout handle bottom & top as they do not scale according to handle size - layout = AknLayoutScalable_Avkon::scroll_handle_pane(varietyIndexForHandle); // handle (the shadow if two handles) - layRect.LayoutRect(rect, layout.LayoutLine()); - layout = AknLayoutScalable_Avkon::scroll_handle_focus_pane(varietyIndex); // focus handle - // The horizontal data for focus handle is missing so switch the values from the vertical data - TAknWindowLineLayout layoutLine = layout.LayoutLine(); - if (iOrientation == CEikScrollBar::EHorizontal) - { - TInt height = layoutLine.iH; - TInt width = layoutLine.iW; - layoutLine.iW = height; - layoutLine.iH = width; - } - layRect.LayoutRect(layRect.Rect(), layoutLine); - rect = layRect.Rect(); // parent rect is now the focus handle - - // the retangle includes the variated length of the middle, - // the top and bottom graphics must subtracted from the value - - // do not change the handle retangle, the full size is needed in drawing - // set the width or height to be correct - if (iOrientation == CEikScrollBar::EVertical) - { - iHandleRect.iTl.iX = rect.iTl.iX; - iHandleRect.iBr.iX = rect.iBr.iX; - } - else - { - iHandleRect.iTl.iY = rect.iTl.iY; - iHandleRect.iBr.iY = rect.iBr.iY; - } - } TInt CAknDoubleSpanScrollIndicator::GetCurrentThumbSpanInPixels() { diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/coctlsrc/EIKCOCTL.MMP --- a/uifw/EikStd/coctlsrc/EIKCOCTL.MMP Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/coctlsrc/EIKCOCTL.MMP Tue May 11 16:27:42 2010 +0300 @@ -135,6 +135,7 @@ SOURCE aknitemactionmenudata.cpp SOURCE aknitemactionmenuregisterarray.cpp SOURCE aknedwinphysicshandler.cpp +SOURCE aknmarkingmode.cpp LIBRARY euser.lib LIBRARY efsrv.lib diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/coctlsrc/EIKEDWIN.CPP --- a/uifw/EikStd/coctlsrc/EIKEDWIN.CPP Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/coctlsrc/EIKEDWIN.CPP Tue May 11 16:27:42 2010 +0300 @@ -147,6 +147,8 @@ const TInt KFullFormatLengthForSmiley = 5000; +const TInt KContentThreshold = 8; + // // class CEikEdwin::CUndoBuffer // @@ -2872,16 +2874,20 @@ // on down event feedback is given if cursor/selection changes if ( paintingPossible && !readOnly || editorWillGetFocus ) { - iEdwinFepSupport->iFeedback->InstantFeedback( this, ETouchFeedbackBasic ); + iEdwinFepSupport->iFeedback->InstantFeedback( this, ETouchFeedbackEdit ); } } else if ( selectionChanged && - ( ( aPointerEvent.iType == TPointerEvent::EDrag ) || + ( selectionAfter.iAnchorPos != selectionAfter.iCursorPos ) && + ( ( aPointerEvent.iType == TPointerEvent::EDrag ) || ( aPointerEvent.iType == TPointerEvent::EButtonRepeat ) ) ) { - TInt readPos = ( selectionAfter.iCursorPos >= selectionBefore.iCursorPos ) ? - selectionBefore.iCursorPos : selectionAfter.iCursorPos ; - TChar currentSelectedChar = Text()->Read( readPos, 1 )[0]; + TInt readPos = selectionAfter.iCursorPos; + if ( selectionAfter.iCursorPos > selectionAfter.iAnchorPos ) + { + readPos -= 1;//drag backword + } + TChar currentSelectedChar = Text()->Read( readPos, 1 )[0]; TBool isSpace = currentSelectedChar.IsSpace(); TBool isSmiley = CSmileyManager::IsSmileyCode(currentSelectedChar); TBool isText = currentSelectedChar.IsGraph(); @@ -2889,10 +2895,10 @@ // case line TInt prevLineNr = TextLayout()->GetLineNumber(selectionBefore.iCursorPos); TInt lineNr = TextLayout()->GetLineNumber(selectionAfter.iCursorPos); - if ( prevLineNr != lineNr && ( selection.Length() != 0 ) ) + if ( prevLineNr != lineNr ) { - TInt group = ( currentSelectedChar.GetCategory() & 0xF0 ); - TBool isEmptyLine = ( group == TChar::ESeparatorGroup ); + TInt group = currentSelectedChar.GetCategory(); + TBool isEmptyLine = ( group == TChar::EZpCategory ); TTouchLogicalFeedback fType = ( isEmptyLine ? ETouchFeedbackEmptyLineSelection : ETouchFeedbackLineSelection ); iEdwinFepSupport->iFeedback->InstantFeedback( this, fType ); @@ -8926,6 +8932,7 @@ } } + // --------------------------------------------------------------------------- // CEikEdwin::SkipBackgroundDrawer // --------------------------------------------------------------------------- @@ -8936,6 +8943,24 @@ } +// --------------------------------------------------------------------------- +// CEikEdwin::ContentFitsToViewRect +// --------------------------------------------------------------------------- +// +TBool CEikEdwin::ContentFitsToViewRect() const + { + if ( iLayout && !iLayout->IsFormattingBand() ) + { + if ( iLayout->FormattedHeightInPixels() + <= AdjustedViewRect().Height() + KContentThreshold ) + { + return ETrue; + } + } + + return EFalse; + } + // End of File diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/coctlsrc/EIKLBI.CPP --- a/uifw/EikStd/coctlsrc/EIKLBI.CPP Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/coctlsrc/EIKLBI.CPP Tue May 11 16:27:42 2010 +0300 @@ -38,7 +38,7 @@ #include "laflbx.h" #include "akntrace.h" -const TUint KListItemDrawerAllowedFlags = 0x0fff; +const TUint KListItemDrawerAllowedFlags = 0x1fff; const TInt KDefaultMarkColumnWidth = 10; const TInt KDefaultMarkGutter = 2; @@ -85,6 +85,13 @@ aFlags &= ~EPressedDownState; } + // do not raise EDrawWholeBackground unless ENativeImplementation is set + if ( ( aFlags & EDrawWholeBackground ) + && !( iFlags & ENativeImplementation ) ) + { + aFlags &= ~EDrawWholeBackground; + } + iFlags |= aFlags; iFlags &= KListItemDrawerAllowedFlags; } diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/coctlsrc/EIKLBV.CPP --- a/uifw/EikStd/coctlsrc/EIKLBV.CPP Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/coctlsrc/EIKLBV.CPP Tue May 11 16:27:42 2010 +0300 @@ -956,33 +956,28 @@ return; } - TBool transparencyEnabled( CAknEnv::Static()->TransparencyEnabled() ); - if ((ITEM_EXISTS_ONCE(aItemIndex)) && ItemIsVisible(aItemIndex)) { TBool drawingInitiated = ETrue; - if ( transparencyEnabled ) - { - if ( iWin && iWin->GetDrawRect() == TRect::EUninitialized ) - { + if ( iWin && iWin->GetDrawRect() == TRect::EUninitialized ) + { #ifdef RD_UI_TRANSITION_EFFECTS_LIST - MAknListBoxTfxInternal* transApi = - CAknListLoader::TfxApiInternal( iGc ); - drawingInitiated = transApi && !transApi->EffectsDisabled(); + MAknListBoxTfxInternal* transApi = + CAknListLoader::TfxApiInternal( iGc ); + drawingInitiated = transApi && !transApi->EffectsDisabled(); #else - drawingInitiated = EFalse; + drawingInitiated = EFalse; #endif - } + } - if ( !drawingInitiated ) - { - TRect rect( ItemPos(aItemIndex), iItemDrawer->ItemCellSize() ); - rect.Intersection( iViewRect ); - iWin->Invalidate( rect ); - iWin->BeginRedraw( rect ); - } - } + if ( !drawingInitiated ) + { + TRect rect( ItemPos(aItemIndex), iItemDrawer->ItemCellSize() ); + rect.Intersection( iViewRect ); + iWin->Invalidate( rect ); + iWin->BeginRedraw( rect ); + } #ifdef RD_UI_TRANSITION_EFFECTS_LIST MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iGc ); @@ -994,8 +989,16 @@ transApi->StartDrawing( MAknListBoxTfxInternal::EListItem ); } #endif // RD_UI_TRANSITION_EFFECTS_LIST + + TBool backgroundDrawingSuppressed = ( iItemDrawer + && ( iItemDrawer->Flags() + & ( CListItemDrawer::EDrawWholeBackground + | CListItemDrawer::EBackgroundDrawn ) ) ); - iGc->SetClippingRect( iViewRect ); + if ( !backgroundDrawingSuppressed ) + { + iGc->SetClippingRect( iViewRect ); + } #ifdef RD_UI_TRANSITION_EFFECTS_LIST if ( transApi ) @@ -1016,7 +1019,10 @@ } #endif // RD_UI_TRANSITION_EFFECTS_LIST - iGc->CancelClippingRect(); + if ( !backgroundDrawingSuppressed ) + { + iGc->CancelClippingRect(); + } #ifdef RD_UI_TRANSITION_EFFECTS_LIST if ( transApi ) @@ -1032,7 +1038,7 @@ } #endif // RD_UI_TRANSITION_EFFECTS_LIST - if ( transparencyEnabled && !drawingInitiated ) + if ( !drawingInitiated ) { iWin->EndRedraw(); } @@ -1419,6 +1425,54 @@ } +// --------------------------------------------------------------------------- +// Resets the selection state so that there is nothing selected. +// --------------------------------------------------------------------------- +// +void CListBoxView::ClearSelection( TBool aDrawItems ) + { + _AKNTRACE_FUNC_ENTER; + + __ASSERT_DEBUG( iSelectionIndexes, + Panic( EEikPanicListBoxNoSelIndexArray ) ); + + TInt numSelectedItems = iSelectionIndexes->Count(); + TKeyArrayFix key( 0, ECmpTInt ); + TInt selectedItemIndex; + TInt pos; + +#ifdef RD_UI_TRANSITION_EFFECTS_LIST + MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal( iGc ); +#endif // RD_UI_TRANSITION_EFFECTS_LIST + + for ( TInt i = 0; i < numSelectedItems; i++ ) + { + selectedItemIndex = ( *( iSelectionIndexes ) )[0]; + + if ( !( iSelectionIndexes->Find( selectedItemIndex, key, pos ) ) ) + { +#ifdef RD_UI_TRANSITION_EFFECTS_LIST + if ( transApi ) + { + transApi->Invalidate( MAknListBoxTfxInternal::EListItem, + selectedItemIndex ); + } +#endif // RD_UI_TRANSITION_EFFECTS_LIST + + iSelectionIndexes->Delete( pos ); + + if ( aDrawItems ) + { + DrawItem( selectedItemIndex ); + } + } + } + + ClearSelectionAnchorAndActiveIndex(); + + _AKNTRACE_FUNC_EXIT; + } + // class CSnakingListBoxView diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/coctlsrc/EIKLBX.CPP --- a/uifw/EikStd/coctlsrc/EIKLBX.CPP Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/coctlsrc/EIKLBX.CPP Tue May 11 16:27:42 2010 +0300 @@ -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" @@ -74,6 +74,7 @@ #include #include #include +#include #include "akntrace.h" // timeout for long keypress used in markable lists @@ -85,7 +86,8 @@ const TInt KDefaultStepSpeed = 5; const TInt KEikListBoxInvalidIndex=-1; //interval time for disable second point event -const TInt KTwoPointerUpEventInterval = 120; // 120 millisecond ( = 0.12 second ) +const TInt KTwoPointerUpEventInterval = 120; // 120 millisecond ( = 0.12 second ) +const TInt KPointerDownAndUpThreshold = 5; // ----------------------------------------------------------------------------- // If a parent to the supplied control has its Gc set, this function will find // it and return it. @@ -377,6 +379,7 @@ public MCenRepNotifyHandlerCallback, public MAknPhysicsObserver, public MAknCollection, + public MAknMarkingCollection, public MAknLongTapDetectorCallBack { public: @@ -448,6 +451,51 @@ */ TInt CollectionExtension( TUint aExtensionId, TAny*& a0, TAny* a1 ); +// From MAknMarkingCollection + /** + * Sets multiple marking state. + * + * @param aActive ETrue if multiple marking should be active. + */ + void SetMultipleMarkingState( TBool aActive ); + + /** + * Returns whether the observer accepts ending of marking mode + * + * @return ETrue if observer accepts exiting marking mode + */ + TBool ExitMarkingMode(); + + /** + * Returns the collection marking state. The state is combination of + * flags defined in @c TStateFlag. + * + * @return Collection state. + */ + TUint MarkingState() const; + + /** + * Marks the currently selected item. + */ + void MarkCurrentItemL(); + + /** + * Marks all items in the collection. + */ + void MarkAllL(); + + /** + * Unmarks all items in the collection. + */ + void UnmarkAll(); + + /* + * Can current item be marked + * + * @return ETrue if item can be marked + */ + TBool CurrentItemMarkable(); + // From MAknLongTapDetectorCallBack /** * Long tap detector callback @@ -512,6 +560,13 @@ * @return ETrue if list has marked items. */ TBool MarkedItems() const; + + /** + * Ignores pointer events until next up event. + * + * @return ETrue if the pointer event ignore was enabled. + */ + TBool IgnorePointerEventsUntilUp(); public: void InitPhysicsL(); @@ -618,7 +673,6 @@ CAknPhysics *iPhysics; TPoint iDragStartPosition; TPoint iLastPointerPos; - TBool iBackgroundDrawingSuppressed; TBool iClickEventsAllowed; TBool iScrolling; TSize iViewSize; @@ -682,12 +736,28 @@ * Item that opened the item action menu */ TInt iLongTappedItem; + + /** + * Marking mode on / off. + */ + TBool iMarkingModeInUse; + + /** + * Marking mode observer. + */ + MAknMarkingModeObserver* iMarkingModeObserver; + /** * Pointer event to be forwarded to the long tap detector upon * highlight timer completion. */ TPointerEvent iDelayedPointerDownEvent; + /** + * Ordinal position of listbox window, before stylus menu is opened. + */ + TInt iOldWinPos; + private: CMatchBuffer* iBuffer; CEikListBox& iListBox; @@ -751,7 +821,8 @@ iLongTapDetector( NULL ), iSingleClickEnabled( iAvkonAppUi->IsSingleClickCompatible() ), iLongTappedItem( KErrNotFound ), - iListBox(aListBox) + iOldWinPos( KErrNotFound ), + iListBox(aListBox) { } @@ -945,6 +1016,7 @@ EnableHighlight( EFalse ); iListBox.iView->DrawItem( iLongTappedItem ); iLongTappedItem = KErrNotFound; + iOldWinPos = KErrNotFound; } } @@ -954,12 +1026,144 @@ // ----------------------------------------------------------------------------- // TInt CListBoxExt::CollectionExtension( - TUint /*aExtensionId*/, TAny*& /*a0*/, TAny* /*a1*/ ) - { + TUint aExtensionId, TAny*& a0, TAny* /*a1*/ ) + { + if ( aExtensionId == MAknMarkingCollection::TYPE ) + { + a0 = static_cast( this ); + } + return KErrNone; } +// ----------------------------------------------------------------------------- +// CListBoxExt::SetMultipleMarkingState +// ----------------------------------------------------------------------------- +// +void CListBoxExt::SetMultipleMarkingState( TBool aActive ) + { + _AKNTRACE_FUNC_ENTER; + iListBox.SetMarkingMode( aActive ); + _AKNTRACE_FUNC_EXIT; + } + +// ----------------------------------------------------------------------------- +// CListBoxExt::ExitMarkingMode +// ----------------------------------------------------------------------------- +// +TBool CListBoxExt::ExitMarkingMode() + { + if ( iListBox.MarkingModeObserver() ) + { + return iListBox.MarkingModeObserver()->ExitMarkingMode(); + } + return ETrue; + } + +// ----------------------------------------------------------------------------- +// CListBoxExt::MarkingState +// ----------------------------------------------------------------------------- +// +TUint CListBoxExt::MarkingState() const + { + _AKNTRACE_FUNC_ENTER; + TUint state( 0 ); + if ( iListBox.MarkingMode() ) + { + state |= MAknMarkingCollection::EStateMarkingMode; + if ( MarkedItems() ) + { + state |= MAknMarkingCollection::EStateMarkedItems; + } + if ( iListBox.Model()->NumberOfItems() == 0 ) + { + state |= MAknMarkingCollection::EStateCollectionEmpty; + } + } + _AKNTRACE_FUNC_EXIT; + return state; + } + + +// ----------------------------------------------------------------------------- +// CListBoxExt::MarkCurrentItemL +// ----------------------------------------------------------------------------- +// +void CListBoxExt::MarkCurrentItemL() + { + _AKNTRACE_FUNC_ENTER; + + if ( iListBox.MarkingMode() ) + { + TInt index = iListBox.CurrentItemIndex(); + if ( index >= 0 && + !iListBox.iItemDrawer->Properties( index ).IsSelectionHidden() ) + { + iListBox.View()->SelectItemL( iListBox.CurrentItemIndex() ); + } + } + _AKNTRACE_FUNC_EXIT; + } + + +// ----------------------------------------------------------------------------- +// CListBoxExt::MarkAllL +// ----------------------------------------------------------------------------- +// +void CListBoxExt::MarkAllL() + { + _AKNTRACE_FUNC_ENTER; + + if ( iListBox.MarkingMode() ) + { + for ( TInt i = 0; i < iListBox.Model()->NumberOfItems(); ++i ) + { + if ( !iListBox.iItemDrawer->Properties( i ).IsSelectionHidden() ) + { + iListBox.View()->SelectItemL( i ); + } + } + } + _AKNTRACE_FUNC_EXIT; + } + + +// ----------------------------------------------------------------------------- +// CListBoxExt::UnmarkAll +// ----------------------------------------------------------------------------- +// +void CListBoxExt::UnmarkAll() + { + _AKNTRACE_FUNC_ENTER; + + if ( iListBox.MarkingMode() ) + { + iListBox.View()->ClearSelection(); + } + + _AKNTRACE_FUNC_EXIT; + } + +// ----------------------------------------------------------------------------- +// CListBoxExt::CurrentItemMarkable +// ----------------------------------------------------------------------------- +// +TBool CListBoxExt::CurrentItemMarkable() + { + _AKNTRACE_FUNC_ENTER; + TBool itemCanBeMarked = ETrue; + TInt index = iListBox.CurrentItemIndex(); + if ( index >= 0 && + iListBox.iItemDrawer->Properties( index ).IsSelectionHidden() ) + { + itemCanBeMarked = EFalse; + } + _AKNTRACE_FUNC_EXIT; + return itemCanBeMarked; + } + + // --------------------------------------------------------------------------- // CListBoxExt::HandleLongTapEventL // --------------------------------------------------------------------------- @@ -971,6 +1175,8 @@ iLongTappedItem = iLastDownTappedItem; iLastDownTappedItem = KErrNotFound; iItemActionMenu->ShowMenuL( aPenEventScreenLocation, 0 ); + IgnorePointerEventsUntilUp(); + iOldWinPos = iListBox.DrawableWindow()->OrdinalPosition(); _AKNTRACE_FUNC_EXIT; } @@ -1035,12 +1241,18 @@ if ( iListBox.iView->ViewRect() != TRect() ) { - TInt topItemIndex = iListBox.iView->TopItemIndex(); - if ( iListBox.iView->ItemIsPartiallyVisible( topItemIndex) ) - { - topItemIndex++; - } - TRAP_IGNORE( iListBox.UpdateHighlightL( topItemIndex ) ); + // Set current item index highlighted if it is visible, otherwise + // the first visible index + TInt index = iListBox.iView->CurrentItemIndex(); + if ( !iListBox.iView->ItemIsVisible( index ) ) + { + index = iListBox.iView->TopItemIndex(); + if ( iListBox.iView->ItemIsPartiallyVisible( index ) ) + { + index++; + } + } + TRAP_IGNORE( iListBox.UpdateHighlightL( index ) ); } DisableItemSpecificMenu(); @@ -1071,6 +1283,7 @@ _AKNTRACE_FUNC_EXIT; } + // ----------------------------------------------------------------------------- // CListBoxExt::LongTapPointerEventL // ----------------------------------------------------------------------------- @@ -1079,12 +1292,13 @@ { if ( iSingleClickEnabled && iLongTapDetector && iItemActionMenu ) { - // Send event on down only if item specific items were found and current - // item is marked if there are marked items - if ( !( MarkedItems() && - !iListBox.View()->ItemIsSelected( iListBox.CurrentItemIndex() ) ) - && ( aPointerEvent.iType != TPointerEvent::EButton1Down - || iItemActionMenu->InitMenuL() ) ) + // Send event on down only if item specific items were found. + // Long tap is also disabled if current item is not marked while + // there are some marked items or marking mode is active. + if ( !( ( iListBox.MarkingMode() || MarkedItems() ) + && !iListBox.View()->ItemIsSelected( iListBox.CurrentItemIndex() ) ) + && ( aPointerEvent.iType != TPointerEvent::EButton1Down + || iItemActionMenu->InitMenuL() ) ) { iLongTapDetector->PointerEventL ( aPointerEvent ); } @@ -1190,6 +1404,34 @@ // ----------------------------------------------------------------------------- +// CListBoxExt::IgnorePointerEventsUntilUp +// ----------------------------------------------------------------------------- +// +TBool CListBoxExt::IgnorePointerEventsUntilUp() + { + _AKNTRACE_FUNC_ENTER; + + // Pointer event ignore must be done for the window-owning + // control or it doesn't have any effect! + CCoeControl* windowOwningControl = &iListBox; + + while ( windowOwningControl && !windowOwningControl->OwnsWindow() ) + { + windowOwningControl = windowOwningControl->Parent(); + } + + if ( windowOwningControl ) + { + windowOwningControl->IgnoreEventsUntilNextPointerUp(); + _AKNTRACE_FUNC_EXIT; + return ETrue; + } + _AKNTRACE_FUNC_EXIT; + return EFalse; + } + + +// ----------------------------------------------------------------------------- // CListBoxExt::StartLongPressTimerL // ----------------------------------------------------------------------------- // @@ -1717,7 +1959,8 @@ } // --------------------------------------------------------------------------- -// CListBoxExt::FeedbackEnabledOnUpEvent +// Checks whether or not tactile feedback should be given on a pointer +// up event. // --------------------------------------------------------------------------- // TBool CListBoxExt::FeedbackEnabledOnUpEvent() @@ -1725,11 +1968,20 @@ _AKNTRACE_FUNC_ENTER; TBool enabled( EFalse ); + // As there's no pressed down highlight in single click enabled lists, + // the iLastDownTappedItem is used to track whether or not the pointer + // up event happened inside the same list item as the pointer down event. + // Feedback should not be given if the pointer up is received outside of + // the item that received the pointer down event, or in cases when the + // list has been dragged or flicked between the pointer down and pointer + // up events. if ( ( iListBox.iItemDrawer->Flags() & CListItemDrawer::EPressedDownState - || iSingleClickEnabled ) && !iFlickStopped ) + || ( iSingleClickEnabled && iLastDownTappedItem != KErrNotFound ) ) && + !iFlickStopped ) { enabled = ETrue; } + _AKNTRACE_FUNC_EXIT; return enabled; } @@ -2104,12 +2356,24 @@ { if ( iListBoxExt && iListBoxExt->iSingleClickEnabled ) { - // If single click is enabled, highlight must also be visible - if ( iListBoxExt->CollectionState() + TInt offset = (iListBoxExt->iWorldSize.iHeight / 2) + - iListBoxExt->iViewPosition.iY; + TInt totalItems = iModel->NumberOfItems(); + TInt itemsInRect = + iView->NumberOfItemsThatFitInRect( iView->ViewRect() ); + + if ( ( iListBoxExt->CollectionState() & MAknCollection::EStateHighlightVisible ) + || ( ItemsInSingleLine() + && ( totalItems <= itemsInRect ) + && ( offset != 0 ) ) ) { newTopItemIndex = iView->CalcNewTopItemIndexSoItemIsVisible( currentItemIndex ); } + else + { + newTopItemIndex = iView->CalcNewTopItemIndexSoItemIsVisible( topItemIndex ); + } } else { @@ -2129,10 +2393,10 @@ if ( newTopItemIndex != KEikListBoxInvalidIndex ) { iView->SetTopItemIndex( newTopItemIndex ); - if ( iListBoxExt && iListBoxExt->iPhysics ) - { - iListBoxExt->InitPhysicsL(); - } + } + if ( iListBoxExt && iListBoxExt->iPhysics ) + { + iListBoxExt->InitPhysicsL(); } } UpdateScrollBarsL(); @@ -2404,7 +2668,8 @@ UpdateCurrentItem(aItemIndex); iView->SetDisableRedraw(redrawDisabled); - if ( iListBoxExt && iListBoxExt->iPhysics && aItemIndex == 0 ) + if ( iListBoxExt && iListBoxExt->iPhysics && aItemIndex == 0 + && !iListBoxExt->iScrolling ) { iView->SetItemOffsetInPixels( 0 ); } @@ -3715,7 +3980,7 @@ if (!shiftKeyPressed && iListBoxFlags & EShiftEnterMarks) { // enter key pressed on markable list without shift - if (SelectionIndexes()->Count() > 0) + if ( SelectionIndexes()->Count() > 0 && !MarkingMode() ) { // when there's marked items, should open options menu. __KeyDebug(ETrue, "ok without shift => ok options menu"); @@ -3961,6 +4226,29 @@ { allowed = iListBoxExt->iClickEventsAllowed; } + + if ( MarkingMode() && allowed ) + { + switch ( aEvent ) + { + case MEikListBoxObserver::EEventItemSingleClicked: + case MEikListBoxObserver::EEventEnterKeyPressed: + { + TInt index = CurrentItemIndex(); + if ( index >= 0 && + !iItemDrawer->Properties(index).IsSelectionHidden() ) + { + iView->ToggleItemL( iView->CurrentItemIndex() ); + } + + allowed = EFalse; + } + break; + + default: + break; + } + } if ( allowed ) { @@ -4692,11 +4980,6 @@ return; } - - // When in marking mode, pointer events should not be forwarded to - // long tap detector, this boolean indicates if marking mode is active - TBool markingMode( iListBoxExt->MarkedItems() ); - if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) { if ( iListBoxExt->iSingleClickEnabled && @@ -4708,9 +4991,8 @@ iListBoxExt->iFeedbackType = ETouchFeedbackList; - if ( iListBoxFlags & ES60StyleMultiselection || - ( !iListBoxExt->iSingleClickEnabled && - itemIndex != iView->CurrentItemIndex() ) ) + if ( !iListBoxExt->iSingleClickEnabled && + itemIndex != iView->CurrentItemIndex() ) { iListBoxExt->iFeedbackType = ETouchFeedbackSensitiveList; } @@ -4855,11 +5137,15 @@ CCoeEnv::Static()->WsSession().Finish(); } - iListBoxExt->ImmediateFeedback( - iListBoxExt->iFeedbackType, - TTouchFeedbackType( ETouchFeedbackVibra | - ETouchFeedbackAudio ), - aPointerEvent ); + if ( !( ( iListBoxFlags & EViewerFlag ) && + ( iListBoxFlags & EDisableItemSpecificMenu ) ) ) + { + iListBoxExt->ImmediateFeedback( + iListBoxExt->iFeedbackType, + TTouchFeedbackType( ETouchFeedbackVibra | + ETouchFeedbackAudio ), + aPointerEvent ); + } if ( !wasFlicking ) { @@ -4891,7 +5177,8 @@ } } #endif - if (!(iListBoxFlags & EMultipleSelection)) // i.e. this is a single selection listbox + if ( !( iListBoxFlags & EMultipleSelection ) + || MarkingMode() ) { if (itemIndex == oldCurrentItemIndex) { @@ -5037,10 +5324,13 @@ case TPointerEvent::EButton1Up: _AKNTRACE("TPointerEvent::EButton1Up"); - if ( iListBoxExt->FeedbackEnabledOnUpEvent() && iListBoxExt->iClickEventsAllowed ) + if ( iListBoxExt->FeedbackEnabledOnUpEvent() && iListBoxExt->iClickEventsAllowed + && ( !( ( iListBoxFlags & EViewerFlag ) && + ( iListBoxFlags & EDisableItemSpecificMenu ) ) ) ) { TTouchLogicalFeedback fbType = ETouchFeedbackList; - if ( iListBoxFlags & ES60StyleMultiselection ) + if ( iListBoxFlags & ES60StyleMultiselection + || iListBoxFlags & EMultipleSelection ) { fbType = ETouchFeedbackCheckbox; } @@ -5111,9 +5401,16 @@ return; } } - else if ( s60StyleMultiselection && - iListBoxExt->iLastDownTappedItem == itemIndex && - !Buffer()->iDragToAnotherItem ) + // Due to the feature of capactior panel, the pointer position + // may change between pointer down and up during user click + // action. When the click position is between two items, the + // item index may change unwanted, so we make a threshold + // for this situation. + else if ( s60StyleMultiselection + && ( iListBoxExt->iLastDownTappedItem == itemIndex + || Abs( iListBoxExt->iLastPointerPos.iY + - aPointerEvent.iPosition.iY ) < KPointerDownAndUpThreshold ) + && !Buffer()->iDragToAnotherItem ) { iListBoxFlags |= EStateChanged; Buffer()->iPressedIndex = itemIndex; @@ -5471,9 +5768,12 @@ EXPORT_C TBool CEikListBox::BackgroundDrawingSuppressed() const { - if ( iListBoxExt ) - { - return iListBoxExt->iBackgroundDrawingSuppressed; + if ( iItemDrawer ) + { + TInt flags = iItemDrawer->Flags(); + + return ( flags & CListItemDrawer::EDrawWholeBackground ) + && ( flags & CListItemDrawer::EBackgroundDrawn ); } return EFalse; @@ -5793,8 +6093,22 @@ EColorControlDimmedBackground : EColorControlBackground,*this); UpdateViewColors(); UpdateItemDrawerColors(); - + + // store the value of virtical offset as it will be 0 in SizeChange, + // that will affect view position in skin changed, which is a bug. + TInt oldOffset = 0; + if ( iView ) + { + oldOffset = iView->ItemOffsetInPixels(); + } + // TODO: check if this call is real need here. SizeChanged(); + if ( oldOffset !=0 && iView ) + { + iView->SetItemOffsetInPixels( oldOffset ); + UpdateScrollBarThumbs(); + } + // this methord is empty. UpdateScrollBarsColors(); #ifdef RD_UI_TRANSITION_EFFECTS_LIST @@ -5839,7 +6153,13 @@ case KAknMessageFocusLost: { - if ( iListBoxExt && iListBoxExt->iSingleClickEnabled ) + TInt oldWinPos = iListBoxExt->iOldWinPos; + TInt winPos = DrawableWindow()->OrdinalPosition(); + + // Do not remove higlight if window ordinal position has changed + // during the time when stylus menu is open + if ( iListBoxExt && iListBoxExt->iSingleClickEnabled + && ( oldWinPos == KErrNotFound || oldWinPos == winPos ) ) { TBool enabled( iItemDrawer && !( iItemDrawer->Flags() & CListItemDrawer::ESingleClickDisabledHighlight ) ); @@ -6289,6 +6609,60 @@ return enabled; } + +// --------------------------------------------------------------------------- +// CEikListBox::SetMarkingMode +// --------------------------------------------------------------------------- +// +EXPORT_C void CEikListBox::SetMarkingMode( TBool aEnable ) + { + if ( iListBoxExt && iListBoxExt->iSingleClickEnabled && + ( iListBoxFlags & CEikListBox::ES60StyleMarkable ) ) + { + if ( iListBoxExt->iMarkingModeInUse != aEnable ) + { + if ( aEnable ) + { + iView->ItemDrawer()->SetFlags( + CListItemDrawer::EMarkingModeEnabled ); + } + else + { + iView->ItemDrawer()->ClearFlags( + CListItemDrawer::EMarkingModeEnabled ); + + if ( iView->SelectionIndexes()->Count() > 0 ) + { + iView->ClearSelection( EFalse ); + } + } + + iListBoxExt->iMarkingModeInUse = aEnable; + DrawDeferred(); + } + + if ( MarkingModeObserver() ) + { + MarkingModeObserver()->MarkingModeStatusChanged( aEnable ); + } + } + } + + +// --------------------------------------------------------------------------- +// CEikListBox::SetMarkingModeObserver +// --------------------------------------------------------------------------- +// +EXPORT_C void CEikListBox::SetMarkingModeObserver( + MAknMarkingModeObserver* aObserver ) + { + if ( iListBoxExt ) + { + iListBoxExt->iMarkingModeObserver = aObserver; + } + } + + void CEikListBox::ScrollView( const TInt aOffset, TBool aDrawNow ) { _AKNTRACE_FUNC_ENTER; @@ -6336,7 +6710,7 @@ } else if ( CAknPhysics::EAknPhysicsActionDragging == iListBoxExt->iPhysics->OngoingPhysicsAction() ) { - iListBoxExt->ImmediateFeedback( iListBoxExt->iFeedbackType, + iListBoxExt->ImmediateFeedback( ETouchFeedbackSensitiveList, TTouchFeedbackType( ETouchFeedbackVibra | ETouchFeedbackAudio ), TPointerEvent() ); } @@ -6365,17 +6739,20 @@ #endif // _DEBUG iView->SetTopItemIndex( newTopItemIndex ); } + if ( aDrawNow ) { TRect rect(Rect()); // list position changed - if ( iListBoxExt ) - { - iListBoxExt->iBackgroundDrawingSuppressed = ETrue; - } + if ( iListBoxExt && iListBoxExt->FlickOrPanningOngoing() ) + { + iItemDrawer->SetFlags( CListItemDrawer::EDrawWholeBackground ); + } + UpdateScrollBarThumbs(); DrawNow(); + if (iSBFrame && iSBFrame->VerticalScrollBar() && !iSBFrame->VerticalScrollBar()->OwnsWindow()) { TRect srect( iSBFrame->VerticalScrollBar()->Rect() ); @@ -6384,9 +6761,11 @@ iSBFrame->DrawScrollBarsNow(); } } + if ( iListBoxExt ) { - iListBoxExt->iBackgroundDrawingSuppressed = EFalse; + iItemDrawer->ClearFlags( CListItemDrawer::EDrawWholeBackground + | CListItemDrawer::EBackgroundDrawn ); } } _AKNTRACE_FUNC_EXIT; @@ -6402,20 +6781,10 @@ _AKNTRACE_FUNC_ENTER; _AKNTRACE( "aPointerEvent.iType = %d", aPointerEvent.iType ); if ( iListBoxExt->iPhysics->OngoingPhysicsAction() == CAknPhysics::EAknPhysicsActionBouncing ) - { - // Block scrolling events outside listbox area. Note that pointer - // event ignore must be done for the window-owning control or it - // doesn't have any effect! - CCoeControl* windowOwningControl = this; - - while ( windowOwningControl && !windowOwningControl->OwnsWindow() ) - { - windowOwningControl = windowOwningControl->Parent(); - } - - if ( windowOwningControl ) - { - windowOwningControl->IgnoreEventsUntilNextPointerUp(); + { + // Block scrolling events outside listbox area. + if ( iListBoxExt->IgnorePointerEventsUntilUp() ) + { _AKNTRACE_FUNC_EXIT; return ETrue; } @@ -6456,6 +6825,11 @@ iListBoxExt->iMarkingDisabled = ETrue; iListBoxFlags|=ELeftDownInViewRect; blockEvent = ETrue; + iListBoxExt->ImmediateFeedback( + ETouchFeedbackList, + TTouchFeedbackType( ETouchFeedbackVibra | + ETouchFeedbackAudio ), + aPointerEvent ); } } } @@ -6732,6 +7106,40 @@ // --------------------------------------------------------------------------- +// CEikListBox::MarkingMode +// --------------------------------------------------------------------------- +// +TBool CEikListBox::MarkingMode() const + { + TBool markingModeInUse = EFalse; + + if ( iListBoxExt ) + { + markingModeInUse = iListBoxExt->iMarkingModeInUse; + } + + return markingModeInUse; + } + + +// --------------------------------------------------------------------------- +// CEikListBox::MarkingModeObserver +// --------------------------------------------------------------------------- +// +MAknMarkingModeObserver* CEikListBox::MarkingModeObserver() + { + MAknMarkingModeObserver* observer = NULL; + + if ( iListBoxExt ) + { + observer = iListBoxExt->iMarkingModeObserver; + } + + return observer; + } + + +// --------------------------------------------------------------------------- // Sets this control as visible or invisible. // --------------------------------------------------------------------------- // diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/coctlsrc/EIKMENUB.CPP --- a/uifw/EikStd/coctlsrc/EIKMENUB.CPP Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/coctlsrc/EIKMENUB.CPP Tue May 11 16:27:42 2010 +0300 @@ -60,6 +60,7 @@ #include "aknitemactionmenuregister.h" #include #include "akntrace.h" +#include "aknmarkingmode.h" enum { EEikMenuBarTitleArrayGranularity=10 }; enum { EEikMenuBarPosArrayGranularity=2 }; @@ -74,9 +75,18 @@ void FadeBehindPopup(TBool aFade); /** - * Sets item specific commands dimmed if highlight is not visible. + * Dims item specific commands if no highlight in list or dims + * other than item specific commands if list is in multiple marking + * state. */ - void SetItemCommandsDimmedL(); + void SetItemCommandsStateL(); + + /** + * Returns active marking mode object. Otherwise NULL. + * + * @return Active marking mode object. + */ + CAknMarkingMode* MarkingModeActive(); /** * Saves current value of iItemActionMenu->CollectionHighlightVisible() to @@ -112,6 +122,11 @@ CAknItemActionMenu* iItemActionMenu; /** + * ETrue if single click has been enabled in application. + */ + TBool iSingleClickEnabled; + + /** * When menu pane is opened this value is updated to store the value about * collection highlight visibility */ @@ -146,22 +161,58 @@ } -void CEikMenuBarExtension::SetItemCommandsDimmedL() +void CEikMenuBarExtension::SetItemCommandsStateL() { - if ( !iItemActionMenu ) + if ( iSingleClickEnabled && !iItemActionMenu ) { AknItemActionMenuRegister::RegisterMenuBarL( *iBar ); } - // hide item-specific commands if highlight not visible - if ( iBar->GetMenuType() != CEikMenuBar::EMenuContext - && ( ( iItemActionMenu - && !iItemActionMenu->CollectionHighlightVisible() ) - || !iItemActionMenu ) ) - { - iBar->iMenuPane->SetItemCommandsDimmed(); + + // Hide item-specific commands if highlight not visible + // or show only item specific commands if list is in multiple marking + // state + if ( iBar->GetMenuType() != CEikMenuBar::EMenuContext ) + { + if ( iItemActionMenu ) + { + TBool dimCommands( EFalse ); + TBool changeState( EFalse ); + if ( iItemActionMenu->MarkingMode().MultipleMarkingActive() ) + { + changeState = ETrue; + dimCommands = EFalse; + } + else if ( !iItemActionMenu->CollectionHighlightVisible() ) + { + changeState = ETrue; + dimCommands = ETrue; + } + if ( changeState ) + { + iBar->iMenuPane->SetItemCommandsStateL( dimCommands ); + } + } + else if ( iSingleClickEnabled ) + { + // Dim tagged item action and item specific commands + // anyway, fixes case where listbox creation is not + // finished yet when options menu is opened + iBar->iMenuPane->SetItemCommandsStateL( ETrue ); + } } } +CAknMarkingMode* CEikMenuBarExtension::MarkingModeActive() + { + CAknMarkingMode* markingMode( NULL ); + if ( iItemActionMenu + && iItemActionMenu->MarkingMode().MultipleMarkingActive() ) + { + markingMode = &iItemActionMenu->MarkingMode(); + } + return markingMode; + } + void CEikMenuBarExtension::StoreCollectionHighlightValue() { @@ -171,10 +222,14 @@ = iItemActionMenu->CollectionHighlightVisible(); } } + CEikMenuBarExtension::CEikMenuBarExtension(CEikMenuBar* aBar) :iBar(aBar), iDoingMenuCloseTransition(EFalse), - iItemActionMenu( NULL ) + iItemActionMenu( NULL ), + iSingleClickEnabled( + static_cast( + aBar->ControlEnv()->AppUi() )->IsSingleClickCompatible() ) { } @@ -885,6 +940,12 @@ TInt titles = iTitleArray->Count() - 1; + CAknMarkingMode* marking( NULL ); + if ( iExt ) + { + marking = iExt->MarkingModeActive(); + } + if ( titles < 0 ) { delete iMenuCba; @@ -893,31 +954,77 @@ iMenuPane->Close(); return; } - - // Create the menu pane using the last pane in the menu bar - iMenuObserver->RestoreMenuL(iMenuPane,(*iTitleArray)[titles]->iData.iMenuPaneResourceId,MEikMenuObserver::EMenuPane); - if (fepMenuObserver) - fepMenuObserver->DynInitMenuPaneL((*iTitleArray)[titles]->iData.iMenuPaneResourceId,iMenuPane); - if (iActiveEditMenuObserver) - iActiveEditMenuObserver->DynInitMenuPaneL((*iTitleArray)[titles]->iData.iMenuPaneResourceId,iMenuPane); - titles = iTitleArray->Count() - 2; - iMenuPane->FilterDimmedItems(); + TBool markedItems( EFalse ); + if ( marking ) + { + markedItems = marking->MarkedItems(); + } + // In marking mode do not add commands if no marked items in list + if ( !marking || markedItems ) + { + // Create the menu pane using the last pane in the menu bar + iMenuObserver->RestoreMenuL( + iMenuPane, + ( *iTitleArray )[ titles ]->iData.iMenuPaneResourceId, + MEikMenuObserver::EMenuPane ); + if ( fepMenuObserver ) + fepMenuObserver->DynInitMenuPaneL( + ( *iTitleArray )[ titles ]->iData.iMenuPaneResourceId, + iMenuPane ); + if ( iActiveEditMenuObserver ) + iActiveEditMenuObserver->DynInitMenuPaneL( + ( *iTitleArray )[ titles ]->iData.iMenuPaneResourceId, + iMenuPane ); + + titles = iTitleArray->Count() - 2; + iMenuPane->FilterDimmedItems(); - // Add the remaining menu panes from right to left at the end of the current pane - while (titles >= 0) + // Add the remaining menu panes from right to left + // at the end of the current pane + while ( titles >= 0 ) + { + TInt resource = + ( *iTitleArray )[ titles ]->iData.iMenuPaneResourceId; + iMenuPane->AddMenuItemsL( resource, 0, ETrue ); + iMenuObserver->DynInitMenuPaneL( resource, iMenuPane ); + if ( fepMenuObserver ) + fepMenuObserver->DynInitMenuPaneL( resource, iMenuPane ); + if ( iActiveEditMenuObserver ) + iActiveEditMenuObserver->DynInitMenuPaneL( + resource,iMenuPane ); + + if ( resource == R_AVKON_MENUPANE_MARK_MULTIPLE ) + { + iMenuPane->SetItemDimmed( EAknCmdMarkingModeMarkOne, ETrue ); + } + + titles--; + } + iExt->SetItemCommandsStateL(); + iMenuPane->FilterDimmedItems(); + } + + // Multiple marking mode active + if ( marking ) { - TInt resource = (*iTitleArray)[titles]->iData.iMenuPaneResourceId; - iMenuPane->AddMenuItemsL(resource, 0, ETrue); - iMenuObserver->DynInitMenuPaneL(resource,iMenuPane); - if (fepMenuObserver) - fepMenuObserver->DynInitMenuPaneL(resource,iMenuPane); - if (iActiveEditMenuObserver) - iActiveEditMenuObserver->DynInitMenuPaneL(resource,iMenuPane); - iExt->SetItemCommandsDimmedL(); + iMenuPane->AddMenuItemsL( R_AVKON_MENUPANE_MARK_MULTIPLE, 0, ETrue ); + + if ( !marking->CollectionEmpty() ) + { + iMenuPane->SetItemDimmed( EAknCmdMarkingModeMarkAll, EFalse ); + } + + if ( markedItems ) + { + iMenuPane->SetItemDimmed( EAknCmdMarkingModeUnmarkAll, EFalse ); + } + + iMenuPane->SetItemDimmed( EAknCmdMarkingModeMarkOne, ETrue ); + iMenuPane->SetItemDimmed( EAknCmdMarkingModeEnter, ETrue ); iMenuPane->FilterDimmedItems(); - titles--; } + iMenuObserver->SetEmphasis(this,ETrue); iMenuCba = CEikButtonGroupContainer::NewL(CEikButtonGroupContainer::ECba, CEikButtonGroupContainer::EHorizontal, @@ -930,8 +1037,11 @@ { iMenuPane->SetEmbeddedCba( cba ); } - - MTouchFeedback* feedback = MTouchFeedback::Instance(); + MTouchFeedback* feedback = NULL; + if( AknLayoutUtils::PenEnabled() ) + { + feedback = MTouchFeedback::Instance(); + } if ( feedback ) { feedback->FlushRegistryUpdates(); @@ -942,7 +1052,11 @@ KPSUidAvkonInternal, KAknMenuOptionNoTaskSwapper, taskSwapper); - if ( iMenuPane->NumberOfItemsInPane() != 0 && iExt->iMenuType == EMenuOptions && taskSwapper == ETaskSwapper ) + + if ( iMenuPane->NumberOfItemsInPane() != 0 + && iExt->iMenuType == EMenuOptions + && taskSwapper == ETaskSwapper + && !marking ) { // 'Active Applications' menu item is added at the first item of the // options menu after other menu items are added. @@ -999,20 +1113,6 @@ // menu pane captures all pointer events, and forwards them to CBA if neccessary iMenuPane->SetGloballyCapturing(ETrue); iMenuPane->SetPointerCapture(ETrue); - MTouchFeedback* feedback = MTouchFeedback::Instance(); - if ( feedback ) - { - TTouchLogicalFeedback fbLogicalType = ETouchFeedbackPopUp; - if ( CAknTransitionUtils::TransitionsEnabled( AknTransEffect::EComponentTransitionsOff ) ) - { - fbLogicalType = ETouchFeedbackOptionsMenuOpened; - } - feedback->InstantFeedback( - this, - fbLogicalType, - ETouchFeedbackVibra, - TPointerEvent() ); - } } iMenuPane->MakeVisible( EFalse ); @@ -1023,6 +1123,16 @@ if( optMenuFg ) { GfxTransEffect::Begin( iMenuPane, KGfxControlAppearAction ); + if( feedback && CAknTransitionUtils::TransitionsEnabled( AknTransEffect::EComponentTransitionsOff )) + { + TTouchLogicalFeedback fbLogicalType = ETouchFeedbackOptionsMenuOpened; + if( iExt->iMenuType == EMenuContext || iExt->iMenuType == EMenuEdit ) + { + fbLogicalType = ETouchFeedbackIncreasingPopUp; + } + feedback->InstantFeedback( this, fbLogicalType, + ETouchFeedbackVibra, TPointerEvent() ); + } } iMenuPane->StartDisplayingMenuPane(NULL, menuPosition, NULL, screenSize.iWidth, EPopupTargetBottomLeft); @@ -1040,6 +1150,11 @@ GfxTransEffect::SetDemarcation( iMenuPane, demarcation ); GfxTransEffect::End( iMenuPane ); } + if( feedback ) + { + feedback->InstantFeedback( this, ETouchFeedbackPopUp, + ETouchFeedbackVibra, TPointerEvent() ); + } _AKNTRACE_FUNC_EXIT; } @@ -1193,9 +1308,18 @@ if ( feedback ) { TTouchLogicalFeedback fbLogicalType = ETouchFeedbackPopUp; - if ( CAknTransitionUtils::TransitionsEnabled( AknTransEffect::EComponentTransitionsOff ) ) + if ( CAknTransitionUtils::TransitionsEnabled( + AknTransEffect::EComponentTransitionsOff ) ) { - fbLogicalType = ETouchFeedbackOptionsMenuClosed; + if ( iExt->iMenuType == EMenuContext || + iExt->iMenuType == EMenuEdit ) + { + fbLogicalType = ETouchFeedbackDecreasingPopUp; + } + else + { + fbLogicalType = ETouchFeedbackOptionsMenuClosed; + } } feedback->InstantFeedback( this, @@ -1206,7 +1330,49 @@ } break; // AKNLAF end + + case EAknCmdMarkingModeEnter: + { + if ( iExt->iItemActionMenu ) + { + iExt->iItemActionMenu->MarkingMode( + ).SetCollectionMultipleMarkingState( ETrue ); + } + break; + + case EAknCmdMarkingModeMarkOne: + { + if ( iExt->iItemActionMenu ) + { + iExt->iItemActionMenu->MarkingMode().MarkCurrentItemL(); + } + } + break; + + case EAknCmdMarkingModeMarkAll: + { + if ( iExt->iItemActionMenu ) + { + iExt->iItemActionMenu->MarkingMode().MarkAllL(); + } + } + break; + + case EAknCmdMarkingModeUnmarkAll: + { + if ( iExt->iItemActionMenu ) + { + iExt->iItemActionMenu->MarkingMode().UnmarkAll(); + } + } + break; + } + default: + if ( iExt->iItemActionMenu ) + { + iExt->iItemActionMenu->MarkingMode().TryExitMarkingMode(); + } break; } } @@ -1438,6 +1604,15 @@ { menuPane->AddMenuItemsL( resource, 0 ); iMenuObserver->DynInitMenuPaneL( resource, menuPane ); + + if ( resource == R_AVKON_MENUPANE_MARK_MULTIPLE ) + { + if ( iExt->iItemActionMenu->MarkingMode().MultipleMarkingActive() || + !iExt->iItemActionMenu->MarkingMode().CurrentItemMarkable() ) + { + menuPane->SetItemDimmed( EAknCmdMarkingModeMarkOne, ETrue ); + } + } } titles--; } diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/coctlsrc/EIKMENUP.CPP --- a/uifw/EikStd/coctlsrc/EIKMENUP.CPP Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/coctlsrc/EIKMENUP.CPP Tue May 11 16:27:42 2010 +0300 @@ -143,7 +143,7 @@ /** * Prepares cascade menu for item specific commands. */ - void PrepareCascadeForItemCommands(); + void PrepareCascadeForItemCommandsL(); /** * Returns ETrue if this menu pane belongs to a CS menu. @@ -237,7 +237,8 @@ EHideItemSpecificCommands, EContextSensitive, ESkipScrollbarUpdate, - EHighlightEnabled + EHighlightEnabled, + EHideViewSpecificCommands }; /** @@ -839,6 +840,11 @@ { cascadeMenuPane->SetParent( iControl ); GfxTransEffect::Begin( cascadeMenuPane, KGfxControlAppearAction ); + if ( CAknTransitionUtils::TransitionsEnabled( AknTransEffect::EComponentTransitionsOff ) ) + { + ImmediateFeedback( ETouchFeedbackSubMenuOpened, + ETouchFeedbackVibra ); + } cascadeMenuPane->StartDisplayingMenuPane( iControl->iHotKeyTable, iControl->Position(), NULL, @@ -1248,6 +1254,7 @@ iFlags.Clear( EHideItemSpecificCommands ); iFlags.Clear( EContextSensitive ); iFlags.Clear( EHighlightEnabled ); + iFlags.Clear( EHideViewSpecificCommands ); _AKNTRACE_FUNC_EXIT; } @@ -1329,8 +1336,8 @@ TTouchLogicalFeedback aType, TTouchFeedbackType aFbType = TTouchFeedbackType( ETouchFeedbackAudio | ETouchFeedbackVibra )) - { - if ( iFeedback ) + { + if( iFeedback && AknLayoutUtils::PenEnabled() ) { iFeedback->InstantFeedback( iControl, aType, aFbType, TPointerEvent() ); } @@ -1338,10 +1345,10 @@ // ----------------------------------------------------------------------------- -// CEikMenuPaneExtension::PrepareCascadeForItemCommands -// ----------------------------------------------------------------------------- -// -void CEikMenuPaneExtension::PrepareCascadeForItemCommands() +// CEikMenuPaneExtension::PrepareCascadeForItemCommandsL +// ----------------------------------------------------------------------------- +// +void CEikMenuPaneExtension::PrepareCascadeForItemCommandsL() { if ( iFlags.IsSet( ESingleClickEnabled ) && iControl->iOwner @@ -1354,7 +1361,7 @@ } else if ( ownerFlags.IsSet( EHideItemSpecificCommands ) ) { - iControl->SetItemCommandsDimmed(); + iControl->SetItemCommandsStateL( ETrue ); } } } @@ -1795,6 +1802,13 @@ { _AKNTRACE_FUNC_ENTER; AKNTASHOOK_REMOVE(); + + if ( iIsDeleted ) + { + *iIsDeleted = ETrue; + iIsDeleted = NULL; + } + CloseCascadeMenu(); if ( !ItemArrayOwnedExternally() ) { @@ -2246,7 +2260,7 @@ iEditMenuObserver->DynInitMenuPaneL( aCascadeMenuId, iCascadeMenuPane ); } - iCascadeMenuPane->iExtension->PrepareCascadeForItemCommands(); + iCascadeMenuPane->iExtension->PrepareCascadeForItemCommandsL(); iCascadeMenuPane->iExtension->EnableHighlight( EFalse ); iCascadeMenuPane->FilterDimmedItems(); @@ -2259,13 +2273,7 @@ { iExtension->StartCascadeMenuAppearTransition(); } - - TTouchLogicalFeedback fbLogicalType = ETouchFeedbackPopUp; - if ( CAknTransitionUtils::TransitionsEnabled( AknTransEffect::EComponentTransitionsOff ) ) - { - fbLogicalType = ETouchFeedbackSubMenuOpened; - } - iExtension->ImmediateFeedback( fbLogicalType, + iExtension->ImmediateFeedback( ETouchFeedbackPopUp, ETouchFeedbackVibra ); _AKNTRACE_FUNC_EXIT; } @@ -3099,10 +3107,35 @@ CEikMenuPane* menu = iOwner ? iOwner : this; MCoeControlObserver* observer = menu->Observer(); - if ( commandId != EAknCmdTaskSwapper ) + if ( commandId >= EAknCmdMarkingModeEnter + && commandId <= EAknCmdMarkingModeUnmarkAll ) + { + CEikMenuBar* menuBar = static_cast( Parent() ); + if ( menuBar && menuBar->MenuPane() == this ) + { + static_cast( + menuBar)->ProcessCommandL( commandId ); + } + ReportCanceled(); + } + else if ( commandId != EAknCmdTaskSwapper ) { _AKNTRACE( "commandId = %d", commandId ); + TBool isDeleted = EFalse; + iIsDeleted = &isDeleted; iMenuObserver->ProcessCommandL( commandId ); + + if ( !isDeleted ) + { + CEikMenuBar* menuBar = static_cast( Parent() ); + if ( menuBar && menuBar->MenuPane() == this ) + { + static_cast( + menuBar)->ProcessCommandL( commandId ); + } + } + + iIsDeleted = NULL; } else { @@ -4014,10 +4047,10 @@ _AKNTRACE_FUNC_EXIT; return iOwner->HandlePointerEventL( parentEvent ); } - iExtension->iDownOnMenuArea = EFalse; iExtension->iPanningActive = EFalse; - if ( !(iExtension->iSct && iExtension->iSct->Rect().Contains( iExtension->iStartPoint ) ) ) + if ( !(iExtension->iSct && iExtension->iSct->Rect().Contains( iExtension->iStartPoint ) ) + && iExtension->iDownOnMenuArea ) { TPoint drag = iExtension->iStartPoint - aPointerEvent.iPosition; if ( iExtension->iPhysics->StartPhysics( @@ -4027,6 +4060,7 @@ iExtension->ResetPressedHighlight(); } } + iExtension->iDownOnMenuArea = EFalse; if ( iExtension->HighlightTimerActive() && !iExtension->iPressedDown ) { @@ -4375,11 +4409,11 @@ if( Abs( threshold ) > iExtension->iPhysics->DragThreshold() && iExtension->iDownOnMenuArea ) { + iExtension->EnableHighlight( EFalse ); iExtension->iButtonDownItem = KErrNotFound; iExtension->ResetPressedHighlight(); iExtension->iNextHighlightItem = KErrNotFound; iExtension->iPanningActive = ETrue; - iExtension->EnableHighlight( EFalse ); } if ( iExtension->iPanningActive && iExtension->iDownOnMenuArea ) @@ -6514,25 +6548,51 @@ // ----------------------------------------------------------------------------- -// CEikMenuPane::SetItemCommandsDimmed -// ----------------------------------------------------------------------------- -// -void CEikMenuPane::SetItemCommandsDimmed() +// CEikMenuPane::SetItemCommandsStateL +// ----------------------------------------------------------------------------- +// +void CEikMenuPane::SetItemCommandsStateL( TBool aDimmed ) { if ( iExtension && iExtension->iFlags.IsSet( CEikMenuPaneExtension::ESingleClickEnabled ) ) { - iExtension->iFlags.Set( - CEikMenuPaneExtension::EHideItemSpecificCommands ); + if ( aDimmed ) + { + iExtension->iFlags.Set( + CEikMenuPaneExtension::EHideItemSpecificCommands ); + } + else + { + iExtension->iFlags.Set( + CEikMenuPaneExtension::EHideViewSpecificCommands ); + } for ( TInt i = 0; i < iItemArray->Count(); ++i ) { CEikMenuPaneItem* item = iItemArray->At( i ); - if ( item->iData.iFlags & EEikMenuItemAction + TBool itemSpecificItem( + item->iData.iFlags & EEikMenuItemAction || item->iData.iFlags & EEikMenuItemSpecific - || item->iData.iFlags & EEikMenuItemSpecificListQuery ) + || item->iData.iFlags & EEikMenuItemSpecificListQuery ); + // Dim item specific items + if ( aDimmed && itemSpecificItem ) { item->iData.iFlags |= EEikMenuItemDimmed; } + // Dim items not item specific + else if ( !aDimmed + && ( !itemSpecificItem + || item->iData.iFlags & EEikMenuItemAction ) ) + { + item->iData.iFlags |= EEikMenuItemDimmed; + if ( item->iData.iCascadeId ) + { + // i is not updated in AddCascadeMenuItemsToMenuL so going + // through added items again here. Then it goes through + // also submenus of submenus. + AddCascadeMenuItemsToMenuL( + item->iData.iCascadeId, ETrue, EFalse, NULL, i ); + } + } } } } @@ -6560,8 +6620,8 @@ if ( !( item->iData.iFlags & EEikMenuItemSpecificListQuery ) && item->iData.iCascadeId ) { - AddCascadeMenuItemsToActionMenuL( - item->iData.iCascadeId, EFalse, aMenuData ); + AddCascadeMenuItemsToMenuL( + item->iData.iCascadeId, EFalse, ETrue, &aMenuData ); } // If menu item is list query or it does not have cascade menu else @@ -6577,21 +6637,23 @@ else if ( item->iData.iCascadeId && !( item->iData.iFlags & EEikMenuItemDimmed ) ) { - AddCascadeMenuItemsToActionMenuL( - item->iData.iCascadeId, ETrue, aMenuData ); + AddCascadeMenuItemsToMenuL( + item->iData.iCascadeId, ETrue, ETrue, &aMenuData ); } } } // ----------------------------------------------------------------------------- -// CEikMenuPane::AddCascadeMenuItemsToActionMenuL -// ----------------------------------------------------------------------------- -// -void CEikMenuPane::AddCascadeMenuItemsToActionMenuL( +// CEikMenuPane::AddCascadeMenuItemsToMenuL +// ----------------------------------------------------------------------------- +// +void CEikMenuPane::AddCascadeMenuItemsToMenuL( TInt aCascadeId, TBool aItemSpecific, - CAknItemActionMenuData& aMenuData ) + TBool aAddToItemActionMenu, + CAknItemActionMenuData* aMenuData, + TInt aItemIndex ) { if ( aCascadeId && iCoeEnv->IsResourceAvailableL( aCascadeId ) ) { @@ -6610,10 +6672,17 @@ || ( !aItemSpecific && !( item->iData.iFlags & EEikMenuItemDimmed ) ) ) { - aMenuData.AddMenuItemToDataArrayL( - item->iData.iCommandId, - item->iData.iCascadeId, - item->iData.iText ); + if ( aAddToItemActionMenu ) + { + aMenuData->AddMenuItemToDataArrayL( + item->iData.iCommandId, + item->iData.iCascadeId, + item->iData.iText ); + } + else + { + InsertMenuItemL( item->iData, ++aItemIndex ); + } } } CleanupStack::PopAndDestroy( cascadeMenu ); diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/coctlsrc/EIKSCRLB.CPP --- a/uifw/EikStd/coctlsrc/EIKSCRLB.CPP Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/coctlsrc/EIKSCRLB.CPP Tue May 11 16:27:42 2010 +0300 @@ -2382,25 +2382,35 @@ scrollBarRect.Move( Position().iX - windowOwningParent->Position().iX, 0 ); } - - // left to right layout in use - if ( !AknLayoutUtils::LayoutMirrored() ) - { - xGap = parentRect.iBr.iX - scrollBarRect.iBr.iX; - if ( Abs( xGap ) < scrollBarRect.Width() ) - { - extension.iBr.iX += xGap; - } - } - // right to left layout in use + if ( iOrientation == CEikScrollBar::EVertical ) + { + // left to right layout in use + if ( !AknLayoutUtils::LayoutMirrored() ) + { + xGap = parentRect.iBr.iX - scrollBarRect.iBr.iX; + if ( Abs( xGap ) < scrollBarRect.Width() ) + { + extension.iBr.iX += xGap; + } + } + // right to left layout in use + else + { + xGap = parentRect.iTl.iX - scrollBarRect.iTl.iX; + if ( Abs( xGap ) < scrollBarRect.Width() ) + { + extension.iTl.iX += xGap; + } + } + } else - { - xGap = parentRect.iTl.iX - scrollBarRect.iTl.iX; - if ( Abs( xGap ) < scrollBarRect.Width() ) - { - extension.iTl.iX += xGap; - } - } + { + xGap = parentRect.iBr.iY - scrollBarRect.iBr.iY; + if ( Abs( xGap ) < scrollBarRect.Height() ) + { + extension.iBr.iY += xGap; + } + } } } @@ -2416,7 +2426,7 @@ area.iTl.iX = scrollbar.iTl.iY - extension.iTl.iY; area.iTl.iY = scrollbar.Width() - extension.Width(); area.iBr.iX = iSize.iWidth + ( extension.Height() - scrollbar.Height() ); - area.iBr.iY = area.iTl.iY + extension.Width(); + area.iBr.iY = area.iTl.iY + extension.Height(); } return area; diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/coctlsrc/akndoublespanscrollindicatoritem.cpp --- a/uifw/EikStd/coctlsrc/akndoublespanscrollindicatoritem.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/coctlsrc/akndoublespanscrollindicatoritem.cpp Tue May 11 16:27:42 2010 +0300 @@ -78,31 +78,8 @@ TInt /*aBottomItemBitmapId*/, TInt /*aBottomItemMaskId*/) { - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); iTopId = aTopItem; iMidId = aMiddleItem; iBottomId = aBottomItem; } -void CAknDoubleSpanScrollIndicatorItem::CreateSkinnedBitmapAndMaskL(MAknsSkinInstance* aInstance, - const TAknsItemID& aID, - CFbsBitmap*& aBitmap, - CFbsBitmap*& aMask, - TBool /*aRotated*/) - { - CFbsBitmap* skinnedBitmap = NULL; - CFbsBitmap* skinnedMask = NULL; - - // note, real fallback icons are not (yet) available in avkon icon file. - TRAP_IGNORE(AknsUtils::CreateIconL( aInstance, aID, skinnedBitmap, skinnedMask, KNullDesC, -1, -1 )); - - if(!skinnedBitmap) - { - AknsUtils::CreateIconL( aInstance, aID, skinnedBitmap, KNullDesC, -1 ); - } - - aBitmap = skinnedBitmap; - aMask = skinnedMask; - - } - diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/coctlsrc/aknedwinphysicshandler.cpp --- a/uifw/EikStd/coctlsrc/aknedwinphysicshandler.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/coctlsrc/aknedwinphysicshandler.cpp Tue May 11 16:27:42 2010 +0300 @@ -142,10 +142,12 @@ } else { - TInt deltaY( iPrevPosition.iY - aPointerEvent.iPosition.iY ); - - TPoint deltaPoint( 0, deltaY ); - iPhysics->RegisterPanningPosition( deltaPoint ); + if ( !iEdwin.ContentFitsToViewRect() ) + { + TInt deltaY( iPrevPosition.iY - aPointerEvent.iPosition.iY ); + TPoint deltaPoint( 0, deltaY ); + iPhysics->RegisterPanningPosition( deltaPoint ); + } } iPrevPosition = aPointerEvent.iPosition; } @@ -157,8 +159,12 @@ } iFlags.Clear( EFlagDraggingAllowed ); - TPoint drag( 0, iStartPosition.iY - aPointerEvent.iPosition.iY ); - iPhysics->StartPhysics( drag, iStartTime ); + + if ( !iEdwin.ContentFitsToViewRect() ) + { + TPoint drag( 0, iStartPosition.iY - aPointerEvent.iPosition.iY ); + iPhysics->StartPhysics( drag, iStartTime ); + } } } } diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/coctlsrc/aknitemactionmenu.cpp --- a/uifw/EikStd/coctlsrc/aknitemactionmenu.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/coctlsrc/aknitemactionmenu.cpp Tue May 11 16:27:42 2010 +0300 @@ -29,6 +29,7 @@ #include "aknitemactionmenudata.h" #include "aknitemactionmenuregister.h" #include "akntrace.h" +#include "aknmarkingmode.h" /** * Index for invalid list index. @@ -78,6 +79,7 @@ delete iPopupMenu; delete iMenuPane; delete iMenuData; + delete iMarking; iStates.Close(); for ( TInt i = 0; i < iObservers.Count(); ++i ) @@ -378,6 +380,18 @@ // --------------------------------------------------------------------------- +// CAknItemActionMenu::MarkingMode +// --------------------------------------------------------------------------- +// +CAknMarkingMode& CAknItemActionMenu::MarkingMode() + { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; + return *iMarking; + } + + +// --------------------------------------------------------------------------- // CAknItemActionMenu::CAknItemActionMenu // --------------------------------------------------------------------------- // @@ -387,7 +401,8 @@ iMenuBar( NULL ), iMenuPane( NULL ), iMenuData( NULL ), - iOwner( aOwner ) + iOwner( aOwner ), + iMarking( NULL ) { _AKNTRACE_FUNC_ENTER; AKNTASHOOK_ADD( this, "CAknItemActionMenu" ); @@ -404,6 +419,7 @@ _AKNTRACE_FUNC_ENTER; AddCollectionStateL( aCollection ); iMenuData = CAknItemActionMenuData::NewL(); + iMarking = CAknMarkingMode::NewL( *this, iStates ); _AKNTRACE_FUNC_EXIT; } @@ -496,17 +512,24 @@ { TMenuItemTextBuf text = iMenuData->MenuItemText( aCommandId ); iMenuData->Reset(); - iMenuPane->AddCascadeMenuItemsToActionMenuL( - cascadeId, EFalse, *iMenuData ); + iMenuPane->AddCascadeMenuItemsToMenuL( + cascadeId, EFalse, ETrue, iMenuData ); aCommandId = LaunchSubMenuQueryL( text ); } - if ( aCommandId > 0 && iMenuBarObserver ) + if ( aCommandId > 0 && iMenuData->MenuItemCommandId( aCommandId ) + == EAknCmdMarkingModeMarkOne && iMenuBar ) + { + MarkingMode().MarkCurrentItemL(); + } + else if ( aCommandId > 0 && iMenuBarObserver ) { iProcessingCommand = ETrue; iMenuBarObserver->ProcessCommandL( iMenuData->MenuItemCommandId( aCommandId ) ); iProcessingCommand = EFalse; + // Try exit marking mode + MarkingMode().TryExitMarkingMode(); } } // Inform collection that submenu was closed @@ -538,3 +561,4 @@ } // End of File + diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/coctlsrc/aknitemactionmenuregister.cpp --- a/uifw/EikStd/coctlsrc/aknitemactionmenuregister.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/coctlsrc/aknitemactionmenuregister.cpp Tue May 11 16:27:42 2010 +0300 @@ -41,7 +41,7 @@ if ( instance ) { - instance->DoSetConstructingMenuBarOwnerL( aMenuBarOwner ); + instance->iMenuBarOwner = aMenuBarOwner; } _AKNTRACE_FUNC_EXIT; @@ -905,28 +905,6 @@ 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; - } - } - - iMenuBarOwner = aMenuBarOwner; - } - // --------------------------------------------------------------------------- // AknItemActionMenuRegister::DoRemoveConstructingMenuBarOwner @@ -945,21 +923,6 @@ if ( data.iOwner == iMenuBarOwner ) { data.iOwner = iMenuBarOwner = NULL; - - // 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. - if ( iIsConstructingDialog ) - { - CEikMenuBar* menuBar = FindCurrentMenuBar(); - - if ( menuBar ) - { - TRAP_IGNORE( AddRegisterEntryL( *menuBar, *data.iMenu ) ); - iUnregisteredMenus.Remove( i ); - continue; - } - } } ++i; @@ -978,7 +941,6 @@ if ( iMenuBarOwner == aMenuBarOwner ) { - iIsConstructingDialog = EFalse; iMenuBarOwner = NULL; } } diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/coctlsrc/aknmarkingmode.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uifw/EikStd/coctlsrc/aknmarkingmode.cpp Tue May 11 16:27:42 2010 +0300 @@ -0,0 +1,369 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Marking mode handler. +* +*/ + +#include +#include +#include +#include +#include +#include + +#include "aknmarkingmode.h" + +// --------------------------------------------------------------------------- +// CAknMarkingMode::NewL +// --------------------------------------------------------------------------- +// +CAknMarkingMode* CAknMarkingMode::NewL( + CAknItemActionMenu& aItemActionMenu, + CollectionArray& aArray ) + { + CAknMarkingMode* self = + new ( ELeave ) CAknMarkingMode( aItemActionMenu, aArray ); + return self; + } + + +// --------------------------------------------------------------------------- +// CAknMarkingMode::~CAknMarkingMode +// --------------------------------------------------------------------------- +// +CAknMarkingMode::~CAknMarkingMode() + { + delete iMarkingDecorator; + } + + +// --------------------------------------------------------------------------- +// CAknMarkingMode::SetCollectionMultipleMarkingState +// --------------------------------------------------------------------------- +// +void CAknMarkingMode::SetCollectionMultipleMarkingState( TBool aActive ) + { + for ( TInt i = 0; i < iCollections.Count(); i++ ) + { + MAknCollection* collection( iCollections[ i ] ); + // Assume the command applies to first list with multiple selection + if ( collection->CollectionState() & + MAknCollection::EStateMultipleSelection ) + { + MAknMarkingCollection* markingCollection + = MarkingCollection( *collection ); + if ( markingCollection ) + { + markingCollection->SetMultipleMarkingState( aActive ); + TRAP_IGNORE( UpdateMarkingModeNaviPaneL( aActive ) ); + } + iItemActionMenu.CollectionChanged( *collection ); + break; + } + } + } + + +// --------------------------------------------------------------------------- +// CAknMarkingMode::TryExitMarkingMode +// --------------------------------------------------------------------------- +// +void CAknMarkingMode::TryExitMarkingMode() + { + for ( TInt i = 0; i < iCollections.Count(); i++ ) + { + MAknCollection* collection( iCollections[ i ] ); + MAknMarkingCollection* markingCollection + = MarkingCollection( *collection ); + if ( markingCollection && markingCollection->MarkingState( + ) & MAknMarkingCollection::EStateMarkingMode ) + { + if ( markingCollection->ExitMarkingMode() ) + { + SetCollectionMultipleMarkingState( EFalse ); + } + } + break; + } + } + + +// --------------------------------------------------------------------------- +// CAknMarkingMode::MultipleMarkingActive +// --------------------------------------------------------------------------- +// +TBool CAknMarkingMode::MultipleMarkingActive() const + { + TBool markingActive( EFalse ); + for ( TInt i = 0; i < iCollections.Count(); i++ ) + { + MAknCollection* collection( iCollections[ i ] ); + if ( collection->CollectionState() & + MAknCollection::EStateCollectionVisible ) + { + MAknMarkingCollection* markingCollection + = MarkingCollection( *collection ); + if ( markingCollection ) + { + markingActive = markingCollection->MarkingState() + & MAknMarkingCollection::EStateMarkingMode; + } + break; + } + } + return markingActive; + } + + +// --------------------------------------------------------------------------- +// CAknMarkingMode::MarkedItems +// --------------------------------------------------------------------------- +// +TBool CAknMarkingMode::MarkedItems() const + { + TBool markedItems( EFalse ); + for ( TInt i = 0; i < iCollections.Count(); i++ ) + { + MAknCollection* collection( iCollections[ i ] ); + if ( collection->CollectionState() & + MAknCollection::EStateCollectionVisible ) + { + MAknMarkingCollection* markingCollection + = MarkingCollection( *collection ); + if ( markingCollection ) + { + TInt markingState = markingCollection->MarkingState(); + if ( markingState & + MAknMarkingCollection::EStateMarkingMode ) + { + markedItems = markingState + & MAknMarkingCollection::EStateMarkedItems; + } + } + break; + } + } + return markedItems; + } + +// --------------------------------------------------------------------------- +// CAknMarkingMode::CollectionEmpty +// --------------------------------------------------------------------------- +// +TBool CAknMarkingMode::CollectionEmpty() const + { + TBool empty( EFalse ); + for ( TInt i = 0; i < iCollections.Count(); i++ ) + { + MAknCollection* collection( iCollections[ i ] ); + if ( collection->CollectionState() & + MAknCollection::EStateCollectionVisible ) + { + MAknMarkingCollection* markingCollection + = MarkingCollection( *collection ); + if ( markingCollection ) + { + TInt markingState = markingCollection->MarkingState(); + if ( markingState & + MAknMarkingCollection::EStateMarkingMode ) + { + empty = markingState + & MAknMarkingCollection::EStateCollectionEmpty; + } + } + break; + } + } + return empty; + } + + +// --------------------------------------------------------------------------- +// CAknMarkingMode::MarkAllL +// --------------------------------------------------------------------------- +// +void CAknMarkingMode::MarkAllL() + { + MAknMarkingCollection* collection = ActiveMarkingCollection(); + + if ( collection ) + { + collection->MarkAllL(); + } + } + + +// --------------------------------------------------------------------------- +// CAknMarkingMode::UnmarkAll +// --------------------------------------------------------------------------- +// +void CAknMarkingMode::UnmarkAll() + { + MAknMarkingCollection* collection = ActiveMarkingCollection(); + + if ( collection ) + { + collection->UnmarkAll(); + } + } + + +// --------------------------------------------------------------------------- +// CAknMarkingMode::MarkCurrentItemL +// --------------------------------------------------------------------------- +// +void CAknMarkingMode::MarkCurrentItemL() + { + MAknMarkingCollection* collection = ActiveMarkingCollection(); + + // first activate marking mode if needed + if ( !collection ) + { + SetCollectionMultipleMarkingState( ETrue ); + collection = ActiveMarkingCollection(); + } + + // then mark the current item + if ( collection ) + { + collection->MarkCurrentItemL(); + } + } + +// --------------------------------------------------------------------------- +// CAknMarkingMode::CurrentItemMarkable +// --------------------------------------------------------------------------- +// +TBool CAknMarkingMode::CurrentItemMarkable() + { + return MarkingCollection()->CurrentItemMarkable(); + } + +// --------------------------------------------------------------------------- +// CAknMarkingMode::CAknMarkingMode +// --------------------------------------------------------------------------- +// +CAknMarkingMode::CAknMarkingMode( + CAknItemActionMenu& aItemActionMenu, + CollectionArray& aArray ) + : iCollections( aArray ), + iItemActionMenu( aItemActionMenu ), + iMarkingDecorator( NULL ) + { + } + + +// --------------------------------------------------------------------------- +// CAknMarkingMode::MarkingCollection +// --------------------------------------------------------------------------- +// +MAknMarkingCollection* CAknMarkingMode::MarkingCollection( + MAknCollection& aCollection ) + { + TAny* extension( NULL ); + aCollection.CollectionExtension( + MAknMarkingCollection::TYPE, extension, NULL ); + return static_cast( extension ); + } + + +// --------------------------------------------------------------------------- +// CAknMarkingMode::MarkingCollection +// --------------------------------------------------------------------------- +// +MAknMarkingCollection* CAknMarkingMode::MarkingCollection() + { + for ( TInt i = 0; i < iCollections.Count(); i++ ) + { + MAknCollection* collection( iCollections[ i ] ); + if ( collection->CollectionState() & + MAknCollection::EStateCollectionVisible ) + { + return MarkingCollection( *collection ); + } + } + + return NULL; + } + + +// --------------------------------------------------------------------------- +// CAknMarkingMode::ActiveMarkingCollection +// --------------------------------------------------------------------------- +// +MAknMarkingCollection* CAknMarkingMode::ActiveMarkingCollection() + { + for ( TInt i = 0; i < iCollections.Count(); i++ ) + { + MAknCollection* collection( iCollections[ i ] ); + + MAknMarkingCollection* markingCollection = + MarkingCollection( *collection ); + + if ( markingCollection && markingCollection->MarkingState() & + MAknMarkingCollection::EStateMarkingMode ) + { + return markingCollection; + } + } + + return NULL; + } + +// --------------------------------------------------------------------------- +// CAknMarkingMode::UpdateMarkingModeNaviPaneL +// --------------------------------------------------------------------------- +// +void CAknMarkingMode::UpdateMarkingModeNaviPaneL( TBool aEnable ) + { + CEikonEnv* eikonEnv = CEikonEnv::Static(); + + if ( eikonEnv && eikonEnv->AppUiFactory() ) + { + CEikStatusPane* statusPane = eikonEnv->AppUiFactory()->StatusPane(); + + if ( statusPane ) + { + // get navi pane + CAknNavigationControlContainer* naviPane = + (CAknNavigationControlContainer *)statusPane->ControlL( + TUid::Uid(EEikStatusPaneUidNavi)); + if ( naviPane ) + { + if ( !iMarkingDecorator ) + { + TResourceReader reader; + eikonEnv->CreateResourceReaderLC( + reader, R_MARKING_MODE_NAVI_PANE ); + + iMarkingDecorator = naviPane->CreateNavigationLabelL( + reader ); + CleanupStack::PopAndDestroy(); // reader + } + + if ( aEnable ) + { + naviPane->PushL( *iMarkingDecorator ); + } + else + { + naviPane->Pop( iMarkingDecorator ); + } + naviPane->DrawDeferred(); + } + } + } + } + +// End of File diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/coctlsrc/aknstyluspopupmenu.cpp --- a/uifw/EikStd/coctlsrc/aknstyluspopupmenu.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/coctlsrc/aknstyluspopupmenu.cpp Tue May 11 16:27:42 2010 +0300 @@ -191,7 +191,6 @@ iController->SetPopUpShowDelay( KDefaultPopUpShowDelay ); iController->SetPopUpHideDelay( KDefaultPopUpHideDelay ); - iContent->Parent()->DrawableWindow()->SetNonFading(ETrue); } TSize size(iController->Size()); @@ -414,6 +413,7 @@ { iPreviewPopup->HidePopUp(); } + if ( iController ) { iController->HidePopUp(); diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/coctlsrc/aknstyluspopupmenuphysicshandler.cpp --- a/uifw/EikStd/coctlsrc/aknstyluspopupmenuphysicshandler.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/coctlsrc/aknstyluspopupmenuphysicshandler.cpp Tue May 11 16:27:42 2010 +0300 @@ -146,17 +146,6 @@ iPressedDown = EFalse; TPoint adjustedPosition( aPointerEvent.iPosition + TPoint(0, Offset() ) ); TInt item = iPopUpMenuContent->ContainingItem( adjustedPosition ); - if ( item != KNoItemSelected ) - { - MTouchFeedback* feedback = MTouchFeedback::Instance(); - if ( feedback ) - { - feedback->InstantFeedback( NULL, - ETouchFeedbackList, - ETouchFeedbackVibra, - aPointerEvent ); - } - } TPoint distance( 0, iStartPosition.iY - aPointerEvent.iPosition.iY ); if ( iPhysics->StartPhysics( distance, iStartTime ) ) @@ -170,6 +159,15 @@ { if ( iViewRect.Contains( aPointerEvent.iPosition ) ) { + if( AknLayoutUtils::PenEnabled() ) + { + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if( feedback ) + { + feedback->InstantFeedback( NULL, ETouchFeedbackList, + ETouchFeedbackVibra, aPointerEvent ); + } + } iPopUpMenuContent->SelectItemL( iPopUpMenuContent->CurrentItem() ); } diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/coctlsrc/akntoolbarextensionview.cpp --- a/uifw/EikStd/coctlsrc/akntoolbarextensionview.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/coctlsrc/akntoolbarextensionview.cpp Tue May 11 16:27:42 2010 +0300 @@ -621,7 +621,7 @@ // focus has moved from one button to another due to dragging, // give sensitive feedback MTouchFeedback* feedback = MTouchFeedback::Instance(); - if ( feedback && + if ( feedback && !button->IsDimmed() && ( aPointerEvent.iType == TPointerEvent::EDrag || aPointerEvent.iType == TPointerEvent::EButtonRepeat ) ) { @@ -645,12 +645,14 @@ { // Up and down events are in different items, give basic // feedback to the released item. - if ( ii != iDownItem ) + if ( ii != iDownItem && !button->IsDimmed() ) { MTouchFeedback* feedback = MTouchFeedback::Instance(); if ( feedback ) { - feedback->InstantFeedback( ETouchFeedbackBasicButton ); + feedback->InstantFeedback( + this, ETouchFeedbackBasicButton, + ETouchFeedbackVibra, aPointerEvent ); } } diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/coctlsrc/eikcba.cpp --- a/uifw/EikStd/coctlsrc/eikcba.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/coctlsrc/eikcba.cpp Tue May 11 16:27:42 2010 +0300 @@ -56,6 +56,7 @@ #include #include "akncollectionobserver.h" #include "aknitemactionmenuregister.h" +#include "aknmarkingmode.h" #include "akntrace.h" /** * Color value for transparent pixel (ARGB format). @@ -213,7 +214,8 @@ ECbaSingleClickEnabled, // single click enabled in appUi ECbaItemSoftkeyDisabled, // item specific softkey disabled ECbaItemSpecificSoftkeyInUse, // item specific softkey is in use - ECbaItemSoftkeyDisabledByClient // client has disabled item specific softkey + ECbaItemSoftkeyDisabledByClient, // client disabled item specific softkey + ECbaMultipleMarkingActive // multiple marking has changed RSK }; enum TCbaLayers @@ -717,6 +719,28 @@ } /** + * Returns ETrue if the command cancels multiple marking and should not + * be forwarded to actual command observer. + * + * @return ETrue if multiple marking was cancelled. + */ + TBool CancelMultipleMarking( TInt aCommandId ) + { + _AKNTRACE_FUNC_ENTER; + TBool cancelled( EFalse ); + if ( aCommandId == EAknSoftkeyCancel + && iItemActionMenu + && iOwner.Flags().IsSet( ECbaMultipleMarkingActive ) ) + { + iItemActionMenu->MarkingMode().SetCollectionMultipleMarkingState( + EFalse ); + cancelled = ETrue; + } + _AKNTRACE_FUNC_EXIT; + return cancelled; + } + + /** * From MAknCollectionObserver. * This method is used to set the item action menu to observer. * @@ -745,6 +769,8 @@ { iOwner.UpdateItemSpecificSoftkey(); } + + iOwner.UpdateMultipleMarkingSoftkey(); _AKNTRACE_FUNC_EXIT; } @@ -764,19 +790,15 @@ /* * Using the special theme Id draw background */ - void DrawSemiTransparency( CWindowGc& aGc, - const TRect& aRect ) + void DrawSemiTransparency( CWindowGc& aGc ) { _AKNTRACE_FUNC_ENTER; - aGc.SetBrushStyle( CGraphicsContext::ESolidBrush ); - aGc.SetBrushColor( TRgb(128, 128, 128, 64) ); - aGc.Clear(); - - TAknsItemID SemiButtonID = KAknsIIDQgnHomeButtonWidget; - TAknsItemID SemiButtonCenterID = KAknsIIDQgnHomeButtonWidgetCenter; - TAknsItemID SemiButtonPressedID = KAknsIIDQgnHomeButtonWidget; - TAknsItemID SemiButtonPressedCenterID = KAknsIIDQsnFrHomeCenterPressed; - + + TAknsItemID SemiButtonID = KAknsIIDQgnFrSctrlSkButton; + TAknsItemID SemiButtonCenterID = KAknsIIDQgnFrSctrlSkButtonCenter; + TAknsItemID SemiButtonPressedID = KAknsIIDQgnFrSctrlSkButtonPressed; + TAknsItemID SemiButtonPressedCenterID = KAknsIIDQgnFrSctrlSkButtonCenterPressed; + CEikCbaButton* button1 = static_cast (iOwner.Control(KControlArrayCBAButton1Posn)); CEikCbaButton* button2 = static_cast @@ -784,9 +806,6 @@ if (IsMskEnabledLayoutActive()) { - TRect innerRect = iMiddleFrameOuterRect; - innerRect.Shrink(4, 4); - CEikCbaButton* buttonMSK = static_cast (iOwner.Control(KControlArrayCBAButtonMSKPosn)); @@ -794,7 +813,7 @@ { AknsDrawUtils::DrawFrame(AknsUtils::SkinInstance(), aGc, iMiddleFrameOuterRect, - innerRect,//iMiddleFrameInnerRect, + iMiddleFrameInnerRect, SemiButtonPressedID, SemiButtonPressedCenterID); } @@ -802,20 +821,17 @@ { AknsDrawUtils::DrawFrame(AknsUtils::SkinInstance(), aGc, iMiddleFrameOuterRect, - innerRect,//iMiddleFrameInnerRect, + iMiddleFrameInnerRect, SemiButtonID, SemiButtonCenterID); } } - TRect innerRect = iLeftFrameOuterRect; - innerRect.Shrink(4, 4); - if (button1 && button1->PressedDown()) { AknsDrawUtils::DrawFrame(AknsUtils::SkinInstance(), aGc, iLeftFrameOuterRect, - innerRect,//iLeftFrameInnerRect, + iLeftFrameInnerRect, SemiButtonPressedID, SemiButtonPressedCenterID); } @@ -823,18 +839,16 @@ { AknsDrawUtils::DrawFrame(AknsUtils::SkinInstance(), aGc, iLeftFrameOuterRect, - innerRect,//iLeftFrameInnerRect, + iLeftFrameInnerRect, SemiButtonID, SemiButtonCenterID); } - innerRect = iRightFrameOuterRect; - innerRect.Shrink(4, 4); if (button2 && button2->PressedDown()) { AknsDrawUtils::DrawFrame(AknsUtils::SkinInstance(), aGc, iRightFrameOuterRect, - innerRect,//iRightFrameInnerRect, + iRightFrameInnerRect, SemiButtonPressedID, SemiButtonPressedCenterID); } @@ -842,7 +856,7 @@ { AknsDrawUtils::DrawFrame(AknsUtils::SkinInstance(), aGc, iRightFrameOuterRect, - innerRect,//iRightFrameInnerRect, + iRightFrameInnerRect, SemiButtonID, SemiButtonCenterID); } @@ -1606,8 +1620,6 @@ } } - // Set CBA faded in case the softkeys are empty. - SetFadeState(); _AKNTRACE_FUNC_EXIT; } @@ -1703,8 +1715,6 @@ } } - // Set CBA faded in case the softkeys are empty. - SetFadeState(); _AKNTRACE_FUNC_EXIT; } @@ -2052,11 +2062,7 @@ 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. - TBool isEmptyBefore( IsEmpty() ); - + TEikGroupControl& groupCtrl = (*iControlArray)[aPosition]; groupCtrl.iId = aCommandId; groupCtrl.iLongId = 0; @@ -2085,13 +2091,6 @@ buttonState->SetTextL( *aText ); buttonState->SetCommand( aCommandId ); } - - TBool isEmptyAfter( IsEmpty() ); - - if ( !COMPARE_BOOLS( isEmptyBefore, isEmptyAfter ) ) - { - SetFadeState(); - } ReportContentChangedEvent(); _AKNTRACE_FUNC_EXIT; @@ -2278,10 +2277,12 @@ 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. - TBool isEmptyBefore( IsEmpty() ); + + if ( !CommandChangeAllowed() ) + { + _AKNTRACE_FUNC_EXIT; + return; + } TEikGroupControl& groupCtrl = (*iControlArray)[aPosition]; @@ -2317,13 +2318,6 @@ } SetMSKIconL(); // If MSK id was changed, this sets MSK icon accordingly. - TBool isEmptyAfter( IsEmpty() ); - - if ( !COMPARE_BOOLS( isEmptyBefore, isEmptyAfter ) ) - { - SetFadeState(); - } - ReportContentChangedEvent(); _AKNTRACE_FUNC_EXIT; } @@ -2503,11 +2497,6 @@ SizeChanged(); TBool isEmptyAfter( IsEmpty() ); - - if ( !COMPARE_BOOLS( isEmptyBefore, isEmptyAfter ) ) - { - SetFadeState(); - } DrawDeferred(); ReportContentChangedEvent(); @@ -3414,7 +3403,9 @@ //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; + + //steven yao + //iCbaFlags &= ~EEikCbaFlagSemiTransparent; if (( iCbaFlags & EEikCbaFlagTransparent || iCbaFlags & EEikCbaFlagSemiTransparent ) && CAknEnv::Static()->TransparencyEnabled() ) @@ -3632,7 +3623,13 @@ if (aKeyEvent.iRepeats == 0 && shortCommand) { - iCommandObserver->ProcessCommandL((TInt)shortCommand); + // Notify command observer only if multiple marking + // was not cancelled + if ( !iExtension || !iExtension->CancelMultipleMarking( + shortCommand ) ) + { + iCommandObserver->ProcessCommandL( ( TInt ) shortCommand ); + } } else if (longCommand) { @@ -4176,7 +4173,13 @@ if( shortCommand ) { - iCommandObserver->ProcessCommandL( shortCommand ); + // Notify command observer only if multiple marking + // was not cancelled + if ( !iExtension || !iExtension->CancelMultipleMarking( + shortCommand ) ) + { + iCommandObserver->ProcessCommandL( shortCommand ); + } } break; @@ -4362,7 +4365,6 @@ case KEikMessageUnfadeWindows: { DoLayoutChange(); - SetFadeState(); if ( iFlags.IsSet( ECbaInsideDialog ) ) { @@ -4390,8 +4392,7 @@ AknStatuspaneUtils::IdleLayoutActive() ) { SetMSKVisibility( MskAllowed() ); - } - SetFadeState(); + } break; } @@ -4539,13 +4540,13 @@ return; } -// if ( iCbaFlags & EEikCbaFlagSemiTransparent ) -// { -// CWindowGc &gc = SystemGc(); -// -// iExtension->DrawSemiTransparency( gc, Rect() ); -// return; -// } + if ( iCbaFlags & EEikCbaFlagSemiTransparent ) + { + CWindowGc &gc = SystemGc(); + + iExtension->DrawSemiTransparency( gc ); + return; + } MAknsSkinInstance* skin = AknsUtils::SkinInstance(); @@ -4604,7 +4605,7 @@ gc.BitBlt( leftSKRect.iTl, iExtension->iLskPostingOverlayBitmap, TRect( leftSKSize ) ); } - else if ( !( ( iCbaFlags & EEikCbaFlagTransparent) || ( iCbaFlags & EEikCbaFlagSemiTransparent)) ) + else if ( !( iCbaFlags & EEikCbaFlagTransparent ) ) {// Old way to render if( !AknsDrawUtils::Background( skin, cc, this, gc, rect ) ) { @@ -4728,7 +4729,7 @@ gc.BitBlt( bottomSKRect.iTl, iExtension->iLskPostingOverlayBitmap, TRect( bottomSKRect.Size() ) ); } - else if ( !( ( iCbaFlags & EEikCbaFlagTransparent) || ( iCbaFlags & EEikCbaFlagSemiTransparent)) ) + else if ( !( iCbaFlags & EEikCbaFlagTransparent) ) { // Old way to render if( !AknsDrawUtils::Background( skin, cc, this, gc, rect ) ) @@ -5224,18 +5225,29 @@ AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screen ); TBool isLandscape( Layout_Meta_Data::IsLandscapeOrientation() ); - TBool flatLscLayout( isLandscape && - AknStatuspaneUtils::FlatLayoutActive() ); + TInt spLayout( AknStatuspaneUtils::CurrentStatusPaneLayoutResId() ); + + // Treat the empty status pane layout the same way as the flat layout + // in landscape orientation, as the CBA layout is the same in both. + TBool flatLscLayout( + isLandscape && + ( spLayout == R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT || + spLayout == R_AVKON_STATUS_PANE_LAYOUT_IDLE_FLAT || + spLayout == R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT || + spLayout == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT || + spLayout == R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT_NO_SOFTKEYS || + spLayout == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS || + spLayout == R_AVKON_STATUS_PANE_LAYOUT_EMPTY ) ); // We must check for landscape mode bottom softkeys. TInt bottomPaneVariety = isLandscape ? ( flatLscLayout ? 2 : 6 ) : 1; - + + // Skip application_window between screen and area_bottom_pane since + // screen and application_window are always the same. TAknWindowComponentLayout controlPane( DoCompose( - AknLayoutScalable_Avkon::application_window( 0 ), - DoCompose( - AknLayoutScalable_Avkon::area_bottom_pane( bottomPaneVariety ), - AknLayoutScalable_Avkon::control_pane() ) ) ); + AknLayoutScalable_Avkon::area_bottom_pane( bottomPaneVariety ), + AknLayoutScalable_Avkon::control_pane() ) ); TAknLayoutRect cbarect; cbarect.LayoutRect( screen, controlPane.LayoutLine() ); @@ -5250,7 +5262,7 @@ // Set the softkey frame rectangles in touch layouts. if ( iExtension && AknLayoutUtils::PenEnabled() ) - { + { TAknLayoutRect layoutRect; TBool frameSizeChanged( EFalse ); @@ -7238,28 +7250,6 @@ // --------------------------------------------------------------------------- -// CEikCba::SetFadeState -// Sets the CBA faded if it's contents are empty. -// --------------------------------------------------------------------------- -// -void CEikCba::SetFadeState() - { - _AKNTRACE_FUNC_ENTER; - TBool canBeFaded = - IsEmpty() && !( ( iCbaFlags & EEikCbaFlagTransparent ) - || ( iExtension && iExtension->iEnablePostingTransparency ) ); - - // No unfading when system is faded - if ( !( !canBeFaded - && static_cast( iCoeEnv->AppUi() )->IsFaded() ) ) - { - Window().SetFaded( canBeFaded, RWindowTreeNode::EFadeIncludeChildren ); - } - _AKNTRACE_FUNC_EXIT; - } - - -// --------------------------------------------------------------------------- // CEikCba::UpdateLabels // Updates softkey labels in case of embedded softkeys. // --------------------------------------------------------------------------- @@ -7851,6 +7841,60 @@ } +// --------------------------------------------------------------------------- +// CEikCba::UpdateMultipleMarkingSoftkey +// Updates RSK when multiple marking is activated or deactivated. +// --------------------------------------------------------------------------- +// +void CEikCba::UpdateMultipleMarkingSoftkey() + { + _AKNTRACE_FUNC_ENTER; + if ( iFlags.IsSet( ECbaSingleClickEnabled ) + && iExtension && iExtension->iItemActionMenu ) + { + TBool markingActive( + iExtension->iItemActionMenu->MarkingMode( + ).MultipleMarkingActive() ); + TBool markingActivated( iFlags.IsSet( ECbaMultipleMarkingActive ) ); + if ( markingActive && !markingActivated ) + { + TRAPD( error, + AddCommandSetToStackL( R_AVKON_SOFTKEYS_OPTIONS_CANCEL ) ); + + if ( error == KErrNone ) + { + iFlags.Set( ECbaMultipleMarkingActive ); + } + } + else if ( !markingActive && markingActivated ) + { + RemoveCommandFromStack( + KControlArrayCBAButton1Posn, EAknSoftkeyOptions ); + RemoveCommandFromStack( + KControlArrayCBAButton2Posn, EAknSoftkeyCancel ); + iFlags.Clear( ECbaMultipleMarkingActive ); + } + } + _AKNTRACE_FUNC_EXIT; + } + + +// --------------------------------------------------------------------------- +// CEikCba::CommandChangeAllowed +// +// --------------------------------------------------------------------------- +// +TBool CEikCba::CommandChangeAllowed() + { + if ( iFlags.IsSet( ECbaSingleClickEnabled ) + && iFlags.IsSet( ECbaMultipleMarkingActive ) ) + { + return EFalse; + } + return ETrue; + } + + // // class CEikCbaButton // diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/dlginc/aknrecordinggc.h --- a/uifw/EikStd/dlginc/aknrecordinggc.h Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/dlginc/aknrecordinggc.h Tue May 11 16:27:42 2010 +0300 @@ -165,7 +165,9 @@ ESetBrushStyle, EDrawRect, EClear, - EDrawLine + EDrawLine, + EUseBrushPattern, + EDiscardBrushPattern }; public: diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/dlgsrc/AknMediatorFacade.cpp --- a/uifw/EikStd/dlgsrc/AknMediatorFacade.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/dlgsrc/AknMediatorFacade.cpp Tue May 11 16:27:42 2010 +0300 @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include "AknMediatorFacade.h" #include "AknMediatorObserver.h" diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/dlgsrc/EIKCAPC.CPP --- a/uifw/EikStd/dlgsrc/EIKCAPC.CPP Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/dlgsrc/EIKCAPC.CPP Tue May 11 16:27:42 2010 +0300 @@ -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" @@ -283,7 +283,8 @@ * Extension class for additional data members. * */ -NONSHARABLE_CLASS( CEikCapCExtension ): public MEikFormAnimObserver +NONSHARABLE_CLASS( CEikCapCExtension ) : public CBase, + public MEikFormAnimObserver { friend class CEikCaptionedControl ; @@ -379,7 +380,7 @@ iViewModeHighlightControlContext ( NULL ) , iEditModeHighlightControlContextPressed( NULL ), iViewModeHighlightControlContextPressed( NULL ), - iPreviousRect( TPoint(0, 0), TSize(0, 0) ) , + iPreviousRect( 0, 0, 0, 0 ), iPreviousState( EFalse ) , iPressDownEffect( EFalse ), iXOffsetForDataPaneInEditMode( ELayoutEmpty ) , @@ -389,6 +390,7 @@ , iIndicator(NULL), iIndicator2(NULL), iObserver(NULL), + iSimulatedDownEvent( EFalse ), iFeedback( MTouchFeedback::Instance() ), iIdle(NULL), iIdleData(NULL), @@ -400,7 +402,7 @@ iUsesSingleClick = iAvkonAppUi->IsSingleClickCompatible(); } _AKNTRACE_FUNC_EXIT; - }; + } CEikCapCExtension::~CEikCapCExtension() { @@ -488,26 +490,24 @@ && ( aPointerEvent.iType == TPointerEvent::EButton1Down || aPointerEvent.iType == TPointerEvent::EButton1Up ) ) { - // Check control type TBool edwinControl( LaunchInputType() ); TBool simulate = EFalse; - if ( aPointerEvent.iType == TPointerEvent::EButton1Down - && iSelf->Rect().Contains( aPointerEvent.iPosition ) - && !iSelf->iControl->Rect().Contains( - aPointerEvent.iPosition ) ) + + if ( iSelf->Rect().Contains( aPointerEvent.iPosition ) ) { - iSimulatedDownEvent = ETrue; - if ( !edwinControl ) + if ( aPointerEvent.iType == TPointerEvent::EButton1Down && + !iSelf->iControl->Rect().Contains( aPointerEvent.iPosition ) ) + { + iSimulatedDownEvent = ETrue; + simulate = ETrue; + } + else if ( aPointerEvent.iType == TPointerEvent::EButton1Up && + iSimulatedDownEvent ) { simulate = ETrue; } } - else if ( aPointerEvent.iType == TPointerEvent::EButton1Up - && iSimulatedDownEvent ) - { - simulate = ETrue; - } // Simulate pointer event to control if ( simulate && !edwinControl ) @@ -519,23 +519,39 @@ } // With edwin do action directly (due to cursor problems) - else if ( edwinControl && simulate - && aPointerEvent.iType == TPointerEvent::EButton1Up ) + else if ( edwinControl && + simulate && + ( aPointerEvent.iType == TPointerEvent::EButton1Up || + aPointerEvent.iType == TPointerEvent::EButton1Down ) ) { - CAknExtendedInputCapabilities* input( NULL ); - iSelf->iControl->InputCapabilities().ObjectProvider( - )->MopGetObjectNoChaining( input ); - if ( input ) + // Basic list feedback is given instead of sensitive edit + // feedback when tapping editor fields in forms. + if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) + { + iFeedback->InstantFeedback( iSelf->iControl, + ETouchFeedbackList ); + } + else { - iFeedback->InstantFeedback( - iSelf->iControl, ETouchFeedbackEdit, - ETouchFeedbackVibra, aPointerEvent ); - input->ReportEventL( + iFeedback->InstantFeedback( iSelf->iControl, + ETouchFeedbackList, + ETouchFeedbackVibra, + aPointerEvent ); + + CAknExtendedInputCapabilities* input( NULL ); + iSelf->iControl->InputCapabilities().ObjectProvider( + )->MopGetObjectNoChaining( input ); + + if ( input ) + { + input->ReportEventL( CAknExtendedInputCapabilities::\ - MAknEventObserver::EActivatePenInputRequest, + MAknEventObserver::EActivatePenInputRequest, NULL ); + } } } + if ( aPointerEvent.iType == TPointerEvent::EButton1Up ) { iSimulatedDownEvent = EFalse; @@ -1405,25 +1421,28 @@ return EFalse; } -void CEikCaptionedControl::ScrollBackEditor() -{ -_AKNTRACE_FUNC_ENTER; - // - // For long single-line edwin, scroll horizontally to show beginning of the edwin - // when focus changes away from the edwin. - // - if ( iIsEditable && ControlIsAnEdwin(iControlType) ) - { - delete iExtension->iIdle; - delete iExtension->iIdleData; - iExtension->iIdleData = new (ELeave) CIdleCallbackData; - iExtension->iIdleData->iCtrl = this; - iExtension->iIdleData->iExt = iExtension; - iExtension->iIdle = CIdle::NewL(0); - iExtension->iIdle->Start(TCallBack(&IdleCallback, iExtension->iIdleData)); - } -_AKNTRACE_FUNC_EXIT; -} +void CEikCaptionedControl::ScrollBackEditorL() + { + _AKNTRACE_FUNC_ENTER; + // + // For long single-line edwin, scroll horizontally to show beginning + // of the edwin when focus changes away from the edwin. + // + if ( iIsEditable && ControlIsAnEdwin( iControlType ) ) + { + delete iExtension->iIdle; + iExtension->iIdle = NULL; + delete iExtension->iIdleData; + iExtension->iIdleData = NULL; + iExtension->iIdleData = new (ELeave) CIdleCallbackData; + iExtension->iIdleData->iCtrl = this; + iExtension->iIdleData->iExt = iExtension; + iExtension->iIdle = CIdle::NewL( 0 ); + iExtension->iIdle->Start( + TCallBack( &IdleCallback, iExtension->iIdleData ) ); + } + _AKNTRACE_FUNC_EXIT; + } EXPORT_C void CEikCaptionedControl::FocusChanged(TDrawNow aDrawNow) { @@ -1438,7 +1457,7 @@ } else if( iIsCurrentLine && !iIsEditable ) // Current and in view mode { - CAknAppUi* aui = static_cast(CEikonEnv::Static()->AppUi()); + CAknAppUi* aui = static_cast(iEikonEnv->AppUi()); if( aui->IsForeground() ) { iExtension->iAnimation->Play(); @@ -1839,14 +1858,14 @@ // TAknsQsnTextColorsIndex CEikCaptionedControl::TextColorIndex() const { - TAknsQsnTextColorsIndex colorIndex = EAknsCIQsnTextColorsCG8; + TAknsQsnTextColorsIndex colorIndex = EAknsCIQsnTextColorsCG6; // Note control doesn't use highlight text color if ( iControlType != EAknCtNote ) { if ( iIsCurrentLine && iDialogPage->HighlightVisible() ) { - colorIndex = EAknsCIQsnTextColorsCG10; + colorIndex = EAknsCIQsnTextColorsCG8; } } @@ -2002,23 +2021,56 @@ } } } - if (iIsFormControl) + + TBool edwinControl( ControlIsAnEdwin( iControlType ) ); + + if ( iIsFormControl ) { - if ( PressedDownState()&& - aPointerEvent.iType == TPointerEvent::EButton1Down ) + if ( !PressedDownState() && + aPointerEvent.iType == TPointerEvent::EButton1Down ) { SetPressedDownState( ETrue ); - DrawDeferred(); + DrawDeferred(); } - else if(aPointerEvent.iType == TPointerEvent::EButton1Up) + else if ( aPointerEvent.iType == TPointerEvent::EButton1Up ) { - _AKNTRACE("TPointerEvent::EButton1Up"); + _AKNTRACE( "TPointerEvent::EButton1Up" ); SetPressedDownState( EFalse ); DrawDeferred(); - } + } + + if ( ( aPointerEvent.iType == TPointerEvent::EButton1Down || + aPointerEvent.iType == TPointerEvent::EButton1Up ) && + iIsEditable && + edwinControl && + iExtension && + iExtension->iFeedback && + iControl->Rect().Contains( aPointerEvent.iPosition ) ) + { + CEikEdwin* edwin = static_cast( iControl ); + if ( edwin && + ( edwin->UserFlags() & CEikEdwin::EDisplayOnly || + edwin->IsReadOnly() ) ) + { + // For edwins in view only mode we must produce the feedback + // here, as the edwin itself doesn't. + if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) + { + iExtension->iFeedback->InstantFeedback( iControl, + ETouchFeedbackList ); + } + else + { + iExtension->iFeedback->InstantFeedback( iControl, + ETouchFeedbackList, + ETouchFeedbackVibra, + aPointerEvent ); + } + } + } } - if ( !iIsEditable && (ControlIsAnEdwin(iControlType) || ControlIsAMfne(iControlType)) + if ( !iIsEditable && ( edwinControl || ControlIsAMfne( iControlType ) ) &&( iDialogPage && CEikDialogPage::EDouble == iDialogPage->FormLayout() )) { _AKNTRACE_FUNC_EXIT; @@ -2027,7 +2079,7 @@ CCoeControl::HandlePointerEventL(aPointerEvent); - if ( iExtension ) + if ( iExtension && iIsFormControl ) { iExtension->SimulatePointerEventToControlL( aPointerEvent ); } diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/dlgsrc/EIKDIALG.CPP --- a/uifw/EikStd/dlgsrc/EIKDIALG.CPP Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/dlgsrc/EIKDIALG.CPP Tue May 11 16:27:42 2010 +0300 @@ -84,10 +84,10 @@ // TBool CbaEmbeddedInDialog( const TInt& aFlags ) { - return AknLayoutUtils::PenEnabled() && - !( aFlags & EEikDialogFlagFillAppClientRect ) && + return !( aFlags & EEikDialogFlagFillAppClientRect ) && !( aFlags & EEikDialogFlagFillScreen ) && - !( aFlags & EEikDialogFlagVirtualInput ); + !( aFlags & EEikDialogFlagVirtualInput ) && + !( aFlags & EEikDialogFlagNoEmbeddedSoftkeys ); } @@ -280,7 +280,40 @@ EnableContentObserver( ETrue ); + // Extension member variable iDeleteEmbeddedCba is used to track whether + // dialog's implementation of CCoeControl::SizeChanged gets called. If it + // isn't then embedded softkeys won't work. + CEikDialogExtension* extension = Extension(); + TBool checkCba = extension && iButtonGroupContainer + && CbaEmbeddedInDialog( iDialogFlags ); + + if ( checkCba ) + { + extension->iDeleteEmbeddedCba = ETrue; + } + Layout(); + + // At this point CBA's rect should be correctly set. If it isn't, then + // assume that dialog didn't properly call CEikDialog::SizeChanged thus + // embedded softkeys won't work. + // In that case softkeys are deleted and re-created as a window-owning + // component in "legacy" way. + if ( checkCba && extension->iDeleteEmbeddedCba + && extension->iButtonGroupResourceId != 0 ) + { + delete iButtonGroupContainer; + iButtonGroupContainer = NULL; + iButtonGroupContainer = CEikButtonGroupContainer::NewL( + CEikButtonGroupContainer::ECba, + CEikButtonGroupContainer::EHorizontal, + iButtonCommandObserver, + extension->iButtonGroupResourceId, + 0 ); + + iDialogFlags |= EEikDialogFlagNoEmbeddedSoftkeys; + } + PostLayoutDynInitL(); _AKNTRACE_FUNC_EXIT; } @@ -773,6 +806,11 @@ iButtonCommandObserver, aResourceId, *this, flags ); EnableContentObserver( ETrue ); + + if ( Extension() ) + { + Extension()->iButtonGroupResourceId = aResourceId; + } AknGlobalPopupPriorityController::AddSubPopupL(*this, *iButtonGroupContainer->ButtonGroup()->AsControl()); AknGlobalPopupPriorityController::AddPopupToControlStackL(*iButtonGroupContainer->ButtonGroup()->AsControl(), ECoeStackPriorityCba, ECoeStackFlagRefusesFocus); @@ -913,6 +951,7 @@ */ EXPORT_C TSize CEikDialog::PreferredSize(const TSize& aMaxSize) const { + _AKNTRACE_FUNC_ENTER; if (iDialogFlags&EEikDialogFlagFillScreen) return iEikonEnv->ScreenDevice()->SizeInPixels(); else if (iDialogFlags&EEikDialogFlagFillAppClientRect) @@ -927,20 +966,24 @@ CAknView* view = iAvkonViewAppUi->View(uid.iViewUid); if (view) { + _AKNTRACE_FUNC_EXIT; return view->ClientRect().Size(); } else { + _AKNTRACE_FUNC_EXIT; return iEikonEnv->EikAppUi()->ClientRect().Size(); } } else { + _AKNTRACE_FUNC_EXIT; return iEikonEnv->EikAppUi()->ClientRect().Size(); } } else { + _AKNTRACE_FUNC_EXIT; return iEikonEnv->EikAppUi()->ClientRect().Size(); } } @@ -991,6 +1034,7 @@ } } + _AKNTRACE_FUNC_EXIT; return preferredSize; } @@ -1059,7 +1103,12 @@ cba->SetRect( TRect(0, 0, 0, 0 ) ); } } - } + + if ( Extension() ) + { + Extension()->iDeleteEmbeddedCba = EFalse; + } + } if (iTitleBar) { TRect nullRect(0,0,0,0); @@ -1184,6 +1233,7 @@ */ EXPORT_C void CEikDialog::Layout() { + _AKNTRACE_FUNC_ENTER; TAknWindowLineLayout windowLineLayoutScreen = AknLayoutScalable_Avkon::Screen().LayoutLine(); TRect rectZero = TRect(0,0,0,0); TAknLayoutRect layoutRect; @@ -1192,7 +1242,10 @@ TSize maxSize = rectScreen.Size(); + _AKNTRACE( "size = %d x %d", iSize.iWidth, iSize.iHeight ); SetSizeAndPosition(PreferredSize( maxSize )); + _AKNTRACE( "size = %d x %d", iSize.iWidth, iSize.iHeight ); + _AKNTRACE_FUNC_EXIT; } /** @@ -1948,6 +2001,7 @@ CAknAppUi* aknAppUi = static_cast(iEikonEnv->EikAppUi()); if (!(iDialogFlags & EEikDialogFlagDelayEffects) + && IsFocusedWindowGroup( this ) && GfxTransEffect::IsRegistered(this) && IsVisible() && effectButton #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS && !(iDialogFlags & EEikDialogFlagSleeping) @@ -1981,6 +2035,9 @@ GfxTransEffect::NotifyExternalState(ECaptureComponentsAbort, (const TDesC8*)this); GfxTransEffect::Abort(this); } + + // Draw again in cast any content change in OkToExitL + DrawDeferred(); _AKNTRACE("CEikDialog::TryExitL return with OkToExitL false"); return; diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/dlgsrc/EIKDPAGE.CPP --- a/uifw/EikStd/dlgsrc/EIKDPAGE.CPP Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/dlgsrc/EIKDPAGE.CPP Tue May 11 16:27:42 2010 +0300 @@ -99,15 +99,25 @@ static CDialogPageExtension* NewL(); ~CDialogPageExtension(); - void Feedback( CEikDialogPage* aControl, TTouchLogicalFeedback aFeedback ) const; + void Feedback( const CEikDialogPage& aControl, + TTouchLogicalFeedback aFeedback ) const; + /** - * Produces vibra-only feedback. Event filtering by pointer event is used.. + * Produces vibra-only feedback. + * Event filtering by pointer event is used. */ - void SilentFeedback( CEikDialogPage* aDPage, + void SilentFeedback( const CEikDialogPage& aDPage, TTouchLogicalFeedback aFeedback, const TPointerEvent& aPointerEvent ) const; - - void HandleFormFeedback( CEikDialogPage* aControl, const TPointerEvent& aPointerEvent, TInt aTouchedLineIndex, TInt aCurrentLine ); + + /** + * Produces feedback in cases where the captioned control itself + * doesn't do it. + */ + void HandleFormFeedback( const CEikDialogPage& aDPage, + const TPointerEvent& aPointerEvent, + TInt aTouchedLineIndex, + TInt aCurrentLine ); protected: void ConstructL(); @@ -141,7 +151,6 @@ TInt iLastTouchedLine; TPoint iSynchronizedPosition; TBool iScrolling; - TBool iScrolled; TBool iInitialLayoutDone; TBool iSetInitialFocusDone; TBool iHandlingResourceChange; @@ -160,6 +169,8 @@ TBool iUsesSingleClick; // It is used to distinguish if the focus item has changed. TBool iFocusItemChanged; + // Boolean to check if form was scrolling on button down + TBool iWasScrolling; }; CDialogPageExtension::CDialogPageExtension() @@ -201,14 +212,18 @@ } void CDialogPageExtension::HandleFormFeedback( - CEikDialogPage* aDPage, + const CEikDialogPage& aDPage, const TPointerEvent& aPointerEvent, TInt aTouchedLineIndex, TInt aCurrentLine ) { + CEikCaptionedControl* firstLine( aDPage.LineOnPageOrNull( 0 ) ); + TBool viewMode( !aDPage.IsEditable() ); + // note, that iFormControl is checked in Feedback() if ( aPointerEvent.iType == TPointerEvent::EButton1Down && - aCurrentLine != aTouchedLineIndex && aDPage->LineOnPageOrNull( 0 ) ) + aCurrentLine != aTouchedLineIndex && + firstLine ) { // feedback for edit/view mode form, when non-focused line is clicked // feedback for focused item is responsibility of the item @@ -219,58 +234,67 @@ } iFocusItemChanged = ETrue; } - - else if ( aPointerEvent.iType == TPointerEvent::EButton1Down && - aTouchedLineIndex == aCurrentLine && aDPage->LineOnPageOrNull( 0 ) ) + else if ( viewMode && firstLine ) { - // Feedback for view mode form, when focused item is - // clicked. Basically same case as for msk simulation later on - // the function, but on pointer - // down. iExtension->iFocusedClicked is not valid here, since - // it can't be known in this phase whether user drags pointer - // away. - Feedback( aDPage, ETouchFeedbackList ); - iFocusItemChanged = EFalse; - } - - else if ( aPointerEvent.iType == TPointerEvent::EButton1Up && - aDPage->LineOnPageOrNull( 0 ) ) - {// when focus changed, it should not send feedback on up event. - //when up event comes, aTouchedLineIndex always equal to aCurrentLine - if ( !iFocusItemChanged ) + if ( aPointerEvent.iType == TPointerEvent::EButton1Down && + aTouchedLineIndex == aCurrentLine ) { - SilentFeedback( aDPage, ETouchFeedbackList, aPointerEvent ); + // Feedback for view mode form, when focused item is + // clicked. Basically same case as for msk simulation later on + // the function, but on pointer + // down. iExtension->iFocusedClicked is not valid here, since + // it can't be known in this phase whether user drags pointer + // away. + Feedback( aDPage, ETouchFeedbackList ); + iFocusItemChanged = EFalse; + } + else if ( aPointerEvent.iType == TPointerEvent::EButton1Up ) + { + // When focus changed, it should not send feedback on up event. + // When up event comes, aTouchedLineIndex always equal to + // aCurrentLine. + if ( !iFocusItemChanged ) + { + SilentFeedback( aDPage, ETouchFeedbackList, aPointerEvent ); + } } } } -void CDialogPageExtension::Feedback( CEikDialogPage* aDPage, + +void CDialogPageExtension::Feedback( const CEikDialogPage& aDPage, TTouchLogicalFeedback aFeedback ) const { - if ( aDPage - && aDPage->IsForm() - && iFeedback - && !aDPage->IsDimmed() - && aDPage->IsVisible() ) + if ( iFeedback && + aDPage.IsForm() && + !aDPage.IsDimmed() && + aDPage.IsVisible() && + aDPage.IsEditable() ) { iFeedback->InstantFeedback( aFeedback ); } } -void CDialogPageExtension::SilentFeedback( CEikDialogPage* aDPage, - TTouchLogicalFeedback aFeedback, - const TPointerEvent& aPointerEvent ) const + +void CDialogPageExtension::SilentFeedback( + const CEikDialogPage& aDPage, + TTouchLogicalFeedback aFeedback, + const TPointerEvent& aPointerEvent ) const { - if ( aDPage - && aDPage->IsForm() - && iFeedback - && !aDPage->IsDimmed() - && aDPage->IsVisible() ) + if ( iFeedback && + aDPage.IsForm() && + !aDPage.IsDimmed() && + aDPage.IsVisible() && + aDPage.IsEditable() ) { - iFeedback->InstantFeedback( aDPage, aFeedback, ETouchFeedbackVibra, aPointerEvent ); + iFeedback->InstantFeedback( &aDPage, + aFeedback, + ETouchFeedbackVibra, + aPointerEvent ); } } + class CAknPaneScroll : public CBase { public: @@ -846,12 +870,10 @@ switch (aFocusNavigationMode) { case ECyclic: - iExtension->iScrolled = ETrue; response=HandleCyclicFocusNavigationKeyL(aKeyEvent); break; case ENonCyclic: - iExtension->iScrolled = ETrue; response=HandleNonCyclicFocusNavigationKeyL(aKeyEvent); break; @@ -1069,7 +1091,7 @@ TInt oldLine = iCurrentLine; if( aLine != iCurrentLine ) - (*iLines)[iCurrentLine]->ScrollBackEditor(); + (*iLines)[iCurrentLine]->ScrollBackEditorL(); ChangeFocusTo( aLine ); ExposeLine( iCurrentLine, EFalse ); @@ -1882,7 +1904,6 @@ case EEikScrollPageUp: case EEikScrollPageDown: case EEikScrollThumbDragVert: - iExtension->iScrolled = ETrue; iExtension->iScrolling = ETrue; iLines->MoveLineToScreen( iCurrentLine, 0, EFalse ); break; @@ -2114,7 +2135,7 @@ CEikEdwin* edwinPtr = STATIC_CAST( CEikEdwin*, theNewLine->iControl ); if( edwinPtr->Text() ) { - edwinPtr->SetCursorPosL( edwinPtr->TextLength(), EFalse ); + TRAP_IGNORE( edwinPtr->SetCursorPosL( edwinPtr->TextLength(), EFalse ) ); } } @@ -2128,10 +2149,10 @@ if ( oldLine != -1 ) { iLines->MoveLineToScreen( oldLine, 0, EFalse ); - RecordLineL( oldLine ); + TRAP_IGNORE( RecordLineL( oldLine ) ); } - RecordLineL( iCurrentLine ); + TRAP_IGNORE( RecordLineL( iCurrentLine ) ); iLines->MoveLineToScreen( iCurrentLine, iPhysics->ViewTopY(), ETrue ); } _AKNTRACE_FUNC_EXIT; @@ -2845,10 +2866,13 @@ } } iExtension->iScrolling = EFalse; - iExtension->HandleFormFeedback( this, aPointerEvent, touchedLine, iCurrentLine ); + iExtension->HandleFormFeedback( *this, + aPointerEvent, + touchedLine, + iCurrentLine ); - TBool wasScrolling = ( iPhysics->OngoingPhysicsAction() != - CAknPhysics::EAknPhysicsActionNone ); + iExtension->iWasScrolling = ( iPhysics->OngoingPhysicsAction() != + CAknPhysics::EAknPhysicsActionNone ); iPhysics->Stop(); iExtension->iLastTouchedLine = touchedLine; iExtension->iDragStartPosition = aPointerEvent.iPosition; @@ -2861,10 +2885,17 @@ if ( iExtension->iUsesSingleClick ) { - if ( !wasScrolling ) + if ( !iExtension->iWasScrolling ) { - HighlightVisible( ETrue ); - HighlightTimerCallBack( this ); + if ( iFormFlags & EEikFormDisableHighlightInViewMode ) + { + HighlightVisible( EFalse ); + } + else + { + HighlightVisible( ETrue ); + HighlightTimerCallBack( this ); + } } } else @@ -2918,7 +2949,6 @@ } iExtension->iScrolling = ETrue; - iExtension->iScrolled = ETrue; iExtension->iLastPointerPos = aPointerEvent.iPosition; RemovePressedDownHighlight(); iLines->MoveLineToScreen( iCurrentLine, 0, EFalse ); @@ -2943,8 +2973,11 @@ if ( aPointerEvent.iType == TPointerEvent::EButton1Up ) { - _AKNTRACE( "TPointerEvent::EButton1Up" ); - iExtension->HandleFormFeedback( this, aPointerEvent, touchedLine, iCurrentLine ); + _AKNTRACE( "TPointerEvent::EButton1Up" ); + iExtension->HandleFormFeedback( *this, + aPointerEvent, + touchedLine, + iCurrentLine ); if ( !IsEditable() && iExtension->iUsesSingleClick && HighlightVisible() ) { @@ -2966,7 +2999,7 @@ { iExtension->iScrolling = EFalse; - if ( iPageObserver && GrabbingComponent() ) + if ( iPageObserver && GrabbingComponent() && !iExtension->iWasScrolling ) { iPageObserver->HandleDialogPageEventL( MEikDialogPageObserver::EDialogPageTapped ); } @@ -2979,12 +3012,14 @@ { // feedback is given every time when new item // appears to the screen -> follows the visual feedback - iExtension->SilentFeedback( this, ETouchFeedbackSensitiveList, aPointerEvent ); + iExtension->SilentFeedback( *this, + ETouchFeedbackSensitiveList, + aPointerEvent ); + // It might happen that there are no drag events between down and // up if the distance is short enough. iExtension->iHighlightTimer->Cancel(); iExtension->iScrolling = ETrue; - iExtension->iScrolled = ETrue; iLines->MoveLineToScreen( iCurrentLine, 0, EFalse ); RemovePressedDownHighlight(); } @@ -3020,9 +3055,9 @@ mskPress = ETrue; callDefaultImplementation = EFalse; } - if ( callDefaultImplementation && ( iExtension->iFocusedClicked || - iExtension->iUsesSingleClick ) && newLine ) + iExtension->iUsesSingleClick ) && newLine && + !iExtension->iWasScrolling ) { if ( newLine->ControlIsAPopfield( controlType ) ) { @@ -3048,7 +3083,7 @@ key.iCode=EKeyOK; key.iModifiers=0; key.iRepeats = 0; - CEikonEnv::Static()->SimulateKeyEventL( key, EEventKey ); + iEikonEnv->SimulateKeyEventL( key, EEventKey ); } _AKNTRACE_FUNC_EXIT; } @@ -3121,9 +3156,10 @@ if ( LineIsFocusable( touchedLine ) ) { - TRAP_IGNORE( PrepareForFocusTransitionL() ); - ChangeFocusToAndExposeL( touchedLine ); - LineChangedL( (*iLines)[touchedLine]->iId ); + TRAP_IGNORE( PrepareForFocusTransitionL(); + ChangeFocusToAndExposeL( touchedLine ); + LineChangedL( (*iLines)[touchedLine]->iId ); + ); } } } @@ -3187,11 +3223,15 @@ { if( iPhysics->OngoingPhysicsAction() == CAknPhysics::EAknPhysicsActionDragging ) { - iExtension->Feedback( this, ETouchFeedbackSensitiveList ); + iExtension->Feedback( *this, ETouchFeedbackSensitiveList ); } - else if( iPhysics->OngoingPhysicsAction() == CAknPhysics::EAknPhysicsActionFlicking) + else if( iPhysics->OngoingPhysicsAction() == CAknPhysics::EAknPhysicsActionFlicking ) { - iExtension->SilentFeedback( this, ETouchFeedbackSensitiveList, TPointerEvent() ); + iExtension->SilentFeedback( *this, ETouchFeedbackSensitiveList, TPointerEvent() ); + } + else if( iPhysics->OngoingPhysicsAction() == CAknPhysics::EAknPhysicsActionBouncing ) + { + iExtension->SilentFeedback( *this, ETouchFeedbackSensitiveList, TPointerEvent() ); } } } @@ -3201,11 +3241,15 @@ { if( iPhysics->OngoingPhysicsAction() == CAknPhysics::EAknPhysicsActionDragging ) { - iExtension->Feedback( this, ETouchFeedbackSensitiveList ); + iExtension->Feedback( *this, ETouchFeedbackSensitiveList ); } - else if( iPhysics->OngoingPhysicsAction() == CAknPhysics::EAknPhysicsActionFlicking) + else if( iPhysics->OngoingPhysicsAction() == CAknPhysics::EAknPhysicsActionFlicking ) { - iExtension->SilentFeedback( this, ETouchFeedbackSensitiveList, TPointerEvent() ); + iExtension->SilentFeedback( *this, ETouchFeedbackSensitiveList, TPointerEvent() ); + } + else if( iPhysics->OngoingPhysicsAction() == CAknPhysics::EAknPhysicsActionBouncing ) + { + iExtension->SilentFeedback( *this, ETouchFeedbackSensitiveList, TPointerEvent() ); } } } @@ -3375,7 +3419,7 @@ currentLine->SetPressedDownState( EFalse ); if ( IsForm() ) { - RecordLineL( iCurrentLine ); + TRAP_IGNORE( RecordLineL( iCurrentLine ) ); } } } @@ -3649,16 +3693,19 @@ clear = ETrue; } - if ( focusItem || iExtension->iFocusedClicked) + if ( focusItem || iExtension->iFocusedClicked ) { - iExtension->HandleFormFeedback( this, aPointerEvent, touchedLineIndex, iCurrentLine ); + iExtension->HandleFormFeedback( *this, + aPointerEvent, + touchedLineIndex, + iCurrentLine ); } if ( focusItem ) { PrepareForFocusTransitionL(); - (*iLines)[iCurrentLine]->ScrollBackEditor(); + (*iLines)[iCurrentLine]->ScrollBackEditorL(); ShowFocus( EFalse, EFalse ); iCurrentLine = touchedLineIndex; ShowFocus( ETrue, EFalse ); @@ -3677,7 +3724,7 @@ key.iCode=EKeyOK; key.iModifiers=0; key.iRepeats = 0; - CEikonEnv::Static()->SimulateKeyEventL(key, EEventKey); + iEikonEnv->SimulateKeyEventL(key, EEventKey); // SimulateKeyEventL has to be last, because it can // possibly delete the dialog.. Must not do anything // to the dialog after the call. diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/EikStd/dlgsrc/aknrecordinggc.cpp --- a/uifw/EikStd/dlgsrc/aknrecordinggc.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/EikStd/dlgsrc/aknrecordinggc.cpp Tue May 11 16:27:42 2010 +0300 @@ -189,6 +189,14 @@ gc->DrawLine( item->iRect.iTl, item->iRect.iBr ); } break; + + case CBufferItem::EUseBrushPattern: + gc->UseBrushPattern( item->iBitmap ); + break; + + case CBufferItem::EDiscardBrushPattern: + gc->DiscardBrushPattern(); + break; } } @@ -612,8 +620,15 @@ // From class CWindowGc // --------------------------------------------------------------------------- // -void CAknRecordingGc::UseBrushPattern( const CFbsBitmap* /*aDevice*/ ) +void CAknRecordingGc::UseBrushPattern( const CFbsBitmap* aDevice ) { + CBufferItem* buffer = BufferItem(); + buffer->iType = CBufferItem::EUseBrushPattern; + + CFbsBitmap* bitmap = NULL; + TRAP_IGNORE( bitmap = new (ELeave) CFbsBitmap() ); + bitmap->Duplicate(aDevice->Handle()); + buffer->iBitmap = bitmap; } @@ -623,6 +638,8 @@ // void CAknRecordingGc::DiscardBrushPattern() { + CBufferItem* buffer = BufferItem(); + buffer->iType = CBufferItem::EDiscardBrushPattern; } diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/eikctl/src/EIKCLB.CPP --- a/uifw/eikctl/src/EIKCLB.CPP Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/eikctl/src/EIKCLB.CPP Tue May 11 16:27:42 2010 +0300 @@ -594,17 +594,6 @@ data->SetItemCellSize( iItemCellSize ); } -void CColumnListBoxItemDrawer::DrawCurrentItemRect(const TRect& aRect) const -// -// Draw the item background -// - { - iGc->SetClippingRect(iViewRect); - iGc->SetBrushStyle(CGraphicsContext::ENullBrush); - iGc->SetPenColor(iHighlightedBackColor); // KDefaultLbxHighlightRectColor - iGc->DrawRect(aRect); - iGc->CancelClippingRect(); - } /** * Returns a pointer to the column data. Does not imply transfer of ownership. @@ -656,6 +645,12 @@ TInt pos = -1; TBool removeicon = (!aItemIsSelected && !ItemMarkReverse()) || (aItemIsSelected && ItemMarkReverse()); + + if ( Flags() & CListItemDrawer::EMarkingModeEnabled ) + { + removeicon = EFalse; + } + if ( Flags() & EDrawMarkSelection && ItemMarkPosition() != -1 && removeicon) { repl.Set( ItemMarkReplacement() ); @@ -810,8 +805,15 @@ #define ITEM_EXISTS_ONCE(x) (((x) > -1) && ((x) < iModel->NumberOfItems())) EXPORT_C void -CColumnListBoxView::Draw( const TRect* aRect ) const +CColumnListBoxView::Draw( const TRect* /*aRect*/ ) const { + // If we get here background is drawn via avkon implementation -> raise the + // corresponding flag in item drawer. + if ( iItemDrawer ) + { + iItemDrawer->SetFlags( CListItemDrawer::ENativeImplementation ); + } + if ( RedrawDisabled() || !IsVisible() ) { return; @@ -831,28 +833,7 @@ cc = lbi->ColumnData()->SkinBackgroundContext(); } - // Draw the whole background at once, this is faster than drawing - // it in separate items. - if ( listbox && listbox->BackgroundDrawingSuppressed() ) - { -#ifdef RD_UI_TRANSITION_EFFECTS_LIST - MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal( iGc ); - if ( transApi ) - { - transApi->StartDrawing( MAknListBoxTfxInternal::EListView ); - } -#endif // RD_UI_TRANSITION_EFFECTS_LIST - - AknsDrawUtils::Background( skin, cc, listbox, *iGc, *aRect ); - -#ifdef RD_UI_TRANSITION_EFFECTS_LIST - if ( transApi ) - { - transApi->StopDrawing(); - } -#endif // RD_UI_TRANSITION_EFFECTS_LIST - } - else if ( !listbox ) + if ( !listbox ) { iGc->Clear(); } @@ -860,6 +841,7 @@ TInt firstPotentialItemIndex = iTopItemIndex; TInt lastPotentialItemIndex = iTopItemIndex + NumberOfItemsThatFitInRect( iViewRect ) - 1; + TBool backgroundDrawingSuppressed = ( listbox && listbox->BackgroundDrawingSuppressed() ); if ( iModel->NumberOfItems() == 0 ) { @@ -872,6 +854,11 @@ lastPotentialItemIndex = iBottomItemIndex; } + if ( backgroundDrawingSuppressed ) + { + iGc->SetClippingRect( iViewRect ); + } + ITEM_EXISTS_BEGIN; for ( i = firstPotentialItemIndex; i <= lastPotentialItemIndex; i++ ) { @@ -884,9 +871,14 @@ break; } } + + if ( backgroundDrawingSuppressed ) + { + iGc->CancelClippingRect(); + } } - if ( listbox && !listbox->BackgroundDrawingSuppressed() ) + if ( !backgroundDrawingSuppressed ) { // Clear the unused portion of the viewing area // (this handles drawing the vertical line too :) diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/eikctl/src/EIKCLBD.CPP --- a/uifw/eikctl/src/EIKCLBD.CPP Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/eikctl/src/EIKCLBD.CPP Tue May 11 16:27:42 2010 +0300 @@ -32,6 +32,8 @@ #include #include #include +#include +#include #ifdef RD_UI_TRANSITION_EFFECTS_LIST @@ -116,7 +118,7 @@ void DeleteAnim(); void FocusGained(); void FocusLost(); - void SkinChanged(); + void SkinChangedL(); void SetControl( CCoeControl* aControl ); // Implementation of MCoeForegroundObserver @@ -141,6 +143,9 @@ CWindowGc& aGc, const TRect& aOutRect, const TRect& aInnerRect ) const; + + void LoadMarkingIconsL(); + public: //for handling column alignment struct TColumnExt { @@ -239,6 +244,7 @@ CArrayFix* iColumnExtArray; //for column alignment TRect iMarginRect; + CAknIconArray* iMarkingIconArray; }; /** @@ -306,6 +312,7 @@ iKineticScrolling = CAknPhysics::FeatureEnabled(); + LoadMarkingIconsL(); _AKNTRACE_FUNC_EXIT; } @@ -330,6 +337,13 @@ delete iColorBmp; delete iHiliBmp; delete iColumnExtArray; + + if ( iMarkingIconArray ) + { + iMarkingIconArray->ResetAndDestroy(); + } + + delete iMarkingIconArray; } MAknsControlContext* CColumnListBoxDataExtension::SkinBackgroundContext() const @@ -520,17 +534,20 @@ } } + // ----------------------------------------------------------------------------- -// CColumnListBoxDataExtension::SkinChanged +// CColumnListBoxDataExtension::SkinChangedL // ----------------------------------------------------------------------------- // -void CColumnListBoxDataExtension::SkinChanged() +void CColumnListBoxDataExtension::SkinChangedL() { DeleteAnim(); TryCreateAnimation(); CreateColorBitmapsL(); + LoadMarkingIconsL(); } + // ----------------------------------------------------------------------------- // CColumnListBoxDataExtension::SetControl // ----------------------------------------------------------------------------- @@ -1122,19 +1139,63 @@ KAknsIIDQsnFrListCenterPressed ); } + +// ----------------------------------------------------------------------------- +// CColumnListBoxDataExtension::LoadMarkingIconsL +// ----------------------------------------------------------------------------- +// +void CColumnListBoxDataExtension::LoadMarkingIconsL() + { + if ( !iMarkingIconArray ) + { + iMarkingIconArray = new ( ELeave ) CAknIconArray( 2 ); + } + else + { + iMarkingIconArray->ResetAndDestroy(); + } + + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + const TDesC& avkonIconFile = AknIconUtils::AvkonIconFileName(); + + CGulIcon* icon = AknsUtils::CreateGulIconL( skin, + KAknsIIDQgnPropCheckboxOn, + avkonIconFile, + EMbmAvkonQgn_prop_checkbox_on, + EMbmAvkonQgn_prop_checkbox_on_mask ); + + CleanupStack::PushL( icon ); + iMarkingIconArray->AppendL( icon ); + CleanupStack::Pop( icon ); + + icon = AknsUtils::CreateGulIconL( skin, + KAknsIIDQgnPropCheckboxOff, + avkonIconFile, + EMbmAvkonQgn_prop_checkbox_off, + EMbmAvkonQgn_prop_checkbox_off_mask ); + + CleanupStack::PushL( icon ); + iMarkingIconArray->AppendL( icon ); + CleanupStack::Pop( icon ); + } + + EXPORT_C CCoeControl *CColumnListBoxData::Control() const { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); return iExtension->iControl; } EXPORT_C void CColumnListBoxData::SetControl(CCoeControl *aControl) { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); iExtension->SetControl( aControl ); } EXPORT_C MAknsControlContext* CColumnListBoxData::SkinBackgroundContext() const { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); if (iExtension->iSkinEnabled) { return iExtension->iSkinControlContext; @@ -1145,12 +1206,14 @@ void CColumnListBoxData::SetSkinBackgroundContext(CAknsListBoxBackgroundControlContext *aContext) { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); delete iExtension->iSkinControlContext; iExtension->iSkinControlContext = aContext; } void CColumnListBoxData::CreatePictographInterfaceL() { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); if ( !iExtension->iPictoInterface ) { iExtension->iPictoInterface = CAknPictographInterface::NewL( @@ -1160,6 +1223,7 @@ EXPORT_C void CColumnListBoxData::SetSkinHighlightFrame(const TAknsItemID *aFrameId, const TAknsItemID *aFrameCenterId) { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); _AKNTRACE( "[%s][%s][%d].", "CColumnListBoxData", __FUNCTION__, __LINE__ ); iExtension->iSkinHighlightFrameId = aFrameId; iExtension->iSkinHighlightFrameCenterId = aFrameCenterId; @@ -1167,12 +1231,14 @@ EXPORT_C void CColumnListBoxData::SetSkinEnabledL(TBool aEnabled) { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); CListBoxData::SetSkinEnabledL(aEnabled); iExtension->iSkinEnabled = aEnabled; } EXPORT_C void CColumnListBoxData::SetSkinStyle(const TAknsItemID *aId, const TRect &aTileRect) { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); if (iExtension->iSkinControlContext) { iExtension->iSkinControlContext->SetTiledBitmap(*aId); @@ -1182,6 +1248,7 @@ EXPORT_C void CColumnListBoxData::SetListEndSkinStyle(const TAknsItemID *aId, const TRect &aTileRect) { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); if (iExtension->iSkinControlContext) { iExtension->iSkinControlContext->SetBottomBitmap(*aId); @@ -1191,6 +1258,7 @@ void CColumnListBoxData::CreateMarqueeControlL() { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); _AKNTRACE( "[%s][%s][%d].", "CColumnListBoxData", __FUNCTION__, __LINE__ ); if ( !iExtension->iMarquee ) { @@ -1210,6 +1278,7 @@ void CColumnListBoxData::ResetMarquee() { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); _AKNTRACE( "[%s][%s][%d].", "CColumnListBoxData", __FUNCTION__, __LINE__ ); if (iExtension->iMarquee) { @@ -1223,11 +1292,13 @@ TInt CColumnListBoxData::CurrentMarqueeItemIndex() { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); return iExtension->iCurrentItem; } void CColumnListBoxData::SetCurrentMarqueeItemIndex(TInt aIndex) { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); iExtension->iCurrentItem = aIndex; } @@ -1236,6 +1307,7 @@ // EXPORT_C void CColumnListBoxData::EnableMarqueeL(TBool aEnable) { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); _AKNTRACE( "[%s][%s][%d].", "CColumnListBoxData", __FUNCTION__, __LINE__ ); // CreateMarqueeControlL does nothing if marquee already exists, // so let's just call it just in case. @@ -1246,15 +1318,13 @@ EXPORT_C void CColumnListBoxData::SetSeparatorLinePosition(TAknSeparatorLinePosition aPosition) { - if (iExtension) - iExtension->iSeparatorLinePosition = aPosition; + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); + iExtension->iSeparatorLinePosition = aPosition; } EXPORT_C TAknSeparatorLinePosition CColumnListBoxData::SeparatorLinePosition() const { - if (iExtension) - return iExtension->iSeparatorLinePosition; - else - return ENoLine; + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); + return iExtension->iSeparatorLinePosition; } EXPORT_C CAknLayoutData *CColumnListBoxData::LayoutData() const { @@ -1311,12 +1381,12 @@ // D'tor // { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); delete iColumnArray; if (IconArray()) { IconArray()->ResetAndDestroy(); - if (iExtension) - delete iExtension->iIconArray; + delete iExtension->iIconArray; } delete iExtension; } @@ -1393,10 +1463,11 @@ // Set a columns width // { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); TInt index; FindColumnIndexOrAddL(index,aColumn); At(index).iWidth=aWidth; - if ( iExtension && iExtension->iUseLayoutData ) + if ( iExtension->iUseLayoutData ) { iExtension->iUseLayoutData = EFalse; CListBoxView* view = static_cast( iExtension->iControl )->View(); @@ -1467,6 +1538,7 @@ // Set a columns baseline position // { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); _AKNTRACE( "[%s][%s][%d].", "CColumnListBoxData", __FUNCTION__, __LINE__ ); TInt index; FindColumnIndexOrAddL(index,aColumn); @@ -1474,7 +1546,7 @@ // can not be nicely supported by new drawing system // --> revert to Symbian style drawing - if ( iExtension && iExtension->iUseLayoutData ) + if ( iExtension->iUseLayoutData ) { iExtension->iUseLayoutData = EFalse; #ifdef RD_UI_TRANSITION_EFFECTS_LIST @@ -1509,6 +1581,7 @@ // Set a columns vertical cap // { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); _AKNTRACE( "[%s][%s][%d].", "CColumnListBoxData", __FUNCTION__, __LINE__ ); TInt index; FindColumnIndexOrAddL(index,aColumn); @@ -1516,7 +1589,7 @@ // can not be nicely supported by new drawing system // --> revert to Symbian style drawing - if ( iExtension && iExtension->iUseLayoutData ) + if ( iExtension->iUseLayoutData ) { iExtension->iUseLayoutData = EFalse; #ifdef RD_UI_TRANSITION_EFFECTS_LIST @@ -1628,6 +1701,7 @@ // Set a columns alignment // { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); TInt index; FindColumnIndexOrAddL(index,aColumn); At(index).iAlign=aAlign; @@ -1728,10 +1802,8 @@ // Return the list of icons // { - if (iExtension) - return iExtension->iIconArray; - else - return 0; + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); + return iExtension->iIconArray; } EXPORT_C void CColumnListBoxData::SetIconArray(CArrayPtr* aArray) @@ -1739,14 +1811,9 @@ // Passes ownership of the icon list aArray (assumes any previous list has been deleted by the caller) // { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); _AKNTRACE( "[%s][%s][%d].", "CColumnListBoxData", __FUNCTION__, __LINE__ ); - if (iExtension) - iExtension->iIconArray=aArray; - else - { - aArray->ResetAndDestroy(); - delete aArray; - } + iExtension->iIconArray=aArray; } EXPORT_C CFont* CColumnListBoxData::Font(const TListItemProperties& /*aItemProperties*/, TInt aColumn) const @@ -1778,6 +1845,7 @@ void CColumnListBoxData::DrawHighLight( CWindowGc& aGc, const TRect& aRect, TBool aHighlight, MAknsSkinInstance* aSkin ) const { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); // SERIES60 Highlight drawing. if( aHighlight ) { @@ -1943,6 +2011,7 @@ TBool aHighlight, const TColors& aColors ) const { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); _AKNTRACE( "[%s][%s][%d].", "CColumnListBoxData", __FUNCTION__, __LINE__ ); __ASSERT_DEBUG( iExtension->iControl, Panic( EEikPanicNullPointer )); @@ -1960,6 +2029,22 @@ TPtrC tempText; TRgb aTextColor = aHighlight ? aColors.iHighlightedText : aColors.iText; + + TBool markingMode = EFalse; + TRect itemRect( aRect ); + + if ( listbox->View() && listbox->View()->ItemDrawer() ) + { + if ( listbox->View()->ItemDrawer()->Flags() + & CListItemDrawer::EMarkingModeEnabled + && iExtension->iMarkingIconArray + && iExtension->iMarkingIconArray->Count() == 2 ) + { + markingMode = ETrue; + itemRect.iTl.iX += + AknLayoutScalable_Avkon::list_single_graphic_pane_t1( 0 ).LayoutLine().il; + } + } MAknsSkinInstance *skin = AknsUtils::SkinInstance(); MAknsControlContext *cc = AknsDrawUtils::ControlContext( Control() ); @@ -1975,9 +2060,8 @@ if ( iExtension->iSubCellsMightIntersect ) { - CheckIfSubCellsIntersect( &textLines[0], &rectClipped[0], *aText, aRect ); + CheckIfSubCellsIntersect( &textLines[0], &rectClipped[0], *aText, itemRect ); } - #ifdef RD_UI_TRANSITION_EFFECTS_LIST MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( &aGc ); #endif // RD_UI_TRANSITION_EFFECTS_LIST @@ -2017,11 +2101,43 @@ } DrawHighLight( aGc, aRect, aHighlight, skin ); + if ( markingMode && !aItemProperties.IsSelectionHidden() ) + { + TAknLayoutRect layoutRect; + layoutRect.LayoutRect( aRect, + AknLayoutScalable_Avkon::list_single_graphic_pane_g1( 0 ) ); + + aGc.SetPenColor( aColors.iText ); + aGc.SetPenStyle( CGraphicsContext::ESolidPen ); + + CGulIcon* icon = (*iExtension->iMarkingIconArray)[1]; // unchecked + + if ( listbox->View()->ItemIsSelected( iExtension->iCurrentRow ) ) + { + icon = (*iExtension->iMarkingIconArray)[0]; + } + + CFbsBitmap* bitmap = icon->Bitmap(); + + if ( bitmap ) + { + TSize size( bitmap->SizeInPixels() ); // set size if not already + TSize targetSize( layoutRect.Rect().Size() ); + + if ( size.iWidth != targetSize.iWidth && size.iHeight != targetSize.iHeight ) + { + AknIconUtils::SetSize( bitmap, targetSize, + EAspectRatioPreservedAndUnusedSpaceRemoved ); + } + + aGc.BitBltMasked( layoutRect.Rect().iTl, bitmap, TRect( layoutRect.Rect().Size() ), icon->Mask(), EFalse ); + } + + } + // The column draw loop column = 0; TInt subCellIndex = 0; - - if ( !iExtension ) { return; } #ifdef RD_UI_TRANSITION_EFFECTS_LIST if ( transApi ) @@ -2129,7 +2245,7 @@ } TAknLayoutText textLayout; - textLayout.LayoutText( aRect, textLineLayout, usedFont ); + textLayout.LayoutText( itemRect, textLineLayout, usedFont ); // *2 == leave some room for marquee const TInt maxlen( KMaxColumnDataLength * 2 ); TBuf convBuf = text.Left(maxlen); @@ -2176,7 +2292,7 @@ { iExtension->iMarquee->UseLogicalToVisualConversion( bidiConv ); - if ( iExtension->iMarquee->DrawText( aGc, aRect, textLineLayout, convBuf, usedFont, textColor ) ) + if ( iExtension->iMarquee->DrawText( aGc, itemRect, textLineLayout, convBuf, usedFont, textColor ) ) { // all the loops have been executed textLayout.DrawText( aGc, convBuf, bidiConv, textColor ); @@ -2266,7 +2382,7 @@ TAknWindowLineLayout graphicLayout = iExtension->AtSL(subCellIndex).iGraphicLayout; TAknLayoutRect graphicRect; - graphicRect.LayoutRect(aRect,graphicLayout); + graphicRect.LayoutRect( itemRect,graphicLayout ); TSize graphicSize( graphicRect.Rect().Size() ); if ( index>=0 && IconArray() ) @@ -2309,6 +2425,7 @@ TBool aHighlight, const TColors& aColors ) const { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); _AKNTRACE( "[%s][%s][%d].", "CColumnListBoxData", __FUNCTION__, __LINE__ ); if ( aHighlight ) @@ -2342,11 +2459,28 @@ return; } + CEikListBox* listbox = static_cast( iExtension->iControl ); + TBool markingMode = EFalse; + TRect itemRect( aRect ); + + if ( listbox->View() && listbox->View()->ItemDrawer() ) + { + if ( listbox->View()->ItemDrawer()->Flags() + & CListItemDrawer::EMarkingModeEnabled && + iExtension->iMarkingIconArray && + iExtension->iMarkingIconArray->Count() == 2 ) + { + markingMode = ETrue; + itemRect.iTl.iX += + AknLayoutScalable_Avkon::list_single_graphic_pane_t1( 0 ).LayoutLine().il; + } + } + TInt extraVerticalSpace=(aRect.Height()-font->HeightInPixels()); TInt baseLineOffset=extraVerticalSpace/2+font->AscentInPixels(); - TRect textRect( aRect ); + TRect textRect( itemRect ); TRect textMRect; // textrect with margins. - textRect.iBr.iX=aRect.iTl.iX; + textRect.iBr.iX = itemRect.iTl.iX; TInt column=0; TPtrC text; @@ -2356,11 +2490,11 @@ // be too difficult to do without - and this is cleaner solution. // pass 1, figures out x-coordinates for columns. - TInt x = aRect.iTl.iX; + TInt x = itemRect.iTl.iX; TBool mirror = AknLayoutUtils::LayoutMirrored(); if (mirror) { - x = aRect.iBr.iX; + x = itemRect.iBr.iX; } TInt maxx = x; while(column <= lastColumn) @@ -2433,13 +2567,6 @@ cc = SkinBackgroundContext(); } - // aRect is list item's rect, width of which is smaller than width of the list - // with a scroll bar. List needs to draw under scroll bar anyway, so we need to - // modify given rect here. - TRect r(aRect); - - CEikListBox* listbox = static_cast( iExtension->iControl ); - #ifdef RD_UI_TRANSITION_EFFECTS_LIST MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( &aGc ); @@ -2475,9 +2602,7 @@ #endif // RD_UI_TRANSITION_EFFECTS_LIST } - CEikListBox* list = static_cast( iExtension->iControl ); - - if ( iExtension->iCurrentRow < list->BottomItemIndex() ) + if ( iExtension->iCurrentRow < listbox->BottomItemIndex() ) { AknListUtils::DrawSeparator( aGc, aRect, aColors.iText, skin ); } @@ -2494,6 +2619,47 @@ } #endif // RD_UI_TRANSITION_EFFECTS_LIST + if ( markingMode && !aItemProperties.IsSelectionHidden() ) + { + TAknLayoutRect layoutRect; + layoutRect.LayoutRect( + aRect, + AknLayoutScalable_Avkon::list_single_graphic_pane_g1( 0 ) ); + + aGc.SetPenColor( aColors.iText ); + aGc.SetPenStyle( CGraphicsContext::ESolidPen ); + + CGulIcon* icon = (*iExtension->iMarkingIconArray)[1]; // unchecked + + if ( listbox->View()->ItemIsSelected( iExtension->iCurrentRow ) ) + { + icon = (*iExtension->iMarkingIconArray)[0]; + } + + CFbsBitmap* bitmap = icon->Bitmap(); + + if ( bitmap ) + { + TSize size( bitmap->SizeInPixels() ); // set size if not already + TSize targetSize( layoutRect.Rect().Size() ); + + if ( size.iWidth != targetSize.iWidth && + size.iHeight != targetSize.iHeight ) + { + AknIconUtils::SetSize( + bitmap, + targetSize, + EAspectRatioPreservedAndUnusedSpaceRemoved ); + } + + aGc.BitBltMasked( layoutRect.Rect().iTl, + bitmap, + TRect( layoutRect.Rect().Size() ), + icon->Mask(), + EFalse ); + } + } + // The column draw loop column = 0; FOREVER @@ -2547,7 +2713,7 @@ aGc.SetBrushColor(aColors.iHighlightedBack); } - if (AknsUtils::AvkonSkinEnabled() && iExtension) + if ( AknsUtils::AvkonSkinEnabled() ) { if (iExtension->iTextColor != NULL) { @@ -2680,8 +2846,7 @@ { CGulIcon* icon=(*IconArray())[index]; - if ( iExtension - && iExtension->iSubCellIconSize[column] != TSize(0,0) ) + if ( iExtension->iSubCellIconSize[column] != TSize(0,0) ) { TSize wanted( iExtension->iSubCellIconSize[column] ); TSize got( icon->Bitmap()->SizeInPixels() ); @@ -2880,8 +3045,8 @@ TInt aColumn, const CFont* aFont) { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); _AKNTRACE( "[%s][%s][%d].", "CColumnListBoxData", __FUNCTION__, __LINE__ ); - if (!iExtension) return; TInt index = 0; iExtension->FindRowAndColumnIndexOrAddL(index,aRow,aColumn); iExtension->At(index).iFont=aFont; @@ -2890,7 +3055,7 @@ EXPORT_C const CFont* CColumnListBoxData::RowAndColumnFont(TInt aRow,TInt aColumn) const { - if (!iExtension) return 0; + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); TInt index = 0; if (iExtension->FindRowAndColumnIndex(index,aRow,aColumn)!=0) return 0; @@ -2899,6 +3064,7 @@ void CColumnListBoxData::SetCurrentItemIndex(TInt aIndex) { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); _AKNTRACE( "[%s][%s][%d].", "CColumnListBoxData", __FUNCTION__, __LINE__ ); if( iExtension->iCurrentRow != aIndex ) { @@ -2925,6 +3091,7 @@ const TBool aHighlight, const TBool aIsTextClipped ) const { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); _AKNTRACE( "[%s][%s][%d].", "CColumnListBoxData", __FUNCTION__, __LINE__ ); TBool marqueeDisabled = static_cast( @@ -2952,6 +3119,7 @@ EXPORT_C void CColumnListBoxData::SetMarqueeParams(const TInt aLoops, const TInt aScrollAmount, const TInt aScrollDelay) { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); _AKNTRACE( "[%s][%s][%d].", "CColumnListBoxData", __FUNCTION__, __LINE__ ); if ( iExtension->iMarquee ) { @@ -2970,6 +3138,7 @@ EXPORT_C void CColumnListBoxData::SetMarqueeParams(const TInt aLoops, const TInt aScrollAmount, const TInt aScrollDelay, const TInt aInterval) { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); _AKNTRACE( "[%s][%s][%d].", "CColumnListBoxData", __FUNCTION__, __LINE__ ); if ( iExtension->iMarquee ) { @@ -2983,8 +3152,9 @@ EXPORT_C void CColumnListBoxData::SetSubCellIconSize(TInt aIndex, TSize aSize) { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); _AKNTRACE( "[%s][%s][%d].", "CColumnListBoxData", __FUNCTION__, __LINE__ ); - if (iExtension && aIndex < 6 && aIndex >= 0) + if ( aIndex < 6 && aIndex >= 0 ) { iExtension->iSubCellIconSize[aIndex] = aSize; } @@ -2992,7 +3162,8 @@ TSize CColumnListBoxData::GetSubCellIconSize(TInt aIndex) { - if (iExtension && aIndex < 6 && aIndex >= 0) + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); + if ( aIndex < 6 && aIndex >= 0 ) { return iExtension->iSubCellIconSize[aIndex]; } @@ -3005,9 +3176,8 @@ // EXPORT_C const CAknsEffectAnim* CColumnListBoxData::HighlightAnim() const { - if( iExtension ) - return iExtension->iAnimation; - return NULL; + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); + return iExtension->iAnimation; } // ----------------------------------------------------------------------------- @@ -3016,10 +3186,7 @@ // EXPORT_C void CColumnListBoxData::AboutToDrawHighlightAnim() const { - if( !iExtension ) - { - return; - } + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); if( !iExtension->iAnimation || !iExtension->iControl ) { return; @@ -3048,11 +3215,9 @@ EXPORT_C void CColumnListBoxData::SetHighlightAnimBackgroundDrawer( MColumnListBoxAnimBackgroundDrawer* aDrawer ) { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); _AKNTRACE( "[%s][%s][%d].", "CColumnListBoxData", __FUNCTION__, __LINE__ ); - if( iExtension ) - { - iExtension->iHighlightBgDrawer = aDrawer; - } + iExtension->iHighlightBgDrawer = aDrawer; } // ----------------------------------------------------------------------------- @@ -3061,15 +3226,14 @@ // EXPORT_C void CColumnListBoxData::SetItemCellSize( const TSize& aSizeInPixels ) { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); _AKNTRACE( "[%s][%s][%d].", "CColumnListBoxData", __FUNCTION__, __LINE__ ); - if( iExtension ) + + if( iExtension->iAnimSize != aSizeInPixels ) { - if( iExtension->iAnimSize != aSizeInPixels ) - { - iExtension->Play(); - } - iExtension->iAnimSize = aSizeInPixels; + iExtension->Play(); } + iExtension->iAnimSize = aSizeInPixels; } // ----------------------------------------------------------------------------- @@ -3078,8 +3242,7 @@ // EXPORT_C TBool CColumnListBoxData::HasHighlightAnim() const { - if( !iExtension ) - return EFalse; + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); if( !iExtension->iAnimation ) return EFalse; return ETrue; @@ -3092,9 +3255,7 @@ EXPORT_C TBool CColumnListBoxData::DrawHighlightAnim( CBitmapContext& aGc, const TRect& aRect ) const { - if( !iExtension ) - return EFalse; - + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); if( !iExtension->iAnimation ) return EFalse; @@ -3107,6 +3268,7 @@ // void CColumnListBoxData::FocusGained() { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); iExtension->FocusGained(); } @@ -3116,17 +3278,19 @@ // void CColumnListBoxData::FocusLost() { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); iExtension->FocusLost(); } void CColumnListBoxData::HandleResourceChange( TInt aType ) { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); _AKNTRACE( "[%s][%s] aType = %d", "CColumnListBoxData", __FUNCTION__, aType ); // Animation is skin dependent, whenever skin changes animation changes // too. if( KAknsMessageSkinChange == aType ) { - iExtension->SkinChanged(); + TRAP_IGNORE( iExtension->SkinChangedL() ); } else if(aType == KEikDynamicLayoutVariantSwitch) { @@ -3178,34 +3342,28 @@ void CColumnListBoxData::SetESSTextColor(TRgb aTextColor) { - if (iExtension) - iExtension->iTextColor = aTextColor; + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); + iExtension->iTextColor = aTextColor; } void CColumnListBoxData::SetESSHighlightedTextColor(TRgb aHighlightedTextColor) { - if (iExtension) - iExtension->iHighlightedTextColor = aHighlightedTextColor; + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); + iExtension->iHighlightedTextColor = aHighlightedTextColor; } EXPORT_C void CColumnListBoxData::SetColumnUnderlined( TBitFlags32 aUnderlinedColumns ) { - if ( iExtension ) - { - iExtension->iUnderlineFlagSet = ETrue; - iExtension->iUnderlineFlags = aUnderlinedColumns; - } + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); + iExtension->iUnderlineFlagSet = ETrue; + iExtension->iUnderlineFlags = aUnderlinedColumns; } void CColumnListBoxData::SetUnderlineStyle( TListItemProperties aProperties, CWindowGc& aGc, TInt aColumn ) const { - if ( !iExtension ) - { - return; - } - + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); if ( !iExtension->iUnderlineFlagSet ) { // underlining is already either on or off and @@ -3232,13 +3390,9 @@ // EXPORT_C void CColumnListBoxData::ResetSLSubCellArray() { - if ( !iExtension ) - { - return; - } - + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); iExtension->iMarginRect = TRect::EUninitialized; - if ( iExtension && iExtension->iUseLayoutData ) + if ( iExtension->iUseLayoutData ) { iExtension->iUseLayoutData = EFalse; #ifdef RD_UI_TRANSITION_EFFECTS_LIST @@ -3266,8 +3420,8 @@ EXPORT_C void CColumnListBoxData::SetGraphicSubCellL(TInt aSubCell, const TAknWindowLineLayout &aGraphicLayout) { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); _AKNTRACE( "[%s][%s][%d].", "CColumnListBoxData", __FUNCTION__, __LINE__ ); - if (!iExtension) return; TInt index = 0; iExtension->FindSLSubCellIndexOrAddL(index,aSubCell); iExtension->AtSL(index).iTextLayout=NULL; @@ -3315,8 +3469,8 @@ EXPORT_C void CColumnListBoxData::SetTextSubCellL(TInt aSubCell, const TAknTextLineLayout &aTextLayout) { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); _AKNTRACE( "[%s][%s][%d].", "CColumnListBoxData", __FUNCTION__, __LINE__ ); - if (!iExtension) return; TInt index = 0; iExtension->FindSLSubCellIndexOrAddL(index,aSubCell); iExtension->AtSL(index).iTextLayout=aTextLayout; @@ -3365,6 +3519,7 @@ const TAknTextLineLayout &aTextLayout, TInt aAffectedSubCell) { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); _AKNTRACE( "[%s][%s][%d].", "CColumnListBoxData", __FUNCTION__, __LINE__ ); // iConditionValue of affected subcell (=text subcell, which has different layouts) // contains index of graphical subcell, which existence should be checked first. @@ -3374,7 +3529,6 @@ // for compabitility - needed at least for text wrapping SetOptionalColumnL( aSubCell, ETrue ); - if (!iExtension) return; TInt i = 0x01; i = i << aSubCell; @@ -3501,10 +3655,8 @@ // TBool CColumnListBoxData::UsesScalableLayoutData() const { - if (iExtension) - return iExtension->iUseLayoutData; - - return EFalse; + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); + return iExtension->iUseLayoutData; } // ----------------------------------------------------------------------------- @@ -3513,11 +3665,7 @@ // void CColumnListBoxData::EnableStretching( const TBool aEnabled ) { - if ( !iExtension ) - { - return; - } - + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); iExtension->iStretchingEnabled = aEnabled; } @@ -3528,11 +3676,7 @@ // EXPORT_C TBool CColumnListBoxData::StretchingEnabled() const { - if ( !iExtension ) - { - return EFalse; - } - + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); return iExtension->iStretchingEnabled; } @@ -3558,6 +3702,7 @@ const TDesC& aText, const TRect& aItemRect ) const { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); _AKNTRACE( "[%s][%s][%d].", "CColumnListBoxData", __FUNCTION__, __LINE__ ); TInt column = 0; @@ -3672,6 +3817,7 @@ // EXPORT_C void CColumnListBoxData::SubCellsMightIntersect( const TBool aMightIntersect ) { + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); iExtension->iSubCellsMightIntersect = aMightIntersect; } @@ -3772,16 +3918,14 @@ EXPORT_C TUint32 CColumnListBoxData::CurrentItemTextWasClipped() const { - return iExtension ? iExtension->iClippedColumns : 0; + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); + return iExtension->iClippedColumns; } TBool CColumnListBoxData::KineticScrollingEnabled() const { - if ( iExtension ) - { - return iExtension->iKineticScrolling; - } - return EFalse; + __ASSERT_DEBUG( iExtension, Panic( EEikPanicNullPointer ) ); + return iExtension->iKineticScrolling; } diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/ganes/group/bld.inf --- a/uifw/ganes/group/bld.inf Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/ganes/group/bld.inf Tue May 11 16:27:42 2010 +0300 @@ -28,7 +28,6 @@ OPTION HEADERFILE ganes.mbg OPTION SOURCES\ -c32,8 qgn_prop_sub_marked\ - -c32,8 qgn_prop_file_video\ -c32,8 qgn_prop_fmgr_file_video\ -c32,8 qgn_prop_drm_rights_valid_super\ -c32,8 qgn_prop_drm_rights_exp_super\ @@ -47,7 +46,8 @@ -c32,8 qgn_graf_mup_adtl_reorder_up\ -c32,8 qgn_graf_mup_adtl_reorder_updown\ -c32,8 qgn_prop_checkbox_on\ - -c32,8 qgn_indi_button_exit_fs + -c32,8 qgn_indi_button_exit_fs\ + -c32,8 qgn_indi_media_thumbnail END #endif diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/ganes/src/HgIndicatorManager.cpp --- a/uifw/ganes/src/HgIndicatorManager.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/ganes/src/HgIndicatorManager.cpp Tue May 11 16:27:42 2010 +0300 @@ -69,116 +69,116 @@ InitIconL( iBrokenPlaylistIcon, EMbmGanesQgn_graf_mup_lst_brokenplayl, EMbmGanesQgn_graf_mup_lst_brokenplayl_mask, - aIndicatorSize); + aIndicatorSize ); // Broken track icon InitIconL( iBrokenTrackIcon, EMbmGanesQgn_graf_mup_lst_brokentrack, EMbmGanesQgn_graf_mup_lst_brokentrack_mask, - aIndicatorSize); + aIndicatorSize ); // Corrupted track icon InitIconL( iCorruptedTrackIcon, EMbmGanesQgn_graf_mup_lst_corrupttrack, EMbmGanesQgn_graf_mup_lst_corrupttrack_mask, - aIndicatorSize); + aIndicatorSize ); // New podcast icon InitIconL( iNewPodcastIcon, EMbmGanesQgn_graf_mup_lst_pdc_new, EMbmGanesQgn_graf_mup_lst_pdc_new_mask, - aIndicatorSize); + aIndicatorSize ); // Played podcast icon InitIconL( iPlayedPodcastIcon, EMbmGanesQgn_graf_mup_lst_pdc_partplay, EMbmGanesQgn_graf_mup_lst_pdc_partplay_mask, - aIndicatorSize); + aIndicatorSize ); // Completely played podcast icon InitIconL( iCompletelyPlayedPodcastIcon, EMbmGanesQgn_graf_mup_lst_pdc_compplay, EMbmGanesQgn_graf_mup_lst_pdc_compplay_mask, - aIndicatorSize); + aIndicatorSize ); + + // Video icon + InitIconL( iVideoIcon, + EMbmGanesQgn_indi_media_thumbnail, + EMbmGanesQgn_indi_media_thumbnail_mask, + aIndicatorSize ); // Skinned icons // Mark icon InitIconL( iMarkIcon, KAknsIIDQgnPropSubMarked, EMbmGanesQgn_prop_sub_marked, EMbmGanesQgn_prop_sub_marked_mask, - aIndicatorSize); - - // Video icon - InitIconL( iVideoIcon, KAknsIIDQgnPropFileVideo, - EMbmGanesQgn_prop_file_video, - EMbmGanesQgn_prop_file_video_mask, - aIndicatorSize); - + aIndicatorSize ); + // DRM valid icon InitIconL( iDrmIcon, KAknsIIDQgnPropDrmRightsValidSuper, EMbmGanesQgn_prop_drm_rights_valid_super, EMbmGanesQgn_prop_drm_rights_valid_super_mask, - aIndicatorSize); + aIndicatorSize ); // DRM expired icon InitIconL( iDrmExpIcon, KAknsIIDQgnPropDrmRightsExpSuper, EMbmGanesQgn_prop_drm_rights_exp_super, EMbmGanesQgn_prop_drm_rights_exp_super_mask, - aIndicatorSize); + aIndicatorSize ); // Playback icon InitIconL( iPlaybackIndicatorIcon, KAknsIIDQgnIndiMupPlay, EMbmGanesQgn_indi_mup_play, EMbmGanesQgn_indi_mup_play_mask, - aIndicatorSize); + aIndicatorSize ); // Pause icon InitIconL( iPauseIndicatorIcon, KAknsIIDQgnIndiMupPause, EMbmGanesQgn_indi_mup_pause, EMbmGanesQgn_indi_mup_pause_mask, - aIndicatorSize); + aIndicatorSize ); // New Video icon InitIconL( iNewVideoIcon, KAknsIIDQgnPropFmgrFileVideo, EMbmGanesQgn_prop_fmgr_file_video, EMbmGanesQgn_prop_fmgr_file_video_mask, - aIndicatorSize); + aIndicatorSize ); // Phone memory icon InitIconL( iPhoneStorageIcon, KAknsIIDQgnPropPhoneMemc, EMbmGanesQgn_prop_phone_memc, EMbmGanesQgn_prop_phone_memc_mask, - aIndicatorSize); + aIndicatorSize ); // MMC memory icon InitIconL( iMmcIcon, KAknsIIDQgnPropMmcMemc, EMbmGanesQgn_prop_mmc_memc, EMbmGanesQgn_prop_mmc_memc_mask, - aIndicatorSize); + aIndicatorSize ); // Mass memory icon InitIconL( iMassStorageIcon, KAknsIIDQgnPropFmgrMsSmall, EMbmGanesQgn_prop_fmgr_ms_small, EMbmGanesQgn_prop_fmgr_ms_small_mask, - aIndicatorSize); + aIndicatorSize ); // Move up icon InitIconL( iMoveUpIcon, KAknsIIDQgnGrafMupAdtlReorderUp, EMbmGanesQgn_graf_mup_adtl_reorder_up, EMbmGanesQgn_graf_mup_adtl_reorder_up_mask, - aIndicatorSize); + aIndicatorSize ); // Move down icon InitIconL( iMoveDownIcon, KAknsIIDQgnGrafMupAdtlReorderDown, EMbmGanesQgn_graf_mup_adtl_reorder_down, EMbmGanesQgn_graf_mup_adtl_reorder_down_mask, - aIndicatorSize); + aIndicatorSize ); // Move updown icon InitIconL( iMoveUpDownIcon, KAknsIIDQgnGrafMupAdtlReorderUpdown, EMbmGanesQgn_graf_mup_adtl_reorder_updown, EMbmGanesQgn_graf_mup_adtl_reorder_updown_mask, - aIndicatorSize); + aIndicatorSize ); } void CHgIndicatorManager::DrawIndicators( diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/ganes/src/HgScroller.cpp --- a/uifw/ganes/src/HgScroller.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/ganes/src/HgScroller.cpp Tue May 11 16:27:42 2010 +0300 @@ -738,6 +738,7 @@ // void CHgScroller::HandleDragEventL( const TPointerEvent& aEvent ) { + TBool prevPanning = iPanning; if(!iPanning) { TInt delta = 0; @@ -754,6 +755,9 @@ iPanning = delta >= iPhysics->DragThreshold(); } + if( prevPanning != iPanning ) + DrawDeferred(); // to clear highlight + if(iPanning) { TPoint delta = iPrev - aEvent.iPosition; diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/ganes/src/HgVgHelper.cpp --- a/uifw/ganes/src/HgVgHelper.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/ganes/src/HgVgHelper.cpp Tue May 11 16:27:42 2010 +0300 @@ -39,36 +39,51 @@ namespace HgVgHelper { +// --------------------------------------------------------------------------- +// CreateNonMaskedVgImageL() +// --------------------------------------------------------------------------- +// static VGImage CreateNonMaskedVgImageL( const CFbsBitmap& aBitmap ) { TSize size = aBitmap.SizeInPixels(); VGImage image = vgCreateImage(VG_sRGB_565, size.iWidth, size.iHeight,VG_IMAGE_QUALITY_NONANTIALIASED); - - if ( image == VG_INVALID_HANDLE ) - { - User::Leave(KErrNoMemory); - } - if (aBitmap.DisplayMode() == EColor64K && !aBitmap.IsCompressedInRAM()) + if ( image != VG_INVALID_HANDLE ) // to check if the image was created { - aBitmap.BeginDataAccess(); - TInt stride = aBitmap.DataStride(); - TUint8* ptr = (TUint8*)aBitmap.DataAddress(); - vgImageSubData (image, ptr, stride, VG_sRGB_565, 0, 0, size.iWidth, size.iHeight ); - aBitmap.EndDataAccess(); + if (aBitmap.DisplayMode() == EColor64K && !aBitmap.IsCompressedInRAM()) + { + aBitmap.BeginDataAccess(); + TInt stride = aBitmap.DataStride(); + TUint8* ptr = (TUint8*)aBitmap.DataAddress(); + + vgGetError(); // to zero the error flag + vgImageSubData (image, ptr, stride, VG_sRGB_565, 0, 0, size.iWidth, size.iHeight ); + + if(vgGetError() != VG_NO_ERROR) + { + vgDestroyImage(image); + image = VG_INVALID_HANDLE; + } + aBitmap.EndDataAccess(); + } + else + { + TSize size = aBitmap.SizeInPixels(); + CHgVgDrawBuffer* temp = CHgVgDrawBuffer::NewL(size, EColor64K); + temp->Gc().BitBlt(TPoint(0,0), &aBitmap); + temp->GetDrawBufferToVgImage(size, TPoint(0,0), image, + VG_sRGB_565); + delete temp; + } } - else - { - TSize size = aBitmap.SizeInPixels(); - CHgVgDrawBuffer* temp = CHgVgDrawBuffer::NewL(size, EColor64K); - temp->Gc().BitBlt(TPoint(0,0), &aBitmap); - temp->GetDrawBufferToVgImage(size, TPoint(0,0), image, - VG_sRGB_565); - delete temp; - } + return image; } +// --------------------------------------------------------------------------- +// CreateMaskedVgImageL() +// --------------------------------------------------------------------------- +// static VGImage CreateMaskedVgImageL( CFbsBitmap* aBitmap, CFbsBitmap* aMask ) { TSize size = aBitmap->SizeInPixels(); diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/ganes/src/HgVgLabel.cpp --- a/uifw/ganes/src/HgVgLabel.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/ganes/src/HgVgLabel.cpp Tue May 11 16:27:42 2010 +0300 @@ -61,9 +61,9 @@ { iText = aText.AllocL(); - iTextRenderer = CHgVgDrawBuffer::NewL(iRect.Size(), EGray2); + iTextRenderer = CHgVgDrawBuffer::NewL(iRect.Size(), EGray256); - iTextImage = vgCreateImage(VG_A_1, + iTextImage = vgCreateImage(VG_A_8, iRect.Width(), iRect.Height(), VG_IMAGE_QUALITY_NONANTIALIASED); @@ -178,7 +178,7 @@ text.DrawText(iTextRenderer->Gc(), *iText, ETrue, KRgbWhite); iTextRenderer->GetDrawBufferToVgImage(TRect(TPoint(0,0), iRect.Size()), - TPoint(0, 0), iTextImage, VG_A_1); + TPoint(0, 0), iTextImage, VG_A_8); } @@ -195,7 +195,7 @@ iTextRenderer->Clear(iRect.Size(), KRgbBlack); DrawEmptyListImpl_real(aClientRect, iTextRenderer->Gc(), aText, KRgbWhite); iTextRenderer->GetDrawBufferToVgImage(TRect(TPoint(0,0), iRect.Size()), - TPoint(0, 0), iTextImage, VG_A_1); + TPoint(0, 0), iTextImage, VG_A_8); iDirty = EFalse; Draw(aClientRect, 1.0f); } diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/ganes/src/HgVgLetterPopup.cpp --- a/uifw/ganes/src/HgVgLetterPopup.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/ganes/src/HgVgLetterPopup.cpp Tue May 11 16:27:42 2010 +0300 @@ -54,14 +54,14 @@ { iPrevText = ((TDesC)KNullDesC).AllocL(); - iDrawBuffer = CHgVgDrawBuffer::NewL(iRect.Size(), EGray2); + iDrawBuffer = CHgVgDrawBuffer::NewL(iRect.Size(), EGray256); iDrawBuffer->Gc().UseFont(iFont); iDrawBuffer->Gc().SetPenColor(KRgbWhite); iDrawBuffer->Gc().SetBrushColor(KRgbBlack); // Create VG Image to use - iLetterImage = vgCreateImage(VG_A_1, + iLetterImage = vgCreateImage(VG_A_8, iRect.Width(), iRect.Height(), VG_IMAGE_QUALITY_NONANTIALIASED); @@ -140,7 +140,7 @@ TPoint pos(iRect.Width() / 2 - width / 2, iRect.Height() / 2 + height / 2); iDrawBuffer->DrawText(aText, iFont, KRgbWhite, pos);*/ - iDrawBuffer->GetDrawBufferToVgImage(iRect.Size(), TPoint(0,0), iLetterImage, VG_A_1); + iDrawBuffer->GetDrawBufferToVgImage(iRect.Size(), TPoint(0,0), iLetterImage, VG_A_8); } } @@ -159,7 +159,7 @@ pos.iY += height; pos.iX = iRect.Width() / 2 - w2 / 2; iDrawBuffer->Gc().DrawText(aText2, pos); - iDrawBuffer->GetDrawBufferToVgImage(iRect.Size(), TPoint(0,0), iLetterImage, VG_A_1); + iDrawBuffer->GetDrawBufferToVgImage(iRect.Size(), TPoint(0,0), iLetterImage, VG_A_8); } // ----------------------------------------------------------------------------- diff -r 0aa5fbdfbc30 -r 3d340a0166ff uifw/ganes/src/HgVgMediaWall.cpp --- a/uifw/ganes/src/HgVgMediaWall.cpp Tue Apr 27 16:55:05 2010 +0300 +++ b/uifw/ganes/src/HgVgMediaWall.cpp Tue May 11 16:27:42 2010 +0300 @@ -334,7 +334,6 @@ delete iDelayedInit; delete iEGL; delete iSpring; - delete iSurfaceBitmap; iPopupText1.Close(); iPopupText2.Close(); @@ -369,7 +368,7 @@ void CHgVgMediaWall::Draw ( const TRect& /*aRect*/ ) const { - if(iFlags & EHgVgMediaWallUninitialized) + if( iFlags & EHgVgMediaWallUninitialized || !iIsForeground ) { FillSystemGcWithSkin( ); return; @@ -377,47 +376,36 @@ CHgVgMediaWall* self = const_cast(this); - if (iIsForeground) + if( iFlags & EHgVgMediaWallDrawToWindowGC ) { - if( iFlags & EHgVgMediaWallDrawToWindowGC ) + CFbsBitmap* screenshot = NULL; + screenshot = self->DrawToBitmap(); + if (screenshot) { - CFbsBitmap* screenshot = NULL; - screenshot = self->DrawToBitmap(); - if (screenshot) - { - SystemGc().BitBlt( Rect().iTl,screenshot ); - delete screenshot; - } - else - { - FillSystemGcWithSkin( ); - } - } - else - { - - // draw with alpha to make a hole to composition layer - SystemGc().SetDrawMode(CGraphicsContext::EDrawModeWriteAlpha); - SystemGc().SetBrushColor(TRgb(0,0,0,0)); - SystemGc().Clear(); - - DrawOpenVG(); - } - } - else - { - if (iSurfaceBitmap) - { - SystemGc().BitBlt( Rect().iTl, iSurfaceBitmap ); + SystemGc().BitBlt( Rect().iTl,screenshot ); + delete screenshot; } else { FillSystemGcWithSkin( ); } } - + else + { + // draw with alpha to make a hole to composition layer + SystemGc().SetDrawMode(CGraphicsContext::EDrawModeWriteAlpha); + SystemGc().SetBrushColor(TRgb(0,0,0,0)); + SystemGc().Clear(); + + DrawOpenVG(); + } } +// ----------------------------------------------------------------------------- +// CHgVgMediaWall::FillSystemGcWithSkin() +// Draws the display. +// ----------------------------------------------------------------------------- +// void CHgVgMediaWall::FillSystemGcWithSkin( ) const { MAknsSkinInstance* skin = AknsUtils::SkinInstance(); @@ -1219,26 +1207,10 @@ { if(iIsForeground) return; // don't react to gaining foreground without losing it - // draw previous screenshot - DrawNow(); - - // delete it - delete iSurfaceBitmap; - iSurfaceBitmap = NULL; - iIsForeground = ETrue; - - // init egl and openvg again - TRAP_IGNORE( InitRenderingL(EFalse); ) - // reload images to ive - ReloadItemsImages(); - - ClearFlags(EHgVgMediaWallUninitialized); - - // draw using openvg - DrawNow(); - + if(iDelayedInit && !iDelayedInit->IsActive()) + iDelayedInit->Start(100000, 1000000, TCallBack(DelayedInit, this)); } // --------------------------------------------------------------------------- @@ -1268,11 +1240,6 @@ iIsForeground = EFalse; - // take a screenshot - delete iSurfaceBitmap; - iSurfaceBitmap = NULL; - iSurfaceBitmap = DrawToBitmap(); - // draw screenshot using window gc, this is needed // for nga effects to work DrawNow(); @@ -1281,9 +1248,10 @@ FreeItemsImages(); // free other resources DestroyRendering(); + + SetFlags( EHgVgMediaWallUninitialized | EHgVgMediaWallDrawToWindowGC ); iCoeEnv->WsSession().Flush(); - } // ---------------------------------------------------------------------------