# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1276066717 -10800 # Node ID a8834a2e9a964e6446573191a6ee44cc5defae1c # Parent 941195f2d488320a63dc7e9613901951103de4e7 Revision: 201021 Kit: 2010123 diff -r 941195f2d488 -r a8834a2e9a96 classicui_plat/ganes_api/inc/ganes/HgScroller.h --- a/classicui_plat/ganes_api/inc/ganes/HgScroller.h Tue May 25 12:58:19 2010 +0300 +++ b/classicui_plat/ganes_api/inc/ganes/HgScroller.h Wed Jun 09 09:58:37 2010 +0300 @@ -504,7 +504,7 @@ RBuf iPopupText1; RBuf iPopupText2; - TBool iFirstTime; // Flag to indicating first time run. + TBool iResetViewPosition; // ETrue on the first time run, and when iViewPosition must be reset. TBool iPointerDown; CPeriodic* iHighlightTimer; // Higlight timer, own. diff -r 941195f2d488 -r a8834a2e9a96 classicui_pub/lists_api/inc/EIKLBX.H --- a/classicui_pub/lists_api/inc/EIKLBX.H Tue May 25 12:58:19 2010 +0300 +++ b/classicui_pub/lists_api/inc/EIKLBX.H Wed Jun 09 09:58:37 2010 +0300 @@ -242,8 +242,16 @@ /** * Construction flag for disabling item specific stylus popup menu. */ - EDisableItemSpecificMenu = 0x00040000 + EDisableItemSpecificMenu = 0x00040000, + + /** + * Construction flag to make item specific stylus popup menu always + * shown regardless of list's marking state if the tapped item has + * associated commands. + */ + EItemSpecificMenuAlwaysShown = 0x00080000 }; + enum {KEikMaxMatchingBufferLength = 2}; /** diff -r 941195f2d488 -r a8834a2e9a96 classicui_pub/screen_clearer_api/inc/AknClearer.h --- a/classicui_pub/screen_clearer_api/inc/AknClearer.h Tue May 25 12:58:19 2010 +0300 +++ b/classicui_pub/screen_clearer_api/inc/AknClearer.h Wed Jun 09 09:58:37 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002-2006 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" @@ -86,6 +86,19 @@ * Sets skin background and shape for the cleared window. */ void SetSkinShapeL(); + + /** + * Creates the extension class. + */ + void CreateExtensionL(); + + /** + * Sets the clearer as transparent or opaque. + * + * @param aTransparent @c ETrue to set transparency on, + * @c EFalse otherwise. + */ + void SetTransparent( TBool aTransparent ); private: CAknScreenClearerBaseExtension* iExtension; @@ -115,7 +128,16 @@ * @c EFalse if not. */ IMPORT_C static CAknLocalScreenClearer* NewLC(TBool aBlankAppStatusPane); - + + /** + * Two-phased constructor. + * @param aBlankAppStatusPane @c ETrue if application status pane is blank, + * @c EFalse if not. + * @param aTransparent @c ETrue to construct a transparent clearer, + * @c EFalse to create an opaque one that draws + * the skin background. + */ + IMPORT_C static CAknLocalScreenClearer* NewLC(TBool aBlankAppStatusPane, TBool aTranparent); /** * Two-phased constructor. * @param aBlankAppStatusPane @c ETrue if application status pane is blank, @@ -124,6 +146,16 @@ IMPORT_C static CAknLocalScreenClearer* NewL(TBool aBlankAppStatusPane); /** + * Two-phased constructor. + * @param aBlankAppStatusPane @c ETrue if application status pane is blank, + * @c EFalse if not. + * @param aTransparent @c ETrue to construct a transparent clearer, + * @c EFalse to create an opaque one that draws + * the skin background. + */ + IMPORT_C static CAknLocalScreenClearer* NewL(TBool aBlankAppStatusPane, TBool aTransparent); + + /** * From CCoeControl */ IMPORT_C void HandleResourceChange(TInt aType); diff -r 941195f2d488 -r a8834a2e9a96 classicui_pub/tsrc/bc/apps/bctestlauncher/group/uid_range.txt --- a/classicui_pub/tsrc/bc/apps/bctestlauncher/group/uid_range.txt Tue May 25 12:58:19 2010 +0300 +++ b/classicui_pub/tsrc/bc/apps/bctestlauncher/group/uid_range.txt Wed Jun 09 09:58:37 2010 +0300 @@ -1,3 +1,19 @@ +# +# 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: +# + (1) 0x20004742 - 0x2000474B diff -r 941195f2d488 -r a8834a2e9a96 classicui_pub/tsrc/bc/apps/bctestutil/group/release_note.txt --- a/classicui_pub/tsrc/bc/apps/bctestutil/group/release_note.txt Tue May 25 12:58:19 2010 +0300 +++ b/classicui_pub/tsrc/bc/apps/bctestutil/group/release_note.txt Wed Jun 09 09:58:37 2010 +0300 @@ -1,3 +1,19 @@ +# +# Copyright (c) 2006-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: +# + 50.9.6 [what's new] 1.Moved the existing BC test cases from \s60\mw\classicui\uifw\AvKon\internal\tsrc to \s60\mw\classicui\uifw\AvKon\tsrc diff -r 941195f2d488 -r a8834a2e9a96 classicui_pub/ui_framework_definitions_api/inc/avkon.hrh --- a/classicui_pub/ui_framework_definitions_api/inc/avkon.hrh Tue May 25 12:58:19 2010 +0300 +++ b/classicui_pub/ui_framework_definitions_api/inc/avkon.hrh Wed Jun 09 09:58:37 2010 +0300 @@ -41,17 +41,18 @@ #define EEikStatusPaneLayoutAknLafDefined 0x10 // internal, do not use (maybe you might need to use LoopScrolling though, but use it with some other flags...) -#define EAknListBoxMultipleSelection EEikListBoxMultipleSelection -#define EAknListBoxIncrementalMatching EEikListBoxIncrementalMatching -#define EAknListBoxScrollBarSizeExcluded 0x0080 -#define EAknListBoxLoopScrolling 0x1000 -#define EAknListBoxEnterMarks 0x2000 -#define EAknListBoxShiftEnterMarks 0x4000 +#define EAknListBoxMultipleSelection EEikListBoxMultipleSelection +#define EAknListBoxIncrementalMatching EEikListBoxIncrementalMatching +#define EAknListBoxScrollBarSizeExcluded 0x0080 +#define EAknListBoxLoopScrolling 0x1000 +#define EAknListBoxEnterMarks 0x2000 +#define EAknListBoxShiftEnterMarks 0x4000 // Note there's also EAknListBoxViewerFlags, which is better for apps. -#define EAknListBoxViewerFlag 0x8000 -#define EAknListBoxPointerMultiselectionList 0x10000 -#define EAknListBoxPointerMarkableList 0x20000 -#define EAknListBoxDisableItemSpecificMenu 0x40000 +#define EAknListBoxViewerFlag 0x8000 +#define EAknListBoxPointerMultiselectionList 0x10000 +#define EAknListBoxPointerMarkableList 0x20000 +#define EAknListBoxDisableItemSpecificMenu 0x40000 +#define EAknListBoxAlwaysShowItemSpecificMenu 0x80000 // These are combined to the viewerflag to make it fit to WORD in resources. @@ -93,6 +94,7 @@ #define EAknListBoxMenuGrid (EAknListBoxMenuList) #define EAknListBoxItemSpecificMenuDisabled ( EAknListBoxDisableItemSpecificMenu ) +#define EAknListBoxItemSpecificMenuAlwaysShown ( EAknListBoxAlwaysShowItemSpecificMenu ) // // Viewers (see Selection service) // diff -r 941195f2d488 -r a8834a2e9a96 commonuis/CommonDialogs/src/CAknFileSelectionDialog.cpp --- a/commonuis/CommonDialogs/src/CAknFileSelectionDialog.cpp Tue May 25 12:58:19 2010 +0300 +++ b/commonuis/CommonDialogs/src/CAknFileSelectionDialog.cpp Wed Jun 09 09:58:37 2010 +0300 @@ -324,10 +324,10 @@ KAknsIIDQgnPropNrtypNote, KAvkonBitmapFile, EMbmAvkonQgn_prop_nrtyp_note, EMbmAvkonQgn_prop_nrtyp_note_mask ); - // Add sis file icon. + // Add app file icon. AknCFDUtility::AppendSkinnedImageToArrayL( *eikEnv, *iconArray, skin, KAknsIIDQgnPropAmSis, KCommonDialogsBitmapFile, - EMbmCommondialogsQgn_prop_am_sis, EMbmCommondialogsQgn_prop_am_sis_mask ); + EMbmCommondialogsQgn_prop_fmgr_file_apps, EMbmCommondialogsQgn_prop_fmgr_file_apps_mask ); // Add video file icon. AknCFDUtility::AppendSkinnedImageToArrayL( *eikEnv, *iconArray, skin, @@ -338,11 +338,6 @@ AknCFDUtility::AppendSkinnedImageToArrayL( *eikEnv, *iconArray, skin, KAknsIIDQgnPropFmgrFileGame, KCommonDialogsBitmapFile, EMbmCommondialogsQgn_prop_fmgr_file_game, EMbmCommondialogsQgn_prop_fmgr_file_game_mask ); - - // Add java file icon. - AknCFDUtility::AppendSkinnedImageToArrayL( *eikEnv, *iconArray, - skin, KAknsIIDQgnPropAmMidlet, KCommonDialogsBitmapFile, - EMbmCommondialogsQgn_prop_am_midlet, EMbmCommondialogsQgn_prop_am_midlet_mask ); // Add unknow file type icon. AknCFDUtility::AppendSkinnedImageToArrayL( *eikEnv, *iconArray, diff -r 941195f2d488 -r a8834a2e9a96 commonuis/CommonDialogs/src/CAknFileSelectionModel.cpp --- a/commonuis/CommonDialogs/src/CAknFileSelectionModel.cpp Tue May 25 12:58:19 2010 +0300 +++ b/commonuis/CommonDialogs/src/CAknFileSelectionModel.cpp Wed Jun 09 09:58:37 2010 +0300 @@ -51,6 +51,13 @@ _LIT( KCFDMimeTypeJava, "application/java-archive" ); _LIT( KCFDMimeTypeFlash, "application/x-shockwave-flash" ); +_LIT( KCFDMimeTypeJad, "text/vnd.sun.j2me.app-descriptor" ); +_LIT( KCFDMimeTypePdf, "application/pdf" ); +_LIT( KCFDMimeTypeZip, "application/*zip*"); +_LIT( KCFDMimeTypeDoc, "application/vnd.ms-word"); +_LIT( KCFDMimeTypePpt, "application/vnd.ms-powerpoint"); +_LIT( KCFDMimeTypeXls, "application/vnd.ms-excel"); + _LIT( KCFDFileExtSis, ".sis" ); _LIT( KCFDFileExtSisx, ".sisx"); _LIT( KCFDFileExtMid, ".mid" ); @@ -714,18 +721,27 @@ { iconIndex = EGameFileIcon; } - else if( dataTypeBuf.MatchF( KCFDMimeTypeNote ) == 0 ) + else if( dataTypeBuf.MatchF( KCFDMimeTypeJava ) == 0 + || dataTypeBuf.MatchF( KCFDMimeTypeJad ) == 0 ) { - iconIndex = ENoteFileIcon; - } - else if( dataTypeBuf.MatchF( KCFDMimeTypeJava ) == 0 ) - { - iconIndex = EJavaFileIcon; + iconIndex = EAppFileIcon; } else if ( dataTypeBuf.MatchF( KCFDMimeTypeFlash ) == 0 ) { iconIndex = EFlashFileIcon; } + else if ( dataTypeBuf.MatchF( KCFDMimeTypeZip ) == 0 ) + { + iconIndex = EAppFileIcon; + } + else if ( dataTypeBuf.MatchF( KCFDMimeTypePdf ) == 0 + || dataTypeBuf.MatchF( KCFDMimeTypeDoc ) == 0 + || dataTypeBuf.MatchF( KCFDMimeTypePpt ) == 0 + || dataTypeBuf.MatchF( KCFDMimeTypeXls ) == 0 + || dataTypeBuf.MatchF( KCFDMimeTypeNote ) == 0 ) + { + iconIndex = ENoteFileIcon; + } else { // Check from the file name extension, if it's a SIS file: @@ -740,7 +756,7 @@ if( ext.CompareF( KCFDFileExtSis ) == 0 || ext.CompareF( KCFDFileExtSisx ) == 0 ) { - iconIndex = ESisFileIcon; + iconIndex = EAppFileIcon; } // RApaLsSession does not recognize .mid's: else if( ext.CompareF( KCFDFileExtMid ) == 0 ) diff -r 941195f2d488 -r a8834a2e9a96 commonuis/CommonDialogs/src/CAknFileSelectionModel.h --- a/commonuis/CommonDialogs/src/CAknFileSelectionModel.h Tue May 25 12:58:19 2010 +0300 +++ b/commonuis/CommonDialogs/src/CAknFileSelectionModel.h Wed Jun 09 09:58:37 2010 +0300 @@ -63,10 +63,9 @@ EPlaylistFileIcon, ECompoFileIcon, ENoteFileIcon, - ESisFileIcon, + EAppFileIcon, EVideoFileIcon, EGameFileIcon, - EJavaFileIcon, EUnknowTypeIcon, EFolderEmptyIcon, EFlashFileIcon diff -r 941195f2d488 -r a8834a2e9a96 commonuisupport/uikon/test/scripts/uiktest_T_Backup.script --- a/commonuisupport/uikon/test/scripts/uiktest_T_Backup.script Tue May 25 12:58:19 2010 +0300 +++ b/commonuisupport/uikon/test/scripts/uiktest_T_Backup.script Wed Jun 09 09:58:37 2010 +0300 @@ -16,6 +16,10 @@ // PRINT Run TBackup test // + +// Init MTM before it will be used by backup service +RUN_WS_PROGRAM mailinit.exe + LOAD_SUITE UiktestServer RUN_TEST_STEP 1000 UiktestServer TBackup diff -r 941195f2d488 -r a8834a2e9a96 lafagnosticuifoundation/bmpanimation/inc/bmpansrv.h --- a/lafagnosticuifoundation/bmpanimation/inc/bmpansrv.h Tue May 25 12:58:19 2010 +0300 +++ b/lafagnosticuifoundation/bmpanimation/inc/bmpansrv.h Wed Jun 09 09:58:37 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -272,7 +272,7 @@ // Returns ETrue every time the index frame is valid, otherwise it returns EFalse. inline TBool CBitmapAnim::IsFrameDisplayable() const - { return ( (iIndex >= 0) && iBitmapAnimFrameDataArray[iIndex]->iBitmap ); } + { return ( (iIndex >= 0) && (iIndex < Count()) && iBitmapAnimFrameDataArray[iIndex]->iBitmap ); } // Returns ETrue if the animation is running, otherwise it returns EFalse. inline TBool CBitmapAnim::IsRunning() const diff -r 941195f2d488 -r a8834a2e9a96 psln/pslnslidesetdialog/data/pslnslidesetdialogrsc.rss --- a/psln/pslnslidesetdialog/data/pslnslidesetdialogrsc.rss Tue May 25 12:58:19 2010 +0300 +++ b/psln/pslnslidesetdialog/data/pslnslidesetdialogrsc.rss Wed Jun 09 09:58:37 2010 +0300 @@ -238,7 +238,7 @@ RESOURCE SLIDER r_psln_duration_slider { layout = EAknSettingsItemSliderLayout; - minvalue = 1; + minvalue = 5; maxvalue = 60; step = 1; valuetype = EAknSliderValueBareFigure; diff -r 941195f2d488 -r a8834a2e9a96 psln/pslnslidesetdialog/loc/pslnslidesetdialog.loc --- a/psln/pslnslidesetdialog/loc/pslnslidesetdialog.loc Tue May 25 12:58:19 2010 +0300 +++ b/psln/pslnslidesetdialog/loc/pslnslidesetdialog.loc Wed Jun 09 09:58:37 2010 +0300 @@ -112,7 +112,7 @@ // l:slider_set_pane_2 // r:3.2 // -#define qtn_sanim_duration_slider_min "1 sec." +#define qtn_sanim_duration_slider_min "5 sec." // d:Text in slider control. // d:Maximum setting value for Slide set duration. diff -r 941195f2d488 -r a8834a2e9a96 psln/pslnslidesetdialog/src/pslnslidesetmodel.cpp --- a/psln/pslnslidesetdialog/src/pslnslidesetmodel.cpp Tue May 25 12:58:19 2010 +0300 +++ b/psln/pslnslidesetdialog/src/pslnslidesetmodel.cpp Wed Jun 09 09:58:37 2010 +0300 @@ -47,8 +47,8 @@ const TInt KPslnSlideSetBacklightOff = 0; // Slide set interval default value: 10min. const TInt KPslnSlideSetDefaultInterval = EPslnSlideSetInterval10Min; -// Slide set minimum duration is 1 second. -const TInt KPslnSlideSetMinDuration = 1; +// Slide set minimum duration is 5 second. +const TInt KPslnSlideSetMinDuration = 5; // Slide set maximum duration is 60 seconds. const TInt KPslnSlideSetMaxDuration = 60; // Slide set maximum backlight period is 30secs. diff -r 941195f2d488 -r a8834a2e9a96 uifw/AknGlobalUI/AknCapServer/src/AknCapServerEntry.cpp --- a/uifw/AknGlobalUI/AknCapServer/src/AknCapServerEntry.cpp Tue May 25 12:58:19 2010 +0300 +++ b/uifw/AknGlobalUI/AknCapServer/src/AknCapServerEntry.cpp Wed Jun 09 09:58:37 2010 +0300 @@ -371,10 +371,6 @@ TFileName fileName(KEikSrvUIResFileName); BaflUtils::NearestLanguageFile(iEikonEnv->FsSession(),fileName); iResourceFileOffset=iCoeEnv->AddResourceFileL(fileName); - - // Create FSW - iFSControl= new (ELeave) CAknFastSwapWindowControl(*this); - iFSControl->ConstructL(); // MMC unlocker iMMCUnlock = CAknMMCPasswordRequester::NewL(); @@ -489,8 +485,14 @@ // Create capserver discreetpopuphandler CAknCapServerDiscreetPopupHandler::CreateDiscreetPopupHandlerL(); - LoadAlternateFsPlugin(); - + + LoadAlternateFsPlugin(); + // Create FSW + if ( iAlternateFS == NULL ) + { + iFSControl= new (ELeave) CAknFastSwapWindowControl(*this); + iFSControl->ConstructL(); + } ProcessInitFlipStatus(); } @@ -584,19 +586,22 @@ } else { - if ( aMessage.Int0() ) - { - TInt err = KErrNone; - TRAP( err, iFSControl->InitializeWindowGroupListL( EFalse )); - if ( !err ) - { - iFSControl->RunFastSwapL(); + if ( iFSControl ) + { + if ( aMessage.Int0() ) + { + TInt err = KErrNone; + TRAP( err, iFSControl->InitializeWindowGroupListL( EFalse )); + if ( !err ) + { + iFSControl->RunFastSwapL(); + } } - } - else - { - iFSControl->CloseFastSwap(); - } + else + { + iFSControl->CloseFastSwap(); + } + } } } aMessage.Complete(KErrNone); @@ -607,7 +612,10 @@ TInt err = UpdateTaskListL( ETrue ); if ( err != KErrNone ) { - iFSControl->CloseFastSwap(); + if ( iFSControl ) + { + iFSControl->CloseFastSwap(); + } } aMessage.Complete(err); break; @@ -802,11 +810,15 @@ iAlternateFS->HandleShortAppKeyPress(); return ETrue; } - if (iFSControl->IsVisible()) - { - iFSControl->HandleShortAppsKeyPressL(); - return ETrue; - } + if ( iFSControl ) + { + if (iFSControl->IsVisible()) + { + iFSControl->HandleShortAppsKeyPressL(); + return ETrue; + } + } + return EFalse; } @@ -821,21 +833,25 @@ } else { - if (iFSControl->IsVisible()) - { - iFSControl->HandleLongAppsKeyPressL(); - } - else - { - if (iFSControl->VisibleWindowGroupsCountL()<1) + if ( iFSControl ) + { + if ( iFSControl->IsVisible()) { - return EFalse; + iFSControl->HandleLongAppsKeyPressL(); } else { - iFSControl->RunFastSwapL(); + if (iFSControl->VisibleWindowGroupsCountL()<1) + { + return EFalse; + } + else + { + iFSControl->RunFastSwapL(); + } } - } + } + } } return ETrue; @@ -1007,7 +1023,9 @@ void CAknCapAppServerAppUi::HandleWsEventL(const TWsEvent& aEvent,CCoeControl* aDestination) { - if ( iMessageReaderLongPressDetector && !IsAppsKeySuppressed() && !iFSControl->IsDisplayed() ) + if ( iMessageReaderLongPressDetector && + !IsAppsKeySuppressed() && + ( iFSControl == NULL || !iFSControl->IsDisplayed() ) ) { // Message Reader can be launched by long pressing left soft key // events need to be intercepted/consumed before they are forwarded to cba @@ -1067,7 +1085,7 @@ TInt CAknCapAppServerAppUi::UpdateTaskListL( TBool aTaskListRefreshNeeded ) { TInt err = KErrNone; - if ( iFSControl->IsDisplayed() ) + if ( iFSControl && iFSControl->IsDisplayed() ) { // update window group list (task list) TInt windowGroupListChanged = ETrue; diff -r 941195f2d488 -r a8834a2e9a96 uifw/AknGlobalUI/OldStyleNotif/Inc/AknSoftNotificationPlugin.h --- a/uifw/AknGlobalUI/OldStyleNotif/Inc/AknSoftNotificationPlugin.h Tue May 25 12:58:19 2010 +0300 +++ b/uifw/AknGlobalUI/OldStyleNotif/Inc/AknSoftNotificationPlugin.h Wed Jun 09 09:58:37 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" @@ -31,7 +31,6 @@ #include #include "AknSystemPopup.h" #include "AknGroupedNotifierNote.h" -#include "AknNotifierControllerPlugin.h" #include "aknprivatesoftnotificationparameters.h" #include "aknmessagereaderlongpressdetector.h" // MAknGroupedNoteObserver @@ -69,24 +68,15 @@ NONSHARABLE_CLASS(CAknSoftNotificationSubject) : public CBase, public MEikSrvNotifierBase2, - public MAknGroupedNotifierNoteObserver, - public MAknKeyLockObserver, + public MAknGroupedNotifierNoteObserver, public MSoftNotificationObserver, public MAknMessageNotifierObserver { public: // Constructors and destructor static CAknSoftNotificationSubject* NewL( - MAknKeyLockController* aKeyLockObserver, - CAknGlobalNoteSubject* aGlobalNoteController); + CAknGlobalNoteSubject* aGlobalNoteController ); public: // Functions from base classes - /** - * From MAknKeyLockController - * Called when the status of keylock changes. - * - * @param aStatus the new status of the keylock. - */ - virtual void KeyLockStatusChange(TKeyLockStatus aStatus); /** * From MEikSrvNotifierBase. @@ -222,8 +212,7 @@ * The constructor is private. */ CAknSoftNotificationSubject( - MAknKeyLockController* aKeyLockObserver, - CAknGlobalNoteSubject* aGlobalNoteController); + CAknGlobalNoteSubject* aGlobalNoteController ); void HandleNotifierMessageL(const TDesC8& aBuffer, TInt& aNoteId ); @@ -284,8 +273,6 @@ TBool CheckIfAlreadyExists(TAknSoftNotificationType aType); - TBool AutoLockEnabled(); - void SetNcnFlag(TBool aValue); static TInt HandleNcnFlagStateChange(TAny *aPtr); @@ -301,7 +288,7 @@ private: // Data TNotifierInfo iInfo; - MAknKeyLockController* iKeyLockController; + CAknGlobalNoteSubject* iGlobalNoteController; // The array keeps track of unselected soft notifications in priority order. @@ -351,7 +338,6 @@ TBool iNotificationsSaved; CIdle* iIdle; static TInt SetIdleStateFalse(TAny* aThis); - TBool iKeysLocked; public: // To allow static method above access this. TBool iIdleStateActive; diff -r 941195f2d488 -r a8834a2e9a96 uifw/AknGlobalUI/OldStyleNotif/Src/AknSoftNotificationPlugin.cpp --- a/uifw/AknGlobalUI/OldStyleNotif/Src/AknSoftNotificationPlugin.cpp Tue May 25 12:58:19 2010 +0300 +++ b/uifw/AknGlobalUI/OldStyleNotif/Src/AknSoftNotificationPlugin.cpp Wed Jun 09 09:58:37 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" @@ -409,12 +409,10 @@ // might leave. // CAknSoftNotificationSubject::CAknSoftNotificationSubject( - MAknKeyLockController* aKeyLockController, - CAknGlobalNoteSubject* aGlobalNoteController) -:iKeyLockController(aKeyLockController), - iGlobalNoteController(aGlobalNoteController), - iNotificationsSaved(ETrue), // We'll have to assume there are saved notifications on startup - iUniqueIdCounter(KMinimumUniqueId) + CAknGlobalNoteSubject* aGlobalNoteController ) + : iGlobalNoteController( aGlobalNoteController ), + iNotificationsSaved( ETrue ), // We'll have to assume there are saved notifications on startup + iUniqueIdCounter( KMinimumUniqueId ) { iMessagingRepository = NULL; iDynamicSoftNoteManager = CAknDynamicSoftNoteEventManager::UniqueInstance(); @@ -424,8 +422,6 @@ // EPOC default constructor can leave. void CAknSoftNotificationSubject::ConstructL() { - iKeyLockController->AddObserverL(this); - iSoftNoteEntryList = new(ELeave)CArrayFixFlat(KSoftNoteGranularity); iGlobalNoteController->SetSoftNoteObserver(this); // Set initial state to 'non-idle' @@ -471,11 +467,6 @@ delete iIdle; delete iCoverClient; - - if(iKeyLockController) - { - iKeyLockController->RemoveObserver(this); - } if ( iMessagingRepository ) { @@ -486,52 +477,17 @@ // Two-phased constructor. CAknSoftNotificationSubject* CAknSoftNotificationSubject::NewL( - MAknKeyLockController* aKeyLockController, CAknGlobalNoteSubject* aGlobalNoteController ) { CAknSoftNotificationSubject* self = new (ELeave) CAknSoftNotificationSubject( - aKeyLockController, - aGlobalNoteController); + aGlobalNoteController ); CleanupStack::PushL( self ); self->ConstructL(); - CleanupStack::Pop( self); + CleanupStack::Pop( self ); return self; } - -// --------------------------------------------------------- -// CAknSoftNotificationSubject::KeyLockStatusChange -// --------------------------------------------------------- -// -void CAknSoftNotificationSubject::KeyLockStatusChange(TKeyLockStatus aStatus) - { - if ( aStatus == EKeyLockEnabled ) - { - iKeysLocked = ETrue; - } - else if ( aStatus == EKeyLockDisabled ) - { - iKeysLocked = EFalse; - } - - if ( iGroupedNote && iGroupedNote->ListBox()) - { - if ( aStatus == EKeyLockEnabled ) - { - iGroupedNote->ListBox()->View()->ItemDrawer()->SetFlags( - CListItemDrawer::EDisableHighlight); - - iGroupedNote->DrawDeferred(); - } - else if ( aStatus == EKeyLockDisabled ) - { - iGroupedNote->ListBox()->View()->ItemDrawer()->ClearFlags( - CListItemDrawer::EDisableHighlight); - - iGroupedNote->DrawDeferred(); - } - } - } + // --------------------------------------------------------- // CAknSoftNotificationSubject::Release() @@ -1651,11 +1607,6 @@ delete iGroupedNote; iGroupedNote = note; - if ( iKeysLocked && note ) - { - iGroupedNote->ListBox()->View()->ItemDrawer()->SetFlags( - CListItemDrawer::EDisableHighlight ); - } } // --------------------------------------------------------- @@ -2323,11 +2274,6 @@ } -TBool CAknSoftNotificationSubject::AutoLockEnabled() - { - return EFalse; - } - void CAknSoftNotificationSubject::AddNewCustomNoteL( RReadStream& readStream, TInt aCount, TBool aNewNote ) { diff -r 941195f2d488 -r a8834a2e9a96 uifw/AknGlobalUI/OldStyleNotif/Src/OldStylePlugin.cpp --- a/uifw/AknGlobalUI/OldStyleNotif/Src/OldStylePlugin.cpp Tue May 25 12:58:19 2010 +0300 +++ b/uifw/AknGlobalUI/OldStyleNotif/Src/OldStylePlugin.cpp Wed Jun 09 09:58:37 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" @@ -74,8 +74,7 @@ // Soft note notifier. // ---------------------------- CAknSoftNotificationSubject* softNotificationSubject = CAknSoftNotificationSubject::NewL( - keyLockNotifier, - globalNoteSubject); + globalNoteSubject ); CleanupStack::PushL(softNotificationSubject); subjects->AppendL(softNotificationSubject); diff -r 941195f2d488 -r a8834a2e9a96 uifw/AknGlobalUI/OldStyleNotif/Src/aknkeylocknotifier.cpp --- a/uifw/AknGlobalUI/OldStyleNotif/Src/aknkeylocknotifier.cpp Tue May 25 12:58:19 2010 +0300 +++ b/uifw/AknGlobalUI/OldStyleNotif/Src/aknkeylocknotifier.cpp Wed Jun 09 09:58:37 2010 +0300 @@ -1325,13 +1325,14 @@ } } } // PenEnabled() + } - if (aNotifySysApp) - { - SendMessageToSysAp( EEikKeyLockDisabled ); - } - } - if ( iNotif ) + if (aNotifySysApp) + { + SendMessageToSysAp( EEikKeyLockDisabled ); + } + + if ( iNotif ) { iNotif->NotifyStatusChange( EKeyLockDisabled ); } @@ -2385,7 +2386,6 @@ { if ( IsKeyLockEnabled() ) { - iKeyLockControl->AutolockEnabled( EFalse ); iKeyLockControl->DisableKeylock(); } } diff -r 941195f2d488 -r a8834a2e9a96 uifw/AvKon/AknExtendedFader/group/perf.txt --- a/uifw/AvKon/AknExtendedFader/group/perf.txt Tue May 25 12:58:19 2010 +0300 +++ b/uifw/AvKon/AknExtendedFader/group/perf.txt Wed Jun 09 09:58:37 2010 +0300 @@ -1,3 +1,19 @@ +# +# 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: +# + First: ------ diff -r 941195f2d488 -r a8834a2e9a96 uifw/AvKon/src/AknTextSettingPage.cpp --- a/uifw/AvKon/src/AknTextSettingPage.cpp Tue May 25 12:58:19 2010 +0300 +++ b/uifw/AvKon/src/AknTextSettingPage.cpp Wed Jun 09 09:58:37 2010 +0300 @@ -411,7 +411,14 @@ // Construct an appropriate control context for the contained editor areas. // Context produced is owned by CAknSettingPage. SetEditedItemFrameIID( KAknsIIDQsnFrInput, KAknsIIDQsnFrInputCenter ); - TextControl()->ScrollBarFrame()->VerticalScrollBar()->SetMopParent(this); + + // ScrollBarFrame always exists in this phase + CEikScrollBar* sb = editor->ScrollBarFrame()->VerticalScrollBar(); + if ( sb ) + { + sb->SetMopParent( this ); + sb->MakeVisible( ETrue ); + } } /** diff -r 941195f2d488 -r a8834a2e9a96 uifw/AvKon/src/AknViewAppUi.cpp --- a/uifw/AvKon/src/AknViewAppUi.cpp Tue May 25 12:58:19 2010 +0300 +++ b/uifw/AvKon/src/AknViewAppUi.cpp Wed Jun 09 09:58:37 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002-2005 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" @@ -235,11 +235,19 @@ AddToStackL( iExtension->iNavigator, ECoeStackPriorityDefault - 1, ECoeStackFlagRefusesFocus ); #endif // RD_SPLIT_VIEW - if ( iEikonEnv->RootWin().OrdinalPosition() == 0 && // only clear the window for foreground apps + // Only clear the window for foreground apps. + if ( iEikonEnv->RootWin().OrdinalPosition() == 0 && iExtension->iUseDefaultScreenClearer ) - { - iClearer = CAknLocalScreenClearer::NewL( ETrue ); - } + { + if ( !iEikonEnv->StartedAsServerApp() ) + { + iClearer = CAknLocalScreenClearer::NewL( ETrue ); + } + else + { + iClearer = CAknLocalScreenClearer::NewL( ETrue, ETrue ); + } + } } // ----------------------------------------------------------------------------- diff -r 941195f2d488 -r a8834a2e9a96 uifw/AvKon/src/AknVolumePopup.cpp --- a/uifw/AvKon/src/AknVolumePopup.cpp Tue May 25 12:58:19 2010 +0300 +++ b/uifw/AvKon/src/AknVolumePopup.cpp Wed Jun 09 09:58:37 2010 +0300 @@ -382,6 +382,7 @@ { TInt feedbackStyle = (TAknFeedbackStyle)reader.ReadInt16(); iFlags = reader.ReadInt16(); + reader.Rewind( 4 ); // Rewind to the beginning, then construct slider. } else { @@ -521,7 +522,7 @@ iExt->TryLoadDefaultSliderVolumeBitmap(); iExt->iSliderControl->ReportMarkerDragEvent( ETrue ); iExt->iSliderControl->SuppressDrawing( ETrue ); - } + } else { iExt->iSliderControl = new( ELeave )CAknSlider; diff -r 941195f2d488 -r a8834a2e9a96 uifw/AvKon/src/Aknslider.cpp --- a/uifw/AvKon/src/Aknslider.cpp Tue May 25 12:58:19 2010 +0300 +++ b/uifw/AvKon/src/Aknslider.cpp Wed Jun 09 09:58:37 2010 +0300 @@ -1497,7 +1497,12 @@ TResourceReader reader; CEikonEnv::Static()->CreateResourceReaderLC( reader, aResourceId ); - reader.ReadInt16(); // ignore layout + TInt sliderType = reader.ReadInt16(); + if ( sliderType == EAknSliderWithFeedbackStyle ) + { + reader.ReadInt16(); // ignore type + reader.ReadInt16(); // ignore layout + } TInt minValue = reader.ReadInt16(); TInt maxValue = reader.ReadInt16(); CleanupStack::PopAndDestroy(); // reader @@ -1538,7 +1543,12 @@ TResourceReader reader; CEikonEnv::Static()->CreateResourceReaderLC( reader, aResourceId ); - reader.ReadInt16(); // ignore layout + TInt sliderType = reader.ReadInt16(); + if ( sliderType == EAknSliderWithFeedbackStyle ) + { + reader.ReadInt16(); // ignore type + reader.ReadInt16(); // ignore layout + } TInt minValue = reader.ReadInt16(); TInt maxValue = reader.ReadInt16(); CleanupStack::PopAndDestroy(); // reader @@ -4248,12 +4258,16 @@ MTouchFeedback* feedback = MTouchFeedback::Instance(); if ( feedback ) { + TTouchContinuousFeedback type = ETouchContinuousSmooth; TInt intensity = KStableFeedbackIntesity; + if ( SliderData()->iFeedbackStyle == EAknSliderFbDynamic ) { + type = ETouchDynamicSlider; intensity = FeedbackIntensity(); } - feedback->StartFeedback( this, ETouchDynamicSlider, aPointerEvent, intensity, aTimeout ); + + feedback->StartFeedback( this, type, aPointerEvent, intensity, aTimeout ); iExt->SetFlag( CAknSliderExtension::EFlagPlayingContinuousFb ); } } diff -r 941195f2d488 -r a8834a2e9a96 uifw/AvKon/src/aknlongtapanimation.cpp --- a/uifw/AvKon/src/aknlongtapanimation.cpp Tue May 25 12:58:19 2010 +0300 +++ b/uifw/AvKon/src/aknlongtapanimation.cpp Wed Jun 09 09:58:37 2010 +0300 @@ -367,6 +367,11 @@ { iExtension->iTimer->Cancel(); iExtension->iFlags &= ~EAnimationStarted; + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if ( feedback ) + { + feedback->StopFeedback( this ); + } } } diff -r 941195f2d488 -r a8834a2e9a96 uifw/AvKon/src/aknlongtapdetector.cpp --- a/uifw/AvKon/src/aknlongtapdetector.cpp Tue May 25 12:58:19 2010 +0300 +++ b/uifw/AvKon/src/aknlongtapdetector.cpp Wed Jun 09 09:58:37 2010 +0300 @@ -254,6 +254,7 @@ { StopAnimation(); } + iState = EWaiting; } @@ -321,7 +322,6 @@ && aEvent.Pointer()->iType == TPointerEvent::EButton1Up ) ) { Cancel(); - iState = EWaiting; } } diff -r 941195f2d488 -r a8834a2e9a96 uifw/AvKon/src/aknnavide.cpp --- a/uifw/AvKon/src/aknnavide.cpp Tue May 25 12:58:19 2010 +0300 +++ b/uifw/AvKon/src/aknnavide.cpp Wed Jun 09 09:58:37 2010 +0300 @@ -800,20 +800,6 @@ { CCoeControl::HandlePointerEventL( aPointerEvent ); } - - // feedback is also given on up event from arrows - if ( rightArrowTapped || leftArrowTapped ) - { - MTouchFeedback* feedback = MTouchFeedback::Instance(); - if ( feedback && - ( iDecoratedControl && !iDecoratedControl->IsDimmed() ) ) - { - feedback->InstantFeedback( this, - ETouchFeedbackBasicButton, - ETouchFeedbackVibra, - aPointerEvent ); - } - } } else { diff -r 941195f2d488 -r a8834a2e9a96 uifw/AvKon/src/aknview.cpp --- a/uifw/AvKon/src/aknview.cpp Tue May 25 12:58:19 2010 +0300 +++ b/uifw/AvKon/src/aknview.cpp Wed Jun 09 09:58:37 2010 +0300 @@ -601,8 +601,6 @@ DoDeactivate(); - AknItemActionMenuRegister::RemoveConstructingMenuBarOwner( this ); - if ( iCba ) { iCba->MakeVisible( EFalse ); @@ -861,7 +859,7 @@ if ( iCba ) { if ( aVisible ) - { + { iCba->DrawableWindow()->SetOrdinalPosition( 0 ); iCba->MakeVisible( ETrue ); iCba->DrawNow(); // This is needed because problems if TRANSPARENCY is set, see MTVN-6HXCN4 diff -r 941195f2d488 -r a8834a2e9a96 uifw/AvKon/src/eikfrlb.cpp --- a/uifw/AvKon/src/eikfrlb.cpp Tue May 25 12:58:19 2010 +0300 +++ b/uifw/AvKon/src/eikfrlb.cpp Wed Jun 09 09:58:37 2010 +0300 @@ -827,11 +827,11 @@ TInt lastPotentialItemIndex = Min( numberOfItems, - iTopItemIndex + NumberOfItemsThatFitInRect( iViewRect ) ); + iTopItemIndex + NumberOfItemsThatFitInRect( iViewRect ) - 1 ) ; gc->SetClippingRect( iViewRect ); - while ( i < lastPotentialItemIndex ) + while ( i <= lastPotentialItemIndex ) { DrawItem( i++ ); } diff -r 941195f2d488 -r a8834a2e9a96 uifw/AvKon/src/eikfrlbd.cpp --- a/uifw/AvKon/src/eikfrlbd.cpp Tue May 25 12:58:19 2010 +0300 +++ b/uifw/AvKon/src/eikfrlbd.cpp Wed Jun 09 09:58:37 2010 +0300 @@ -2868,9 +2868,18 @@ && iExtension->iMarkingIconArray->Count() == 2 ) #endif // RD_TOUCH2_MARKING { - textRect.iTl.iX += + if ( AknLayoutUtils::LayoutMirrored() ) + { + textRect.iBr.iX -= AknLayoutScalable_Avkon::list_double_graphic_pane_t1( - 0 ).LayoutLine().il; + 0 ).LayoutLine().ir; + } + else + { + textRect.iTl.iX += + AknLayoutScalable_Avkon::list_double_graphic_pane_t1( + 0 ).LayoutLine().il; + } TAknLayoutRect layoutRect; layoutRect.LayoutRect( aItemRect, @@ -4227,6 +4236,7 @@ CEikListBox* listbox = static_cast( Control() ); DrawMarkingModeIcons( aProperties, aGc, itemRect ); + TInt iconOffset = aItemRect.Width() - itemRect.Width(); const TColors* subcellColors = &aColors; @@ -4334,6 +4344,7 @@ } TRect bRect = TRect(sc->iPosition,sc->iSize); + bRect.iBr.iX -= iconOffset; TMargins m = sc->iMargin; TRect cRect = TRect(bRect.iTl+TSize(m.iLeft,m.iTop),bRect.Size()-TSize(m.iRight+m.iLeft,m.iBottom+m.iTop)); const TBool istrans = sc->iTransparent; @@ -4424,6 +4435,7 @@ if ( layoutMirrored ) { TRect bRect( sc->iPosition, sc->iSize ); + bRect.iBr.iX -= iconOffset; TRect cRect2( bRect.iTl + TSize( m.iLeft, m.iTop ), bRect.Size() - TSize( m.iRight + m.iLeft, m.iBottom + m.iTop ) ); diff -r 941195f2d488 -r a8834a2e9a96 uifw/AvKon/srcdata/smiley.rss --- a/uifw/AvKon/srcdata/smiley.rss Tue May 25 12:58:19 2010 +0300 +++ b/uifw/AvKon/srcdata/smiley.rss Wed Jun 09 09:58:37 2010 +0300 @@ -159,7 +159,7 @@ { code = EAknSmileyIconIrritated; smileyIconId = EMbmSmileyQgn_indi_smiley_irritated; - strings = ":X :-X"; + strings = ":X :x :-X :-x"; }, SMILEY_ICON_ITEM { @@ -201,7 +201,7 @@ { code = EAknSmileyIconNerd; smileyIconId = EMbmSmileyQgn_indi_smiley_nerd; - strings = "8-)"; + strings = "8) 8-)"; }, SMILEY_ICON_ITEM { @@ -217,7 +217,7 @@ code = EAknSmileyAnimCoffee; smileyIconId = EMbmSmileyQgn_indi_smiley_anim_coffee; smileyStaticIconId = EMbmSmileyQgn_indi_smiley_coffee; - strings = "c[_]"; + strings = "c[_] C[_]"; }, SMILEY_ICON_ITEM { diff -r 941195f2d488 -r a8834a2e9a96 uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomavkonpsln/readme.txt --- a/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomavkonpsln/readme.txt Tue May 25 12:58:19 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomavkonpsln/readme.txt Wed Jun 09 09:58:37 2010 +0300 @@ -1,3 +1,19 @@ +# +# 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: +# + case : bctestakncase tested header files: diff -r 941195f2d488 -r a8834a2e9a96 uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomavkonpsln/readme.txt --- a/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomavkonpsln/readme.txt Tue May 25 12:58:19 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomavkonpsln/readme.txt Wed Jun 09 09:58:37 2010 +0300 @@ -1,3 +1,19 @@ +# +# 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: +# + case : bctestakncase tested header files: diff -r 941195f2d488 -r a8834a2e9a96 uifw/AvKon/tsrc/bc/bctestlauncher/group/uid_range.txt --- a/uifw/AvKon/tsrc/bc/bctestlauncher/group/uid_range.txt Tue May 25 12:58:19 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/bctestlauncher/group/uid_range.txt Wed Jun 09 09:58:37 2010 +0300 @@ -1,3 +1,19 @@ +# +# 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: +# + (1) 0x20004742 - 0x2000474B diff -r 941195f2d488 -r a8834a2e9a96 uifw/AvKon/tsrc/bc/release_note.txt --- a/uifw/AvKon/tsrc/bc/release_note.txt Tue May 25 12:58:19 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/release_note.txt Wed Jun 09 09:58:37 2010 +0300 @@ -1,3 +1,19 @@ +# +# Copyright (c) 2006-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: +# + 2009-12-03, BC test release v2.09 [what's new] 1. Added new test driver for single click API changes (bctestsingleclick). diff -r 941195f2d488 -r a8834a2e9a96 uifw/AvKon/tsrc/bc/script/codetest_script/readme.txt --- a/uifw/AvKon/tsrc/bc/script/codetest_script/readme.txt Tue May 25 12:58:19 2010 +0300 +++ b/uifw/AvKon/tsrc/bc/script/codetest_script/readme.txt Wed Jun 09 09:58:37 2010 +0300 @@ -1,3 +1,19 @@ +# +# 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: +# + Quick start: 1. build the API table: (If you have built it before, skip this step.) diff -r 941195f2d488 -r a8834a2e9a96 uifw/EikStd/EABI/EIKCOCTLU.DEF --- a/uifw/EikStd/EABI/EIKCOCTLU.DEF Tue May 25 12:58:19 2010 +0300 +++ b/uifw/EikStd/EABI/EIKCOCTLU.DEF Wed Jun 09 09:58:37 2010 +0300 @@ -2015,4 +2015,6 @@ _ZN11CEikListBox14SetMarkingModeEi @ 2014 NONAME _ZN11CEikListBox22SetMarkingModeObserverEP23MAknMarkingModeObserver @ 2015 NONAME _ZN10CAknButton14EnableFeedbackEi @ 2016 NONAME + _ZN22CAknLocalScreenClearer4NewLEii @ 2017 NONAME + _ZN22CAknLocalScreenClearer5NewLCEii @ 2018 NONAME diff -r 941195f2d488 -r a8834a2e9a96 uifw/EikStd/bwins/EIKCOCTLU.DEF --- a/uifw/EikStd/bwins/EIKCOCTLU.DEF Tue May 25 12:58:19 2010 +0300 +++ b/uifw/EikStd/bwins/EIKCOCTLU.DEF Wed Jun 09 09:58:37 2010 +0300 @@ -1626,4 +1626,5 @@ ?SetMarkingModeObserver@CEikListBox@@QAEXPAVMAknMarkingModeObserver@@@Z @ 1625 NONAME ; void CEikListBox::SetMarkingModeObserver(class MAknMarkingModeObserver *) ?SetMarkingMode@CEikListBox@@QAEXH@Z @ 1626 NONAME ; void CEikListBox::SetMarkingMode(int) ?EnableFeedback@CAknButton@@QAEXH@Z @ 1627 NONAME ; void CAknButton::EnableFeedback(int) - + ?NewLC@CAknLocalScreenClearer@@SAPAV1@HH@Z @ 1628 NONAME ; class CAknLocalScreenClearer * CAknLocalScreenClearer::NewLC(int, int) + ?NewL@CAknLocalScreenClearer@@SAPAV1@HH@Z @ 1629 NONAME ; class CAknLocalScreenClearer * CAknLocalScreenClearer::NewL(int, int) diff -r 941195f2d488 -r a8834a2e9a96 uifw/EikStd/coctlsrc/AknClearer.cpp --- a/uifw/EikStd/coctlsrc/AknClearer.cpp Tue May 25 12:58:19 2010 +0300 +++ b/uifw/EikStd/coctlsrc/AknClearer.cpp Wed Jun 09 09:58:37 2010 +0300 @@ -20,7 +20,6 @@ #include #include "aknclearer.h" #include -#include #include #include #include @@ -51,153 +50,91 @@ enum TAknScreenClearerBaseFlags { - EAknScreenClearerDrawNavi, - EAknScreenClearerBlankAppStatusPane, - EAknScreenClearerDrawNaviSolid, + EAknScreenClearerBlankAppStatusPane }; enum { - ELayerCbaBackground=0, - ELayerBackground = 1, - ELayerExtension = 2, - ELayerStripe = 3, - ELayerWallpaper = 4, - ELayerN = 5 + ELayerBackground = 0, + ELayerExtension = 1, + ELayerStripe = 2, + ELayerWallpaper = 3, + ELayerN = 4 }; - enum - { - ELayerStaconCbaBackground=0, - ELayerStaconTop = 1, - ELayerStaconBottom = 2, - ELayerStaconMain = 3, - ELayerStaconWallpaper = 4, - ELayerStaconN = 5 - }; - enum { - ELayerFlatCbaBackground=0, - ELayerFlatBackground = 1, - ELayerFlatTl = 2, - ELayerFlatTr = 3, - ELayerFlatBl = 4, - ELayerFlatBr = 5, - ELayerFlatT = 6, - ELayerFlatB = 7, - ELayerFlatR = 8, - ELayerFlatL = 9, - ELayerFlatCenter = 10, - ELayerFlatMain = 11, - ELayerFlatWallpaper = 12, - ELayerSCtrl1 = 13, - ELayerSCtrl2 = 14, - ELayerSCtrl3 = 15, - ELayerSCtrl4 = 16, - ELayerSCtrl5 = 17, - ELayerFlatN = 18 + ELayerStaconTop = 0, + ELayerStaconBottom = 1, + ELayerStaconMain = 2, + ELayerStaconWallpaper = 3, + ELayerStaconN = 4 + }; + +enum + { + ELayerFlatBackground = 0, + ELayerFlatTl = 1, + ELayerFlatTr = 2, + ELayerFlatBl = 3, + ELayerFlatBr = 4, + ELayerFlatT = 5, + ELayerFlatB = 6, + ELayerFlatR = 7, + ELayerFlatL = 8, + ELayerFlatCenter = 9, + ELayerFlatMain = 10, + ELayerFlatWallpaper = 11, + ELayerFlatN = 12 }; class CAknScreenClearerBaseExtension : public CBase { - public: - ~CAknScreenClearerBaseExtension() - { - delete iNaviWipe; - delete iNaviMask; - delete iBgContext; - } - public: - CFbsBitmap* iNaviWipe; - CFbsBitmap* iNaviMask; - CAknsLayeredBackgroundControlContext* iBgContext; - TInt iOrdinalPosition; +public: + ~CAknScreenClearerBaseExtension() + { + delete iBgContext; + } +public: + CAknsLayeredBackgroundControlContext* iBgContext; + TInt iOrdinalPosition; + TBool iTransparent; }; -/* THIS FUNCTION IS NOT USED - -static void LoadAndFlipBitmapL( - CFbsBitmap* aTrg, const TDesC& aFile, const TInt aIndex ) - { - User::LeaveIfNull(aTrg); - - CFbsBitmap* sourceBitmap = new (ELeave) CFbsBitmap(); - CleanupStack::PushL(sourceBitmap); - User::LeaveIfError(sourceBitmap->Load(aFile, aIndex, ETrue)); - TSize sourceBitmapSize = sourceBitmap->SizeInPixels(); - - User::LeaveIfError(aTrg->Create(sourceBitmapSize, sourceBitmap->DisplayMode())); - - CFbsBitmapDevice* destinationDevice = CFbsBitmapDevice::NewL( aTrg ); - CleanupStack::PushL(destinationDevice); - - CFbsBitGc* destinationGc; - User::LeaveIfError( destinationDevice->CreateContext( destinationGc ) ); - - TRect sourceBitmapBlittingRect( 0,0,1,sourceBitmapSize.iHeight ); - - for ( TInt xPos=sourceBitmapSize.iWidth-1; xPos >= 0; xPos-- ) - { - destinationGc->BitBlt( TPoint(xPos,0), sourceBitmap, sourceBitmapBlittingRect ); - sourceBitmapBlittingRect.iTl.iX++; - sourceBitmapBlittingRect.iBr.iX++; - } - - delete destinationGc; - CleanupStack::PopAndDestroy(2); // sourceBitmap, destinationDevice - } -*/ - -/* THIS FUNCTION IS NOT USED - -static CFbsBitmap* FlipBitmapL( CFbsBitmap* aBitmap ) - { - User::LeaveIfNull(aBitmap); - - TSize sourceBitmapSize = aBitmap->SizeInPixels(); - - // get a copy of wanted rect of source bitmap to tmpBitmap - CFbsBitmap* tmpBitmap = new (ELeave) CFbsBitmap(); - CleanupStack::PushL( tmpBitmap ); - - User::LeaveIfError( tmpBitmap->Create( sourceBitmapSize, aBitmap->DisplayMode() ) ); - - CFbsBitmapDevice* destinationDevice = CFbsBitmapDevice::NewL( tmpBitmap ); - CleanupStack::PushL( destinationDevice ); - - CFbsBitGc* destinationGc; - User::LeaveIfError( destinationDevice->CreateContext( destinationGc ) ); - - TRect sourceBitmapBlittingRect( 0,0,1,sourceBitmapSize.iHeight ); - - for ( TInt xPos=sourceBitmapSize.iWidth-1; xPos >= 0; xPos-- ) - { - destinationGc->BitBlt( TPoint(xPos,0), aBitmap, sourceBitmapBlittingRect ); - sourceBitmapBlittingRect.iTl.iX++; - sourceBitmapBlittingRect.iBr.iX++; - } - - delete destinationGc; - CleanupStack::PopAndDestroy(); // destinationDevice - CleanupStack::Pop(); // tmpBitmap - - return tmpBitmap; - } -*/ EXPORT_C CAknScreenClearerBase::~CAknScreenClearerBase() { delete iExtension; } + +void CAknScreenClearerBase::CreateExtensionL() + { + if ( !iExtension ) + { + iExtension = new (ELeave) CAknScreenClearerBaseExtension; + } + } + + +void CAknScreenClearerBase::SetTransparent( TBool aTransparent ) + { + iExtension->iTransparent = aTransparent; + } + + EXPORT_C void CAknScreenClearerBase::ConstructL(RWindowGroup& aParent, TInt aOrdinalPos, TBool aBlankAppStatusPane) { - iExtension = new (ELeave) CAknScreenClearerBaseExtension(); + CreateExtensionL(); CreateWindowL(&aParent); + if ( iExtension->iTransparent ) + { + EnableWindowTransparency(); + } + CAlfEffectObserver* alfEffectObserver = CAlfEffectObserver::NewL(); alfEffectObserver->SetDistractionWindow(*DrawableWindow()); delete alfEffectObserver; @@ -231,7 +168,17 @@ { CWindowGc& gc = SystemGc(); MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - AknsDrawUtils::Background( skin, iExtension->iBgContext, this, gc, Rect() ); + + if ( !iExtension->iTransparent ) + { + AknsDrawUtils::Background( skin, iExtension->iBgContext, this, gc, Rect() ); + } + else + { + gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha ); + gc.Clear( Rect() ); + gc.Reset(); + } iEikonEnv->WsSession().Flush(); return; @@ -264,31 +211,51 @@ CEikStatusPaneBase* sp = CEikStatusPaneBase::Current(); - if (iFlags[EAknScreenClearerBlankAppStatusPane]) + // Set the clearer window's size so that it covers the screen in both + // portrait and landscape orientations simultaneously. + // This is done in order to prevent NGA from drawing control groups + // underneath the fullscreen foreground application in cases the clearer + // orientation can't be readily updated during the layout switch, due + // to e.g. application startup taking a long time. + // Note that only the clearer window's size is set to be larger, the + // skin background is still the screen size so that the skin background + // won't get stretched. + TRect screenRect( KWholeScreen ); + TRect squareScreenRect( screenRect ); + if ( squareScreenRect.Width() > squareScreenRect.Height() ) { - shape.AddRect(KWholeScreen); + squareScreenRect.SetHeight( squareScreenRect.Width() ); } else { - shape.AddRect(KWholeScreen); - sp->GetShapeL(appStatuspaneShape, !iFlags[EAknScreenClearerBlankAppStatusPane], ETrue); - shape.SubRegion(appStatuspaneShape); + squareScreenRect.SetWidth( squareScreenRect.Height() ); + } + + if ( iFlags[EAknScreenClearerBlankAppStatusPane] ) + { + shape.AddRect( squareScreenRect ); + } + else + { + // Square shape is used only if the clearer is used to clear the + // whole screen. + shape.AddRect( screenRect ); + sp->GetShapeL( appStatuspaneShape, + !iFlags[EAknScreenClearerBlankAppStatusPane], + ETrue ); + shape.SubRegion( appStatuspaneShape ); } - if (shape.CheckError()) - User::Leave(KErrNoMemory); - - SetRect(KWholeScreen); - DrawableWindow()->SetShape(shape); + if ( shape.CheckError() ) + { + User::Leave( KErrNoMemory ); + } - CleanupStack::PopAndDestroy(2); // close shapes + SetRect( iFlags[EAknScreenClearerBlankAppStatusPane] ? squareScreenRect : + screenRect ); + DrawableWindow()->SetShape( shape ); - TBool drawNavi = - iFlags[EAknScreenClearerBlankAppStatusPane] && - sp->IsVisible() && - sp->PaneCapabilities(TUid::Uid(EEikStatusPaneUidNavi)).IsInCurrentLayout(); - - iFlags.Assign(EAknScreenClearerDrawNavi, drawNavi); + CleanupStack::PopAndDestroy( 2, &shape ); // close shapes } @@ -508,41 +475,7 @@ iExtension->iBgContext->SetLayerRect( 0, main_pane.Rect() ); iExtension->iBgContext->SetLayerRect( 1, staconTop ); iExtension->iBgContext->SetLayerRect( 2, staconBottom ); - } - - if (Layout_Meta_Data::IsPenEnabled()) - { - TAknLayoutRect area_side_right_pane; - TInt variety = 0; - area_side_right_pane.LayoutRect(application_window, AknLayoutScalable_Avkon::area_side_right_pane(variety)); - - TAknLayoutRect sctrl_sk_top_pane; - sctrl_sk_top_pane.LayoutRect(area_side_right_pane.Rect(), AknLayoutScalable_Avkon::sctrl_sk_top_pane(0)); - - TAknLayoutRect sctrl_sk_bottom_pane; - sctrl_sk_bottom_pane.LayoutRect(area_side_right_pane.Rect(), AknLayoutScalable_Avkon::sctrl_sk_bottom_pane(0)); - - TAknLayoutRect grid_sctrl_middle_pane; - grid_sctrl_middle_pane.LayoutRect(area_side_right_pane.Rect(), AknLayoutScalable_Avkon::grid_sctrl_middle_pane(0)); - - TAknLayoutRect cell_sctrl_middle_pane1; - cell_sctrl_middle_pane1.LayoutRect(grid_sctrl_middle_pane.Rect(), AknLayoutScalable_Avkon::cell_sctrl_middle_pane(0,0,0)); - TAknLayoutRect cell_sctrl_middle_pane2; - cell_sctrl_middle_pane2.LayoutRect(grid_sctrl_middle_pane.Rect(), AknLayoutScalable_Avkon::cell_sctrl_middle_pane(0,0,1)); - TAknLayoutRect cell_sctrl_middle_pane3; - cell_sctrl_middle_pane3.LayoutRect(grid_sctrl_middle_pane.Rect(), AknLayoutScalable_Avkon::cell_sctrl_middle_pane(0,0,2)); - - - - iExtension->iBgContext->SetLayerImage( ELayerFlatCbaBackground, KAknsIIDQsnBgScreen ); - - - iExtension->iBgContext->SetLayerRect( ELayerFlatCbaBackground, application_window ); - } - - - - + } } else { @@ -684,13 +617,35 @@ return(self); } + +EXPORT_C CAknLocalScreenClearer* CAknLocalScreenClearer::NewLC(TBool aBlankAppStatusPane, TBool aTransparent) + { + CAknLocalScreenClearer* self=new(ELeave) CAknLocalScreenClearer; + CleanupStack::PushL(self); + self->CreateExtensionL(); + self->SetTransparent(aTransparent); + CEikonEnv& eikEnv = *static_cast(self->ControlEnv()); + self->ConstructL(eikEnv.RootWin(), 0, aBlankAppStatusPane); + return(self); + } + + EXPORT_C CAknLocalScreenClearer* CAknLocalScreenClearer::NewL(TBool aBlankAppStatusPane) { CAknLocalScreenClearer* self = CAknLocalScreenClearer::NewLC(aBlankAppStatusPane); CleanupStack::Pop(self); return(self); } - + + +EXPORT_C CAknLocalScreenClearer* CAknLocalScreenClearer::NewL(TBool aBlankAppStatusPane, TBool aTransparent) + { + CAknLocalScreenClearer* self = CAknLocalScreenClearer::NewLC(aBlankAppStatusPane, aTransparent); + CleanupStack::Pop(self); + return(self); + } + + EXPORT_C void CAknLocalScreenClearer::HandleResourceChange(TInt aType) { if (aType == KEikDynamicLayoutVariantSwitch) diff -r 941195f2d488 -r a8834a2e9a96 uifw/EikStd/coctlsrc/EIKEDWIN.CPP --- a/uifw/EikStd/coctlsrc/EIKEDWIN.CPP Tue May 25 12:58:19 2010 +0300 +++ b/uifw/EikStd/coctlsrc/EIKEDWIN.CPP Wed Jun 09 09:58:37 2010 +0300 @@ -653,9 +653,9 @@ { TInt length( Min( aLengthToRetrieve, iEdwin.TextLength() - aDocumentPosition ) ); iEdwin.iText->Extract( aEditorContent, aDocumentPosition, length ); - if ( iEdwin.IsSmileyEnabled() ) - { - CSmileyManager* smiley( iEdwin.iEdwinExtension->iSmiley ); + CSmileyManager* smiley( iEdwin.iEdwinExtension->iSmiley ); + if ( smiley && smiley->HasSmileyIconsInText() ) + { CAknEdwinState* state( iEdwin.EditorState() ); if ( state ) { @@ -663,17 +663,22 @@ if ( aDocumentPosition >= inlineText.LowerPos() && aDocumentPosition + length <= inlineText.HigherPos() ) { - smiley->ConvertTextForSmileyL( aDocumentPosition, aEditorContent, - EFalse ); + TRAP_IGNORE( smiley->ConvertTextForSmileyL( aDocumentPosition, aEditorContent, + EFalse ); ) } } + TInt smileyEndPos( 0 ); for ( TInt i( 0 ); i < length; i++ ) { - if ( smiley->SmileyCodeByPos( aDocumentPosition + i ) > 0 && - !CSmileyManager::IsSmileyCode( aEditorContent[i] ) ) + if ( aEditorContent[i] == CSmileyManager::KCompensateChar && + i < smileyEndPos ) { aEditorContent[i] = CSmileyManager::KPlaceHolder; } + else if ( smiley->IsSmileyCode( aEditorContent[i] ) ) + { + smileyEndPos = i + smiley->SmileyLength( aDocumentPosition + i ); + } } } } @@ -8510,9 +8515,7 @@ checkPos--; checkPos = checkPos >= 0 ? checkPos : 0; } - if ( CSmileyManager::IsSmileyCode( iEdwinExtension->iSmiley-> - SmileyCodeByPos( checkPos ) ) && - !iEdwinExtension->iSmiley->IsDisabledSmileyIcon( checkPos ) ) + if ( iEdwinExtension->iSmiley->SmileyCodeByPos( checkPos ) > 0 ) { TInt codeLength( iEdwinExtension->iSmiley->SmileyLength( checkPos ) ); iEdwinExtension->iSmiley->DisableSmileyIcon( checkPos ); @@ -8940,7 +8943,6 @@ } } - // --------------------------------------------------------------------------- // CEikEdwin::SkipBackgroundDrawer // --------------------------------------------------------------------------- diff -r 941195f2d488 -r a8834a2e9a96 uifw/EikStd/coctlsrc/EIKLABEL.CPP --- a/uifw/EikStd/coctlsrc/EIKLABEL.CPP Tue May 25 12:58:19 2010 +0300 +++ b/uifw/EikStd/coctlsrc/EIKLABEL.CPP Wed Jun 09 09:58:37 2010 +0300 @@ -270,7 +270,7 @@ TInt CEikLabel::HeightInPixels() const { - return(iMargin.iTop+iMargin.iBottom + iGapBetweenLines*(iNumberOfLines-1) + iNumberOfLines*iFont->HeightInPixels()); + return(iMargin.iTop+iMargin.iBottom + iGapBetweenLines*(iNumberOfLines-1) + iNumberOfLines*iFont->FontMaxHeight()); } TInt CEikLabel::WidthInPixels(TPtrC& aText) const @@ -403,7 +403,7 @@ const TRect rect = Rect(); - const TInt deltaHeight=rect.Height()-HeightInPixels(); + const TInt deltaHeight=rect.Height() - HeightInPixels(); TInt preHeight=iMargin.iTop; // used on first line TInt postHeight=iMargin.iBottom; // used on last line if (deltaHeight>0) @@ -437,14 +437,14 @@ } else { - textPaneTopToBaseline = iFont->AscentInPixels(); - textPaneHeight = iFont->HeightInPixels(); + textPaneTopToBaseline = iFont->FontMaxAscent(); + textPaneHeight = iFont->FontMaxHeight(); } // iGapBetweenLines is defined as baseline separation - CFont::HeightInPixels // Since we are using the better metrics above, we have to actually use something which is // derived from iGapBetweenLines, but is e.g. reduced if textpaneheight > heightInPixels - TInt gapBetweenTextPanes( iGapBetweenLines - (textPaneHeight - iFont->HeightInPixels()) ); + TInt gapBetweenTextPanes( iGapBetweenLines - (textPaneHeight - iFont->FontMaxHeight() ) ); FOREVER { diff -r 941195f2d488 -r a8834a2e9a96 uifw/EikStd/coctlsrc/EIKLBV.CPP --- a/uifw/EikStd/coctlsrc/EIKLBV.CPP Tue May 25 12:58:19 2010 +0300 +++ b/uifw/EikStd/coctlsrc/EIKLBV.CPP Wed Jun 09 09:58:37 2010 +0300 @@ -657,15 +657,33 @@ EXPORT_C TInt CListBoxView::NumberOfItemsThatFitInRect(const TRect& aRect) const { + TInt itemNumber = 0; if (iItemHeight == 0) { _AKNTRACE( "Number of items is 0" ); - return 0; + return itemNumber; } - TInt items = aRect.Height() / iItemHeight; - if ( ( iVerticalOffset != 0 ) || ( (aRect.Height() - iVerticalOffset) % iItemHeight > 0 ) ) items++; - _AKNTRACE( "Number of items is %d", items ); - return items; + TInt items = aRect.Height() / iItemHeight; + TInt extraHeight = aRect.Height() % iItemHeight; + // if there is offset or extra height, then there is at least one partical + // displayed item + if ( iVerticalOffset != 0 || extraHeight > 0 ) + { + items++; + } + // if extra height is not totally taken by top partically displayed item, + // then there is still place to display a partcial item in bottom. consider + // a example which view height is 35 and item height is 10, then it's possible + // to display 5 items with the height like 3,10,10,10,2 + if ( iVerticalOffset != 0 && + extraHeight != 0 && + ( iItemHeight + iVerticalOffset ) < extraHeight ) + { + items++; + } + itemNumber = items; + _AKNTRACE( "Number of items is %d", itemNumber ); + return itemNumber; } EXPORT_C void CListBoxView::DeselectRangeL(TInt aItemIndex1, TInt aItemIndex2) @@ -1193,16 +1211,17 @@ RDebug::Print( _L( "CListBoxView::CalcNewTopItemIndexSoItemIsVisible" ) ); #endif // _DEBUG TInt newTopItemIndex=iTopItemIndex; - const TInt numItemsThatFitInRect=NumberOfItemsThatFitInRect(iViewRect); - if (aItemIndex < iTopItemIndex || numItemsThatFitInRect == 0) + const TInt numItemsThatFitInRect=NumberOfItemsThatFitInRect( iViewRect ); + if ( aItemIndex < iTopItemIndex || numItemsThatFitInRect == 0 ) + { newTopItemIndex = aItemIndex; - else if (aItemIndex > iBottomItemIndex) - newTopItemIndex = aItemIndex - numItemsThatFitInRect + 1; - else if ( ( iVerticalOffset < 0 ) - && ( aItemIndex == iBottomItemIndex ) - && ( 0 == iViewRect.Height() % iItemHeight ) ) + } + else { - newTopItemIndex += 1; + if (aItemIndex > iBottomItemIndex) + { + newTopItemIndex = aItemIndex - numItemsThatFitInRect + 1; + } } if (!ITEM_EXISTS_ONCE(newTopItemIndex) && newTopItemIndex != 0 ) @@ -1229,6 +1248,13 @@ { me->SetItemOffsetInPixels( 0 ); } + //after reset vertical offset, + //the number of items which fit in the view maybe change + TInt newNumItemsThatFitInRect = NumberOfItemsThatFitInRect( iViewRect ); + if ( newNumItemsThatFitInRect != numItemsThatFitInRect ) + { + newTopItemIndex = aItemIndex - newNumItemsThatFitInRect + 1; + } } _AKNTRACE_FUNC_EXIT; diff -r 941195f2d488 -r a8834a2e9a96 uifw/EikStd/coctlsrc/EIKLBX.CPP --- a/uifw/EikStd/coctlsrc/EIKLBX.CPP Tue May 25 12:58:19 2010 +0300 +++ b/uifw/EikStd/coctlsrc/EIKLBX.CPP Wed Jun 09 09:58:37 2010 +0300 @@ -526,6 +526,11 @@ void DisableSingleClick(); /** + * Enables single click + */ + void EnableSingleClickL(); + + /** * Disables item specific menu. */ void DisableItemSpecificMenu(); @@ -757,6 +762,12 @@ * Ordinal position of listbox window, before stylus menu is opened. */ TInt iOldWinPos; + + /** + * If double click modifier is set on PointerEvent, the event may be ignored + * in some situation(To prevent extra dialog launched by AO). + */ + TBool iDoubleClickEventIgnored; private: CMatchBuffer* iBuffer; @@ -790,7 +801,7 @@ /** * Height of the list in pixels. */ - TInt iListBottomLimit; + TInt iListBottomLimit; }; // CEikListBoxExt @@ -1270,6 +1281,28 @@ _AKNTRACE_FUNC_EXIT; } +// ----------------------------------------------------------------------------- +// CListBoxExt::EnableSingleClickL +// ----------------------------------------------------------------------------- +// +void CListBoxExt::EnableSingleClickL() + { + _AKNTRACE_FUNC_ENTER; + if ( !iLongTapDetector ) + { + iLongTapDetector = CAknLongTapDetector::NewL( this ); + } + if ( !iItemActionMenu ) + { + iItemActionMenu = CAknItemActionMenu::RegisterCollectionL( + *this, &iListBox ); + iListBox.iListBoxFlags &= ( ~CEikListBox::EDisableItemSpecificMenu ); + } + iSingleClickEnabled = ETrue; + EnableHighlight( EFalse ); + // iListBox.UpdateHighlightL( iListBox.iView->CurrentItemIndex() ); + _AKNTRACE_FUNC_EXIT; + } // ----------------------------------------------------------------------------- // CListBoxExt::DisableItemSpecificMenu @@ -1299,8 +1332,9 @@ // 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() ) + if ( ( !( ( iListBox.MarkingMode() || MarkedItems() ) && !iListBox.View()->ItemIsSelected( iListBox.CurrentItemIndex() ) ) + || ( iListBox.iListBoxFlags & CEikListBox::EItemSpecificMenuAlwaysShown ) ) && ( aPointerEvent.iType != TPointerEvent::EButton1Down || iItemActionMenu->InitMenuL() ) ) { @@ -4192,6 +4226,11 @@ case MEikListBoxObserver::EEventFlickStarted: case MEikListBoxObserver::EEventPanningStarted: { + if ( iListBoxExt && ( iListBoxExt->iWorldSize.iHeight + <= iListBoxExt->iViewSize.iHeight ) ) + { + return; + } iItemDrawer->SetFlags( CListItemDrawer::EDisableMarquee ); if ( iListBoxExt ) { @@ -4210,6 +4249,11 @@ case MEikListBoxObserver::EEventFlickStopped: case MEikListBoxObserver::EEventPanningStopped: { + if ( iListBoxExt && ( iListBoxExt->iWorldSize.iHeight + <= iListBoxExt->iViewSize.iHeight ) ) + { + return; + } iItemDrawer->ClearFlags( CListItemDrawer::EDisableMarquee ); if ( iListBoxExt ) { @@ -4999,6 +5043,7 @@ } iListBoxExt->iFeedbackType = ETouchFeedbackList; + iListBoxExt->iDoubleClickEventIgnored = EFalse; if ( !iListBoxExt->iSingleClickEnabled && itemIndex != iView->CurrentItemIndex() ) @@ -5068,6 +5113,7 @@ if(Buffer()->iPressedIndex == itemIndex) { Buffer()->iPressedIndex = KEikListBoxInvalidIndex; + iListBoxExt->iDoubleClickEventIgnored = ETrue; _AKNTRACE_FUNC_EXIT; return; } @@ -5350,7 +5396,7 @@ ( !( ( iListBoxFlags & EViewerFlag ) && ( iListBoxFlags & EDisableItemSpecificMenu ) ) )&& ( iListBoxExt->iLastDownTappedItem == itemIndex ) && - (Buffer()->iPressedIndex != KEikListBoxInvalidIndex) && + ( !iListBoxExt->iDoubleClickEventIgnored ) && itemIndex == iView->CurrentItemIndex() ) { TTouchLogicalFeedback fbType = ETouchFeedbackList; @@ -5411,7 +5457,8 @@ } if ( !s60StyleMultiselection ) { - if ( !iListBoxExt->iSingleClickEnabled ) + if ( !iListBoxExt->iSingleClickEnabled && + itemIndex == iListBoxExt->iLastDownTappedItem ) { ReportListBoxEventL(MEikListBoxObserver::EEventItemClicked); } @@ -6596,6 +6643,14 @@ iListBoxExt->DisableSingleClick(); iItemDrawer->ClearFlags( CListItemDrawer::ESingleClickEnabled); } + else if ( !aDisabled && + iListBoxExt && + !iListBoxExt->iSingleClickEnabled && + iItemDrawer ) + { + TRAP_IGNORE( iListBoxExt->EnableSingleClickL() ); + iItemDrawer->SetFlags( CListItemDrawer::ESingleClickEnabled ); + } _AKNTRACE_FUNC_EXIT; } diff -r 941195f2d488 -r a8834a2e9a96 uifw/EikStd/coctlsrc/EIKMENUB.CPP --- a/uifw/EikStd/coctlsrc/EIKMENUB.CPP Tue May 25 12:58:19 2010 +0300 +++ b/uifw/EikStd/coctlsrc/EIKMENUB.CPP Wed Jun 09 09:58:37 2010 +0300 @@ -785,7 +785,12 @@ EXPORT_C TKeyResponse CEikMenuBar::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType) { const TInt code=aKeyEvent.iCode; - + //Filter msk event from dialog page. + if ( aKeyEvent.iCode == EKeyOK && aKeyEvent.iModifiers & EModifierSpecial ) + { + return EKeyWasConsumed; + } + if (MenuHasPane()) { iMenuPane->OfferKeyEventL(aKeyEvent, aType); @@ -1139,6 +1144,26 @@ // menu pane captures all pointer events, and forwards them to CBA if neccessary iMenuPane->SetGloballyCapturing(ETrue); iMenuPane->SetPointerCapture(ETrue); + if ( feedback ) + { + TTouchLogicalFeedback fbLogicalType = ETouchFeedbackPopUp; + if ( CAknTransitionUtils::TransitionsEnabled( AknTransEffect::EComponentTransitionsOff ) ) + { + if( iExt->iMenuType == EMenuContext || iExt->iMenuType == EMenuEdit ) + { + fbLogicalType = ETouchFeedbackIncreasingPopUp; + } + else + { + fbLogicalType = ETouchFeedbackOptionsMenuOpened; + } + } + feedback->InstantFeedback( + this, + fbLogicalType, + ETouchFeedbackVibra, + TPointerEvent() ); + } } iMenuPane->MakeVisible( EFalse ); @@ -1149,16 +1174,6 @@ 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); @@ -1176,11 +1191,6 @@ GfxTransEffect::SetDemarcation( iMenuPane, demarcation ); GfxTransEffect::End( iMenuPane ); } - if( feedback ) - { - feedback->InstantFeedback( this, ETouchFeedbackPopUp, - ETouchFeedbackVibra, TPointerEvent() ); - } _AKNTRACE_FUNC_EXIT; } diff -r 941195f2d488 -r a8834a2e9a96 uifw/EikStd/coctlsrc/EIKMENUP.CPP --- a/uifw/EikStd/coctlsrc/EIKMENUP.CPP Tue May 25 12:58:19 2010 +0300 +++ b/uifw/EikStd/coctlsrc/EIKMENUP.CPP Wed Jun 09 09:58:37 2010 +0300 @@ -841,11 +841,6 @@ { cascadeMenuPane->SetParent( iControl ); GfxTransEffect::Begin( cascadeMenuPane, KGfxControlAppearAction ); - if ( CAknTransitionUtils::TransitionsEnabled( AknTransEffect::EComponentTransitionsOff ) ) - { - ImmediateFeedback( ETouchFeedbackSubMenuOpened, - ETouchFeedbackVibra ); - } cascadeMenuPane->StartDisplayingMenuPane( iControl->iHotKeyTable, iControl->Position(), NULL, @@ -1256,6 +1251,7 @@ iFlags.Clear( EContextSensitive ); iFlags.Clear( EHighlightEnabled ); iFlags.Clear( EHideViewSpecificCommands ); + iFlags.Clear( EHideMarkAndUnmark ); _AKNTRACE_FUNC_EXIT; } @@ -2287,7 +2283,13 @@ { iExtension->StartCascadeMenuAppearTransition(); } - iExtension->ImmediateFeedback( ETouchFeedbackPopUp, + + TTouchLogicalFeedback fbLogicalType = ETouchFeedbackPopUp; + if ( CAknTransitionUtils::TransitionsEnabled( AknTransEffect::EComponentTransitionsOff ) ) + { + fbLogicalType = ETouchFeedbackSubMenuOpened; + } + iExtension->ImmediateFeedback( fbLogicalType, ETouchFeedbackVibra ); _AKNTRACE_FUNC_EXIT; } diff -r 941195f2d488 -r a8834a2e9a96 uifw/EikStd/coctlsrc/aknitemactionmenuregister.cpp --- a/uifw/EikStd/coctlsrc/aknitemactionmenuregister.cpp Tue May 25 12:58:19 2010 +0300 +++ b/uifw/EikStd/coctlsrc/aknitemactionmenuregister.cpp Wed Jun 09 09:58:37 2010 +0300 @@ -920,11 +920,10 @@ { TAknUnregisteredMenuData& data( iUnregisteredMenus[i] ); - if ( data.iOwner == iMenuBarOwner ) + if ( data.iOwner == aMenuBarOwner ) { - data.iOwner = iMenuBarOwner = NULL; + data.iOwner = NULL; } - ++i; } diff -r 941195f2d488 -r a8834a2e9a96 uifw/EikStd/coctlsrc/akntoolbarextension.cpp --- a/uifw/EikStd/coctlsrc/akntoolbarextension.cpp Tue May 25 12:58:19 2010 +0300 +++ b/uifw/EikStd/coctlsrc/akntoolbarextension.cpp Wed Jun 09 09:58:37 2010 +0300 @@ -22,6 +22,10 @@ #include #include +#include +#include +#include + #include "akntoolbarextensionview.h" @@ -309,6 +313,28 @@ iView->SetFocusing( !nonFocusing ); if ( IsVisible() ) { + + // + // the pop up feedback for droping out toolbar extention view + // + if ( AknLayoutUtils::PenEnabled() ) + { + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if ( feedback ) + { + TTouchLogicalFeedback fbLogicalType = ETouchFeedbackPopUp; + if ( CAknTransitionUtils::TransitionsEnabled( + AknTransEffect::EComponentTransitionsOff ) ) + { + fbLogicalType = ETouchFeedbackIncreasingPopUp; + } + + feedback->InstantFeedback( this, + fbLogicalType, + ETouchFeedbackVibra, TPointerEvent() ); + } + } + iToolbar->DynInitExtensionL( this ); iView->MakeVisible( ETrue ); // show view } diff -r 941195f2d488 -r a8834a2e9a96 uifw/EikStd/coctlsrc/akntoolbarextensionview.cpp --- a/uifw/EikStd/coctlsrc/akntoolbarextensionview.cpp Tue May 25 12:58:19 2010 +0300 +++ b/uifw/EikStd/coctlsrc/akntoolbarextensionview.cpp Wed Jun 09 09:58:37 2010 +0300 @@ -873,17 +873,19 @@ MAknsSkinInstance* skin = AknsUtils::SkinInstance(); if ( iExtension->ExtensionFlags() & KAknTbExtensionDsaMode ) { + TSize cornerSize(20,20); gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha ); gc.SetBrushColor( TRgb( KToolbarExtensionBgColor, KToolBarExtensionBgAlpha ) ); gc.SetBrushStyle( CGraphicsContext::ESolidBrush ); - gc.DrawRect( rect ); + gc.DrawRoundRect( rect, cornerSize ); + gc.SetDrawMode( CGraphicsContext::EDrawModePEN ); TSize penSize( 1, 1 ); gc.SetPenSize( penSize ); - gc.SetPenStyle( CGraphicsContext::EDottedPen ); - gc.SetPenColor( KRgbWhite ); + gc.SetPenStyle( CGraphicsContext::ESolidPen ); + gc.SetPenColor( KRgbDarkGray ); gc.SetBrushStyle( CGraphicsContext::ENullBrush ); - gc.DrawRect( rect ); + gc.DrawRoundRect( rect, cornerSize ); } else { diff -r 941195f2d488 -r a8834a2e9a96 uifw/EikStd/coctlsrc/eikspane.cpp --- a/uifw/EikStd/coctlsrc/eikspane.cpp Tue May 25 12:58:19 2010 +0300 +++ b/uifw/EikStd/coctlsrc/eikspane.cpp Wed Jun 09 09:58:37 2010 +0300 @@ -2612,8 +2612,7 @@ { if ( aParentWindowGroup ) { - MakeVisible( EFalse ); - + SetMopParent( iEikonEnv->EikAppUi() ); SetParent( NULL ); @@ -2626,8 +2625,8 @@ } CreateWindowL( aParentWindowGroup ); - - RWindow& window = Window(); + + RWindow& window = Window(); if ( aRedrawStoreHandler ) { aRedrawStoreHandler->SetStore( &window, KEnableRedrawStoring ); @@ -2652,6 +2651,10 @@ SetContainersL( *iControl, *this ); + //these 2 lines is to fix the error ou1cimx1#390645 + MakeVisible( ETrue ); + MakeVisible( EFalse ); + window.SetFaded( aIsFaded, RWindowTreeNode::EFadeIncludeChildren ); window.SetOrdinalPosition( ordinalPos ); diff -r 941195f2d488 -r a8834a2e9a96 uifw/EikStd/coctlsrc/smileymanager.cpp --- a/uifw/EikStd/coctlsrc/smileymanager.cpp Tue May 25 12:58:19 2010 +0300 +++ b/uifw/EikStd/coctlsrc/smileymanager.cpp Wed Jun 09 09:58:37 2010 +0300 @@ -265,7 +265,7 @@ TText CSmileyManager::SmileyCodeByPos( TInt aDocPos ) { CSmileyIcon* icon( iIconRecord->SmileyIconAtPos( aDocPos ) ); - if ( icon ) + if ( icon && !icon->IsDisabled() ) { return icon->Code(); } diff -r 941195f2d488 -r a8834a2e9a96 uifw/EikStd/dlgsrc/EIKCAPC.CPP --- a/uifw/EikStd/dlgsrc/EIKCAPC.CPP Tue May 25 12:58:19 2010 +0300 +++ b/uifw/EikStd/dlgsrc/EIKCAPC.CPP Wed Jun 09 09:58:37 2010 +0300 @@ -3645,7 +3645,7 @@ { // popup field will be same size as text element TAknLayoutText r; r.LayoutText(layoutRect, labelLayout); - TRect resultRect = r.TextRect(); + TRect resultRect( r.TextRect() ); aPopfield->SetRect(resultRect); } else diff -r 941195f2d488 -r a8834a2e9a96 uifw/EikStd/dlgsrc/EIKCAPCA.CPP --- a/uifw/EikStd/dlgsrc/EIKCAPCA.CPP Tue May 25 12:58:19 2010 +0300 +++ b/uifw/EikStd/dlgsrc/EIKCAPCA.CPP Wed Jun 09 09:58:37 2010 +0300 @@ -653,8 +653,12 @@ TRect formRect = formtLayoutRect.Rect(); CEikCapCArrayExtension *extension_or_null = ExtensionOrNull(); + + TBool rectChanged = ETrue; + if (extension_or_null) { + rectChanged = ( extension_or_null->iRect != formRect ); extension_or_null->iRect = formRect; } @@ -665,7 +669,11 @@ if ( control->DialogPage()->IsForm() ) { - SetRealRect( aRect, aTop, aBottom ); + if ( rectChanged ) + { + SetRealRect( aRect, aTop, aBottom ); + } + _AKNTRACE_FUNC_EXIT; return; } @@ -1137,7 +1145,12 @@ topLeft.SetXY( Rect().iTl.iX, LineIndexToYPosition( aLine, aTopY ) ); } - line->SetRect( TRect( topLeft, line->Size() ) ); + TRect newRect( topLeft, line->Size() ); + + if ( newRect != line->Rect() ) + { + line->SetRect( TRect( topLeft, line->Size() ) ); + } } _AKNTRACE_FUNC_EXIT; } diff -r 941195f2d488 -r a8834a2e9a96 uifw/EikStd/dlgsrc/EIKDIALG.CPP --- a/uifw/EikStd/dlgsrc/EIKDIALG.CPP Tue May 25 12:58:19 2010 +0300 +++ b/uifw/EikStd/dlgsrc/EIKDIALG.CPP Wed Jun 09 09:58:37 2010 +0300 @@ -300,9 +300,9 @@ // 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 ) + // component in "legacy" way. + if (checkCba && extension->iButtonGroupResourceId != 0 && + (extension->iDeleteEmbeddedCba || Size().iWidth <= 0)) { delete iButtonGroupContainer; iButtonGroupContainer = NULL; @@ -1656,15 +1656,23 @@ #endif GfxTransEffect::Begin(this, KGfxControlAppearAction); MTouchFeedback* feedback = NULL; - if(AknLayoutUtils::PenEnabled()) - { - feedback = static_cast(ExtensionInterface(KExIfTactileFeedbackUid)); - } - if(feedback && CAknTransitionUtils::TransitionsEnabled(AknTransEffect::EComponentTransitionsOff )) - { - feedback->InstantFeedback(this, ETouchFeedbackIncreasingPopUp, - ETouchFeedbackVibra, TPointerEvent()); - } + if( AknLayoutUtils::PenEnabled() ) + { + feedback = static_cast( ExtensionInterface( KExIfTactileFeedbackUid ) ); + } + if( feedback ) + { + if( CAknTransitionUtils::TransitionsEnabled( AknTransEffect::EComponentTransitionsOff ) ) + { + feedback->InstantFeedback( this, ETouchFeedbackIncreasingPopUp, + ETouchFeedbackVibra, TPointerEvent() ); + } + else + { + feedback->InstantFeedback( this, ETouchFeedbackPopUp, + ETouchFeedbackVibra, TPointerEvent() ); + } + } GfxTransEffect::NotifyExternalState(ECaptureComponentsBegin, (const TDesC8*)this); TRect demarcation; @@ -1677,11 +1685,6 @@ GfxTransEffect::NotifyExternalState(ECaptureComponentsEnd, (const TDesC8*)this); GfxTransEffect::End(this); - if(feedback) - { - feedback->InstantFeedback(this, ETouchFeedbackPopUp, - ETouchFeedbackVibra, TPointerEvent()); - } } else { @@ -2432,7 +2435,13 @@ else if (iExtension) iExtension->iFlags.Set(CEikDialogExtension::ELayoutChangeWhileInvisible); - CCoeControl::HandleResourceChange(aType); + TBool isForm = ( iPageSelector && iPageSelector->IsForm() ); + + if ( !isForm ) + { + CCoeControl::HandleResourceChange( aType ); + } + _AKNTRACE_FUNC_EXIT; return; } @@ -2454,16 +2463,22 @@ // Must work through all pages _AKNTRACE_FUNC_ENTER; Layout(); - SizeChanged(); + + TBool isForm = ( iPageSelector && iPageSelector->IsForm() ); + + if ( !isForm ) + { + SizeChanged(); - TInt lastPage = ( iPageSelector->PageContainer()->NumPages() - 1 ); - TInt pageIndex = 0; - CEikDialogPage* page; - - while ( pageIndex++ <= lastPage ) - { - page = iPageSelector->PageContainer()->Page( pageIndex ); - page->HandleResourceChange( KEikDynamicLayoutVariantSwitch ); + TInt lastPage = ( iPageSelector->PageContainer()->NumPages() - 1 ); + TInt pageIndex = 0; + CEikDialogPage* page; + + while ( pageIndex++ <= lastPage ) + { + page = iPageSelector->PageContainer()->Page( pageIndex ); + page->HandleResourceChange( KEikDynamicLayoutVariantSwitch ); + } } if (iExtension) diff -r 941195f2d488 -r a8834a2e9a96 uifw/EikStd/dlgsrc/EIKDPAGE.CPP --- a/uifw/EikStd/dlgsrc/EIKDPAGE.CPP Tue May 25 12:58:19 2010 +0300 +++ b/uifw/EikStd/dlgsrc/EIKDPAGE.CPP Wed Jun 09 09:58:37 2010 +0300 @@ -218,44 +218,46 @@ 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 && - firstLine ) + if( aDPage.IsEditable() ) { - // feedback for edit/view mode form, when non-focused line is clicked - // feedback for focused item is responsibility of the item - // no feedback with focus change when single click is enabled - if ( !iUsesSingleClick ) - { - Feedback( aDPage, ETouchFeedbackSensitiveList ); - } - iFocusItemChanged = ETrue; - } - else if ( viewMode && firstLine ) - { + // note, that iFormControl is checked in Feedback() if ( aPointerEvent.iType == TPointerEvent::EButton1Down && - aTouchedLineIndex == aCurrentLine ) + aCurrentLine != aTouchedLineIndex && + firstLine ) + { + // feedback for edit mode form, when non-focused line is clicked + // feedback for focused item is responsibility of the item + // no feedback with focus change when single click is enabled + if ( !iUsesSingleClick ) + { + Feedback( aDPage, ETouchFeedbackSensitiveList ); + } + iFocusItemChanged = ETrue; + } + else if ( 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 ) - { - // 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 edit 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 ); + } } } } @@ -268,8 +270,7 @@ if ( iFeedback && aDPage.IsForm() && !aDPage.IsDimmed() && - aDPage.IsVisible() && - aDPage.IsEditable() ) + aDPage.IsVisible() ) { iFeedback->InstantFeedback( aFeedback ); } @@ -284,8 +285,7 @@ if ( iFeedback && aDPage.IsForm() && !aDPage.IsDimmed() && - aDPage.IsVisible() && - aDPage.IsEditable() ) + aDPage.IsVisible() ) { iFeedback->InstantFeedback( &aDPage, aFeedback, @@ -685,18 +685,16 @@ AknsUtils::RegisterControlPosition(capCtrl->iTrailer); AknsUtils::RegisterControlPosition(capCtrl->iBitmap); - if ( capCtrl->iIsFormControl && iCurrentLine != i) - { - - if (capCtrl->ControlIsAnEdwin(capCtrl->iControlType)) + if ( capCtrl->iIsFormControl && iCurrentLine != i) { - CEikEdwin *edwin = (CEikEdwin*)capCtrl->iControl; - TRAP_IGNORE(edwin->TextView()->SetDocPosL(0) - ); + if (capCtrl->ControlIsAnEdwin(capCtrl->iControlType)) + { + CEikEdwin *edwin = (CEikEdwin*)capCtrl->iControl; + TRAP_IGNORE( edwin->TextView()->SetDocPosL( 0 ) ); + } } - } - } + _AKNTRACE_FUNC_EXIT; } @@ -778,12 +776,6 @@ continue; ChangeFocusTo(ii); focusSet=ETrue; - - if ( IsForm() ) - { - // move line with initial focus to the screen - iLines->MoveLineToScreen( ii, iPhysics->ViewTopY(), ETrue ); - } break; } iExtension->iSetInitialFocusDone = ETrue; @@ -1516,6 +1508,37 @@ void CEikDialogPage::SizeChanged() { _AKNTRACE_FUNC_ENTER; + if ( IsForm() ) + { + iExtension->iInitialLayoutDone = EFalse; + + iScroll->SetOutsideRect( Rect() ); + + // force each line to resize + TInt count = iLines->Count(); + + for ( TInt i = 0; i < count; ++i ) + { + (*iLines)[i]->HandleResourceChange( KEikDynamicLayoutVariantSwitch ); + } + + iLines->SetRect( Rect(), iScroll->Top(), iScroll->Middle(), iScroll->Bottom() ); + + iExtension->iInitialLayoutDone = ETrue; + UpdatePhysics(); + + if ( ( count > 0 ) && ( iCurrentLine >= 0 ) ) + { + ExposeLine( iCurrentLine, ETrue ); + } + + TRAP_IGNORE( UpdateScrollBarL() ); // ignore any errors. + AknsUtils::RegisterControlPosition( this ); + + _AKNTRACE_FUNC_EXIT; + return; + } + // update form area's size to scroll control iScroll->SetOutsideRect( Rect() ); iLines->SetRect( Rect(), iScroll->Top(), iScroll->Middle(), iScroll->Bottom() ); @@ -1528,7 +1551,6 @@ TRAP_IGNORE( UpdateScrollBarL() ); // ignore any errors. AknsUtils::RegisterControlPosition( this ); - UpdatePhysics(); iExtension->iInitialLayoutDone = ETrue; _AKNTRACE_FUNC_EXIT; } @@ -1677,8 +1699,8 @@ { iExtension->iPopFieldEvents = 1; } - - ReconsiderPageSize(); + + (*iLines)[iCurrentLine]->SetRect( (*iLines)[iCurrentLine]->Rect() ); ExposeLine( index, ETrue ); DrawNow(); @@ -1814,9 +1836,19 @@ size.iHeight = height; // Must force a size change on current captioned contrl even if control doesn't change size (so that edwin is resized by aknutils) - aEdwin->SetSize(size); - ReconsiderPageSize(); - ExposeLine(iCurrentLine, ETrue); + aEdwin->SetSize(size); + + if ( IsForm() ) + { + (*iLines)[iCurrentLine]->SetRect( (*iLines)[iCurrentLine]->Rect() ); + ExposeLine( iCurrentLine, ETrue ); + } + else + { + ReconsiderPageSize(); + ExposeLine(iCurrentLine, ETrue); + } + PrepareToDrawVerticalLine(); // do flushes here. /* improved redraw code @@ -2146,11 +2178,18 @@ if ( ( oldLine != iCurrentLine && IsForm() ) && iExtension->iInitialLayoutDone ) { + // Set temporarily for EFalse to prevent one extra physics update + // because of two calls to iLines->MoveLineToScreen + iExtension->iInitialLayoutDone = EFalse; + if ( oldLine != -1 ) { iLines->MoveLineToScreen( oldLine, 0, EFalse ); TRAP_IGNORE( RecordLineL( oldLine ) ); } + + // set back to correct value + iExtension->iInitialLayoutDone = ETrue; TRAP_IGNORE( RecordLineL( iCurrentLine ) ); iLines->MoveLineToScreen( iCurrentLine, iPhysics->ViewTopY(), ETrue ); @@ -2182,7 +2221,7 @@ void CEikDialogPage::HandleResourceChange(TInt aType) { _AKNTRACE_FUNC_ENTER; - if ( aType==KEikDynamicLayoutVariantSwitch ) + if ( aType==KEikDynamicLayoutVariantSwitch && !IsForm() ) { const TInt numLines=iLines->Count(); for ( TInt i=0; i < numLines; i++ ) @@ -2377,6 +2416,9 @@ _AKNTRACE( "CEikDialogPage::SetEditableL() aEditable: [%d]", aEditable ); iIsEditable = aEditable; + TBool initialLayoutDone = iExtension->iInitialLayoutDone; + iExtension->iInitialLayoutDone = EFalse; + HighlightVisible( aEditable ); if ( iExtension->iUsesSingleClick && iExtension->iSetInitialFocusDone ) @@ -2453,6 +2495,14 @@ { ExposeLine(iCurrentLine,ETrue); } + + iExtension->iInitialLayoutDone = initialLayoutDone; + + if ( IsForm() ) + { + UpdatePhysics(); + } + _AKNTRACE_FUNC_EXIT; } @@ -2897,8 +2947,12 @@ iCurrentLine ); iExtension->iWasScrolling = ( iPhysics->OngoingPhysicsAction() != - CAknPhysics::EAknPhysicsActionNone ); - iPhysics->Stop(); + CAknPhysics::EAknPhysicsActionNone ); + if(iExtension->iWasScrolling) + { + iPhysics->Stop(); + iExtension->Feedback( *this, ETouchFeedbackList ); + } iExtension->iLastTouchedLine = touchedLine; iExtension->iDragStartPosition = aPointerEvent.iPosition; iExtension->iLastPointerPos = aPointerEvent.iPosition; @@ -3079,13 +3133,7 @@ ( iExtension->iFocusedClicked || iExtension->iUsesSingleClick ) && !iExtension->iScrolling ) { - // Not need to sent key event when focus lost. - CEikCaptionedControl* currentLine = (*iLines)[iCurrentLine]; - if ( currentLine->IsFocused() ) - { - mskPress = ETrue; - } - + mskPress = ETrue; callDefaultImplementation = EFalse; } if ( callDefaultImplementation && ( iExtension->iFocusedClicked || @@ -3114,7 +3162,7 @@ { TKeyEvent key; key.iCode=EKeyOK; - key.iModifiers=0; + key.iModifiers=EModifierSpecial; key.iRepeats = 0; iEikonEnv->SimulateKeyEventL( key, EEventKey ); } @@ -3303,6 +3351,13 @@ void CEikDialogPage::UpdateLineInCache( CEikCaptionedControl* aLine ) { _AKNTRACE_FUNC_ENTER; + + if ( !IsActivated() ) + { + _AKNTRACE_FUNC_EXIT; + return; + } + TInt lineIndex = iLines->FindLineIndex( aLine ); if ( lineIndex != KErrNotFound ) @@ -4412,7 +4467,9 @@ CCoeControl::HandleResourceChange(aType); - if(aType==KEikDynamicLayoutVariantSwitch) + // if this is a form then its size has been set already by + // CEikDialog::HandleResourceChange + if ( aType == KEikDynamicLayoutVariantSwitch && !iForm ) { SizeChanged(); } diff -r 941195f2d488 -r a8834a2e9a96 uifw/EikStd/srvuisrc/EIKSRVUI.CPP --- a/uifw/EikStd/srvuisrc/EIKSRVUI.CPP Tue May 25 12:58:19 2010 +0300 +++ b/uifw/EikStd/srvuisrc/EIKSRVUI.CPP Wed Jun 09 09:58:37 2010 +0300 @@ -624,13 +624,12 @@ EXPORT_C void CEikServAppUiBase::HandleThreadExitL(RThread& aThread) { - _LIT(KAppArcServerThread, "AppArcServerThread"); if (aThread.Name() == ASCliDefinitions::ServerAndThreadName()) // alarm server died { aThread.Close(); // need to Close() before restarting with same name iServerToRestart |= EAlwlSvr; // restarted under active object } - else if (aThread.Name() == KAppArcServerThread) // AppArc server died + else if (aThread.Name()==NameApaServServerThread()) // AppArc server died { aThread.Close(); iServerToRestart|=EApaSvr; diff -r 941195f2d488 -r a8834a2e9a96 uifw/eikctl/src/EIKCLB.CPP --- a/uifw/eikctl/src/EIKCLB.CPP Tue May 25 12:58:19 2010 +0300 +++ b/uifw/eikctl/src/EIKCLB.CPP Wed Jun 09 09:58:37 2010 +0300 @@ -840,7 +840,7 @@ TInt firstPotentialItemIndex = iTopItemIndex; TInt lastPotentialItemIndex = - iTopItemIndex + NumberOfItemsThatFitInRect( iViewRect ); + iTopItemIndex + NumberOfItemsThatFitInRect( iViewRect ) - 1; TBool backgroundDrawingSuppressed = ( listbox && listbox->BackgroundDrawingSuppressed() ); if ( iModel->NumberOfItems() == 0 ) diff -r 941195f2d488 -r a8834a2e9a96 uifw/eikctl/src/EIKCLBD.CPP --- a/uifw/eikctl/src/EIKCLBD.CPP Tue May 25 12:58:19 2010 +0300 +++ b/uifw/eikctl/src/EIKCLBD.CPP Wed Jun 09 09:58:37 2010 +0300 @@ -2076,20 +2076,18 @@ } #endif // RD_UI_TRANSITION_EFFECTS_LIST } - + if ( iExtension->iCurrentRow < listbox->BottomItemIndex() ) + { + AknListUtils::DrawSeparator( aGc, aRect, aColors.iText, skin ); + } + + DrawHighLight( aGc, aRect, aHighlight, skin ); TRect itemRect( aRect ); DrawMarkingModeIcons( aItemProperties, aGc, itemRect ); if ( iExtension->iSubCellsMightIntersect ) { CheckIfSubCellsIntersect( &textLines[0], &rectClipped[0], *aText, itemRect ); } - if ( iExtension->iCurrentRow < listbox->BottomItemIndex() ) - { - AknListUtils::DrawSeparator( aGc, aRect, aColors.iText, skin ); - } - DrawHighLight( aGc, aRect, aHighlight, skin ); - - // The column draw loop column = 0; TInt subCellIndex = 0; @@ -2464,7 +2462,11 @@ } #endif // RD_UI_TRANSITION_EFFECTS_LIST } - + if ( iExtension->iCurrentRow < listbox->BottomItemIndex() ) + { + AknListUtils::DrawSeparator( aGc, aRect, aColors.iText, skin ); + } + DrawHighLight( aGc, aRect, aHighlight, skin ); DrawMarkingModeIcons( aItemProperties, aGc, itemRect ); TRect textRect( itemRect ); textRect.iBr.iX = itemRect.iTl.iX; @@ -2548,13 +2550,6 @@ // pass 3 drawing - if ( iExtension->iCurrentRow < listbox->BottomItemIndex() ) - { - AknListUtils::DrawSeparator( aGc, aRect, aColors.iText, skin ); - } - - // LISTBOX LINES NEED TO BE DRAWN HERE. - DrawHighLight( aGc, aRect, aHighlight, skin ); #ifdef RD_UI_TRANSITION_EFFECTS_LIST if ( transApi ) @@ -2848,9 +2843,18 @@ iExtension->iMarkingIconArray->Count() == 2 ) #endif // RD_TOUCH2_MARKING { - textRect.iTl.iX += - AknLayoutScalable_Avkon::list_single_graphic_pane_t1( + if ( AknLayoutUtils::LayoutMirrored() ) + { + textRect.iBr.iX -= + AknLayoutScalable_Avkon::list_single_graphic_pane_t1( + 0 ).LayoutLine().ir; + } + else + { + textRect.iTl.iX += + AknLayoutScalable_Avkon::list_single_graphic_pane_t1( 0 ).LayoutLine().il; + } TAknLayoutRect layoutRect; layoutRect.LayoutRect( aItemRect, AknLayoutScalable_Avkon::list_single_graphic_pane_g1( 0 ) ); diff -r 941195f2d488 -r a8834a2e9a96 uifw/ganes/src/HgScroller.cpp --- a/uifw/ganes/src/HgScroller.cpp Tue May 25 12:58:19 2010 +0300 +++ b/uifw/ganes/src/HgScroller.cpp Wed Jun 09 09:58:37 2010 +0300 @@ -372,7 +372,7 @@ iCurrentRow(-1), iSelectedIndex(KErrNotFound), iScrollBarType( EHgScrollerScrollBar ), - iFirstTime(ETrue), + iResetViewPosition(ETrue), iOldWinPos(KErrNotFound) { // No implementation required @@ -423,15 +423,21 @@ // The world is set to be at least the size of the view. TSize worldSize = TotalSize(); - if( !iLandscapeScrolling && (worldSize.iHeight < iHeight) ) + if( !iLandscapeScrolling && (worldSize.iHeight <= iHeight) ) + { worldSize.iHeight = iHeight; + iResetViewPosition = ETrue; + } - if( iLandscapeScrolling && (worldSize.iWidth < iWidth) ) + if( iLandscapeScrolling && (worldSize.iWidth <= iWidth) ) + { worldSize.iWidth = iWidth; + iResetViewPosition = ETrue; + } iPhysics->InitPhysicsL( worldSize, - TSize(iWidth, iHeight), - iLandscapeScrolling); + TSize(iWidth, iHeight), + iLandscapeScrolling); } // ----------------------------------------------------------------------------- @@ -516,10 +522,10 @@ iPopupDrawer->Init( Rect(), iPopupFont ); } - if(iFirstTime) + if(iResetViewPosition) { iViewPosition = TPoint(iWidth/2, iHeight/2); - iFirstTime = EFalse; + iResetViewPosition = EFalse; } HandleViewPositionChanged(); @@ -607,7 +613,6 @@ iDetector->PointerEventL( aEvent ); HandleUpEventL( aEvent ); - iPointerDown = EFalse; } } } @@ -777,15 +782,17 @@ if(iLandscapeScrolling && AknLayoutUtils::LayoutMirrored()) drag = -drag; iPhysics->StartPhysics(drag, iStartTime); + iPointerDown = EFalse; } else { - HandleSelectionL(); MTouchFeedback* feedback = MTouchFeedback::Instance(); if ( feedback && iSelectedIndex != KErrNotFound ) { feedback->InstantFeedback( this, ETouchFeedbackList, ETouchFeedbackVibra, aEvent ); } + + HandleSelectionL(); } } @@ -804,6 +811,8 @@ // this is not usually the case since interval is 50ms but just to be sure. SetHighlightL(); } + + iPointerDown = EFalse; // selection needs to be valid. if( iSelectedIndex >= 0 && iSelectedIndex < iItems.Count() ) @@ -831,6 +840,10 @@ } } } + else + { + iPointerDown = EFalse; + } } // ----------------------------------------------------------------------------- @@ -1180,21 +1193,21 @@ { if( iSelectedIndex != KErrNotFound && HasHighlight() ) { + iShowHighlight = EFalse; + iDrawUtils->EnableMarquee(HasHighlight()); if( iSelectionObserver ) TRAP_IGNORE( iSelectionObserver->HandleOpenL( iSelectedIndex ); ) - iShowHighlight = EFalse; - iDrawUtils->EnableMarquee(HasHighlight()); return EKeyWasConsumed; } else if( iItemCount ) { iSelectedIndex = iCurrentRow; - if( iSelectionObserver ) - TRAP_IGNORE( iSelectionObserver->HandleSelectL( iSelectedIndex ); ) FitSelectionToView(); iShowHighlight = ETrue; iDrawUtils->EnableMarquee(HasHighlight()); DrawDeferred(); + if( iSelectionObserver ) + TRAP_IGNORE( iSelectionObserver->HandleSelectL( iSelectedIndex ); ) return EKeyWasConsumed; } return EKeyWasNotConsumed; diff -r 941195f2d488 -r a8834a2e9a96 uifw/tsrc/public/basic/AknSoundServerStifTest/group/AknSoundServerStifTest_DoxyFile.txt --- a/uifw/tsrc/public/basic/AknSoundServerStifTest/group/AknSoundServerStifTest_DoxyFile.txt Tue May 25 12:58:19 2010 +0300 +++ b/uifw/tsrc/public/basic/AknSoundServerStifTest/group/AknSoundServerStifTest_DoxyFile.txt Wed Jun 09 09:58:37 2010 +0300 @@ -1,3 +1,19 @@ +# +# 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: +# + # Doxyfile 1.4.1 #---------------------------------------------------------------------------