# HG changeset patch # User Dario Sestito # Date 1272644448 -3600 # Node ID aa94898fb0b4971f551ba080d54d290fb0177e47 # Parent 0aa5fbdfbc30309953f5c41c7ddefcd8ef688401# Parent 2b7609a571c9dbaafc82821226a347e1de9995be Merge workaround for bug 2584 diff -r 2b7609a571c9 -r aa94898fb0b4 applicationinterworkingfw/ServiceHandler/src/AiwCommon.cpp --- a/applicationinterworkingfw/ServiceHandler/src/AiwCommon.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/applicationinterworkingfw/ServiceHandler/src/AiwCommon.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -241,7 +241,7 @@ { return ((iCriteriaId == aItem.iCriteriaId) && (iServiceCmd == aItem.iServiceCmd) && - (iContentType->Compare(*(aItem.iContentType)) == KErrNone) && + (ContentType().Compare(aItem.ContentType()) == KErrNone) && (iServiceClass.iUid == aItem.iServiceClass.iUid) && (iDefaultProvider.iUid == aItem.iDefaultProvider.iUid) && (iMaxProviders == aItem.iMaxProviders) && diff -r 2b7609a571c9 -r aa94898fb0b4 applicationinterworkingfw/ServiceHandler/src/AiwMenu.cpp --- a/applicationinterworkingfw/ServiceHandler/src/AiwMenu.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/applicationinterworkingfw/ServiceHandler/src/AiwMenu.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -26,7 +26,7 @@ // This is needed for resource reading. const TInt KCCMask(0x00000fff); - +const TInt KNominalTextLength = 40; EXPORT_C CAiwMenuPane::CAiwMenuPane(CEikMenuPane& aMenuPane, TInt aBaseCmdId) : iMenuPane(&aMenuPane), iBaseCmdId(aBaseCmdId) @@ -98,7 +98,8 @@ data.iCommandId = aReader.ReadInt32(); data.iCascadeId = aReader.ReadInt32(); data.iFlags = aReader.ReadInt32(); - data.iText.Copy(aReader.ReadTPtrC()); + TPtrC text( aReader.ReadTPtrC() ); + data.iText.Copy( text.Ptr(), Min( KNominalTextLength, text.Length() ) ); // Extra text (additional submenu text) must be handled separately // because SData doesn't offer space for it. @@ -224,7 +225,7 @@ data.iCommandId = AIW_SUBMENU_TITLE; data.iCascadeId = 0; data.iFlags = 0; - data.iText.Copy(aTitle); + data.iText.Copy(aTitle.Ptr(),Min(KNominalTextLength,aTitle.Length())); iMenuPane->InsertMenuItemL(data, aIndex); } diff -r 2b7609a571c9 -r aa94898fb0b4 classicui_plat/ganes_api/inc/ganes/HgGrid.h --- a/classicui_plat/ganes_api/inc/ganes/HgGrid.h Tue Apr 27 16:29:59 2010 +0100 +++ b/classicui_plat/ganes_api/inc/ganes/HgGrid.h Fri Apr 30 17:20:48 2010 +0100 @@ -66,6 +66,14 @@ */ IMPORT_C void SetLandscapeScrollingSupport( TBool aSupportLandscapeScrolling ); + /** + * Set toolbar visibilty. The toolbar visibility ETrue changes the lanscape layout to + * fill the toolbar space with grid content. + * + * @param aToolbarVisible Is toolbar visible or not. + */ + IMPORT_C void SetToolbarVisibility( TBool aToolbarVisible ); + protected: // CHgScroller TInt GetSelected( TPoint aPosition ) const; void HandleSizeChanged(); @@ -110,6 +118,7 @@ TInt iRowWidth; TBool iLandScapeScrollingSupported; + TBool iToolbarVisible; }; #endif // HGGRID_H_ diff -r 2b7609a571c9 -r aa94898fb0b4 classicui_plat/ganes_api/inc/ganes/HgScroller.h --- a/classicui_plat/ganes_api/inc/ganes/HgScroller.h Tue Apr 27 16:29:59 2010 +0100 +++ b/classicui_plat/ganes_api/inc/ganes/HgScroller.h Fri Apr 30 17:20:48 2010 +0100 @@ -147,6 +147,13 @@ IMPORT_C TInt FirstIndexOnScreen(); /** + * Sets the first index on the screen. + * + * @param aFirstIndexOnScreen The index of the first item on the screen. + */ + IMPORT_C void SetFirstIndexOnScreen( TInt aFirstIndexOnScreen ); + + /** * How many items fit on one screen. * @return Item count. */ diff -r 2b7609a571c9 -r aa94898fb0b4 classicui_plat/ganes_api/inc/ganes/HgVgMediaWall.h --- a/classicui_plat/ganes_api/inc/ganes/HgVgMediaWall.h Tue Apr 27 16:29:59 2010 +0100 +++ b/classicui_plat/ganes_api/inc/ganes/HgVgMediaWall.h Fri Apr 30 17:20:48 2010 +0100 @@ -677,6 +677,11 @@ * */ void FillSystemGcWithSkin( ) const; + + /** + * + */ + void SetConstantsForStyle(); protected: CHgScrollBufferManager* iManager; // Own @@ -799,6 +804,7 @@ TInt iDragFrames; TBool iObserverNotified; + TRect iOpenedItemRect; }; diff -r 2b7609a571c9 -r aa94898fb0b4 classicui_plat/ode_api/group/bld.inf --- a/classicui_plat/ode_api/group/bld.inf Tue Apr 27 16:29:59 2010 +0100 +++ b/classicui_plat/ode_api/group/bld.inf Fri Apr 30 17:20:48 2010 +0100 @@ -1,44 +1,33 @@ -/************************************************************************* - * * - * Copyright (c) 2009, Nokia Corporation and/or its subsidiaries. * - * All rights reserved. * - * * - * Redistribution and use in source and binary forms, * - * with or without modification, are permitted provided * - * that the following conditions are met: * - * * - * Redistributions of source code must retain the above * - * copyright notice, this list of conditions and the * - * following disclaimer. * - * * - * Redistributions in binary form must reproduce the above * - * copyright notice, this list of conditions and the * - * following disclaimer in the documentation and/or * - * other materials provided with the distribution. * - * * - * Neither the name of the Nokia Corporation nor the * - * names of its contributors may be used to endorse or * - * promote products derived from this software without * - * specific prior written permission. * - * * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS * - * AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED * - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * - * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY * - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * - * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY * - * OF SUCH DAMAGE. * - * * - *************************************************************************/ - +/* + * + * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of Nokia Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ #include diff -r 2b7609a571c9 -r aa94898fb0b4 classicui_plat/ode_api/inc/lookup_tables.h --- a/classicui_plat/ode_api/inc/lookup_tables.h Tue Apr 27 16:29:59 2010 +0100 +++ b/classicui_plat/ode_api/inc/lookup_tables.h Fri Apr 30 17:20:48 2010 +0100 @@ -1,3 +1,34 @@ +/* + * + * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of Nokia Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + #ifndef LOOKUP_TABLES_H_ #define LOOKUP_TABLES_H_ diff -r 2b7609a571c9 -r aa94898fb0b4 classicui_plat/special_character_table_api/inc/AknSctDialog.h --- a/classicui_plat/special_character_table_api/inc/AknSctDialog.h Tue Apr 27 16:29:59 2010 +0100 +++ b/classicui_plat/special_character_table_api/inc/AknSctDialog.h Fri Apr 30 17:20:48 2010 +0100 @@ -162,7 +162,7 @@ void SwitchTablesOrPagesL(); TBool SwitchTablesL(); void SwitchPagesL(); - void RefreshTitleAndNavi(); + void RefreshTitleAndNaviL(); void ChangeCategoryL(const TInt aCategory); void ChangeLayoutL(const TBool aLayoutChanged); diff -r 2b7609a571c9 -r aa94898fb0b4 classicui_pub/application_framework_api/inc/AknAppUi.h --- a/classicui_pub/application_framework_api/inc/AknAppUi.h Tue Apr 27 16:29:59 2010 +0100 +++ b/classicui_pub/application_framework_api/inc/AknAppUi.h Fri Apr 30 17:20:48 2010 +0100 @@ -738,7 +738,7 @@ private: void UpdateKeyBlockMode(); - TBool SimulateHashKeyMarkingEvent(const TWsEvent& aEvent); + TBool SimulateHashKeyMarkingEventL(const TWsEvent& aEvent); private: TBool iDumpNextControl; diff -r 2b7609a571c9 -r aa94898fb0b4 classicui_pub/editors_api/inc/EIKSECED.H --- a/classicui_pub/editors_api/inc/EIKSECED.H Tue Apr 27 16:29:59 2010 +0100 +++ b/classicui_pub/editors_api/inc/EIKSECED.H Fri Apr 30 17:20:48 2010 +0100 @@ -78,7 +78,8 @@ ELaunchPenInputAutomatic, - EPartialScreenInput + EPartialScreenInput, + ELockQuerySCT }; diff -r 2b7609a571c9 -r aa94898fb0b4 classicui_pub/queries_api/inc/aknmessagequerycontrol.h --- a/classicui_pub/queries_api/inc/aknmessagequerycontrol.h Tue Apr 27 16:29:59 2010 +0100 +++ b/classicui_pub/queries_api/inc/aknmessagequerycontrol.h Fri Apr 30 17:20:48 2010 +0100 @@ -233,7 +233,7 @@ * If the message query doesn't use the list query layout (iListQLayout == EFalse), * this function returns immediately. */ - void TruncateTextForListQLayout( TDes& aMessage ); + void TruncateTextForListQLayoutL( TDes& aMessage ); void DoSizeChangedL(); diff -r 2b7609a571c9 -r aa94898fb0b4 classicui_pub/ui_framework_definitions_api/inc/EIKON.HRH --- a/classicui_pub/ui_framework_definitions_api/inc/EIKON.HRH Tue Apr 27 16:29:59 2010 +0100 +++ b/classicui_pub/ui_framework_definitions_api/inc/EIKON.HRH Fri Apr 30 17:20:48 2010 +0100 @@ -831,6 +831,8 @@ #define EEikDialogFlagDontEatUpDownEvents 0x200000 #define EEikDialogFlagCloseDialogWhenTapped 0x400000 #define EEikDialogFlagVirtualInput 0x800000 +// New flag for postponing the disappear effect after OkToExitL. +#define EEikDialogFlagDelayEffects 0x01000000 #define EEikDlgItemNoSeparator 0 diff -r 2b7609a571c9 -r aa94898fb0b4 commonuis/CommonDialogs/src/CAknFileSelectionEventHandler.cpp --- a/commonuis/CommonDialogs/src/CAknFileSelectionEventHandler.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/commonuis/CommonDialogs/src/CAknFileSelectionEventHandler.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -296,17 +296,17 @@ { case ERightSoftkeyPress: // USER HAS HIT RIGHT SOFTKEY { - while( iModel->DirectoryLevel() > 0 ) // Find until existing contents - { - entries = iModel->GotoParentFolderL(); - PopIndices( aTopItemIndex, aFocusedItemIndex ); - if( entries > 0 || entries < KErrNotFound ) - { - break; - } - } if( iModel->DirectoryLevel() > 0 ) // We are not in the root folder { + while( iModel->DirectoryLevel() > 0 ) // Find until existing contents + { + entries = iModel->GotoParentFolderL(); + PopIndices( aTopItemIndex, aFocusedItemIndex ); + if( entries > 0 || entries < KErrNotFound ) + { + break; + } + } if( entries > 0 ) { if (aFocusedItemIndex >= entries) @@ -316,6 +316,10 @@ UpdateSoftkeysL( aFocusedItemIndex, aContainer ); returnType = EItemsUpdated; } + else + { + returnType = ETryingToExit; + } } else // We are in the root folder { diff -r 2b7609a571c9 -r aa94898fb0b4 commonuis/CommonDialogs/src/caknmemoryselectionmodelmultidrive.cpp --- a/commonuis/CommonDialogs/src/caknmemoryselectionmodelmultidrive.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/commonuis/CommonDialogs/src/caknmemoryselectionmodelmultidrive.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -457,9 +457,8 @@ else { AddMMCItemToLbxL( aDriveInfo ); + iHasMMCUnavailable = ( aDriveInfo.iDriveStatus == EDriveNotReady ); } - - iHasMMCUnavailable = ( aDriveInfo.iDriveStatus == EDriveNotReady ); } else if ( ( aDriveInfo.iStatus & DriveInfo::EDriveRemote ) && ( aDriveInfo.iMediaType == EMediaRemote ) ) @@ -939,55 +938,38 @@ itemString.Append( KTabChar ); // 1st row text: - if( ( aDriveInfo.iDriveStatus == EDriveOK ) && - ( aDriveInfo.iVolumeLabel.Length() > 0 ) ) - { - StringLoader::Format( - textString2, - *iLocStringArray[ ETextMMCNamed ], - KIndexFirst, - driveUnit.Name() - ); - StringLoader::Format( - textString, - textString2, - KIndexSecond, - aDriveInfo.iVolumeLabel - ); - } - else if ( aDriveInfo.iDriveStatus == EDriveNotReady ) + if( aDriveInfo.iDriveStatus == EDriveOK ) { - //textString.Format( - // *iLocStringArray[ ETextMMCUnavailable ], - // driveUnit.Name() ); - StringLoader::Format( - textString, - *iLocStringArray[ ETextMMCUnavailable ], - KNoIndex, - driveUnit.Name() - ); - } - else if( aDriveInfo.iDriveStatus == EDriveLocked ) - { - //textString.Format( - // *iLocStringArray[ ETextMMCLocked ], - // driveUnit.Name() ); - StringLoader::Format( - textString, - *iLocStringArray[ ETextMMCLocked ], - KNoIndex, - driveUnit.Name() - ); + if( aDriveInfo.iVolumeLabel.Length() > 0 ) + { + StringLoader::Format( + textString2, + *iLocStringArray[ ETextMMCNamed ], + KIndexFirst, + driveUnit.Name() + ); + StringLoader::Format( + textString, + textString2, + KIndexSecond, + aDriveInfo.iVolumeLabel + ); + } + else + { + StringLoader::Format( + textString, + *iLocStringArray[ ETextInternalMassStorage ], + KNoIndex, + driveUnit.Name() + ); + } } else { - // Use default drive description - //textString.Format( - // *iLocStringArray[ ETextMMCDefaultName ], - // driveUnit.Name() ); StringLoader::Format( textString, - *iLocStringArray[ ETextMMCDefaultName ], + *iLocStringArray[ ETextInternalMassStorageUnavailable ], KNoIndex, driveUnit.Name() ); @@ -1002,11 +984,6 @@ if( aDriveInfo.iVolumeLabel.Length() > 0 ) { // Append drive name if it has one - //itemString.Format( - // *iLocStringArray[ ETextMMCNamed ], - // driveUnit.Name(), - // aDriveInfo.iVolumeLabel - // ); StringLoader::Format( textString, *iLocStringArray[ ETextMMCNamed ], @@ -1022,13 +999,9 @@ } else { - //itemString.Format( - // *iLocStringArray[ ETextMMCDefaultName ], - // driveUnit.Name() - // ); StringLoader::Format( itemString, - *iLocStringArray[ ETextMMCDefaultName ], + *iLocStringArray[ ETextInternalMassStorage ], KNoIndex, driveUnit.Name() ); @@ -1059,13 +1032,9 @@ else { // Use default drive description - //textString.Format( - // *iLocStringArray[ ETextMMCDefaultName ], - // driveUnit.Name() - // ); StringLoader::Format( textString, - *iLocStringArray[ ETextMMCDefaultName ], + *iLocStringArray[ ETextInternalMassStorage ], KNoIndex, driveUnit.Name() ); @@ -1074,41 +1043,31 @@ itemString.Append( KTabChar ); // 2nd row text: - switch( aDriveInfo.iDriveStatus ) + if ( aDriveInfo.iDriveStatus == EDriveOK ) { - case EDriveNotReady: + HBufC* buffer; + TInt64 freeSpace = aDriveInfo.iDiskSpace; + if ( freeSpace >= 0 ) { - itemString.Append( - *iLocStringArray[ ETextMMCUnavailable ] ); - break; + buffer = HBufC::NewLC( KListBoxEntryMaxLength ); + TPtr unitStr( buffer->Des() ); + AknCFDUtility::SetSecondRowTextL( freeSpace, unitStr ); } - case EDriveLocked: - { - itemString.Append( *iLocStringArray[ ETextMMCLocked ] ); - break; - } - case EDriveOK: - default: + else { - HBufC* buffer; - TInt64 freeSpace = aDriveInfo.iDiskSpace; - if ( freeSpace >= 0 ) - { - buffer = HBufC::NewLC( KListBoxEntryMaxLength ); - TPtr unitStr( buffer->Des() ); - AknCFDUtility::SetSecondRowTextL( freeSpace, unitStr ); - } - else - { - // Disk space is unavailable - buffer = StringLoader::LoadLC( - R_CFD_QTN_MEMC_SPACE_NOT_AVAILABLE, - iCoeEnv); - } - itemString.Append( *buffer );//Free mem text - CleanupStack::PopAndDestroy( buffer ); - break; + // Disk space is unavailable + buffer = StringLoader::LoadLC( + R_CFD_QTN_MEMC_SPACE_NOT_AVAILABLE, + iCoeEnv); } + itemString.Append( *buffer );//Free mem text + CleanupStack::PopAndDestroy( buffer ); + } + else + { + itemString.Append( + *iLocStringArray[ + ETextInternalMassStorageUnavailable ] ); } break; } diff -r 2b7609a571c9 -r aa94898fb0b4 commonuis/CommonUi/src/DocumentHandler.cpp --- a/commonuis/CommonUi/src/DocumentHandler.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/commonuis/CommonUi/src/DocumentHandler.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -1393,26 +1393,19 @@ CloseSharableFS(); User::LeaveIfError(iSharableFS.Connect()); User::LeaveIfError(iSharableFS.ShareProtected()); - TInt err = aSharableFile.Open(iSharableFS,aFileName,EFileShareReadersOnly); - if (err == KErrInUse) - { - err = aSharableFile.Open( iSharableFS,aFileName,EFileShareReadersOrWriters ); - } - else if ( err == KErrTooBig ) - { - RFile64* file64 = NULL; - file64 = static_cast (&aSharableFile); - if( file64 != NULL ) - { - err = file64->Open(iSharableFS,aFileName,EFileShareReadersOnly); - if( err == KErrInUse ) - { - err = aSharableFile.Open( iSharableFS,aFileName,EFileShareReadersOrWriters ); - } - } - } - error = err; // Otherwise possible KErrNotReady caused by hotswap leads to crash later - } + + error = aSharableFile.Open( iSharableFS, aFileName, EFileShareReadersOrWriters ); + if( error == KErrTooBig ) + { + RFile64* file64 = NULL; + file64 = static_cast (&aSharableFile); + if( file64 != NULL ) + { + error = file64->Open( iSharableFS, aFileName, EFileShareReadersOrWriters ); + } + } + } + #ifdef _DEBUG RDebug::Print( _L("DocumentHandler: CDocumentHandler::OpenTempFileL: finished with error=%d."), error); #endif diff -r 2b7609a571c9 -r aa94898fb0b4 lafagnosticuifoundation/bmpanimation/tef/Tanctl.cpp --- a/lafagnosticuifoundation/bmpanimation/tef/Tanctl.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/lafagnosticuifoundation/bmpanimation/tef/Tanctl.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -134,11 +134,14 @@ const TInt maskId = aFramesReader.ReadInt16(); if (bmpId >= 0) { - CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(aFileName, bmpId); + // Create a bitmap with no error dialog - the 3rd argument of CEikonEnv::CreateBitmapL is to decide whether + // or not to show a error dialog on failure. With this option, it leaves with KErrExtendedWkithText if the creation of + // bitmap fails. For this test we do not need this error dialog and we expect the raw error code (i.e. KErrNoMemory). + CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(aFileName, bmpId, EFalse); frameData->SetBitmap(bitmap); if (maskId >= 0) { - CFbsBitmap* mask = iEikonEnv->CreateBitmapL(aFileName, maskId); + CFbsBitmap* mask = iEikonEnv->CreateBitmapL(aFileName, maskId, EFalse); frameData->SetMask(mask); } } diff -r 2b7609a571c9 -r aa94898fb0b4 lafagnosticuifoundation/uigraphicsutils/tef/t_phonenumberutils.cpp --- a/lafagnosticuifoundation/uigraphicsutils/tef/t_phonenumberutils.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/lafagnosticuifoundation/uigraphicsutils/tef/t_phonenumberutils.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -92,7 +92,7 @@ void CT_PhoneNumberUtilsStep::ParsePhoneNumberForPPN() { INFO_PRINTF1(_L("Test to Parse PhoneNumber With Valid PlainPhoneNumber")); - TBuf<50> number = _L("+46 345 34(34347) 42443 42"); // This should be a parseable Plain Phone Number + TBuf number = _L("+46 345 34(34347) 42443 42"); // This should be a parseable Plain Phone Number TEST(TulPhoneNumberUtils::Normalize(number, TulPhoneNumberUtils::EPlainPhoneNumber)); INFO_PRINTF2(_L("Normalized Phone No. is %S"), &number); @@ -152,7 +152,7 @@ void CT_PhoneNumberUtilsStep::ParsePhoneNumberForCCN() { INFO_PRINTF1(_L("Test to Parse PhoneNumber With Valid ContactCardNumber")); - TBuf<50> number = _L("*31*6(0)35/6546"); // This should be a parseable Contact Card Number + TBuf number = _L("*31*6(0)35/6546"); // This should be a parseable Contact Card Number TEST(TulPhoneNumberUtils::Normalize(number, TulPhoneNumberUtils::EContactCardNumber)); INFO_PRINTF2(_L("Normalized Contact Card No. is %S"), &number); @@ -204,15 +204,24 @@ void CT_PhoneNumberUtilsStep::ParsePhoneNumberForSMSNumber() { INFO_PRINTF1(_L("Test to Validate SMS number")); - TBuf<50> number = _L("12*3-45/345-24.3"); // This should be a Valid SMS number + TBuf number = _L("12*3-45/345-24.3"); // This should be a Valid SMS number TEST(TulPhoneNumberUtils::IsValid(number, TulPhoneNumberUtils::ESMSNumber)); TEST(TulPhoneNumberUtils::Normalize(number, TulPhoneNumberUtils::ESMSNumber)); INFO_PRINTF2(_L("Normalized SMS No. is %S"), &number); - number = _L("123453452431234534524312345345243"); // This should be a NOT Valid SMS number - TEST(!(TulPhoneNumberUtils::IsValid(number, TulPhoneNumberUtils::ESMSNumber))); - + if (KPhoneNoUtilsMaxNumbers < KMaxTestBufferSize) + { + // form number more than max number + number.Zero(); + for (TInt i = 0; i <= KPhoneNoUtilsMaxNumbers; ++i) + { + number.Append('0' + i % 10); + } + // This should be a NOT Valid SMS number + TEST(!(TulPhoneNumberUtils::IsValid(number, TulPhoneNumberUtils::ESMSNumber))); + } + number = _L(" "); // This should NOT be a Valid SMS numbernumber TEST(!(TulPhoneNumberUtils::IsValid(number, TulPhoneNumberUtils::ESMSNumber))); @@ -250,7 +259,7 @@ { INFO_PRINTF1(_L("Test to Validate PhoneClientNumber")); - TBuf<50> number = _L("1p23-4534w5-2*43#34"); // This should be a Valid Phone Client Number + TBuf number = _L("1p23-4534w5-2*43#34"); // This should be a Valid Phone Client Number TEST(TulPhoneNumberUtils::IsValid(number, TulPhoneNumberUtils::EPhoneClientNumber)); TEST(TulPhoneNumberUtils::Normalize(number, TulPhoneNumberUtils::EPhoneClientNumber)); diff -r 2b7609a571c9 -r aa94898fb0b4 lafagnosticuifoundation/uigraphicsutils/tef/t_phonenumberutils.h --- a/lafagnosticuifoundation/uigraphicsutils/tef/t_phonenumberutils.h Tue Apr 27 16:29:59 2010 +0100 +++ b/lafagnosticuifoundation/uigraphicsutils/tef/t_phonenumberutils.h Fri Apr 30 17:20:48 2010 +0100 @@ -25,6 +25,9 @@ #include "appfwk_test_AppUi.h" #include +const TInt KMaxTestBufferSize = 128; +const TInt KPhoneNoUtilsMaxNumbers = 48; // see hard coded value in ... tulphonenumberutils.cpp + _LIT(KT_PhoneNumberUtilsStep,"t_phonenumberutils"); //PPN == EPlainPhoneNumber diff -r 2b7609a571c9 -r aa94898fb0b4 lafagnosticuifoundation/uigraphicsutils/tulsrc/tulphonenumberutils.cpp --- a/lafagnosticuifoundation/uigraphicsutils/tulsrc/tulphonenumberutils.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/lafagnosticuifoundation/uigraphicsutils/tulsrc/tulphonenumberutils.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -33,6 +33,7 @@ // DEFINES const TInt KPhoneNoUtilsMinNumbers = 1; const TInt KPhoneNoUtilsMaxNumbers = 48; // Maximum phone number supported in Contacts + // see dependent test case t_phonenumberutils.cpp when changing this // --------------------------------------------------------- // Phone number parsing methods diff -r 2b7609a571c9 -r aa94898fb0b4 psln/Group/Psln.mmp --- a/psln/Group/Psln.mmp Tue Apr 27 16:29:59 2010 +0100 +++ b/psln/Group/Psln.mmp Fri Apr 30 17:20:48 2010 +0100 @@ -116,8 +116,6 @@ LIBRARY featmgr.lib LIBRARY eikdlg.lib LIBRARY hal.lib - -LIBRARY aknlocalskinlib.lib LIBRARY aknlistloadertfx.lib LIBRARY psmclient.lib diff -r 2b7609a571c9 -r aa94898fb0b4 psln/Inc/PslnBaseContainer.h --- a/psln/Inc/PslnBaseContainer.h Tue Apr 27 16:29:59 2010 +0100 +++ b/psln/Inc/PslnBaseContainer.h Fri Apr 30 17:20:48 2010 +0100 @@ -31,6 +31,8 @@ */ class CPslnBaseContainer : public CCoeControl { + friend class CPslnGeneralThemeView; + public: /** diff -r 2b7609a571c9 -r aa94898fb0b4 psln/Inc/PslnBaseView.h --- a/psln/Inc/PslnBaseView.h Tue Apr 27 16:29:59 2010 +0100 +++ b/psln/Inc/PslnBaseView.h Fri Apr 30 17:20:48 2010 +0100 @@ -99,12 +99,6 @@ * Handles list box selections. */ virtual void HandleListBoxSelectionL() = 0; - - /** - * Called by HandleListBoxEventL. - * Handles list box item highlight events. - */ - virtual void HandleListBoxItemHighlightL() = 0; /** * Adds given resource text as MSK to CBA. @@ -137,18 +131,6 @@ */ virtual TInt CbaResourceId( const TVwsViewId& aPrevViewId,TUid aCustomMessageId ); - /** - * Called by HandleListBoxEventL. - * Handles list box stylus down event. - */ - virtual void HandleListBoxStylusDown(); - - /** - * Called by HandleListBoxEventL. - * Handles list box stylus move event. - */ - virtual void HandleListBoxStylusDrag(); - private: /* Remove container. */ diff -r 2b7609a571c9 -r aa94898fb0b4 psln/Inc/PslnGeneralThemeContainer.h --- a/psln/Inc/PslnGeneralThemeContainer.h Tue Apr 27 16:29:59 2010 +0100 +++ b/psln/Inc/PslnGeneralThemeContainer.h Fri Apr 30 17:20:48 2010 +0100 @@ -22,21 +22,6 @@ #include "PslnBaseContainer.h" -class CAknLocalSkinInstance; - -/** -* Observer interface for theme preview state changes. -* aPreviewMode new mode for theme preview - ETrue preview is active -* EFalse preview is now ready -* -* @since S60 v5.0 -*/ -class MPslnThemePreviewObserver - { - public: - virtual void HandlePreviewStateChange( const TBool& aPreviewMode ) = 0; - }; - /** * General theme container. * Contains available skins. @@ -95,121 +80,16 @@ * @since 5.0 */ void UpdateSkinListItemsDColumnOnlyL(); - - /** - * Starts theme preview. - * - * @since 5.0 - */ - void StartThemePreviewL( TBool aTouch = ETrue ); - - - /** - * Cancel theme preview. - * - * @since 5.0 - */ - void CancelThemePreviewL(); - - - /** - * Sets theme preview change observer (MPslnThemePreviewObserver). - * aObserver observer for theme preview changes. - * - * @since 5.0 - */ - void SetThemePreviewObserver( MPslnThemePreviewObserver* aObserver ); - - /** - * Locks/enables up and down key events to this container. - * - * @since 5.0 - */ - void LockUpAndDownKeys( const TBool& aLocked ); - - /** - * Restart Quick Preview - */ - void RestartQuickPreviewL(); - - /** - * Set theme preview state active. - */ - void SetPreviewStateActive(); - - /** - * Is current focus theme in preview state. - * @return ETrue if theme is in preview state. - */ - TBool CurrentThemeInPreviewState(); private: // Gets Help context. void GetHelpContext( TCoeHelpContext& aContext ) const; - // From CPslnBaseContainer - TKeyResponse OfferKeyEventL( - const TKeyEvent& aKeyEvent, - TEventCode aType ); - // From CCoeControl - void HandlePointerEventL( const TPointerEvent &aPointerEvent ); - - /* Creates (&initializes) a locally skinnable item list.*/ - void CreateSkinItemList(); - - /* Adds skin item to locally skinnable item list. */ - TInt AddItemToList( const TAknsItemID& aSkinID ); - - /* Callback interface for idle time. */ - static TInt DoHandleIdleTimeL( TAny* aAny ); - - /* Callback interface for theme effect ending. */ - static TInt DoHandleEffectEndL( TAny* aAny ); - - /* Handle idle time. */ - void HandleIdleTimeL(); - - /* Handle theme effect ending. */ - void HandleEffectEndL(); - - /* - * Get Preview Skin Index. - */ - TInt PreviewSkinIndex(); - - /* Initialize theme preview delay time settings. */ - void InitPreviewTime(); - - /* Show Error Note. */ - void ShowErrorNoteL( TInt aResourceId ); private: // data /* - * List of skin items to skin locally. - */ - RArray iSkinItemList; - - /* - * Timer for delay. - * Own. - */ - CPeriodic* iPreviewIdle; - - /* - * Skin preview library instance. - * Own. - */ - CAknLocalSkinInstance* iLocalSkinInstance; - - /* - * Theme preview state change observer. - * Not own. - */ - MPslnThemePreviewObserver* iObserver; - - /* * To be used index in highlight when container is updated. * This is used when skin is activated and user has already * highlighted some other theme. @@ -217,32 +97,10 @@ TInt iToBeUsedIndex; /* - * Up and down key events are ignored while a skin is activating. - * This is to avoid drawing of container when the skin items might - * not be valid. - */ - TBool iLockedKeys; - - /* * Current preview theme index in listbox. */ TInt iActiveSkinItemIndex; - - /* - * Theme preview delay time. - */ - TInt iPreviewDelayTime; - - /* - * Theme preview delay time, arisen by navigation key. - */ - TInt iPreviewDelayTimeOnHardKey; - - /* - * Theme preview interval time. - */ - TInt iPreviewIntervalTime; - + /* * Old Skin Num. */ diff -r 2b7609a571c9 -r aa94898fb0b4 psln/Inc/PslnGeneralThemeView.h --- a/psln/Inc/PslnGeneralThemeView.h Tue Apr 27 16:29:59 2010 +0100 +++ b/psln/Inc/PslnGeneralThemeView.h Fri Apr 30 17:20:48 2010 +0100 @@ -31,8 +31,7 @@ * @since S60 v3.1 */ class CPslnGeneralThemeView : public CPslnBaseView, - public MPslnFWMSKObserver, - public MPslnThemePreviewObserver + public MPslnFWMSKObserver { public: // Constructors and destructor @@ -83,22 +82,6 @@ */ void UpdateSkinListItemsDColumnOnlyL(); - /** - * From MPslnThemePreviewObserver. - * New theme preview state available. - */ - void HandlePreviewStateChange( const TBool& aPreviewMode ); - - /** - * Restart Quick Preview - */ - void RestartQuickPreviewL(); - - /** - * Remove local skin items. - */ - void RemoveLocalSkinItems(); - private: /** @@ -124,11 +107,6 @@ * From CPslnBaseView. */ void HandleListBoxSelectionL(); - - /** - * From CPslnBaseView. - */ - void HandleListBoxItemHighlightL(); /** * From CPslnBaseView. @@ -153,16 +131,6 @@ */ void ConstructL(); - /** - * From CPslnBaseView. - */ - void HandleListBoxStylusDown(); - - /** - * From CPslnBaseView. - */ - void HandleListBoxStylusDrag(); - private: // Data @@ -175,21 +143,6 @@ * Download item index. */ TInt iDownloadItemIndex; - - /** - * What is current skin preview mode. - * ETrue - preview is occuring. - * EFalse - preview is ready / no skin preview active. - */ - TBool iPreviewMode; - - /** - * Is delayed skin activation ongoing. - * If user highlights a skin and immediately activates it, - * preview is first done completely AND then skin activation - * is handled. - */ - TBool iDelayedSkinActivation; /** * Index to be used when skin is activated AFTER skin preview. diff -r 2b7609a571c9 -r aa94898fb0b4 psln/Inc/PslnMainView.h --- a/psln/Inc/PslnMainView.h Tue Apr 27 16:29:59 2010 +0100 +++ b/psln/Inc/PslnMainView.h Fri Apr 30 17:20:48 2010 +0100 @@ -107,11 +107,6 @@ * From CPslnBaseView. */ void HandleListBoxSelectionL(); - - /** - * From CPslnBaseView. - */ - void HandleListBoxItemHighlightL(); /** * From CPslnBaseView. diff -r 2b7609a571c9 -r aa94898fb0b4 psln/Inc/PslnScreenSaverView.h --- a/psln/Inc/PslnScreenSaverView.h Tue Apr 27 16:29:59 2010 +0100 +++ b/psln/Inc/PslnScreenSaverView.h Fri Apr 30 17:20:48 2010 +0100 @@ -144,11 +144,6 @@ * Handles listbox selection. */ void HandleListBoxSelectionL(); - - /** - * From CPslnBaseView. - */ - void HandleListBoxItemHighlightL(); /** * From CPslnBaseView. diff -r 2b7609a571c9 -r aa94898fb0b4 psln/Inc/PslnUi.h --- a/psln/Inc/PslnUi.h Tue Apr 27 16:29:59 2010 +0100 +++ b/psln/Inc/PslnUi.h Fri Apr 30 17:20:48 2010 +0100 @@ -27,6 +27,7 @@ #include #include +class CAknWaitDialog; class CAknNavigationControlContainer; class CAknNavigationDecorator; class MAknBackgroundProcess; @@ -216,18 +217,6 @@ void ConstructTabGroupL(); /** - * Toggles screen blanker on/off. - * @param aToggleValue ETrue activates screen blanker; EFalse removes it. - * @param aStatusPaneVisible indicates if the blanker should cover the - * statuspane as well. This is irrelevant, when removing the blanker. - * @since 3.1 - */ - void ToggleScreenBlankerL( - const TBool& aToggleValue, - const TBool& aStatusPaneVisible, - const TBool& aRealAct = ETrue ); - - /** * Indicates if the UI class has deployed the skin already and is ready to * receive further skin activation related commands. * @return ETrue when UI class can handle a new skin activation related @@ -391,6 +380,20 @@ */ void HandleUSBCallBackL(); + /** + * show progress bar when it is hiden + * + * @return none. + */ + void ShowProgressBarL(); + + /** + * hide progress bar when it is shown + * + * @return none. + */ + void HideProgressBar(); + private: // data /** @@ -544,6 +547,11 @@ */ CPslnGeneralThemeView* iGeneralThemeView; + /** + * the waiting note + * Own + */ + CAknWaitDialog* iWaitDialog; }; // Inline methods. diff -r 2b7609a571c9 -r aa94898fb0b4 psln/Inc/PslnWallpaperView.h --- a/psln/Inc/PslnWallpaperView.h Tue Apr 27 16:29:59 2010 +0100 +++ b/psln/Inc/PslnWallpaperView.h Fri Apr 30 17:20:48 2010 +0100 @@ -100,11 +100,6 @@ /* From CPslnBaseView. */ void HandleListBoxSelectionL(); - - /** - * From CPslnBaseView. - */ - void HandleListBoxItemHighlightL(); /* From CPslnBaseView. */ void NewContainerL(); diff -r 2b7609a571c9 -r aa94898fb0b4 psln/PslnFramework/src/PslnFWBaseView.cpp --- a/psln/PslnFramework/src/PslnFWBaseView.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/psln/PslnFramework/src/PslnFWBaseView.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -129,21 +129,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 ) ) ); + } } } _LIT( KPanicText, "CPslnFWBaseView" ); __ASSERT_DEBUG( iNaviControlContainer, User::Panic( KPanicText, KErrGeneral ) ); - - if ( iNaviPaneContext ) + + if ( iNaviControlContainer ) { - iNaviControlContainer->PushL( *iNaviPaneContext ); - } - else - { - iNaviControlContainer->PushDefaultL(); + if ( iNaviPaneContext ) + { + iNaviControlContainer->PushL( *iNaviPaneContext ); + } + else + { + iNaviControlContainer->PushDefaultL(); + } } PSLN_TRACE_DEBUG("CPslnFWBaseView::SetNaviPaneL END"); } diff -r 2b7609a571c9 -r aa94898fb0b4 psln/Rss/Psln.rss --- a/psln/Rss/Psln.rss Tue Apr 27 16:29:59 2010 +0100 +++ b/psln/Rss/Psln.rss Fri Apr 30 17:20:48 2010 +0100 @@ -459,7 +459,7 @@ { MENU_TITLE { menu_pane = r_psln_basic_menupane; }, MENU_TITLE { menu_pane = r_psln_transition_effects_menu_pane; }, -// MENU_TITLE { menu_pane = r_psln_anim_background_menu_pane; }, + MENU_TITLE { menu_pane = r_psln_anim_background_menu_pane; }, MENU_TITLE { menu_pane = R_PSLN_GEN_VIEW_MENUPANE; } }; } @@ -1005,4 +1005,18 @@ } }; } + +// **PROCESSING NOTE + +// ----------------------------------------------------------------------------- +// +// r_psln_qtn_gen_note_processing +// +// +// ----------------------------------------------------------------------------- +// +RESOURCE TBUF r_psln_qtn_gen_note_processing + { + buf = qtn_gen_note_processing; + } // End of File diff -r 2b7609a571c9 -r aa94898fb0b4 psln/Rss/PslnCommon.rss --- a/psln/Rss/PslnCommon.rss Tue Apr 27 16:29:59 2010 +0100 +++ b/psln/Rss/PslnCommon.rss Fri Apr 30 17:20:48 2010 +0100 @@ -45,11 +45,13 @@ { command = EPslnCmdAppDownload; txt = qtn_skins_option_dltheme; + flags = EEikMenuItemAction; }, MENU_ITEM { command = EPslnCmdAppActivate; txt = qtn_skins_option_activate; + flags = EEikMenuItemAction; } }; } diff -r 2b7609a571c9 -r aa94898fb0b4 psln/Src/PslnBaseView.cpp --- a/psln/Src/PslnBaseView.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/psln/Src/PslnBaseView.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -62,7 +62,10 @@ { if ( iContainer ) { - iPslnUi->RemoveFromStack( iContainer ); + if( iPslnUi ) + { + iPslnUi->RemoveFromStack( iContainer ); + } delete iContainer; } if ( iNaviPaneContext && @@ -81,25 +84,10 @@ { switch ( aEventType ) { - case EEventItemClicked: - case EEventFlickStopped: - if ( iContainer && iContainer->GetMiddleSoftkeyObserver() ) - { - iContainer->GetMiddleSoftkeyObserver()->CheckMiddleSoftkeyLabelL(); - } - HandleListBoxItemHighlightL(); - break; case EEventEnterKeyPressed: - case EEventItemDoubleClicked: case EEventItemSingleClicked: HandleListBoxSelectionL(); break; - case EEventPenDownOnItem: - HandleListBoxStylusDown(); - break; - case EEventItemDraggingActioned: - HandleListBoxStylusDrag(); - break; default: break; } @@ -261,22 +249,6 @@ return R_AVKON_SOFTKEYS_OPTIONS_BACK; } -// ----------------------------------------------------------------------------- -// Handle listbox stylus move event. -// ----------------------------------------------------------------------------- -// -void CPslnBaseView::HandleListBoxStylusDown() - { - } - -// ----------------------------------------------------------------------------- -// Handle listbox stylus move event. -// ----------------------------------------------------------------------------- -// -void CPslnBaseView::HandleListBoxStylusDrag() - { - } - // --------------------------------------------------------------------------- // Removes container. // --------------------------------------------------------------------------- diff -r 2b7609a571c9 -r aa94898fb0b4 psln/Src/PslnGeneralThemeContainer.cpp --- a/psln/Src/PslnGeneralThemeContainer.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/psln/Src/PslnGeneralThemeContainer.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -23,7 +23,6 @@ #include #include -#include #include #include @@ -57,12 +56,6 @@ #include #include -// Constant for delay for the first timer event -const TTimeIntervalMicroSeconds32 KIdlePreviewDelay = 250000; - -// Constant for interval for the subsequent timer events -const TTimeIntervalMicroSeconds32 KIdlePreviewInterval = 200000; - // ============================ MEMBER FUNCTIONS =============================== // ----------------------------------------------------------------------------- // C++ default constructor can NOT contain any code, that might leave. @@ -79,17 +72,6 @@ void CPslnGeneralThemeContainer::ConstructL( const TRect& aRect ) { iListBox = new (ELeave) CAknSingleGraphicStyleListBox; - - - iPreviewIdle = CPeriodic::NewL( CActive::EPriorityIdle ); - - RFs& fs = CCoeEnv::Static()->FsSession(); - iLocalSkinInstance = CAknLocalSkinInstance::NewL ( fs, iModel->SkinSrvSession() ); - - if( PslnFeatures::IsSupported( KPslnSupportFastPreviewTheme ) ) - { - InitPreviewTime(); - } BaseConstructL( aRect, R_PSLN_SKIN_LIST_VIEW_TITLE, KPslnNoResource ); iOldSkinNum = iModel->NumberOfSkins(); } @@ -97,25 +79,6 @@ // Destructor CPslnGeneralThemeContainer::~CPslnGeneralThemeContainer() { - // iListBox is deleted in class CPslnBaseContainer. - - iSkinItemList.Reset(); - - if ( iPreviewIdle ) - { - iPreviewIdle->Cancel(); - } - delete iPreviewIdle; - delete iLocalSkinInstance; - - // Remove locally skinned items. - MAknsSkinInstance* si = AknsUtils::SkinInstance(); - if ( si ) - { - si->SetChangeEventsEnabled( EFalse ); - si->RemoveLocalItemDefs(); - si->SetChangeEventsEnabled( ETrue ); - } } // --------------------------------------------------------------------------- @@ -163,7 +126,6 @@ // void CPslnGeneralThemeContainer::ConstructListBoxL( TInt /*aResLbxId*/ ) { - iListBox->DisableSingleClick( ETrue ); UpdateSkinListItemsL( KErrNotFound ); } @@ -299,7 +261,6 @@ iListBox->HandleItemAdditionL(); if ( iOldSkinNum != maxSkinIndex ) { - StartThemePreviewL(); iOldSkinNum = maxSkinIndex; } PSLN_TRACE_DEBUG("CPslnGeneralThemeContainer::CreateListBoxItemsL END"); @@ -322,65 +283,6 @@ } // --------------------------------------------------------------------------- -// Starts theme preview. -// --------------------------------------------------------------------------- -// -void CPslnGeneralThemeContainer::StartThemePreviewL( TBool aTouch ) - { - // Start timer with 0.5s delay. - iPreviewIdle->Cancel(); - - if( PslnFeatures::IsSupported( KPslnSupportFastPreviewTheme ) ) - { - iPreviewIdle->Start( - aTouch ? iPreviewDelayTime : iPreviewDelayTimeOnHardKey, - iPreviewIntervalTime, - TCallBack( DoHandleIdleTimeL, this ) ); - } - else - { - iPreviewIdle->Start( - KIdlePreviewDelay, - KIdlePreviewInterval, - TCallBack( DoHandleIdleTimeL, this ) ); - } - } - -// --------------------------------------------------------------------------- -// Cancel theme preview. -// --------------------------------------------------------------------------- -// -void CPslnGeneralThemeContainer::CancelThemePreviewL() - { - iPreviewIdle->Cancel(); - } - -// --------------------------------------------------------------------------- -// Sets theme preview observer. -// --------------------------------------------------------------------------- -// -void CPslnGeneralThemeContainer::SetThemePreviewObserver( - MPslnThemePreviewObserver* aObserver ) - { - iObserver = aObserver; - } - -// --------------------------------------------------------------------------- -// Locks up and down key events. -// --------------------------------------------------------------------------- -// -void CPslnGeneralThemeContainer::LockUpAndDownKeys( const TBool& aLocked ) - { - TRAPD( transitionEffectsValue, iModel->GetTransitionEffectStateL() ); - // Effects are enabled if value is NOT KMaxTInt. - // Only lock keys, if transition effects are off. - if( transitionEffectsValue == KMaxTInt ) - { - iLockedKeys = aLocked; - } - } - -// --------------------------------------------------------------------------- // Gets help context for Help application. // --------------------------------------------------------------------------- // @@ -391,440 +293,4 @@ aContext.iContext = KSKINS_HLP_LIST; } -// --------------------------------------------------------------------------- -// Handles key events. -// Starts the new preview theme load before passing the event to base class. -// --------------------------------------------------------------------------- -// -TKeyResponse CPslnGeneralThemeContainer::OfferKeyEventL( - const TKeyEvent& aKeyEvent, - TEventCode aType ) - { - TKeyResponse resp = EKeyWasConsumed; - - // If lock is active, ignore up and down key events. - if ( iLockedKeys && - !( aKeyEvent.iCode == EKeyUpArrow || aKeyEvent.iCode == EKeyDownArrow ) || - !iLockedKeys ) - { - resp = CPslnBaseContainer::OfferKeyEventL( aKeyEvent, aType ); - } - - // React to up and down arrow key events IF download skin is not selected. - if ( aType == EEventKey && - (aKeyEvent.iCode == EKeyUpArrow || aKeyEvent.iCode == EKeyDownArrow ) && - !iLockedKeys ) - { - iObserver->HandlePreviewStateChange( ETrue ); - StartThemePreviewL( EFalse ); - } - - return resp; - } - -// --------------------------------------------------------------------------- -// Creates the skin item list for local item skinning. -// --------------------------------------------------------------------------- -// -void CPslnGeneralThemeContainer::CreateSkinItemList() - { - PSLN_TRACE_DEBUG("CPslnGeneralThemeContainer::CreateSkinItemList" ); - TInt retVal = KErrNone; - - // Main area, screen, status pane and control pane. - retVal += AddItemToList( KAknsIIDQsnBgScreen ); - //retVal += AddItemToList( KAknsIIDQsnBgAreaMainListGene ); - retVal += AddItemToList( KAknsIIDQsnBgAreaStaconRt ); - retVal += AddItemToList( KAknsIIDQsnBgAreaStaconLt ); - retVal += AddItemToList( KAknsIIDQsnBgAreaStaconRb ); - retVal += AddItemToList( KAknsIIDQsnBgAreaStaconLb ); - retVal += AddItemToList( KAknsIIDQsnBgAreaControl ); - retVal += AddItemToList( KAknsIIDQsnBgAreaControlPopup ); - retVal += AddItemToList( KAknsIIDQsnBgAreaStatus ); - retVal += AddItemToList( KAknsIIDQsnFrStatusFlat ); - retVal += AddItemToList( KAknsIIDQsnFrStatusFlatCornerTl ); - retVal += AddItemToList( KAknsIIDQsnFrStatusFlatCornerTr ); - retVal += AddItemToList( KAknsIIDQsnFrStatusFlatCornerBl ); - retVal += AddItemToList( KAknsIIDQsnFrStatusFlatCornerBr ); - retVal += AddItemToList( KAknsIIDQsnFrStatusFlatSideT ); - retVal += AddItemToList( KAknsIIDQsnFrStatusFlatSideB ); - retVal += AddItemToList( KAknsIIDQsnFrStatusFlatSideL ); - retVal += AddItemToList( KAknsIIDQsnFrStatusFlatSideR ); - retVal += AddItemToList( KAknsIIDQsnFrStatusFlatCenter ); - - // Navipane - retVal += AddItemToList( KAknsIIDQsnBgNavipaneSolid ); - retVal += AddItemToList( KAknsIIDQsnBgNavipaneWipe ); - retVal += AddItemToList( KAknsIIDQgnIndiNaviArrowLeft ); - retVal += AddItemToList( KAknsIIDQgnIndiNaviArrowRight ); - - // Battery pane, signal pane - retVal += AddItemToList( KAknsIIDQgnIndiSignalStrength ); - retVal += AddItemToList( KAknsIIDQgnIndiBatteryStrength ); - - // Scrollbars - retVal += AddItemToList( KAknsIIDQsnCpScrollBgTop ); - retVal += AddItemToList( KAknsIIDQsnCpScrollBgMiddle ); - retVal += AddItemToList( KAknsIIDQsnCpScrollBgBottom ); - retVal += AddItemToList( KAknsIIDQsnCpScrollHandleBgTop ); - retVal += AddItemToList( KAknsIIDQsnCpScrollHandleBgMiddle ); - retVal += AddItemToList( KAknsIIDQsnCpScrollHandleBgBottom ); - retVal += AddItemToList( KAknsIIDQsnCpScrollHandleTop ); - retVal += AddItemToList( KAknsIIDQsnCpScrollHandleMiddle ); - retVal += AddItemToList( KAknsIIDQsnCpScrollHandleBottom ); - - // Tabs - retVal += AddItemToList( KAknsIIDQgnGrafTabActiveL ); - retVal += AddItemToList( KAknsIIDQgnGrafTabActiveM ); - retVal += AddItemToList( KAknsIIDQgnGrafTabActiveR ); - retVal += AddItemToList( KAknsIIDQgnGrafTabPassiveL ); - retVal += AddItemToList( KAknsIIDQgnGrafTabPassiveM ); - retVal += AddItemToList( KAknsIIDQgnGrafTabPassiveR ); - - // Highlight - retVal += AddItemToList( KAknsIIDQsnFrList ); - retVal += AddItemToList( KAknsIIDQsnFrListCornerTl ); - retVal += AddItemToList( KAknsIIDQsnFrListCornerTr ); - retVal += AddItemToList( KAknsIIDQsnFrListCornerBl ); - retVal += AddItemToList( KAknsIIDQsnFrListCornerBr ); - retVal += AddItemToList( KAknsIIDQsnFrListSideT ); - retVal += AddItemToList( KAknsIIDQsnFrListSideB ); - retVal += AddItemToList( KAknsIIDQsnFrListSideL ); - retVal += AddItemToList( KAknsIIDQsnFrListSideR ); - retVal += AddItemToList( KAknsIIDQsnFrListCenter ); - - // Options menu - retVal += AddItemToList( KAknsIIDQsnFrPopup ); - retVal += AddItemToList( KAknsIIDQsnFrPopupCornerTl ); - retVal += AddItemToList( KAknsIIDQsnFrPopupCornerTr ); - retVal += AddItemToList( KAknsIIDQsnFrPopupCornerBl ); - retVal += AddItemToList( KAknsIIDQsnFrPopupCornerBr ); - retVal += AddItemToList( KAknsIIDQsnFrPopupSideT ); - retVal += AddItemToList( KAknsIIDQsnFrPopupSideB ); - retVal += AddItemToList( KAknsIIDQsnFrPopupSideL ); - retVal += AddItemToList( KAknsIIDQsnFrPopupSideR ); - retVal += AddItemToList( KAknsIIDQsnFrPopupCenter ); - retVal += AddItemToList( KAknsIIDQsnFrPopupSub ); - retVal += AddItemToList( KAknsIIDQsnFrPopupSubCornerTl ); - retVal += AddItemToList( KAknsIIDQsnFrPopupSubCornerTr ); - retVal += AddItemToList( KAknsIIDQsnFrPopupSubCornerBl ); - retVal += AddItemToList( KAknsIIDQsnFrPopupSubCornerBr ); - retVal += AddItemToList( KAknsIIDQsnFrPopupSubSideT ); - retVal += AddItemToList( KAknsIIDQsnFrPopupSubSideB ); - retVal += AddItemToList( KAknsIIDQsnFrPopupSubSideL ); - retVal += AddItemToList( KAknsIIDQsnFrPopupSubSideR ); - retVal += AddItemToList( KAknsIIDQsnFrPopupCenterSubmenu ); - retVal += AddItemToList( KAknsIIDQgnIndiSubmenu ); - - // Icons - retVal += AddItemToList( KAknsIIDQgnPropPslnActive ); - retVal += AddItemToList( KAknsIIDQgnIndiMmcAdd ); - - // QHD specific CBA. - retVal += AddItemToList( KAknsIIDQgnIndiSctrlMaskInactLsc ); - retVal += AddItemToList( KAknsIIDQgnIndiSctrlMaskActLsc ); - retVal += AddItemToList( KAknsIIDQgnFrSctrlButton ); - retVal += AddItemToList( KAknsIIDQgnFrSctrlButtonCornerTl ); - retVal += AddItemToList( KAknsIIDQgnFrSctrlButtonCornerTr ); - retVal += AddItemToList( KAknsIIDQgnFrSctrlButtonCornerBl ); - retVal += AddItemToList( KAknsIIDQgnFrSctrlButtonCornerBr ); - retVal += AddItemToList( KAknsIIDQgnFrSctrlButtonSideT ); - retVal += AddItemToList( KAknsIIDQgnFrSctrlButtonSideB ); - retVal += AddItemToList( KAknsIIDQgnFrSctrlButtonSideL ); - retVal += AddItemToList( KAknsIIDQgnFrSctrlButtonSideR ); - retVal += AddItemToList( KAknsIIDQgnFrSctrlButtonCenter ); - retVal += AddItemToList( KAknsIIDQgnFrSctrlSkButton ); - retVal += AddItemToList( KAknsIIDQgnFrSctrlSkButtonCornerTl ); - retVal += AddItemToList( KAknsIIDQgnFrSctrlSkButtonCornerTr ); - retVal += AddItemToList( KAknsIIDQgnFrSctrlSkButtonCornerBl ); - retVal += AddItemToList( KAknsIIDQgnFrSctrlSkButtonCornerBr ); - retVal += AddItemToList( KAknsIIDQgnFrSctrlSkButtonSideT ); - retVal += AddItemToList( KAknsIIDQgnFrSctrlSkButtonSideB ); - retVal += AddItemToList( KAknsIIDQgnFrSctrlSkButtonSideL ); - retVal += AddItemToList( KAknsIIDQgnFrSctrlSkButtonSideR ); - retVal += AddItemToList( KAknsIIDQgnFrSctrlSkButtonCenter ); - - __ASSERT_DEBUG( retVal == KErrNone, User::Panic(_L("Error in inserting"), 1) ); - } - -// --------------------------------------------------------------------------- -// Adds one item to skin item list. -// --------------------------------------------------------------------------- -// -TInt CPslnGeneralThemeContainer::AddItemToList( const TAknsItemID& aSkinID ) - { - TAknsItemID skinItem; - skinItem.Set( aSkinID.iMajor, aSkinID.iMinor ); - TInt error = iSkinItemList.InsertInOrder( skinItem, TAknsItemID::LinearOrder ); - PSLN_TRACE_DEBUG3("CPslnGeneralThemeContainer::AddItemToList item=%d %d added %d", - aSkinID.iMajor, aSkinID.iMinor, error ); - return error; - } - -// ----------------------------------------------------------------------------- -// Callback function when application is idle. -// ----------------------------------------------------------------------------- -// -TInt CPslnGeneralThemeContainer::DoHandleIdleTimeL( TAny* aAny ) - { - static_cast< CPslnGeneralThemeContainer* >( aAny )->HandleIdleTimeL(); - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// Callback function when application is idle. -// ----------------------------------------------------------------------------- -// -TInt CPslnGeneralThemeContainer::DoHandleEffectEndL( TAny* aAny ) - { - static_cast< CPslnGeneralThemeContainer* >( aAny )->HandleEffectEndL(); - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// Handle idle time. -// ----------------------------------------------------------------------------- -// -void CPslnGeneralThemeContainer::HandleIdleTimeL() - { - PSLN_TRACE_DEBUG("CPslnGeneralThemeContainer::HandleIdleTimeL" ); - // First stop timer. - iPreviewIdle->Cancel(); - - // No re-preview the same theme - if( iActiveSkinItemIndex == iListBox->CurrentItemIndex() ) - { - return; - } - - // Check free mem - TInt freeMem = 0; - HAL::Get( HALData::EMemoryRAMFree , freeMem ); - if( freeMem <= KPslnMinMemSize ) - { - HBufC* errorBuf = StringLoader::LoadLC( - R_PSLN_QTN_MEMLO_RAM_OUT_OF_MEM ); - // Display global note. - CAknGlobalNote* errorNote = CAknGlobalNote::NewLC(); - errorNote->ShowNoteL( EAknGlobalErrorNote, *errorBuf ); - CleanupStack::PopAndDestroy( 2 ); // errorNote & errorBuf - return; - } - - iActiveSkinItemIndex = iListBox->CurrentItemIndex(); - // Ignore download skin item if it is available. - TInt modifier = IsEmbeddedLinkVisible(); - TInt activeSkinIndex = iActiveSkinItemIndex - modifier; - - TBool usbAttached = static_cast( ControlEnv()->AppUi() )->USBAttachState(); - - if( iModel->IsValidForPreview(activeSkinIndex) == EFalse ) - { - // If skin file didn't valid, preview active skin. - activeSkinIndex = iModel->ActiveSkinIndex(); - } - if ( IsEmbeddedLinkVisible() && iListBox->CurrentItemIndex() == 0 ) - { - activeSkinIndex = iModel->ActiveSkinIndex(); - } - if( iModel->IsThemeOnMemoryCard( activeSkinIndex ) && usbAttached) - { - activeSkinIndex = 0; - } - - CPslnSkinEntry* activeSkin = iModel->VisibleSkin( activeSkinIndex ); - - if ( activeSkin ) - { - // Re-create the list, since skin preview library removes skinned items - // from used list (performance reasons). - iSkinItemList.Reset(); - CreateSkinItemList(); - PSLN_TRACE_DEBUG("CPslnGeneralThemeContainer::HandleIdleTimeL Create Preview" ); - static_cast( ControlEnv()->AppUi() )->ToggleScreenBlankerL( ETrue, ETrue, EFalse ); - - if ( iModel->IsActiveSkinSelected( activeSkinIndex ) ) - { - // Remove locally skinned items. - MAknsSkinInstance* si = AknsUtils::SkinInstance(); - if ( si ) - { - si->SetChangeEventsEnabled( EFalse ); - si->RemoveLocalItemDefs(); - si->SetChangeEventsEnabled( ETrue ); - } - } - else - { - TRAPD(err,iLocalSkinInstance->ApplyL( activeSkin->FullName(), iSkinItemList )); - if (err == EAknsSrvProtected) - { - ShowErrorNoteL( R_PSLN_QTN_DRM_PREV_RIGHTS_SET ); - } - else if (err == KErrCorrupt) - { - //Skin corrupt - ShowErrorNoteL( R_PSLN_QTN_SKINS_ERROR_CORRUPTED ); - //Preview the active skin - TRAP_IGNORE(iLocalSkinInstance->ApplyL( - iModel->VisibleSkin(iModel->ActiveSkinIndex())->FullName(), - iSkinItemList )); - SetCurrentItemIndex( iModel->ActiveSkinIndex() + modifier); - if ( iMSKObserver ) - { - iMSKObserver->CheckMiddleSoftkeyLabelL(); - } - } - else - { - User::LeaveIfError(err); - } - } - - // This is needed to make the list effects update - CAknListLoader::InvalidateAll(); - - if( PslnFeatures::IsSupported( KPslnSupportFastPreviewTheme ) ) - { - iPreviewIdle->Start( - iPreviewDelayTime, - iPreviewIntervalTime, - TCallBack( DoHandleEffectEndL, this ) ); - } - else - { - iPreviewIdle->Start( - KIdlePreviewDelay, - KIdlePreviewInterval, - TCallBack( DoHandleEffectEndL, this ) ); - } - } - } - -// --------------------------------------------------------------------------- -// Handle effect end. -// --------------------------------------------------------------------------- -// -void CPslnGeneralThemeContainer::HandleEffectEndL() - { - // First stop timer. - iPreviewIdle->Cancel(); - static_cast( ControlEnv()->AppUi() )-> - ToggleScreenBlankerL( EFalse, EFalse ); - iObserver->HandlePreviewStateChange( EFalse ); - } - - - -// --------------------------------------------------------------------------- -// Restart Quick Preview -// --------------------------------------------------------------------------- -// -void CPslnGeneralThemeContainer::RestartQuickPreviewL() - { - TInt modifier = IsEmbeddedLinkVisible(); - TInt activeSkinIndex = iListBox->CurrentItemIndex() - modifier; - if( iModel->IsThemeOnMemoryCard(activeSkinIndex) ) - { - HandleIdleTimeL(); - } - } - -// --------------------------------------------------------------------------- -// Get Preview Skin Index -// --------------------------------------------------------------------------- -// -TInt CPslnGeneralThemeContainer::PreviewSkinIndex() - { - // Ignore download skin item if it is available. - TInt modifier = IsEmbeddedLinkVisible(); - TInt previewSkinIndex = iListBox->CurrentItemIndex() - modifier; - - TBool usbAttached = static_cast( ControlEnv()->AppUi() )->USBAttachState(); - - if( !iModel->IsValidForPreview(previewSkinIndex) ) - { - // If skin file on memorycard and usb attached, preview default skin. - previewSkinIndex = 0; - } - else if( iModel->IsThemeOnMemoryCard( previewSkinIndex ) && usbAttached) - { - // If skin file didn't exist, preview default skin. - previewSkinIndex = 0; - } - return previewSkinIndex; - } - -// --------------------------------------------------------------------------- -// Set theme preview state active. -// --------------------------------------------------------------------------- -// -void CPslnGeneralThemeContainer::SetPreviewStateActive() - { - iObserver->HandlePreviewStateChange( ETrue ); - } - -// --------------------------------------------------------------------------- -// Checks if current focus theme is in preview state. -// --------------------------------------------------------------------------- -// -TBool CPslnGeneralThemeContainer::CurrentThemeInPreviewState() - { - return iListBox->CurrentItemIndex() != iActiveSkinItemIndex; - } - -// ----------------------------------------------------------------------------- -// Load preview delay time settings from CenRep. -// ----------------------------------------------------------------------------- -// -void CPslnGeneralThemeContainer::InitPreviewTime() - { - //load from cenrep - iPreviewDelayTime = KErrNone; - iPreviewDelayTimeOnHardKey = KErrNone; - iPreviewIntervalTime = KErrNone; - CRepository* timeRepository = NULL; - TRAPD( err, timeRepository = CRepository::NewL( KCRUidThemes ) ); - if( err != KErrNone ) - { - return; - } - timeRepository->Get( KThemesPreviewDelayTime, iPreviewDelayTime ); - timeRepository->Get( KThemesPreviewDelayTimeOnHardKey, iPreviewDelayTimeOnHardKey ); - timeRepository->Get( KThemesPreviewIntervalTime, iPreviewIntervalTime ); - delete timeRepository; - timeRepository = NULL; - } - -// ----------------------------------------------------------------------------- -// Show Error Note. -// ----------------------------------------------------------------------------- -// -void CPslnGeneralThemeContainer::ShowErrorNoteL( TInt aResourceId ) - { - HBufC* errorText = StringLoader::LoadLC(aResourceId); - CAknErrorNote * note = new(ELeave) CAknErrorNote (EFalse); - note->ExecuteLD(*errorText); - CleanupStack::PopAndDestroy(errorText); - } - -// ----------------------------------------------------------------------------- -// Handle Pointer Event. -// ----------------------------------------------------------------------------- -// -void CPslnGeneralThemeContainer::HandlePointerEventL( const TPointerEvent &aPointerEvent ) - { - // Cancel this kind of preview, in conflict with kinetic scrolling. -/* - // Launch theme preview when pen up, in case pen is out of listbox. - if ( aPointerEvent.iType == TPointerEvent::EButton1Up ) - { - iObserver->HandlePreviewStateChange( ETrue ); - StartThemePreviewL( ETrue ); - } -*/ - - CCoeControl::HandlePointerEventL( aPointerEvent ); - } - // End of File diff -r 2b7609a571c9 -r aa94898fb0b4 psln/Src/PslnGeneralThemeView.cpp --- a/psln/Src/PslnGeneralThemeView.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/psln/Src/PslnGeneralThemeView.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -160,15 +160,6 @@ TInt error = iModel->SetTransitionEffectsL( EPslnEnableAllEffects ); - if ( error == KErrNone ) - { - if ( PslnFeatures::IsSupported( KPslnSupportAnimBackground ) && - iModel->IsSupportAnimBg( iModel->ActiveSkinIndex() ) ) - { - error = iModel->SetAnimBackground( EPslnEnableAllEffects ); - } - } - if ( error == KErrNoMemory ) { HBufC* errorBuf = StringLoader::LoadLC( @@ -186,12 +177,24 @@ break; case EPslnCmdTransitionEffectsDeactivate: iModel->SetTransitionEffectsL( EPslnDisableAllEffects ); - //Deactive AnimBackground - iModel->SetAnimBackground( EPslnDisableAllEffects ); break; case EPslnCmdAnimBackgroundActivate: { + TInt PsmMode = 0; + CPsmSettings *PsmSettings = CPsmSettings::NewL(); + PsmSettings->GetCurrentMode( PsmMode ); + delete PsmSettings; + + if ( PsmMode == EPsmsrvModePowerSave ) // PSM on, setting is protected + { + HBufC* buf = StringLoader::LoadLC( R_PSLN_QTN_PSM_INFONOTE ); + CAknInformationNote* note = new (ELeave) CAknInformationNote( ETrue ); + note->ExecuteLD( *buf ); + CleanupStack::PopAndDestroy( buf ); + return; + } + TInt error = iModel->SetAnimBackground( EPslnEnableAllEffects ); if ( error == KErrNoMemory ) { @@ -212,18 +215,6 @@ { if ( iContainer ) { - if ( iPreviewMode ) - { - //stop preview - iToBeActivatedSkinIndex = activeSkinIndex; - static_cast(iContainer)-> - LockUpAndDownKeys( ETrue ); - static_cast(iContainer)-> - CancelThemePreviewL(); - - HandlePreviewStateChange( EFalse ); - } - if ( iToBeActivatedSkinIndex != KErrNotFound ) { activeSkinIndex = iToBeActivatedSkinIndex; @@ -232,9 +223,6 @@ // Do nothing if active theme is selected. if ( iModel->IsActiveSkinSelected( activeSkinIndex ) ) { - HandlePreviewStateChange( ETrue ); - static_cast(iContainer)-> - StartThemePreviewL(); break; } // Check is the theme corrupted. @@ -252,8 +240,6 @@ { iModel->SetCurrentSelectedSkinIndex( activeSkinIndex ); } - static_cast(iContainer)-> - LockUpAndDownKeys( EFalse ); } } case EPslnCmdAppDownload: // Fallthrough @@ -315,7 +301,6 @@ CheckMiddleSoftkeyLabelL(); - iPslnUi->ToggleScreenBlankerL( EFalse, EFalse ); iToBeActivatedSkinIndex = -1; } @@ -343,7 +328,18 @@ { if ( iContainer ) { - iCurrentItem = iContainer->CurrentItemIndex(); + if ( iContainer->iListBox->IsHighlightEnabled() ) + { + iCurrentItem = iContainer->CurrentItemIndex(); + } + else + { + iCurrentItem = iModel->ActiveSkinIndex(); + if ( iDownloadItemIndex != KErrNotFound ) + { + iCurrentItem++; + } + } } TBool downloadExists = ETrue; @@ -423,7 +419,7 @@ } TInt skinIndex = iCurrentItem - (TInt) downloadExists; - if ( ( iCurrentItem != iDownloadItemIndex && + if ( ( iCurrentItem == iDownloadItemIndex && iDownloadItemIndex != KErrNotFound )|| !iModel->IsActiveSkinSelected() || !PslnFeatures::IsSupported( KPslnSupportAnimBackground ) || @@ -491,21 +487,6 @@ } // ----------------------------------------------------------------------------- -// Handle listbox item highlight. -// -// ----------------------------------------------------------------------------- -// -void CPslnGeneralThemeView::HandleListBoxItemHighlightL() - { - PSLN_TRACE_DEBUG("CPslnGeneralThemeView::HandleListBoxItemHighlightL"); - if ( iContainer ) - { - HandlePreviewStateChange( ETrue ); - static_cast(iContainer)->StartThemePreviewL(); - } - } - -// ----------------------------------------------------------------------------- // Create container. // // ----------------------------------------------------------------------------- @@ -514,8 +495,6 @@ { iContainer = new(ELeave) CPslnGeneralThemeContainer(); iContainer->SetMiddleSoftkeyObserver( this ); - static_cast(iContainer)-> - SetThemePreviewObserver( this ); } // ----------------------------------------------------------------------------- @@ -596,53 +575,6 @@ } // ----------------------------------------------------------------------------- -// New theme preview state available. -// ----------------------------------------------------------------------------- -// -void CPslnGeneralThemeView::HandlePreviewStateChange( const TBool& aPreviewMode ) - { - iPreviewMode = aPreviewMode; -// TRAPD( state, iModel->GetTransitionEffectStateL() ); -// if ( state != KMaxTInt ) -// { -// CAknView::StopDisplayingMenuBar(); -// } - if ( iDelayedSkinActivation && !iPreviewMode ) - { - TRAP_IGNORE( HandleCommandL( EPslnCmdAppActivate ) ); - iDelayedSkinActivation = EFalse; - } - } - - -// --------------------------------------------------------------------------- -// Restart Quick Preview -// --------------------------------------------------------------------------- -// -void CPslnGeneralThemeView::RestartQuickPreviewL() - { - CPslnGeneralThemeContainer* container = static_cast(iContainer); - - container->RestartQuickPreviewL(); - } - -// ----------------------------------------------------------------------------- -// Remove local skin items. -// ----------------------------------------------------------------------------- -// -void CPslnGeneralThemeView::RemoveLocalSkinItems() - { - // Remove locally skinned items. - MAknsSkinInstance* si = AknsUtils::SkinInstance(); - if ( si ) - { - si->SetChangeEventsEnabled( EFalse ); - si->RemoveLocalItemDefs(); - si->SetChangeEventsEnabled( ETrue ); - } - } - -// ----------------------------------------------------------------------------- // Remove MSK command mappings. // This method should do nothing but MSK issues. // ----------------------------------------------------------------------------- @@ -658,21 +590,7 @@ cbaGroup->RemoveCommandFromStack( KPslnMSKControlID, EPslnCmdAppActivate ); } } -// ----------------------------------------------------------------------------- -// Handle listbox stylus down event. -// ----------------------------------------------------------------------------- -// -void CPslnGeneralThemeView::HandleListBoxStylusDown() - { - } - -// ----------------------------------------------------------------------------- -// Handle listbox stylus move event. -// ----------------------------------------------------------------------------- -// -void CPslnGeneralThemeView::HandleListBoxStylusDrag() - { - } + // ----------------------------------------------------------------------------- // Hightligt Default skin // ----------------------------------------------------------------------------- diff -r 2b7609a571c9 -r aa94898fb0b4 psln/Src/PslnMainView.cpp --- a/psln/Src/PslnMainView.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/psln/Src/PslnMainView.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -224,14 +224,6 @@ HandleCommandL( EPslnCmdAppOpen ); } -// ----------------------------------------------------------------------------- -// CPslnMainView::HandleListBoxItemHighlightL -// ----------------------------------------------------------------------------- -// -void CPslnMainView::HandleListBoxItemHighlightL() - { - } - // --------------------------------------------------------------------------- // CPslnMainView::NewContainerL // --------------------------------------------------------------------------- diff -r 2b7609a571c9 -r aa94898fb0b4 psln/Src/PslnScreenSaverView.cpp --- a/psln/Src/PslnScreenSaverView.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/psln/Src/PslnScreenSaverView.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -478,14 +478,6 @@ } // ----------------------------------------------------------------------------- -// CPslnScreenSaverView::HandleListBoxItemHighlightL -// ----------------------------------------------------------------------------- -// -void CPslnScreenSaverView::HandleListBoxItemHighlightL() - { - } - -// ----------------------------------------------------------------------------- // CPslnScreenSaverView::NewContainerL // ----------------------------------------------------------------------------- // diff -r 2b7609a571c9 -r aa94898fb0b4 psln/Src/PslnUi.cpp --- a/psln/Src/PslnUi.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/psln/Src/PslnUi.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -31,6 +31,7 @@ // Notes & Dialogs #include #include +#include // DRM. #include @@ -154,6 +155,7 @@ { PSLN_TRACE_DEBUG("CPslnUi::Destructor"); + HideProgressBar(); // Reset skin info when exiting normally. This prevents model class // from trying to revert back to previous skin. if ( iView && iView->Id().iUid == KPslnMainView2.iUid ) @@ -327,7 +329,6 @@ if ( err != KErrNone ) { TRAP_IGNORE( iGeneralThemeView->UpdateSkinListItemsL() ); - TRAP_IGNORE( ToggleScreenBlankerL( EFalse, EFalse ) ); } } @@ -721,47 +722,6 @@ #endif //RD_CONTROL_PANEL } -// --------------------------------------------------------------------------- -// Activates screen blanker. Note that second parameter is only used when -// enabling blanker (i.e. first parameter is ETrue ). -// --------------------------------------------------------------------------- -void CPslnUi::ToggleScreenBlankerL( - const TBool& aToggleValue, const TBool& /*aStatusPaneVisible*/, const TBool& aRealAct ) - { - TInt transitionEffectsValue = iModel->GetTransitionEffectStateL(); - if ( aToggleValue ) - { - // Effects are enabled if value is NOT KMaxTInt. - if( transitionEffectsValue != KMaxTInt ) - { - if ( aRealAct ) - { - iModel->TransEffect(EPslnTransitionEffectStartThemeActivation); - } - else - { - iModel->TransEffect(EPslnTransitionEffectStartPreview); - } - } -// else if ( iView && iView->MenuBar()->IsDisplayed() ) -// { -// iView->MenuBar()->StopDisplayingMenuBar(); -// } - } - else - { - // Effects are enabled if value is NOT KMaxTInt. - if( transitionEffectsValue != KMaxTInt ) - { - iModel->TransEffect(EPslnTransitionEffectStop); - } -// else if ( iView && iView->MenuBar()->IsDisplayed() ) -// { -// iView->MenuBar()->MenuPane()->DrawNow(); -// } - } - } - // --------------------------------------------------------------------------- // Is this class able to handle a new skin activation related command. @@ -957,6 +917,7 @@ if ( GetStatus( EPslnSkinActivated ) ) { SetStateOff( EPslnSkinActivated ); + HideProgressBar(); DoCreateWaitNoteL(); } break; @@ -972,6 +933,7 @@ if ( GetStatus( EPslnSkinActivated ) ) { SetStateOff( EPslnSkinActivated ); + HideProgressBar(); DoCreateWaitNoteL(); } SetStateOn( EPslnListUpdateNeeded ); @@ -985,6 +947,7 @@ if ( GetStatus( EPslnSkinActivated ) ) { SetStateOff( EPslnSkinActivated ); + HideProgressBar(); SkinDeployedL(); } else // Theme changed by other app, update view. @@ -992,7 +955,6 @@ iModel->PerformCompleteUpdateL(); iGeneralThemeView->UpdateSkinListItemsL( iModel->ActiveSkinIndex() + PslnFeatures::IsEnhancedEmbeddedLinksSupported() ); - iGeneralThemeView->RemoveLocalSkinItems(); } if ( GetStatus( EPslnSoundActivationPending ) ) @@ -1000,7 +962,6 @@ SetStateOff( EPslnSoundActivationPending ); ActivateSoundsL(); } - ToggleScreenBlankerL( EFalse, EFalse ); break; default: break; @@ -1113,11 +1074,9 @@ iModel->GuardActivationLC(); TBool shownote = EFalse; - // Show screen clearer when skin is changing. - ToggleScreenBlankerL( ETrue, ETrue ); - PSLN_TRACE_DEBUG("CPslnUi::ActivateSkinL directly"); shownote = iModel->ActivateSkinL( skinIndex ); + ShowProgressBarL(); if ( shownote ) { @@ -1132,8 +1091,6 @@ { PSLN_TRACE_DEBUG("CPslnUi::ActivateSkinL decline DRM activation"); SetStateOff( EPslnSkinChangeRequested ); - // Remove screen clearer. - ToggleScreenBlankerL( EFalse, EFalse ); } } CleanupStack::PopAndDestroy(); // activation guard @@ -1359,7 +1316,6 @@ error = err; } } - iGeneralThemeView->RemoveLocalSkinItems(); return error; } @@ -1475,8 +1431,43 @@ { iUSBAttached = EFalse; } - static_cast< CPslnGeneralThemeView* >( iView )->RestartQuickPreviewL(); } } + +// --------------------------------------------------------------------------- +// CPslnUi::ShowProgressBarL +// --------------------------------------------------------------------------- +// +void CPslnUi::ShowProgressBarL() + { + if ( iWaitDialog == NULL ) + { + iWaitDialog = new (ELeave) CAknWaitDialog( + ( REINTERPRET_CAST( CEikDialog**, &iWaitDialog ) ), ETrue ); + iWaitDialog->PrepareLC( R_PSLN_GENERAL_WAIT_NOTE ); + + HBufC* noteText = NULL; + noteText = StringLoader::LoadLC( R_PSLN_QTN_GEN_NOTE_PROCESSING, iEikonEnv ); + iWaitDialog->SetTextL( *noteText ); + CleanupStack::PopAndDestroy( noteText ); + + iWaitDialog->RunLD(); + } + } + +// --------------------------------------------------------------------------- +// CPslnUi::HideProgressBar +// --------------------------------------------------------------------------- +// +void CPslnUi::HideProgressBar() + { + if( iWaitDialog ) + { + TRAP_IGNORE( iWaitDialog->ProcessFinishedL() ) + delete iWaitDialog; + iWaitDialog = NULL; + } + } + // End of File diff -r 2b7609a571c9 -r aa94898fb0b4 psln/Src/PslnWallpaperView.cpp --- a/psln/Src/PslnWallpaperView.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/psln/Src/PslnWallpaperView.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -420,14 +420,6 @@ } HandleCommandL( EAknSoftkeyOk ); } - -// ----------------------------------------------------------------------------- -// CPslnWallpaperView::HandleListBoxItemHighlightL -// ----------------------------------------------------------------------------- -// -void CPslnWallpaperView::HandleListBoxItemHighlightL() - { - } // ----------------------------------------------------------------------------- // CPslnWallpaperView::NewContainerL diff -r 2b7609a571c9 -r aa94898fb0b4 psln/pslnengine/src/PslnModel.cpp --- a/psln/pslnengine/src/PslnModel.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/psln/pslnengine/src/PslnModel.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -782,11 +782,6 @@ User::Leave( KErrGeneral ); } - if ( !activeEntry->IsSupportAnimBg() ) - { - //Stop animated background - SetAnimBackground( EPslnDisableAllEffects ); - } TAknsPkgID activeSkinPid = activeEntry->PkgID(); // Activate whole skin PSLN_TRACE_DEBUG("CPslnModel::ActivateSkinL set all definition sets"); diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AknGlobalUI/AknCapServer/inc/akncapserverdiscreetpopuphandler.h --- a/uifw/AknGlobalUI/AknCapServer/inc/akncapserverdiscreetpopuphandler.h Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AknGlobalUI/AknCapServer/inc/akncapserverdiscreetpopuphandler.h Fri Apr 30 17:20:48 2010 +0100 @@ -143,7 +143,7 @@ * * @param aMessage Server message. */ - void HandleQueryInUseRect( const RMessage2& aMessage ); + void HandleQueryInUseRectL( const RMessage2& aMessage ); /** * Shows popup. diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AknGlobalUI/AknCapServer/src/AknCapServerShutdown.cpp --- a/uifw/AknGlobalUI/AknCapServer/src/AknCapServerShutdown.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AknGlobalUI/AknCapServer/src/AknCapServerShutdown.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -112,7 +112,7 @@ // This UID comes from the app, not the mmp! TUid uid = doomed->AppUid(); iWs.GetWindowGroupClientThreadId(wgIds->At(ii), threadId); - thd.Open(threadId); + TInt error = thd.Open(threadId); CleanupClosePushL( thd ); // Is this app OK to kill? We don't kill the this app, EikSrv backdrop or the app that diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AknGlobalUI/AknCapServer/src/AknFastswapWindowControl.cpp --- a/uifw/AknGlobalUI/AknCapServer/src/AknFastswapWindowControl.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AknGlobalUI/AknCapServer/src/AknFastswapWindowControl.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -2924,8 +2924,13 @@ TPtrC CAknFastSwapWindowControl::CurrentAppName() { _AKNTRACE_FUNC_ENTER; - TPtrC name = iGrid->Model()->ItemText( iGrid->CurrentDataIndex() ); - name.Set( name.Mid( name.Find(KTab)+1) ); + TInt textindex = iGrid->CurrentDataIndex(); + TPtrC name; + if ( textindex > 0 ) + { + name.Set( iGrid->Model()->ItemText( textindex ) ); + name.Set( name.Mid( name.Find(KTab)+1 ) ); + } _AKNTRACE_FUNC_EXIT; return name; } diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AknGlobalUI/AknCapServer/src/aknKeyFilter.cpp --- a/uifw/AknGlobalUI/AknCapServer/src/aknKeyFilter.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AknGlobalUI/AknCapServer/src/aknKeyFilter.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -891,13 +891,12 @@ 0, 0, KAknScreenModeUnset ); - - } - - if (screenMode == screen->CurrentScreenMode() ) - { - // Remember that there was at least one inhibited screen mode - iAppUi->SgcServer()->SetBackgroundAppsStateChangeDeferred( ETrue ); + + if ( screenMode == screen->CurrentScreenMode() ) + { + // Remember that there was at least one inhibited screen mode + iAppUi->SgcServer()->SetBackgroundAppsStateChangeDeferred( ETrue ); + } } } diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AknGlobalUI/AknCapServer/src/akncapserverdiscreetpopuphandler.cpp --- a/uifw/AknGlobalUI/AknCapServer/src/akncapserverdiscreetpopuphandler.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AknGlobalUI/AknCapServer/src/akncapserverdiscreetpopuphandler.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -151,7 +151,7 @@ } case ( TAknDiscreetPopupData::EAknPopupTypeQueryInUseRect ): { - HandleQueryInUseRect( aMessage ); + HandleQueryInUseRectL( aMessage ); break; } default: @@ -281,10 +281,10 @@ } // --------------------------------------------------------------------------- -// CAknCapServerDiscreetPopupHandler::HandleQueryInUseRect +// CAknCapServerDiscreetPopupHandler::HandleQueryInUseRectL // --------------------------------------------------------------------------- // -void CAknCapServerDiscreetPopupHandler::HandleQueryInUseRect( +void CAknCapServerDiscreetPopupHandler::HandleQueryInUseRectL( const RMessage2& aMessage ) { _AKNTRACE_FUNC_ENTER; diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AknGlobalUI/NotifierWrapper/group/aknnotifierwrapper.mmp --- a/uifw/AknGlobalUI/NotifierWrapper/group/aknnotifierwrapper.mmp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AknGlobalUI/NotifierWrapper/group/aknnotifierwrapper.mmp Fri Apr 30 17:20:48 2010 +0100 @@ -51,6 +51,7 @@ LIBRARY estor.lib LIBRARY eiksrvui.lib LIBRARY akncapserverclient.lib +LIBRARY gfxtrans.lib deffile AKNNOTIFIERWRAPPER.DEF diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AknGlobalUI/NotifierWrapper/src/AknNotiferAppServerApplication.cpp --- a/uifw/AknGlobalUI/NotifierWrapper/src/AknNotiferAppServerApplication.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AknGlobalUI/NotifierWrapper/src/AknNotiferAppServerApplication.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -24,6 +24,9 @@ #include #include +#include +#include "akntranseffect.h" // for Transition effect enumerations + #include #include @@ -348,6 +351,7 @@ { case EApaSystemEventBroughtToForeground: { // ignore this event as it causes undesired effects on applications underneath + GfxTransEffect::EndFullScreen(); break; } default: diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AknGlobalUI/OldStyleNotif/Inc/AknListQueryNotificationDialog.h --- a/uifw/AknGlobalUI/OldStyleNotif/Inc/AknListQueryNotificationDialog.h Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AknGlobalUI/OldStyleNotif/Inc/AknListQueryNotificationDialog.h Fri Apr 30 17:20:48 2010 +0100 @@ -47,6 +47,8 @@ protected: TBool OkToExitL(TInt aButtonId); + void HandlePointerEventL(const TPointerEvent& aPointerEvent); + private: virtual void CEikDialog_Reserved_1(); virtual void CEikDialog_Reserved_2(); @@ -56,6 +58,7 @@ CAknListQueryNotificationDialog** iSelfPtr; TBool iPanning; TBool iFlick; + TBool iPointerUpEaten; }; #endif // __AKNLISTQUERYNOTIFICATIONDIALOG__ diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AknGlobalUI/OldStyleNotif/Src/AknListQueryNotificationDialog.cpp --- a/uifw/AknGlobalUI/OldStyleNotif/Src/AknListQueryNotificationDialog.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AknGlobalUI/OldStyleNotif/Src/AknListQueryNotificationDialog.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -24,7 +24,10 @@ TInt* aIndex, MAknListQueryNotificationCallback* aCallBack, CAknListQueryNotificationDialog** aSelfPtr) - : CAknListQueryDialog(aIndex), iCallBack(aCallBack), iSelfPtr(aSelfPtr) + : CAknListQueryDialog(aIndex) + , iCallBack(aCallBack) + , iSelfPtr(aSelfPtr) + , iPointerUpEaten(EFalse) { } @@ -55,6 +58,8 @@ return EKeyWasNotConsumed; } + iPointerUpEaten = EFalse; + TInt code = aKeyEvent.iCode; switch (code) @@ -111,6 +116,14 @@ TBool CAknListQueryNotificationDialog::OkToExitL(TInt aButtonId) { + // Fix the problem where the pointer up event is handled to close the power menu key, + // when the popup shows on the top of power menu before releasing the tap. + if (iPointerUpEaten && AknLayoutUtils::PenEnabled() && aButtonId == EAknSoftkeyOk) + { + iPointerUpEaten = EFalse; + return EFalse; + } + TInt ret = -1; if (aButtonId != EAknSoftkeyCancel) { @@ -124,6 +137,17 @@ return EFalse; } +void CAknListQueryNotificationDialog::HandlePointerEventL(const TPointerEvent& aPointerEvent) + { + iPointerUpEaten = EFalse; + if (aPointerEvent.iType == TPointerEvent::EButton1Up && !IsFocused()) + { + iPointerUpEaten = ETrue; + } + + CAknListQueryDialog::HandlePointerEventL(aPointerEvent); + } + void CAknListQueryNotificationDialog::CEikDialog_Reserved_1() { } diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AknGlobalUI/OldStyleNotif/Src/AknPrivateImageLoader.cpp --- a/uifw/AknGlobalUI/OldStyleNotif/Src/AknPrivateImageLoader.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AknGlobalUI/OldStyleNotif/Src/AknPrivateImageLoader.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -372,7 +372,8 @@ // create soft mask icon->SetMask( new(ELeave) CFbsBitmap() ); User::LeaveIfError( icon->Mask()->Create( aSize, EGray256 ) ); - + svgEngine->SetViewportHeight((CSvgDocumentImpl *)handle,aSize.iHeight); + svgEngine->SetViewportWidth((CSvgDocumentImpl *)handle,aSize.iWidth); // render svg image LeaveIfErrorL( svgEngine->RenderDom( handle, icon->Bitmap(), icon->Mask() ) ); diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AknGlobalUI/akncustcmds/src/akncapserverstart.cpp --- a/uifw/AknGlobalUI/akncustcmds/src/akncapserverstart.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AknGlobalUI/akncustcmds/src/akncapserverstart.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -86,7 +86,10 @@ TRAP_IGNORE( SetColorPaletteL() ); TRAPD( err, RAknUiServer::StartAknCapserverL() ); + +#ifdef _DEBUG RDebug::Print( _L( "RAknUiServer::StartAknCapserverL leave code %d" ), err ); +#endif TRequestStatus* request = &aRequest; User::RequestComplete( request, err ); diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/aknhlist/inc/akntreelistview.h --- a/uifw/AvKon/aknhlist/inc/akntreelistview.h Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/aknhlist/inc/akntreelistview.h Fri Apr 30 17:20:48 2010 +0100 @@ -1098,6 +1098,14 @@ * Whether or not mirrored layout is currently in use. */ 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; }; diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/aknhlist/src/akntree.cpp --- a/uifw/AvKon/aknhlist/src/akntree.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/aknhlist/src/akntree.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -780,6 +780,7 @@ void CAknTree::GetMarkedItemsL( TAknTreeItemID aNode, RArray& aMarkedItems ) const { + ::CleanupClosePushL(aMarkedItems); aMarkedItems.Reset(); if ( aNode == KAknTreeIIDRoot ) { @@ -811,6 +812,7 @@ } } } + CleanupStack::Pop(&aMarkedItems); } diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/aknhlist/src/akntreelist.cpp --- a/uifw/AvKon/aknhlist/src/akntreelist.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/aknhlist/src/akntreelist.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -402,22 +402,27 @@ if ( item && item->Parent() && item->Parent()->IsNode() ) { CAknTreeNode* node = item->Parent()->Node(); - TBool wasMarked = node->IsMarked(); - if ( node && node->IsMarkable() ) + if (node) { - if ( node->AllChildrenMarked() ) + TBool wasMarked = node->IsMarked(); + + if (node->IsMarkable()) { - node->SetMarked( ETrue ); - } - else + if (node->AllChildrenMarked()) + { + node->SetMarked(ETrue); + } + else + { + node->SetMarked(EFalse); + } + } + + if (wasMarked != node->IsMarked()) { - node->SetMarked( EFalse ); + Window().Invalidate(View().Rect()); } } - if ( wasMarked != node->IsMarked() ) - { - Window().Invalidate( View().Rect() ); - } } } diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/aknhlist/src/akntreelistview.cpp --- a/uifw/AvKon/aknhlist/src/akntreelistview.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/aknhlist/src/akntreelistview.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -2768,10 +2768,10 @@ void CAknTreeListView::DrawItemsWithPhysics( const TRect& aRect ) const { TBool empty = IsEmpty(); + TInt offset = Offset(); #ifdef RD_UI_TRANSITION_EFFECTS_LIST CWindowGc& gc = iGc && !empty ? *iGc : SystemGc(); - TInt offset = Offset(); #else CWindowGc& gc = SystemGc(); #endif @@ -2834,11 +2834,6 @@ if ( iItems[ii].Item() ) { - if ( !aRect.Intersects(drawRect) ) - { - //invisible item yet - continue; - } #ifdef RD_UI_TRANSITION_EFFECTS_LIST TRect tfxDrawRect( drawRect ); @@ -2862,16 +2857,25 @@ clippingRect.iBr.iY = viewRect.iBr.iY; } } + // Set clipping rect. + if ( clippingRect.Intersects( aRect ) ) + { + clippingRect.Intersection( aRect ); + gc.SetClippingRect( clippingRect ); + } + else + { + //Draw nothing if no overlap between item rectangel and given rect. + continue; + } - // Set clipping rect. - gc.SetClippingRect( clippingRect ); - if ( transApi ) { transApi->StopDrawing(); } #endif - if ( ii < iBottomIndex ) + + if ( iItems[ii].Item() != iBottomItem ) { TRect offsetRect( drawRect ); offsetRect.Move( 0, -offset ); @@ -3158,7 +3162,9 @@ void CAknTreeListView::LongTapPointerEventL( const TPointerEvent& aPointerEvent) { - if ( iLongTapDetector && iItemActionMenu && iItemActionMenu->InitMenuL() ) + if ( iLongTapDetector && iItemActionMenu + && !( HasMarkedItemsL() && FocusedItem() + && !FocusedItem()->IsMarked() ) && iItemActionMenu->InitMenuL() ) { iLongTapDetector->PointerEventL( aPointerEvent ); } @@ -3246,7 +3252,8 @@ { if (iItems[i].Item()) { - iBottomIndex = iTree.VisibleItemIndex(iItems[i].Item()); + iBottomItem = iItems[i].Item(); + iBottomIndex = iTree.VisibleItemIndex( iBottomItem ); break; } } diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/conf/s60/avkon.confml Binary file uifw/AvKon/conf/s60/avkon.confml has changed diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/group/bld.inf --- a/uifw/AvKon/group/bld.inf Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/group/bld.inf Fri Apr 30 17:20:48 2010 +0100 @@ -50,6 +50,24 @@ mif2cdlindex.flm /epoc32/tools/makefile_templates/s60/mif2cdlindex.flm mif2cdlindex.meta /epoc32/tools/makefile_templates/s60/mif2cdlindex.meta +../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/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. diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/rom/avkon.iby --- a/uifw/AvKon/rom/avkon.iby Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/rom/avkon.iby Fri Apr 30 17:20:48 2010 +0100 @@ -42,6 +42,13 @@ data=ZRESOURCE\aknpriv.rsc RESOURCE_FILES_DIR\aknpriv.rsc data=ZRESOURCE\smiley.rsc RESOURCE_FILES_DIR\smiley.rsc +data=ZRESOURCE\avkonsystemsounds\volume_min.wav RESOURCE_FILES_DIR\avkonsystemsounds\volume_min.wav +data=ZRESOURCE\avkonsystemsounds\volume_max.wav RESOURCE_FILES_DIR\avkonsystemsounds\volume_max.wav +data=ZRESOURCE\avkonsystemsounds\default_beep.wav RESOURCE_FILES_DIR\avkonsystemsounds\default_beep.wav +data=ZRESOURCE\avkonsystemsounds\battery_dead.wav RESOURCE_FILES_DIR\avkonsystemsounds\battery_dead.wav +data=ZRESOURCE\avkonsystemsounds\battery_low.wav RESOURCE_FILES_DIR\avkonsystemsounds\battery_low.wav + + #include "aknglobalui.iby" #endif diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/src/AknAdaptiveSearchGrid.cpp --- a/uifw/AvKon/src/AknAdaptiveSearchGrid.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/src/AknAdaptiveSearchGrid.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -124,8 +124,11 @@ { _AKNTRACE_FUNC_ENTER; CEikonEnv::Static()->EikAppUi()->RemoveFromStack( this ); - delete iBgContextOfControlPane; - + if ( iBgContextOfControlPane ) + { + delete iBgContextOfControlPane; + iBgContextOfControlPane = NULL; + } // Clear current region of AS iCurrentRegion.Clear(); iButtonArray.ResetAndDestroy(); @@ -161,9 +164,12 @@ iPageIndicator = NULL; } - CAknWsEventMonitor* eventMonitor = iAppUi->EventMonitor(); - eventMonitor->Enable( EFalse ); - eventMonitor->RemoveObserver( this ); + if ( iAppUi ) + { + CAknWsEventMonitor* eventMonitor = iAppUi->EventMonitor(); + eventMonitor->Enable( EFalse ); + eventMonitor->RemoveObserver( this ); + } _AKNTRACE_FUNC_EXIT; } @@ -630,7 +636,7 @@ // The position of the top left corner should be set in advance. // ----------------------------------------------------------------------------- // -void CAknAdaptiveSearchGrid::SetVisibilityL( TBool aVisible, TBool aSelectAll ) +void CAknAdaptiveSearchGrid::SetVisibilityL( TBool aVisible, TBool /*aSelectAll*/ ) { _AKNTRACE( "[%s][%s] Visible : %d", "CAknAdaptiveSearchGrid", __FUNCTION__, aVisible ); if ( aVisible ) @@ -1122,7 +1128,7 @@ // This function is called whenever a control gains or loses focus. // ----------------------------------------------------------------------------- // -void CAknAdaptiveSearchGrid::FocusChanged( TDrawNow aDrawNow ) +void CAknAdaptiveSearchGrid::FocusChanged( TDrawNow /*aDrawNow*/ ) { if ( !iShown || IsNonFocusing() ) { @@ -1643,7 +1649,7 @@ // ----------------------------------------------------------------------------- -// CCAknAdaptiveSearch::SaveFindPaneRect() +// CAknAdaptiveSearch::SaveFindPaneRect() // When the rect of find pane is set, this functions will be notified // to record the size of it. // ----------------------------------------------------------------------------- @@ -1652,11 +1658,15 @@ { //When width is zero, no need to deal with. if ( 0 == aRect.Size().iWidth ) + { return; + } //The same size already is set. No need to do further process. - if ( aRect.Size().iWidth == iFindpaneRect.Size().iWidth ) + if ( aRect == iFindpaneRect ) + { return; + } iFindpaneRect = aRect; iFindPaneSizeChanged = ETrue; diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/src/AknAppUi.cpp --- a/uifw/AvKon/src/AknAppUi.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/src/AknAppUi.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -1868,7 +1868,7 @@ // This method call practically adds a shift modifier to hash key + joystick events. // This is because of marking in lists and editors when edit there is no edit key in device. - if (SimulateHashKeyMarkingEvent(aEvent)) + if (SimulateHashKeyMarkingEventL(aEvent)) { return; } @@ -2099,7 +2099,7 @@ // and ok key events, if hash key is simultaneously down. This is done because of making the // edit key optional in the device. Therefore, hash key with joystick (or single hash press, // see eiklbx.cpp) can be used for marking in lists and editors. -TBool CAknAppUi::SimulateHashKeyMarkingEvent(const TWsEvent& aEvent) +TBool CAknAppUi::SimulateHashKeyMarkingEventL(const TWsEvent& aEvent) { TInt eventType = aEvent.Type(); diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/src/AknCharMap.cpp --- a/uifw/AvKon/src/AknCharMap.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/src/AknCharMap.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -216,22 +216,21 @@ // Navi button class definition // ---------------------------------------------------------------------------- // -NONSHARABLE_CLASS(CAknSctNaviButton) : public CBase +NONSHARABLE_CLASS(CAknSctNaviButton) : public CBase, public MCoeControlObserver { public: - static CAknSctNaviButton* NewL( - const CCoeControl& aParent, - TInt aButtonId, - TResourceReader& reader); + static CAknSctNaviButton* NewL(const CCoeControl& aParent, TInt aButtonId, TResourceReader& reader); ~CAknSctNaviButton(); private: CAknSctNaviButton(TInt aButtonId); - void ConstructL( - const CCoeControl& aParent, - TResourceReader& reader); + void ConstructL(const CCoeControl& aParent, TResourceReader& reader); + + private: // from MCoeControlObserver + virtual void HandleControlEventL(CCoeControl* aControl, TCoeEvent aEventType); public: + void SetObserver(MCoeControlObserver* aObserver); void SetFocused(TBool aState); void SetEnabled(TBool aState); TBool IsFocused(); @@ -239,6 +238,7 @@ public: CAknButton* iButtonControl; + MCoeControlObserver* iObserver; TInt iButtonId; TBool iPressed; TBool iRepeat; @@ -248,7 +248,7 @@ // Table Navi class definition // ---------------------------------------------------------------------------- // -NONSHARABLE_CLASS(CAknSctTableNavi) : public CAknControl, public MAknSctFocusHandler +NONSHARABLE_CLASS(CAknSctTableNavi) : public CAknControl, public MAknSctFocusHandler, public MCoeControlObserver { public: CAknSctTableNavi(CAknCharMap* aCharMap, CAknCharMapExtension* aExtension); @@ -259,9 +259,11 @@ CCoeControl* ComponentControl( TInt aIndex ) const; virtual TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode); void ConstructFromResourceL(TResourceReader& aReader); - virtual void HandlePointerEventL(const TPointerEvent& aPointerEvent); virtual TSize MinimumSize(); virtual void SizeChanged(); + + public: // from MCoeControlObserver + void HandleControlEventL(CCoeControl* aControl, TCoeEvent aEventType); public: // from MAknSctFocusHandler virtual CCoeControl* FocusedControl(); @@ -272,14 +274,19 @@ public: TInt TableCount(); + void UpdateNextTableButtonL(); + + private: void TableExitL(); - static TInt DoTableExit(TAny* aThis); - void UpdateNextTableButtonL(); - + static TInt TableExitCallBackL(TAny* aThis); + void DoTableExitL(); + + void NextTableL(); + static TInt NextTableCallBackL(TAny* aThis); + void DoNextTableL(); + private: TInt ButtonPosition(TInt aButtonIndex) const; - TInt SetStatusChanged(); - void NextTableL(); private: // data TInt iButtonIndex; @@ -556,6 +563,17 @@ { iButtonControl = CAknButton::NewL(aReader); iButtonControl->SetContainerWindowL(aParent); + iButtonControl->SetObserver(this); + } + +void CAknSctNaviButton::SetObserver(MCoeControlObserver* aObserver) + { + iObserver = aObserver; + } + +void CAknSctNaviButton::HandleControlEventL(CCoeControl* aControl, TCoeEvent aEventType) + { + if(iObserver) iObserver->HandleControlEventL(aControl, aEventType); } CAknSctNaviButton::~CAknSctNaviButton() @@ -742,15 +760,46 @@ void CAknSctTableNavi::TableExitL() { - delete iIdle; - iIdle = 0; - iIdle = CIdle::NewL(CActive::EPriorityStandard); - iIdle->Start(TCallBack(DoTableExit, this)); - } - -TInt CAknSctTableNavi::DoTableExit(TAny* aThis) - { - return ((CAknSctTableNavi*)aThis)->SetStatusChanged(); + if(!iIdle) + { + iIdle = CIdle::NewL(CActive::EPriorityStandard); + } + + iIdle->Cancel(); + iIdle->Start(TCallBack(TableExitCallBackL, this)); + } + +TInt CAknSctTableNavi::TableExitCallBackL(TAny* aThis) + { + ((CAknSctTableNavi*)aThis)->DoTableExitL(); + return KErrNone; + } + +void CAknSctTableNavi::DoTableExitL() + { + iCharMap->SetStatusChanged(EAknCharSelectedTableExitButton); + } + +void CAknSctTableNavi::NextTableL() + { + if(!iIdle) + { + iIdle = CIdle::NewL(CActive::EPriorityStandard); + } + + iIdle->Cancel(); + iIdle->Start(TCallBack(NextTableCallBackL, this)); + } + +TInt CAknSctTableNavi::NextTableCallBackL(TAny* aThis) + { + ((CAknSctTableNavi*)aThis)->DoNextTableL(); + return KErrNone; + } + +void CAknSctTableNavi::DoNextTableL() + { + iCharMap->SetStatusChanged(EAknCharSelectedNextTableButton); } TInt CAknSctTableNavi::ButtonPosition(TInt aButtonIndex) const @@ -759,17 +808,6 @@ return (aButtonIndex==0) ? 0 : 1; } -TInt CAknSctTableNavi::SetStatusChanged() - { - TRAPD(err, iCharMap->SetStatusChanged(EAknCharSelectedTableExitButton)); - return err; - } - -void CAknSctTableNavi::NextTableL() - { - iCharMap->SetStatusChanged(EAknCharSelectedNextTableButton); - } - void CAknSctTableNavi::ConstructFromResourceL(TResourceReader& aReader) { // Table navi buttons. @@ -781,72 +819,12 @@ TResourceReader buttonReader; iCoeEnv->CreateResourceReaderLC(buttonReader, resId); CAknSctNaviButton* buttonObj = CAknSctNaviButton::NewL(*this, buttonId, buttonReader); + buttonObj->SetObserver(this); iButtonArray.Append(buttonObj); CleanupStack::PopAndDestroy(); // buttonReader } } -void CAknSctTableNavi::HandlePointerEventL(const TPointerEvent& aPointerEvent) - { - if (AknLayoutUtils::PenEnabled() && Rect().Contains(aPointerEvent.iPosition)) - { - if (aPointerEvent.iType == TPointerEvent::EButton1Down) - { - iPressedButtonIndex = -1; - - for (TInt index = 0; index < iButtonArray.Count(); index++) - { - CAknSctNaviButton* buttonObj = iButtonArray[index]; - if(buttonObj->IsEnabled()) - { - TRect buttonRect = buttonObj->iButtonControl->Rect(); - if (buttonRect.Contains(aPointerEvent.iPosition)) - { - iPressedButtonIndex = index; - } - } - } - } - else if (aPointerEvent.iType == TPointerEvent::EButton1Up) - { - if(iPressedButtonIndex >= 0) - { - CAknSctNaviButton* buttonObj = iButtonArray[iPressedButtonIndex]; - if(buttonObj->IsEnabled()) - { - iButtonIndex = iPressedButtonIndex; - - TRect buttonRect = buttonObj->iButtonControl->Rect(); - if (buttonRect.Contains(aPointerEvent.iPosition)) - { - switch (buttonObj->iButtonId) - { - case EAknSctTableNaviExit: - { - iExtension->iKeyOkEvent = ETrue; - TableExitL(); - } - return; - - case EAknSctTableNaviSpecialChar: - case EAknSctTableNaviEmotion: - { - NextTableL(); - } - return; - - default: - break; - } - } - } - } - } - } - - CCoeControl::HandlePointerEventL(aPointerEvent); - } - TSize CAknSctTableNavi::MinimumSize() { return Rect().Size(); @@ -906,6 +884,41 @@ } } +void CAknSctTableNavi::HandleControlEventL(CCoeControl* aControl, TCoeEvent aEventType) + { + if(aEventType == EEventStateChanged) + { + for(TInt i=0; iiButtonControl == aControl) + { + switch(button->iButtonId) + { + case EAknSctTableNaviExit: + { + iExtension->iKeyOkEvent = ETrue; + TableExitL(); + } + return; + + case EAknSctTableNaviSpecialChar: + case EAknSctTableNaviEmotion: + { + NextTableL(); + } + return; + + default: + break; + } + + break; + } + } + } + } + void CAknSctTableNavi::UpdateNextTableButtonL() { @@ -6616,8 +6629,6 @@ iExtension->iHighlightVisible = EFalse; DrawCursor(); } - - CCoeControl::HandlePointerEventL(aPointerEvent); // if Stylus is lifted we clear all flags. if (aPointerEvent.iType == TPointerEvent::EButton1Up) @@ -6625,17 +6636,26 @@ iExtension->iFlags &= (~EAknCharMapButton1DownInGrid); iExtension->iFlags &= (~EAknCharMapHasBeenScrolledByDrag); iExtension->iFlags &= (~EAknCharMapPressedDown); - if ( !iSBFrame ) - { - return; - } - CEikScrollBar* vScrollBar = iSBFrame->VerticalScrollBar(); - if(vScrollBar) - { - vScrollBar->HandlePointerEventL(aPointerEvent); - } - } - } + if ( iSBFrame ) + { + CEikScrollBar* vScrollBar = iSBFrame->VerticalScrollBar(); + if(vScrollBar) + { + vScrollBar->HandlePointerEventL(aPointerEvent); + } + } + } + } + else + { + if(iExtension->iSingleClickEnabled) + { + iExtension->iHighlightVisible = EFalse; + DrawCursor(); + } + } + + CCoeControl::HandlePointerEventL(aPointerEvent); } // ----------------------------------------------------------------------------- diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/src/AknIndicatorContainer.cpp --- a/uifw/AvKon/src/AknIndicatorContainer.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/src/AknIndicatorContainer.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -1962,15 +1962,16 @@ TInt uid = indicator->Uid().iUid; - if ( uid == EAknNaviPaneEditorIndicatorSecuredConnection || - uid == EAknNaviPaneEditorIndicatorProgressBar || - uid == EAknNaviPaneEditorIndicatorWmlWaitGlobe || - uid == EAknNaviPaneEditorIndicatorGprs || - uid == EAknNaviPaneEditorIndicatorFileSize || - uid == EAknNaviPaneEditorIndicatorWaitBar || - uid == EAknNaviPaneEditorIndicatorWlanAvailable || - uid == EAknNaviPaneEditorIndicatorWlanActive || - uid == EAknNaviPaneEditorIndicatorWlanActiveSecure ) + if ( uid == EAknNaviPaneEditorIndicatorGprs || + uid == EAknNaviPaneEditorIndicatorWlanAvailable || + uid == EAknNaviPaneEditorIndicatorWlanActive || + uid == EAknNaviPaneEditorIndicatorWlanActiveSecure || + (!isLandscape && + (uid == EAknNaviPaneEditorIndicatorProgressBar || + uid == EAknNaviPaneEditorIndicatorFileSize || + uid == EAknNaviPaneEditorIndicatorWaitBar || + uid == EAknNaviPaneEditorIndicatorSecuredConnection || + uid == EAknNaviPaneEditorIndicatorWmlWaitGlobe))) { // These indicators are not shown in this statuspane layout. indicator->SetExtent( TPoint( 0, 0 ), TSize( 0, 0 ) ); @@ -1981,6 +1982,16 @@ if ( iLayoutOrientation == EVertical ) { + if (uid == EAknNaviPaneEditorIndicatorProgressBar || uid + == EAknNaviPaneEditorIndicatorFileSize || uid + == EAknNaviPaneEditorIndicatorWaitBar || uid + == EAknNaviPaneEditorIndicatorSecuredConnection || uid + == EAknNaviPaneEditorIndicatorWmlWaitGlobe) + { + indicator->SetExtent(TPoint(0, 0), TSize(0, 0)); + iIndicatorsShown++; + continue; + } // Highest priority indicator is put topmost. if ( height < indicator->IconSize().iHeight ) { @@ -2022,6 +2033,112 @@ TInt textIndicatorLeftOffset = KMinSpaceBetweenIconsInPixels; + //////////////////////////////////////////////////////////////////////////// + //small status pane + TRect smallStatusPaneRect; + AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EStatusPane, + smallStatusPaneRect); + + // small statuspane, secure state indicator + TAknWindowLineLayout + smallStatusSecureStateLayout = + AknLayout::Small_status_pane_descendants_and_elements_Line_5(); + TAknLayoutRect smallStatusSecureStateLayoutRect; + smallStatusSecureStateLayoutRect.LayoutRect(smallStatusPaneRect, + smallStatusSecureStateLayout); + TRect smallStatusSecureStateRect( + smallStatusSecureStateLayoutRect.Rect()); + + // small statuspane, wait pane + TAknWindowComponentLayout smallStatusWaitPaneLayout = + AknLayoutScalable_Avkon::status_small_wait_pane(3); + TAknLayoutRect smallStatusWaitPaneLayoutRect; + smallStatusWaitPaneLayoutRect.LayoutRect(smallStatusPaneRect, + smallStatusWaitPaneLayout); + TRect smallStatusWaitPaneRect( + smallStatusWaitPaneLayoutRect.Rect()); + + // small statuspane, globe + TAknWindowComponentLayout smallStatusWmlGlobeLayout = + AknLayoutScalable_Avkon::status_small_pane_g4(0); + TAknLayoutRect smallStatusWmlGlobeLayoutRect; + smallStatusWmlGlobeLayoutRect.LayoutRect(smallStatusPaneRect, + smallStatusWmlGlobeLayout); + TRect smallStatusWmlGlobeRect( + smallStatusWmlGlobeLayoutRect.Rect()); + + TInt waitBarIndicatorLeftOffset = smallStatusWaitPaneRect.iTl.iX; + TInt progressBarIndicatorLeftOffset = 0; + TInt wmlWaitGlobeLeftOffset = smallStatusWmlGlobeRect.iTl.iX; + + TRect rectForMiddleIndicators(wmlWaitGlobeLeftOffset, + containerRect.iTl.iY, wmlWaitGlobeLeftOffset, + containerRect.iBr.iY); + + if (AknLayoutUtils::LayoutMirrored()) + { + wmlWaitGlobeLeftOffset = smallStatusPaneRect.iBr.iX + - smallStatusWmlGlobeRect.iBr.iX; + waitBarIndicatorLeftOffset = smallStatusPaneRect.iBr.iX + - smallStatusWaitPaneRect.iBr.iX; + } + + if (uid == EAknNaviPaneEditorIndicatorProgressBar) + { + indicatorWidth = smallStatusWaitPaneRect.Width(); + indicatorHeight = smallStatusWaitPaneRect.Height(); + verticalOffset = (containerRect.Height() - indicatorHeight)/ 2; + leftOffset = progressBarIndicatorLeftOffset; + + textIndicatorOffsetNeeded = ETrue; + } + else if (uid == EAknNaviPaneEditorIndicatorFileSize) + { + verticalOffset = verticalOffsetForTextIndicator; + + // need left offset in western, right offset in A&H layout. + if (AknLayoutUtils::LayoutMirrored()) + { + rightOffset = textIndicatorLeftOffset; + } + else + { + leftOffset = KMinSpaceBetweenIconsInPixels; + } + } + else if (uid == EAknNaviPaneEditorIndicatorWmlWaitGlobe) + { + verticalOffset = (containerRect.Height() + - indicator->IconSize().iHeight) / 2; + indicatorWidth = smallStatusWmlGlobeRect.Width(); + } + else if (uid == EAknNaviPaneEditorIndicatorWaitBar) + { + indicatorWidth = smallStatusWaitPaneRect.Width(); + indicatorHeight = smallStatusWaitPaneRect.Height(); + verticalOffset = (containerRect.Height() - indicatorHeight)/ 2; + leftOffset = waitBarIndicatorLeftOffset; + textIndicatorOffsetNeeded = ETrue; + } + else if (uid == EAknNaviPaneEditorIndicatorSecuredConnection) + { + verticalOffset = (containerRect.Height() + - smallStatusSecureStateRect.Height()) / 2; + + // because icon bitmap does not contain enough space, increase offset as + // the layout spec states. + if (AknLayoutUtils::LayoutMirrored()) + { + leftOffset = KMinSpaceBetweenIconsInPixels; + } + else + { + rightOffset = KMinSpaceBetweenIconsInPixels; + } + textIndicatorOffsetNeeded = EFalse; + progressBarIndicatorLeftOffset = 0; + } + //////////////////////////////////////////////////////////////////////// if ( uid == EAknNaviPaneEditorIndicatorMessageInfo || uid == EAknNaviPaneEditorIndicatorWmlWindowsText || uid == EAknNaviPaneEditorIndicatorMessageLength ) @@ -2190,9 +2307,30 @@ // Place indicators to the middle if any. if ( indicatorPosition == EMiddle ) { - // Not supported for now, always set size to zero. - indicator->SetExtent( TPoint( 0, 0 ), TSize( 0, 0 ) ); - iIndicatorsShown++; + TRect requiredRect( rectForMiddleIndicators.iTl.iX, + rectForMiddleIndicators.iTl.iY, + rectForMiddleIndicators.iTl.iX + leftOffset + + indicatorWidth + rightOffset, + rectForMiddleIndicators.iBr.iY ); + + // check if indicator fits + if (( requiredRect.Intersects( rectForRightSideIndicators ) + || requiredRect.Intersects(rectForLeftSideIndicators )) + || ( rectForMiddleIndicators.Width() != 0 )) + { + indicator->SetExtent(TPoint(0, 0), TSize(0, 0)); + iIndicatorsShown++; + continue; + } + else + { + indicator->SetExtent( TPoint( + rectForMiddleIndicators.iTl.iX + leftOffset, + verticalOffset ), TSize( indicatorWidth, + indicatorHeight )); + rectForMiddleIndicators.iTl.iX += rightOffset; + rectForMiddleIndicators.iTl.iX += indicatorWidth; + } } } diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/src/AknLayoutConfig.cpp --- a/uifw/AvKon/src/AknLayoutConfig.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/src/AknLayoutConfig.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -341,6 +341,8 @@ RArray& aScreenInfoArray, RArray& aHardwareStateArray) { + ::CleanupClosePushL(aScreenInfoArray); + ::CleanupClosePushL(aHardwareStateArray); // get state screen map #if defined(__WINS__) TInt screenMapResource = R_AKNPRIV_HARDWARE_STATE_SCREEN_MAP_EMUL; @@ -387,11 +389,14 @@ } CleanupStack::PopAndDestroy(); // reader's HBufC + CleanupStack::Pop(&aHardwareStateArray); + CleanupStack::Pop(&aScreenInfoArray); } void CAknLayoutConfig::GetKeyMapFromAknPrivL(CResourceFile* aResFile, RArray& aHardwareStateArray) { + ::CleanupClosePushL(aHardwareStateArray); // get the state key map #if defined(__WINS__) TInt hwMapResource = R_AKNPRIV_HARDWARE_STATE_KEY_MAP_EMUL; @@ -416,6 +421,7 @@ } CleanupStack::PopAndDestroy(); // reader's HBufC + CleanupStack::Pop(&aHardwareStateArray); } TAknPrivSoftkeyLocation CAknLayoutConfig::GetLandscapeSoftkeyLocationFromAknPrivL(CResourceFile* aResFile) @@ -444,6 +450,7 @@ RArray& aScreenInfoArray, TAknPrivSoftkeyLocation aLandscapeSoftkeyLocation) { + ::CleanupClosePushL(aScreenInfoArray); CEikonEnv* eikonEnv = CEikonEnv::Static(); CWsScreenDevice* dev = eikonEnv->ScreenDevice(); @@ -475,6 +482,7 @@ screenMode.iDisplayMode = dev->GetScreenModeDisplayMode(ii); aScreenInfoArray.AppendL(screenMode); } + CleanupStack::Pop(&aScreenInfoArray); } // diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/src/AknNoteDialog.cpp --- a/uifw/AvKon/src/AknNoteDialog.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/src/AknNoteDialog.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -405,7 +405,7 @@ CAknNoteAttributes* attr = ControlAttributes(); if ( attr ) { - RDebug::Print(_L("CAknNoteDialog allowing opt. draw, %d"), (TUint)this ); + _AKNTRACE( "[%s][%s] allowing opt. draw,0x%x", "CAknNoteDialog", "LayoutAndDraw", this ); attr->AllowOptimizedDrawing(); } } @@ -857,12 +857,22 @@ { CCoeControl* ctrl = GrabbingComponent(); CCoeControl::HandlePointerEventL(aPointerEvent); - - if ( aPointerEvent.iType == TPointerEvent::EButton1Up ) + // Add tactile feedbacup when tap can close note. + if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) + { + if ( DialogFlags()&EEikDialogFlagCloseDialogWhenTapped ) + { + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if ( feedback ) + { + feedback->InstantFeedback( ETouchFeedbackPopUp ); + } + } + } + else if ( aPointerEvent.iType == TPointerEvent::EButton1Up ) { if ( DialogFlags()&EEikDialogFlagCloseDialogWhenTapped ) { - //Touch release gives pop-up effect if note can be dismissed. if ( ctrl ) { // if grabbingComponent and dialog has 'close dialog when @@ -872,11 +882,6 @@ StaticDeleteL( this ); } - MTouchFeedback* feedback = MTouchFeedback::Instance(); - if ( feedback ) - { - feedback->InstantFeedback( ETouchFeedbackPopUp ); - } } } } diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/src/AknPreviewPopUp.cpp --- a/uifw/AvKon/src/AknPreviewPopUp.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/src/AknPreviewPopUp.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -78,6 +78,13 @@ // CAknPreviewPopUp::~CAknPreviewPopUp() { + + if ( IsVisible() ) + { + iCloseMenu = ETrue; + iController.HidePopUp(); + } + AKNTASHOOK_REMOVE(); GfxTransEffect::Deregister( this ); diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/src/AknSctDialog.cpp --- a/uifw/AvKon/src/AknSctDialog.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/src/AknSctDialog.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -595,7 +595,7 @@ case EKeyDownArrow: { TKeyResponse res = charmapControl->OfferKeyEventL(aKeyEvent, aModifiers); - RefreshTitleAndNavi(); + RefreshTitleAndNaviL(); return res; } @@ -956,23 +956,16 @@ // EXPORT_C void CAknCharMapDialog::HandlePointerEventL(const TPointerEvent& aPointerEvent) { - if (!Rect().Contains( aPointerEvent.iPosition)) + if(!Rect().Contains(aPointerEvent.iPosition)) { if(aPointerEvent.iType == TPointerEvent::EButton1Down) { - TryExitL (EAknSoftkeyCancel); + TryExitL(EAknSoftkeyCancel); return; } - else if(aPointerEvent.iType == TPointerEvent::EButton1Up) - { - CAknCharMap* charMap = STATIC_CAST( CAknCharMap*, Control( EAknSCTQueryContentId ) ); - charMap->HandlePointerEventL( aPointerEvent); - } } - else - { - CAknDialog::HandlePointerEventL(aPointerEvent); - } + + CAknDialog::HandlePointerEventL(aPointerEvent); } void CAknCharMapDialog::SwitchTablesOrPagesL() @@ -1007,10 +1000,10 @@ CAknPopupHeadingPane* headingPane = STATIC_CAST(CAknPopupHeadingPane*, Control(EAknSCTQueryHeadingId)); charmapControl->NextPageL(); - RefreshTitleAndNavi(); + RefreshTitleAndNaviL(); } -void CAknCharMapDialog::RefreshTitleAndNavi() +void CAknCharMapDialog::RefreshTitleAndNaviL() { CAknCharMap* charmapControl = STATIC_CAST(CAknCharMap*, Control(EAknSCTQueryContentId)); CAknPopupHeadingPane* headingPane = STATIC_CAST(CAknPopupHeadingPane*, Control(EAknSCTQueryHeadingId)); diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/src/AknSettingPage.cpp --- a/uifw/AvKon/src/AknSettingPage.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/src/AknSettingPage.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -1357,24 +1357,6 @@ */ EXPORT_C void CAknSettingPage::AttemptExitL(TBool aAccept) { - if ( AknLayoutUtils::PenEnabled() ) - { - MTouchFeedback* feedback = MTouchFeedback::Instance(); - if ( feedback ) - { - TTouchLogicalFeedback fbLogicalType = ETouchFeedbackPopUp; - if ( CAknTransitionUtils::TransitionsEnabled( - AknTransEffect::EComponentTransitionsOff ) ) - { - fbLogicalType = ETouchFeedbackDecreasingPopUp; - } - feedback->InstantFeedback( - this, - fbLogicalType, - ETouchFeedbackVibra, - TPointerEvent() ); - } - } if ( OkToExitL( aAccept ) ) { DismissL( aAccept ); @@ -1409,6 +1391,25 @@ */ EXPORT_C void CAknSettingPage::DismissL(TBool aAccept) { + if ( AknLayoutUtils::PenEnabled() ) + { + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if ( feedback ) + { + TTouchLogicalFeedback fbLogicalType = ETouchFeedbackPopUp; + if ( CAknTransitionUtils::TransitionsEnabled( + AknTransEffect::EComponentTransitionsOff ) ) + { + fbLogicalType = ETouchFeedbackDecreasingPopUp; + } + feedback->InstantFeedback( + this, + fbLogicalType, + ETouchFeedbackVibra, + TPointerEvent() ); + } + } + AknItemActionMenuRegister::SetOverridingMenuBarOwnerL( NULL ); if ( aAccept ) diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/src/AknSmileyImage.cpp --- a/uifw/AvKon/src/AknSmileyImage.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/src/AknSmileyImage.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -230,19 +230,19 @@ TFileName smileyMifName; SmileyUtils::GetCustomizableResPath(smileyMifName, KSmileyMif); - + if(iImageSkinItemId.iMinor > 0) { MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - TRAP_IGNORE( AknsUtils::CreateColorIconL(skin, iImageSkinItemId, - KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG19, - iFrame, iFrameMask, - smileyMifName, iImageMifPkgItemId, iImageMifPkgItemId, + TRAPD(err, AknsUtils::CreateColorIconL(skin, iImageSkinItemId, + KAknsIIDQsnTextColors,EAknsCIQsnTextColorsCG19, + iFrame,iFrameMask, + smileyMifName, iImageMifPkgItemId,iImageMifPkgItemId, AKN_LAF_COLOR(215))); } else { - TRAP_IGNORE( AknIconUtils::CreateIconL(iFrame, iFrameMask, smileyMifName, iImageMifPkgItemId, iImageMifPkgItemId)); + TRAPD(err, AknIconUtils::CreateIconL(iFrame,iFrameMask,smileyMifName,iImageMifPkgItemId,iImageMifPkgItemId)); } if(iIsAnimation) // the first frame of animation svg is blank without correct content @@ -258,7 +258,6 @@ } AknIconUtils::SetSize(iFrame, iSize); - TUid i = iFrame->ExtendedBitmapType(); } void CSmileyImage::DoRelease() diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/src/AknSmileyModel.cpp --- a/uifw/AvKon/src/AknSmileyModel.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/src/AknSmileyModel.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -289,7 +289,7 @@ } else { - icon->LoadStillImageL(1); // 1 is for asynchronous + icon->LoadStillImageL(); } } } diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/src/Aknpopupform.cpp --- a/uifw/AvKon/src/Aknpopupform.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/src/Aknpopupform.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -596,6 +596,17 @@ { ClearArea( Rect() ); UpdateScrollIndicatorL(); + // if iNoOfEditorLines becomes small, firstly calculate the New PopupForm layout. + // Because position of PopupForm is related to last PoppupForm layout. + if ( iNoOfEditorLines < oldNoOfLines ) + { + TSize size; + if ( !AknLayoutUtils::LayoutMetricsSize( AknLayoutUtils::EScreen, size ) ) + { + size = iCoeEnv->ScreenDevice()->SizeInPixels() ; + } + SetSizeAndPosition( PreferredSize( size ) ); + } LayoutAndDraw(); } else if ( IsActivated() ) @@ -2336,6 +2347,15 @@ UpdateFlags( ctrlType, ETrue ); CalculateNumberOfScreens(); + // because of insert a control, iNoOfEditorLines of editor become small, + // but position is calculated by previous size of editor, + // So firstly calculate editor layout. + TSize size; + if ( !AknLayoutUtils::LayoutMetricsSize( AknLayoutUtils::EScreen, size ) ) + { + size = iCoeEnv->ScreenDevice()->SizeInPixels() ; + } + SetSizeAndPosition( PreferredSize( size ) ); LayoutAndDraw(); UpdateScrollIndicatorL(); diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/src/aknPopup.cpp --- a/uifw/AvKon/src/aknPopup.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/src/aknPopup.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -38,7 +38,6 @@ #endif #include - #include "aknPopup.h" #include "akntrace.h" #include "aknitemactionmenuregister.h" @@ -304,8 +303,7 @@ iListBox->SetBorder(TGulBorder::ENone); // Create extension class - if (!iPopupListExtension) - iPopupListExtension = new (ELeave) CAknPopupListExtension(); + iPopupListExtension = new (ELeave) CAknPopupListExtension(); CAknAppUi* appUi = static_cast( iEikonEnv->EikAppUi() ); if ( appUi && appUi->IsSingleClickCompatible() ) @@ -421,6 +419,7 @@ STATIC_CAST(CAknFilteredTextListBoxModel*, ListBox()->Model())->Filter()->SetSearchField( NULL ); FindBox()->Editor().SetFocus( EFalse ); + __ASSERT_DEBUG( iPopupListExtension, Panic( EAknPanicNullPointer ) ); delete iPopupListExtension->iSearchControl; iPopupListExtension->iSearchControl = NULL; } @@ -670,6 +669,7 @@ { _AKNTRACE_FUNC_ENTER; _AKNTRACE("ProcessCommandL: aCommandId=%d", aCommandId); + __ASSERT_DEBUG( iPopupListExtension, Panic( EAknPanicNullPointer ) ); // Respond to softkey events switch (aCommandId) { @@ -729,6 +729,7 @@ EXPORT_C void CAknPopupList::HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType) { _AKNTRACE_FUNC_ENTER; + __ASSERT_DEBUG( iPopupListExtension, Panic( EAknPanicNullPointer ) ); // Respond to events from listbox if (aListBox == iListBox) { @@ -818,24 +819,7 @@ EXPORT_C void CAknPopupList::AttemptExitL(TBool aAccept) { _AKNTRACE_FUNC_ENTER; - if ( AknLayoutUtils::PenEnabled() ) - { - MTouchFeedback* feedback = MTouchFeedback::Instance(); - if ( feedback ) - { - TTouchLogicalFeedback fbLogicalType = ETouchFeedbackPopUp; - if ( CAknTransitionUtils::TransitionsEnabled( - AknTransEffect::EComponentTransitionsOff ) ) - { - fbLogicalType = ETouchFeedbackDecreasingPopUp; - } - feedback->InstantFeedback( - this, - fbLogicalType, - ETouchFeedbackVibra, - TPointerEvent() ); - } - } + __ASSERT_DEBUG( iPopupListExtension, Panic( EAknPanicNullPointer ) ); //EFTG-7HWDP6. if( FindBox() && !( FindBox()->Editor().AknEdwinFlags() & EAknEditorFlagTouchInputModeOpened ) @@ -860,6 +844,24 @@ } else if( !(iPopupListExtension->iFlags & EPopupFepStartEvent) ) { + if ( AknLayoutUtils::PenEnabled() ) + { + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if ( feedback ) + { + TTouchLogicalFeedback fbLogicalType = ETouchFeedbackPopUp; + if ( CAknTransitionUtils::TransitionsEnabled( + AknTransEffect::EComponentTransitionsOff ) ) + { + fbLogicalType = ETouchFeedbackDecreasingPopUp; + } + feedback->InstantFeedback( + this, + fbLogicalType, + ETouchFeedbackVibra, + TPointerEvent() ); + } + } #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS // no transition if accepted if( IsVisible() && GfxTransEffect::IsRegistered(this) && !aAccept ) @@ -949,6 +951,7 @@ TInt softkeyHeight( KSoftkeyHeightUndefined ); + __ASSERT_DEBUG( iPopupListExtension, Panic( EAknPanicNullPointer ) ); if (!iPopupListExtension->iBgContext) { TRAP_IGNORE( iPopupListExtension->iBgContext = CAknsFrameBackgroundControlContext::NewL( @@ -1115,7 +1118,8 @@ } if (aId.iUid == MAknsControlContext::ETypeId) { - if (iPopupListExtension && iPopupListExtension->iBgContext) + __ASSERT_DEBUG( iPopupListExtension, Panic( EAknPanicNullPointer ) ); + if (iPopupListExtension->iBgContext) { return MAknsControlContext::SupplyMopObject(aId, iPopupListExtension->iBgContext); } @@ -1169,6 +1173,7 @@ if ( AknLayoutUtils::PenEnabled() ) { + __ASSERT_DEBUG( iPopupListExtension, Panic( EAknPanicNullPointer ) ); iPopupListExtension->iFlags |= EPopupHandlingPointerEvent; TInt index; @@ -1241,8 +1246,7 @@ EXPORT_C TBool CAknPopupList::EnableFind(TBool /*aEnable*/) { - if (!iPopupListExtension) - return EFalse; // no extension class, failed + __ASSERT_DEBUG( iPopupListExtension, Panic( EAknPanicNullPointer ) ); if (!iPopupListExtension->iSearchControl) { CAknSearchField::TSearchFieldStyle flags = CAknSearchField::EPopupWindow; @@ -1274,8 +1278,7 @@ EXPORT_C TBool CAknPopupList::EnableAdaptiveFind(TBool /*aEnable*/) { - if (!iPopupListExtension) - return EFalse; // no extension class, failed + __ASSERT_DEBUG( iPopupListExtension, Panic( EAknPanicNullPointer ) ); if (!iPopupListExtension->iSearchControl) { CAknSearchField::TSearchFieldStyle flags = CAknSearchField::EPopupAdaptiveSearchWindow; @@ -1308,9 +1311,8 @@ EXPORT_C CAknSearchField* CAknPopupList::FindBox() const { - if (iPopupListExtension) - return iPopupListExtension->iSearchControl; - return NULL; + __ASSERT_DEBUG( iPopupListExtension, Panic( EAknPanicNullPointer ) ); + return iPopupListExtension->iSearchControl; } void CAknPopupList::RemoveFindFiltering() @@ -1331,7 +1333,7 @@ _AKNTRACE_FUNC_ENTER; if( aType == KEikDynamicLayoutVariantSwitch ) { - + __ASSERT_DEBUG( iPopupListExtension, Panic( EAknPanicNullPointer ) ); //EFTG-7HWDP6. //Tapping Edit'area can arouse the CAknPopupList::HandleResourceChange() //when portrait is initial model, and 'Full screen QWERTY keyboard' is default input method. diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/src/aknbattery.cpp --- a/uifw/AvKon/src/aknbattery.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/src/aknbattery.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -70,12 +70,6 @@ { AKNTASHOOK_REMOVE(); - MTouchFeedback* feedback = MTouchFeedback::Instance(); - if ( feedback ) - { - feedback->RemoveFeedbackForControl( this ); - } - AknsUtils::DeregisterControlPosition( this ); delete iBatteryIconControl; @@ -105,26 +99,6 @@ iPrivateFlags = 0; // reset flags iDataObserver = new (ELeave) CAknBatteryDataObserver( this ); iStatusPane = CEikStatusPaneBase::Current(); - - MTouchFeedback* feedback = MTouchFeedback::Instance(); - if ( feedback ) - { - CFeedbackSpec* fbSpec = CFeedbackSpec::New(); - if ( fbSpec ) - { - fbSpec->AddFeedback( ETouchEventStylusDown, - ETouchFeedbackSensitiveButton ); - fbSpec->AddFeedback( ETouchEventStylusUp, - ETouchFeedbackSensitiveButton, - ETouchFeedbackVibra ); - - feedback->SetFeedbackArea( this, - 0, - Rect(), - fbSpec ); - delete fbSpec; - } - } } @@ -370,9 +344,6 @@ else { feedback->EnableFeedbackForControl( this, ETrue ); - feedback->ChangeFeedbackArea( this, - 0, - parent ); } } } @@ -582,22 +553,18 @@ } CEikStatusPaneBase* sp = CEikStatusPaneBase::Current(); - if( sp ) + if ( sp ) { TInt statusPaneCurrentLayoutResourceId = sp->CurrentLayoutResId(); - if(statusPaneCurrentLayoutResourceId == R_AVKON_STATUS_PANE_LAYOUT_POWER_OFF_RECHARGE - || statusPaneCurrentLayoutResourceId == R_AVKON_STATUS_PANE_LAYOUT_POWER_OFF_RECHARGE_MIRRORED) + if ( statusPaneCurrentLayoutResourceId == + R_AVKON_STATUS_PANE_LAYOUT_POWER_OFF_RECHARGE || + statusPaneCurrentLayoutResourceId == + R_AVKON_STATUS_PANE_LAYOUT_POWER_OFF_RECHARGE_MIRRORED ) { - MTouchFeedback* feedback = MTouchFeedback::Instance(); - if ( feedback ) - { - feedback->RemoveFeedbackForControl( this ); - } - AknsUtils::DeregisterControlPosition( this ); return; } - } + } // Get the rect of battery pane. TRect rect( Rect() ); @@ -611,6 +578,11 @@ { // set flag that pointerdown was inside battery pane iPrivateFlags |= EAknBatteryPaneButton1DownInBatteryRect; + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if ( feedback ) + { + feedback->InstantFeedback( ETouchFeedbackSensitiveButton ); + } } } break; @@ -662,20 +634,14 @@ pointerUpInClockArea || pointerUpInIndicatorArea ) { - if ( pointerUpInClockArea || pointerUpInIndicatorArea ) + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if ( feedback ) { - MTouchFeedback* feedback = MTouchFeedback::Instance(); - if ( feedback ) - { - // The pointer down was received in another - // control, so the tactile feedback must be - // given directly. - feedback->InstantFeedback( - this, - ETouchFeedbackSensitiveButton, - ETouchFeedbackVibra, - aPointerEvent ); - } + feedback->InstantFeedback( + this, + ETouchFeedbackSensitiveButton, + ETouchFeedbackVibra, + aPointerEvent ); } CAknSmallIndicator* indicatorNotifier = diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/src/akndialog.cpp --- a/uifw/AvKon/src/akndialog.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/src/akndialog.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -243,7 +243,10 @@ */ EXPORT_C void CAknDialog::DisplayMenuL() { - iMenuBar->TryDisplayMenuBarL(); + if (iMenuBar) + { + iMenuBar->TryDisplayMenuBarL(); + } } /** diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/src/akndiscreetpopupcontrol.cpp --- a/uifw/AvKon/src/akndiscreetpopupcontrol.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/src/akndiscreetpopupcontrol.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -454,7 +454,14 @@ { _AKNTRACE( "CAknDiscreetPopupControl::NotifyObserverL(), tap event will be disposed." ); // Play feedback if there is command associated with the popup - ImmediateFeedback( ETouchFeedbackSensitive ); + if ( iFeedBack ) + { + iFeedBack->InstantFeedback( this, + ETouchFeedbackSensitive, + ETouchFeedbackVibra, + TPointerEvent() + ); + } iCommandObserver->ProcessCommandL( iCommand ); } _AKNTRACE_FUNC_EXIT; diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/src/akngrid.cpp --- a/uifw/AvKon/src/akngrid.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/src/akngrid.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -660,6 +660,7 @@ iSBFrame->VerticalScrollBar()->Size()).Contains ( aPointerEvent.iPosition )) { if ( !ScrollingDisabled() + && iExtension && iExtension->iFlags & EAknGridStateButton1DownInGrid ) { if ( aPointerEvent.iType == TPointerEvent::EButton1Up ) @@ -687,17 +688,25 @@ switch (aPointerEvent.iType) { case TPointerEvent::EButton1Down: - iExtension->iLastPoint = aPointerEvent.iPosition; - if ( visibleItemsRect.Contains(aPointerEvent.iPosition) ) - { - iExtension->iFlags |= EAknGridStateButton1DownInGrid; - } + { + if( iExtension ) + { + iExtension->iLastPoint = aPointerEvent.iPosition; + if ( visibleItemsRect.Contains(aPointerEvent.iPosition) ) + { + iExtension->iFlags |= EAknGridStateButton1DownInGrid; + } + } _AKNTRACE( "TPointerEvent::EButton1Down" ); break; - + } + case TPointerEvent::EButton1Up: { - iExtension->iFlags &= ~EAknGridStateButton1DownInGrid; + if ( iExtension ) + { + iExtension->iFlags &= ~EAknGridStateButton1DownInGrid; + } _AKNTRACE( "TPointerEvent::EButton1Up" ); break; } @@ -1087,7 +1096,8 @@ } // With single click first key event enables highlight - if ( iExtension->iSingleClickEnabled + if ( iExtension + && iExtension->iSingleClickEnabled && ItemDrawer()->Flags() & CListItemDrawer::ESingleClickDisabledHighlight ) { @@ -1499,7 +1509,7 @@ if ( AknLayoutUtils::PenEnabled() ) { - if ( !(iExtension->iFlags & EAknGridStateButton1DownInGrid) ) + if ( !( iExtension && iExtension->iFlags & EAknGridStateButton1DownInGrid) ) { _AKNTRACE_FUNC_EXIT; return; @@ -1515,8 +1525,8 @@ CListBoxView::TSelectionMode selectionMode = CListBoxView::ENoSelection; // CListBoxView::TSelectionMode selectionMode = (iListBoxFlags & EMultipleSelection) ? CListBoxView::EContiguousSelection : CListBoxView::ESingleSelection; // END OF SERIES60 LAF - TInt speed = iExtension->GetScrollingSpeed( pointerIsOverAnItem, itemIndex, - *gridView, aPointerPos ); + TInt speed = iExtension ? iExtension->GetScrollingSpeed( pointerIsOverAnItem, itemIndex, + *gridView, aPointerPos ):0; TInt oldCurrentItemIndex = CurrentItemIndex(); TRect currentItemRect(gridView->ItemPos(oldCurrentItemIndex), gridView->ItemSize(oldCurrentItemIndex)); @@ -1860,7 +1870,7 @@ if (vSbarModel.iScrollSpan-vSbarModel.iThumbPositioniSingleClickEnabled ) + if ( iExtension && !iExtension->iSingleClickEnabled ) { // force a scroll if neccessary gridView->MoveToItemIndexL( currentIndex, diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/src/aknlists.cpp --- a/uifw/AvKon/src/aknlists.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/src/aknlists.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -4189,7 +4189,7 @@ SetupStretchableListL( this, AknLayoutScalable_Avkon::list_setting_pane( 0 ), AknLayoutScalable_Avkon::list_setting_pane_vc( 0 ), - EFalse ); + ETrue ); SetSeparatorLinePosition( this, EAColumn ); @@ -4292,7 +4292,7 @@ SetupStretchableListL( this, AknLayoutScalable_Avkon::list_setting_number_pane( 0 ), AknLayoutScalable_Avkon::list_setting_number_pane_vc( 0 ), - EFalse ); + ETrue ); SetSeparatorLinePosition( this, EABColumn ); diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/src/aknmessagequerycontrol.cpp --- a/uifw/AvKon/src/aknmessagequerycontrol.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/src/aknmessagequerycontrol.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -135,7 +135,7 @@ TPtr message( msgBuf->Des() ); if( iListQLayout ) { - TruncateTextForListQLayout( message ); + TruncateTextForListQLayoutL( message ); iEdwin->SetTextL( &message ); LayoutEditorL(); } @@ -798,7 +798,7 @@ return grabbing; } -void CAknMessageQueryControl::TruncateTextForListQLayout( TDes& aMessage ) +void CAknMessageQueryControl::TruncateTextForListQLayoutL( TDes& aMessage ) { if( !iListQLayout ) return; @@ -829,7 +829,7 @@ TPtr message( msgBuf->Des() ); iEdwin->SetTextL( &message ); LayoutEditorL(); - TruncateTextForListQLayout( message ); + TruncateTextForListQLayoutL( message ); iEdwin->SetTextL( &message ); CleanupStack::PopAndDestroy( msgBuf ); // After all usages of message iNumberOfLines = iEdwin->TextLayout()->NumFormattedLines(); diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/src/aknview.cpp --- a/uifw/AvKon/src/aknview.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/src/aknview.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -226,11 +226,10 @@ { if ( newFixedToolbar && newFixedToolbar->ToolbarFlags() & KAknToolbarDefault ) - { - oldFixedToolbar->HandleResourceChange( KAknToolbarSetHiddenAndDrawBackground ); - return; - } - + { + return; + } + oldFixedToolbar->HandleResourceChange( KAknToolbarSetHidden ); } #endif diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/src/eikfrlb.cpp --- a/uifw/AvKon/src/eikfrlb.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/src/eikfrlb.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -780,7 +780,7 @@ #define ITEM_EXISTS_ONCE(x) (((x) > -1) && ((x) < iModel->NumberOfItems())) EXPORT_C void -CFormattedCellListBoxView::Draw(const TRect* clipRect) const +CFormattedCellListBoxView::Draw( const TRect* aClipRect ) const { _AKNTRACE_FUNC_ENTER; if ( RedrawDisabled() || !IsVisible() ) @@ -790,7 +790,7 @@ return; } - if(clipRect && clipRect->IsEmpty()) + if( aClipRect && aClipRect->IsEmpty() ) { _AKNTRACE("CFormattedCellListBoxView::Draw return because clip rect is empty"); _AKNTRACE_FUNC_EXIT; @@ -798,10 +798,12 @@ } TInt i = iTopItemIndex; - CFormattedCellListBoxItemDrawer *itemDrawer = static_cast( iItemDrawer ); - MAknsSkinInstance *skin = AknsUtils::SkinInstance(); + CFormattedCellListBoxItemDrawer* itemDrawer = + static_cast( iItemDrawer ); + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); CCoeControl* control = itemDrawer->FormattedCellData()->Control(); - MAknsControlContext *cc = AknsDrawUtils::ControlContext( control ); + MAknsControlContext* cc = AknsDrawUtils::ControlContext( control ); + CWindowGc* gc = itemDrawer->Gc(); if ( !cc ) { @@ -810,16 +812,19 @@ itemDrawer->SetTopItemIndex( iTopItemIndex ); - if ( iModel->NumberOfItems() > 0 ) + TBool transparencyEnabled = CAknEnv::Static()->TransparencyEnabled(); + TInt numberOfItems = iModel->NumberOfItems(); + + if ( numberOfItems > 0 ) { TBool drawingInitiated = ETrue; #ifdef RD_UI_TRANSITION_EFFECTS_LIST MAknListBoxTfxInternal* transApi = - CAknListLoader::TfxApiInternal( itemDrawer->Gc() ); + CAknListLoader::TfxApiInternal( gc ); #endif // RD_UI_TRANSITION_EFFECTS_LIST - if ( CAknEnv::Static()->TransparencyEnabled() ) + if ( transparencyEnabled ) { if ( iWin && iWin->GetDrawRect() == TRect::EUninitialized ) { @@ -832,12 +837,14 @@ if ( !drawingInitiated ) { - iWin->Invalidate( *clipRect ); - iWin->BeginRedraw( *clipRect ); + iWin->Invalidate( *aClipRect ); + iWin->BeginRedraw( *aClipRect ); } } - TInt lastPotentialItemIndex = Min( iModel->NumberOfItems(), iTopItemIndex + NumberOfItemsThatFitInRect( iViewRect ) ); + TInt lastPotentialItemIndex = + Min( numberOfItems, + iTopItemIndex + NumberOfItemsThatFitInRect( iViewRect ) ); while ( i < lastPotentialItemIndex ) { @@ -848,7 +855,7 @@ } #endif // RD_UI_TRANSITION_EFFECTS_LIST - itemDrawer->Gc()->SetClippingRect( iViewRect ); + gc->SetClippingRect( iViewRect ); #ifdef RD_UI_TRANSITION_EFFECTS_LIST if ( transApi ) @@ -866,7 +873,7 @@ } #endif // RD_UI_TRANSITION_EFFECTS_LIST - itemDrawer->Gc()->CancelClippingRect(); + gc->CancelClippingRect(); #ifdef RD_UI_TRANSITION_EFFECTS_LIST if ( transApi ) @@ -881,54 +888,42 @@ { 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, iViewRect.iTl.iY + iVerticalOffset, iViewRect.Width(), ItemPos( lastPotentialItemIndex ).iY ); + TRect usedPortionOfViewRect( iViewRect.iTl.iX, + iViewRect.iTl.iY + iVerticalOffset, + iViewRect.Width(), + ItemPos( lastPotentialItemIndex ).iY ); - if ( clipRect ) + if ( aClipRect ) { - usedPortionOfViewRect.iBr.iX = clipRect->iBr.iX; + usedPortionOfViewRect.iBr.iX = aClipRect->iBr.iX; } #endif - // also clear area behind scroll bar. - // this is a terrible hack, which is unfortunately needed since layouts - // leave 2 pixel (in double res) wide margins to both sides of the - // scroll bar, and there is no other way to do this. This hack is - // only really valid for main pane lists, but it does not seem to - // break popup lists, popup field lists or setting page radiobutton - // lists. - // See also: eikslb.cpp, eikclb.cpp - TRect sbbg( iViewRect ); // whole area behind scroll bar - TRect margin( iViewRect ); // it gets even worse in mirrored layouts + // 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; - - // in mirrored layouts we also need to draw a margin slice in right - TRect mainPane; - AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, - mainPane ); - TAknLayoutRect listscrollAppPane; - listscrollAppPane.LayoutRect( mainPane, - AknLayoutScalable_Avkon::listscroll_app_pane( 0 ) ); - - TInt rMargin = mainPane.iBr.iX - listscrollAppPane.Rect().iBr.iX; - margin.iTl.iX = margin.iBr.iX - rMargin; } 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() ) { @@ -937,30 +932,29 @@ if ( !control->FindBackground() ) { AknsDrawUtils::BackgroundBetweenRects( skin, - cc, - control, - *itemDrawer->Gc(), - iViewRect, - usedPortionOfViewRect ); + cc, + control, + *gc, + iViewRect, + usedPortionOfViewRect ); - AknsDrawUtils::Background( skin, cc, control, *itemDrawer->Gc(), sbbg ); - - if ( AknLayoutUtils::LayoutMirrored() ) + if ( !sbbg.IsEmpty() ) { - AknsDrawUtils::Background( skin, cc, control, *itemDrawer->Gc(), margin ); + AknsDrawUtils::Background( skin, + cc, + control, + *gc, + sbbg ); } } } else { - itemDrawer->Gc()->SetBrushColor( BackColor() ); - DrawUtils::ClearBetweenRects( *itemDrawer->Gc(), iViewRect, usedPortionOfViewRect ); - itemDrawer->Gc()->Clear( sbbg ); - - if ( AknLayoutUtils::LayoutMirrored() ) - { - itemDrawer->Gc()->Clear( margin ); - } + gc->SetBrushColor( BackColor() ); + DrawUtils::ClearBetweenRects( *gc, + iViewRect, + usedPortionOfViewRect ); + gc->Clear( sbbg ); } } @@ -972,7 +966,7 @@ #endif //RD_UI_TRANSITION_EFFECTS_LIST - if ( CAknEnv::Static()->TransparencyEnabled() && !drawingInitiated ) + if ( transparencyEnabled && !drawingInitiated ) { iWin->EndRedraw(); } diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/src/eikfrlbd.cpp --- a/uifw/AvKon/src/eikfrlbd.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/src/eikfrlbd.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -1308,20 +1308,19 @@ EXPORT_C CCoeControl *CFormattedCellListBoxData::Control() const { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); return iExtension->iControl; } EXPORT_C void CFormattedCellListBoxData::SetSeparatorLinePosition(TAknSeparatorLinePosition aPosition) { - if (iExtension) - iExtension->iSeparatorLinePosition = aPosition; + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + iExtension->iSeparatorLinePosition = aPosition; } EXPORT_C TAknSeparatorLinePosition CFormattedCellListBoxData::SeparatorLinePosition() const { - if (iExtension) - return iExtension->iSeparatorLinePosition; - else - return ENoLine; + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + return iExtension->iSeparatorLinePosition; } EXPORT_C CAknLayoutData *CFormattedCellListBoxData::LayoutData() const { @@ -1341,11 +1340,13 @@ EXPORT_C void CFormattedCellListBoxData::SetControl(CCoeControl *aControl) { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); iExtension->SetControl( aControl ); } EXPORT_C MAknsControlContext* CFormattedCellListBoxData::SkinBackgroundContext() const { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); if (iExtension->iSkinEnabled) { if (iExtension->iPopupFrame) @@ -1366,18 +1367,20 @@ EXPORT_C void CFormattedCellListBoxData::SetSkinEnabledL(TBool aEnabled) { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); CListBoxData::SetSkinEnabledL(aEnabled); iExtension->iSkinEnabled = aEnabled; } EXPORT_C TBool CFormattedCellListBoxData::SkinEnabled() const { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); return iExtension->iSkinEnabled; } EXPORT_C void CFormattedCellListBoxData::SetSkinStyle(const TAknsItemID *id, const TRect &aTileRect) { - + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); if (iExtension->iSkinControlContext) { iExtension->iSkinControlContext->SetTiledBitmap(*id); @@ -1386,6 +1389,7 @@ } EXPORT_C void CFormattedCellListBoxData::SetSkinParentPos(const TPoint &aPos) { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); if (iExtension->iSkinControlContext) { iExtension->iSkinControlContext->SetParentPos(aPos); @@ -1393,6 +1397,7 @@ } EXPORT_C void CFormattedCellListBoxData::SetBackgroundSkinStyle(const TAknsItemID *aId, const TRect &aRect) { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); if (iExtension->iSkinControlContext) { iExtension->iSkinControlContext->SetBitmap(*aId); @@ -1401,6 +1406,7 @@ } EXPORT_C void CFormattedCellListBoxData::SetListEndSkinStyle(const TAknsItemID *aListEndId, const TRect &aRect) { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); if (iExtension->iSkinControlContext) { iExtension->iSkinControlContext->SetBottomBitmap(*aListEndId); @@ -1410,13 +1416,15 @@ EXPORT_C void CFormattedCellListBoxData::SetSkinHighlightFrame(const TAknsItemID *aFrameId, const TAknsItemID *aFrameCenterId) { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); iExtension->iSkinHighlightFrameId = aFrameId; iExtension->iSkinHighlightFrameCenterId = aFrameCenterId; } EXPORT_C void CFormattedCellListBoxData::SetSkinPopupFrame(const TAknsItemID *aFrameId, const TAknsItemID *aFrameCenterId) { - if (iExtension && iExtension->iPopupFrame) + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + if ( iExtension->iPopupFrame) { iExtension->iPopupFrame->SetFrame(*aFrameId); iExtension->iPopupFrame->SetCenter(*aFrameCenterId); @@ -1438,24 +1446,27 @@ EXPORT_C void CFormattedCellListBoxData::SetSkinPopupFramePosition(const TRect &aOuterRect, const TRect &aInnerRect) { - if (iExtension && iExtension->iPopupFrame) + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + if ( iExtension->iPopupFrame) iExtension->iPopupFrame->SetFrameRects(aOuterRect, aInnerRect); } EXPORT_C void CFormattedCellListBoxData::UseLogicalToVisualConversion( TBool aUseConversion ) { - if (iExtension) + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); iExtension->iUseLogicalToVisualConversion = aUseConversion; } void CFormattedCellListBoxData::CreatePictographInterfaceL() { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); iExtension->CreatePictographInterfaceL(); } void CFormattedCellListBoxData::CreateMarqueeControlL() { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); TCallBack callBack(CFormattedCellListBoxDataExtension::RedrawEvent, iExtension->iControl); //iExtension->iMarquee = CAknMarqueeControl::NewL(); iExtension->CreateMarqueeControlL(); @@ -1713,6 +1724,7 @@ EXPORT_C void CFormattedCellListBoxData::SetSubCellAlignmentL(TInt aSubCellIndex, CGraphicsContext::TTextAlign aAlign) { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); TInt index = 0; FindSubCellIndexOrAddL(index,aSubCellIndex); At(index).iAlign=aAlign; @@ -1860,15 +1872,14 @@ EXPORT_C TBool CFormattedCellListBoxData::RespectFocus() const { - if (iExtension) - return iExtension->iRespectFocus; - return EFalse; + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + return iExtension->iRespectFocus; } EXPORT_C void CFormattedCellListBoxData::SetRespectFocus(TBool aBool) { - if (iExtension) - iExtension->iRespectFocus = aBool; + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + iExtension->iRespectFocus = aBool; } EXPORT_C CFont* @@ -2262,6 +2273,7 @@ aItemRect.iTl.iX, aItemRect.iTl.iY, aItemRect.iBr.iX, aItemRect.iBr.iY); + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); CListBoxView* view = static_cast( iExtension->iControl )->View(); if (!view->ViewRect().Intersects(aItemRect)) { @@ -2330,6 +2342,8 @@ TBool aColorIcon, const TRect& aGraphicRect ) const { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + // se also eikclbd.cpp ( sigh ). CFbsBitmap* bitmap( aIcon->Bitmap() ); CFbsBitmap* mask( aIcon->Mask() ); @@ -2393,6 +2407,8 @@ aItemRect.iTl.iX, aItemRect.iTl.iY, aItemRect.iBr.iX, aItemRect.iBr.iY); + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + TRect textRect(aItemRect); const TColors *subcellColors = &aColors; @@ -2439,7 +2455,7 @@ ++ subcell; continue; } - if (!iExtension) break; + if (iExtension->FindSLSubCellIndex(SCindex,subcell)!=0) break; if (UseSubCellColors(subcell)) @@ -2930,7 +2946,9 @@ void CFormattedCellListBoxData::DrawDefaultHighlight(CWindowGc &aGc, const TRect &aItemRect, TBool aHighlight) const { - _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_ENTER; + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + // When this flag set, draw pressed down state and don't use animation. // There are several derived CListboxData in this file. All of them do // this same thing. @@ -3040,6 +3058,7 @@ void CFormattedCellListBoxData::DrawPopupFrame(CWindowGc &aGc) const { _AKNTRACE_FUNC_ENTER; + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); CCoeControl* control = Control(); if ( control ) @@ -3064,15 +3083,14 @@ TInt aFirstIndex, TInt aSecondIndex ) { - if ( iExtension ) - { - iExtension->iFirstWordWrappedSubcellIndex = (TInt16)aFirstIndex; - iExtension->iSecondWordWrappedSubcellIndex = (TInt16)aSecondIndex; - } + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + iExtension->iFirstWordWrappedSubcellIndex = (TInt16)aFirstIndex; + iExtension->iSecondWordWrappedSubcellIndex = (TInt16)aSecondIndex; } EXPORT_C void CFormattedCellListBoxData::EnableMarqueeL(TBool aEnable) { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); // CreateMarqueeControlL does nothing if marquee already exists, // so let's just call it just in case. CreateMarqueeControlL(); @@ -3084,11 +3102,13 @@ #ifdef __WINS__ EXPORT_C const TBool CFormattedCellListBoxData::IsMarqueeOn() { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); return iExtension->IsMarqueeOn(); } #else EXPORT_C TBool CFormattedCellListBoxData::IsMarqueeOn() { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); return iExtension->IsMarqueeOn(); } #endif // __WINS__ @@ -3096,17 +3116,20 @@ void CFormattedCellListBoxData::FocusGained() { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); iExtension->FocusGained(); } void CFormattedCellListBoxData::FocusLost() { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); iExtension->FocusLost(); } void CFormattedCellListBoxData::HandleResourceChange( TInt aType ) { _AKNTRACE_FUNC_ENTER; + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); // Animation is skin dependent, whenever skin changes animation changes // too. if( KAknsMessageSkinChange == aType ) @@ -3140,9 +3163,8 @@ // EXPORT_C const CAknsEffectAnim* CFormattedCellListBoxData::HighlightAnim() const { - if( iExtension ) - return iExtension->iAnimation; - return NULL; + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + return iExtension->iAnimation; } // ----------------------------------------------------------------------------- @@ -3151,10 +3173,7 @@ // EXPORT_C void CFormattedCellListBoxData::AboutToDrawHighlightAnim() const { - if( !iExtension ) - { - return; - } + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); if( !iExtension->iAnimation || !iExtension->iControl ) { return; @@ -3183,10 +3202,8 @@ EXPORT_C void CFormattedCellListBoxData::SetHighlightAnimBackgroundDrawer( MListBoxAnimBackgroundDrawer* aDrawer ) { - if( iExtension ) - { - iExtension->iHighlightBgDrawer = aDrawer; - } + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + iExtension->iHighlightBgDrawer = aDrawer; } // ----------------------------------------------------------------------------- @@ -3195,14 +3212,12 @@ // EXPORT_C void CFormattedCellListBoxData::SetItemCellSize( const TSize& aSize ) { - if( iExtension ) + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + if( iExtension->iAnimSize != aSize ) { - if( iExtension->iAnimSize != aSize ) - { - iExtension->Play(); - } - iExtension->iAnimSize = aSize; + iExtension->Play(); } + iExtension->iAnimSize = aSize; } // ----------------------------------------------------------------------------- @@ -3211,11 +3226,8 @@ // EXPORT_C TBool CFormattedCellListBoxData::HasHighlightAnim() const { - if( !iExtension ) - return EFalse; - if( !iExtension->iAnimation ) - return EFalse; - return ETrue; + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + return ( iExtension->iAnimation != NULL ); } // ----------------------------------------------------------------------------- @@ -3225,9 +3237,7 @@ EXPORT_C TBool CFormattedCellListBoxData::DrawHighlightAnim( CBitmapContext& aGc, const TRect& aRect ) const { - if( !iExtension ) - return EFalse; - + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); if( !iExtension->iAnimation ) return EFalse; @@ -3236,6 +3246,7 @@ void CFormattedCellListBoxData::ResetMarquee() { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); if (iExtension->iMarquee) { iExtension->iMarquee->Reset(); @@ -3248,6 +3259,7 @@ TInt CFormattedCellListBoxData::CurrentMarqueeItemIndex() { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); return iExtension->iCurrentItem; } @@ -3255,6 +3267,7 @@ { _AKNTRACE("CFormattedCellListBoxData::SetCurrentMarqueeItemIndex aIndex=%d", aIndex); + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); iExtension->iCurrentItem = aIndex; } @@ -3262,6 +3275,7 @@ void CFormattedCellListBoxData::SetCurrentItemIndex(TInt aIndex) { _AKNTRACE("CFormattedCellListBoxData::SetCurrentItemIndex aIndex=%d", aIndex); + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); if( iExtension->iCurrentRow != aIndex ) { iExtension->iAnimFlags.Set( CFormattedCellListBoxDataExtension::EFlagUpdateBg ); @@ -3273,16 +3287,14 @@ { _AKNTRACE("CFormattedCellListBoxData::SetCurrentlyDrawnItemIndex aIndex=%d", aIndex); - if ( iExtension ) - { - iExtension->iCurrentlyDrawnItemIndex = aIndex; - } + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + iExtension->iCurrentlyDrawnItemIndex = aIndex; } EXPORT_C const CFont* CFormattedCellListBoxData::RowAndSubCellFont(TInt aRow,TInt aSubCellIndex) const { - if (!iExtension) return 0; + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); TInt index = 0; if (iExtension->FindRowAndSubCellIndex(index,aRow,aSubCellIndex)!=0) return 0; @@ -3293,7 +3305,7 @@ TInt aSubCellIndex, const CFont* aFont) { - if (!iExtension) return; + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); TInt index = 0; iExtension->FindRowAndSubCellIndexOrAddL(index,aRowIndex,aSubCellIndex); iExtension->At(index).iFont=aFont; @@ -3305,6 +3317,7 @@ */ EXPORT_C void CFormattedCellListBoxData::SetDrawBackground(const TBool aDrawBackground) { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); iExtension->iDrawBackground = aDrawBackground; if( !aDrawBackground ) { @@ -3317,6 +3330,7 @@ */ TBool CFormattedCellListBoxData::IsBackgroundDrawingEnabled() const { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); return iExtension->iDrawBackground; } @@ -3327,6 +3341,7 @@ */ void CFormattedCellListBoxData::SetDrawScrollbarBackground(const TBool aDrawBackground) { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); iExtension->iDrawScrollbarBackground = aDrawBackground; } @@ -3335,6 +3350,7 @@ */ TBool CFormattedCellListBoxData::IsScrollbarBackgroundDrawingEnabled() const { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); return iExtension->iDrawScrollbarBackground; } @@ -3342,6 +3358,7 @@ EXPORT_C void CFormattedCellListBoxData::SetMarqueeParams(const TInt aLoops, const TInt aScrollAmount, const TInt aScrollDelay, const TInt aInterval) { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); if ( iExtension->iMarquee ) { iExtension->iMarquee->SetLoops( aLoops ); @@ -3361,7 +3378,8 @@ EXPORT_C void CFormattedCellListBoxData::SetSubCellIconSize(TInt aIndex, TSize aSize) { - if (iExtension && aIndex <= KMaxSubCellIndex && aIndex >= 0) + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + if ( aIndex <= KMaxSubCellIndex && aIndex >= 0) { iExtension->iSubCellIconSize[aIndex] = aSize; } @@ -3369,7 +3387,8 @@ TSize CFormattedCellListBoxData::GetSubCellIconSize(TInt aIndex) { - if (iExtension && aIndex <= KMaxSubCellIndex && aIndex >= 0) + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + if ( aIndex <= KMaxSubCellIndex && aIndex >= 0) { return iExtension->iSubCellIconSize[aIndex]; } @@ -3438,6 +3457,8 @@ // extended skin support void CFormattedCellListBoxData::SetESSTextColor( TAknsQsnTextColorsIndex aIndex ) { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + TRgb color; TInt error = AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), @@ -3454,6 +3475,7 @@ // extended skin support void CFormattedCellListBoxData::SetESSHighlightedTextColor( TAknsQsnTextColorsIndex aIndex ) { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); TRgb color; TInt error = AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), @@ -3470,7 +3492,7 @@ void CFormattedCellListBoxData::SetGraphicSubCellL( TInt aSubCell, const TAknWindowLineLayout &aGraphicLayout ) { - if ( !iExtension ) return; + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); CEikFormattedCellListBox* list = static_cast( iExtension->iControl ); // this does happen with caknsetstyle, caknform(wide)style lists. // eventually they'll get here again with list!=0, so this check is enough @@ -3519,7 +3541,7 @@ void CFormattedCellListBoxData::SetTextSubCellL( TInt aSubCell, const TAknTextLineLayout &aTextLayout ) { - if (!iExtension) return; + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); CEikFormattedCellListBox* list = static_cast( iExtension->iControl ); // this does happen with caknsetstyle, caknform(wide)style lists. // eventually they'll get here again with list!=0, so this check is enough @@ -3572,6 +3594,7 @@ const TAknTextLineLayout &aTextLayout, TInt aAffectedSubCell) { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); // iConditionValue of affected subcell (=text subcell, which has different layouts) // contains index of graphical subcell, which existence should be checked first. // This graphical subcell has in iConditionValue index of graphical subcell, @@ -3581,8 +3604,6 @@ // for compabitility - needed at least for text wrapping SetNotAlwaysDrawnSubCellL( aSubCell, ETrue ); - if (!iExtension) return; - TInt i = 0x01; i = i << aSubCell; iExtension->iConditionalCells = iExtension->iConditionalCells | i; @@ -3639,50 +3660,40 @@ // TBool CFormattedCellListBoxData::UsesScalableLayoutData() const { - if (iExtension) - return iExtension->iSimpleList; - - return EFalse; + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + return iExtension->iSimpleList; } void CFormattedCellListBoxData::UseScalableLayoutData( TBool aUse ) { - if ( iExtension ) + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + if ( !aUse && iExtension->iSimpleList ) { - if ( !aUse && iExtension->iSimpleList ) - { #ifdef RD_UI_TRANSITION_EFFECTS_LIST - CEikFormattedCellListBox* list = static_cast( iExtension->iControl ); - MAknListBoxTfxInternal* transApi = - CAknListLoader::TfxApiInternal( list->View()->ItemDrawer()->Gc() ); - if ( transApi ) - { - transApi->SetPosition( MAknListBoxTfxInternal::EListTLMargin, TPoint( 0, 0 ) ); - transApi->SetPosition( MAknListBoxTfxInternal::EListBRMargin, TPoint( 0, 0 ) ); - } + CEikFormattedCellListBox* list = static_cast( iExtension->iControl ); + MAknListBoxTfxInternal* transApi = + CAknListLoader::TfxApiInternal( list->View()->ItemDrawer()->Gc() ); + if ( transApi ) + { + transApi->SetPosition( MAknListBoxTfxInternal::EListTLMargin, TPoint( 0, 0 ) ); + transApi->SetPosition( MAknListBoxTfxInternal::EListBRMargin, TPoint( 0, 0 ) ); + } #endif - } - iExtension->iSimpleList = aUse; } + iExtension->iSimpleList = aUse; } EXPORT_C void CFormattedCellListBoxData::SetSubcellUnderlined( TBitFlags32 aUnderlinedCells ) { - if ( iExtension ) - { - iExtension->iUnderlineFlagSet = ETrue; - iExtension->iUnderlineFlags = aUnderlinedCells; - } + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + iExtension->iUnderlineFlagSet = ETrue; + iExtension->iUnderlineFlags = aUnderlinedCells; } void CFormattedCellListBoxData::SetUnderlineStyle( TListItemProperties aProperties, CWindowGc& aGc, TInt aSubCell ) const { - if ( !iExtension ) - { - return; - } - + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); if ( !iExtension->iUnderlineFlagSet ) { // underlining is already either on or off and @@ -3705,19 +3716,14 @@ void CFormattedCellListBoxData::UseHighlightIconSwapping( TBool aUse ) { - if ( iExtension ) - { - iExtension->iUseHighligthIconSwapping = aUse; - } + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + iExtension->iUseHighligthIconSwapping = aUse; } TBool CFormattedCellListBoxData::UseHighlightIconSwapping() const { - if ( iExtension ) - { - return iExtension->iUseHighligthIconSwapping; - } - return EFalse; + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + return iExtension->iUseHighligthIconSwapping; } // ----------------------------------------------------------------------------- @@ -3795,11 +3801,7 @@ // void CFormattedCellListBoxData::ResetSLSubCellArray() { - if ( !iExtension ) - { - return; - } - + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); iExtension->iMarginRect = TRect::EUninitialized; UseScalableLayoutData( EFalse ); @@ -3817,11 +3819,7 @@ TBool CFormattedCellListBoxData::StretchingEnabled() const { #ifdef RD_LIST_STRETCH - if ( !iExtension ) - { - return EFalse; - } - + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); return iExtension->iStretchingEnabled; #else return EFalse; @@ -3835,11 +3833,7 @@ // void CFormattedCellListBoxData::EnableStretching( const TBool aEnabled ) { - if ( !iExtension ) - { - return; - } - + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); iExtension->iStretchingEnabled = aEnabled; } @@ -3849,11 +3843,7 @@ // void CFormattedCellListBoxData::HideSecondRow( const TBool aHide ) { - if ( !iExtension ) - { - return; - } - + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); iExtension->iHideSecondRow = aHide; } #endif // RD_LIST_STRETCH @@ -3864,11 +3854,7 @@ // TBool CFormattedCellListBoxData::SecondRowHidden() const { - if ( !iExtension ) - { - return EFalse; - } - + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); return iExtension->iHideSecondRow; } @@ -3878,10 +3864,7 @@ // void CFormattedCellListBoxData::ToggleDropShadows( const TBool aEnable ) { - if ( !iExtension ) - { - return; - } + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); iExtension->iUseDropShadows = aEnable; } @@ -3895,6 +3878,7 @@ const TDesC& aText, const TRect& aItemRect ) const { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); TInt subCell = 0; TInt subCell2; TInt subCellIndex; @@ -4007,6 +3991,7 @@ // void CFormattedCellListBoxData::SubCellsMightIntersect( const TBool aMightIntersect ) { + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); iExtension->iSubCellsMightIntersect = aMightIntersect; } @@ -4121,6 +4106,7 @@ const TColors& aColors ) const { _AKNTRACE_FUNC_ENTER; + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); TRect aRect(aItemRect); const TColors *subcellColors = &aColors; @@ -4350,7 +4336,7 @@ { aGc.SetPenColor(subcellColors->iHighlightedText); aGc.SetBrushColor(subcellColors->iHighlightedBack); - if ( skinEnabled && iExtension ) + if ( skinEnabled ) { if ( iExtension->iHighlightedTextColor != NULL ) { @@ -4363,7 +4349,7 @@ aGc.SetPenColor(subcellColors->iText); aGc.SetBrushColor(subcellColors->iBack); - if ( skinEnabled && iExtension ) + if ( skinEnabled ) { if ( iExtension->iTextColor != NULL ) { @@ -4381,11 +4367,6 @@ CGraphicsContext::TTextAlign align=sc->iAlign; if (!sc->iGraphics) { - if ( !iExtension ) - { - _AKNTRACE_FUNC_EXIT; - return; - } const CFont* rowAndCellFont=RowAndSubCellFont(iExtension->iCurrentlyDrawnItemIndex,subcell); const CFont* cellFont=sc->iBaseFont; const CFont* tempFont=(cellFont) ? cellFont : font; @@ -4539,28 +4520,27 @@ CGulIcon* icon=(*iIconArray)[index]; CFbsBitmap* bitmap=icon->Bitmap(); - if ( iExtension ) + + TInt w, h; + TSize sz = bitmap->SizeInPixels(); + + w = iExtension->iSubCellIconSize[subcell].iWidth; + h = iExtension->iSubCellIconSize[subcell].iHeight; + + if (h != 0 && w != 0 && !( sz.iWidth == w || sz.iHeight == h ) ) { - TInt w, h; - TSize sz = bitmap->SizeInPixels(); - - w = iExtension->iSubCellIconSize[subcell].iWidth; - h = iExtension->iSubCellIconSize[subcell].iHeight; - - if (h != 0 && w != 0 && !( sz.iWidth == w || sz.iHeight == h ) ) - { - AknIconUtils::SetSize( bitmap, - iExtension->iSubCellIconSize[subcell], - EAspectRatioPreservedAndUnusedSpaceRemoved ); - } - else if ( sz.iWidth == 0 || sz.iHeight == 0 ) // check if size is set at all - { - // just in case fallback - AknIconUtils::SetSize( bitmap, - textRect.Size(), - EAspectRatioPreservedAndUnusedSpaceRemoved ); - } + AknIconUtils::SetSize( bitmap, + iExtension->iSubCellIconSize[subcell], + EAspectRatioPreservedAndUnusedSpaceRemoved ); } + else if ( sz.iWidth == 0 || sz.iHeight == 0 ) // check if size is set at all + { + // just in case fallback + AknIconUtils::SetSize( bitmap, + textRect.Size(), + EAspectRatioPreservedAndUnusedSpaceRemoved ); + } + TSize size=bitmap->SizeInPixels(); @@ -4625,33 +4605,30 @@ void CFormattedCellListBoxData::SetClippedByWrap( TUint32 aClippedCells, TBool aUseClippedByWrap ) { - if ( iExtension ) - { - iExtension->iClippedByWrap = aClippedCells; - iExtension->iUseClippedByWrap = aUseClippedByWrap; - } + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + iExtension->iClippedByWrap = aClippedCells; + iExtension->iUseClippedByWrap = aUseClippedByWrap; } EXPORT_C TUint32 CFormattedCellListBoxData::CurrentItemTextWasClipped() const { - return iExtension ? iExtension->iClippedSubcells : 0; + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + return iExtension->iClippedSubcells; } TBool CFormattedCellListBoxData::KineticScrollingEnabled() const { - if ( iExtension ) - { - return iExtension->iKineticScrolling; - } - return EFalse; + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + return iExtension->iKineticScrolling; } CEikListBox* CFormattedCellListBoxData::ListBox() const { - if ( iExtension && iExtension->iControl ) + __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer )); + if ( iExtension->iControl ) { return static_cast( iExtension->iControl ); } @@ -4660,7 +4637,7 @@ void CFormattedCellListBoxData::InitSmileyL() { __ASSERT_DEBUG( iExtension, Panic( EAknPanicObjectNotFullyConstructed )); - if ( iExtension && !iExtension->iSmileyMan ) + if ( !iExtension->iSmileyMan ) { iExtension->iSmileyMan = CAknSmileyManager::NewL( iExtension ); } diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/srcdata/AvkonSystemSounds.ra --- a/uifw/AvKon/srcdata/AvkonSystemSounds.ra Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/srcdata/AvkonSystemSounds.ra Fri Apr 30 17:20:48 2010 +0100 @@ -18,6 +18,13 @@ // Avkon Default KeySounds // +#define KVolumeMinSoundFile "z:\\resource\\avkonsystemsounds\\volume_min.wav" +#define KVolumeMaxSoundFile "z:\\resource\\avkonsystemsounds\\volume_max.wav" +#define KBatteryLowSoundFile "z:\\resource\\avkonsystemsounds\\battery_low.wav" +#define KDefaultBeepSoundFile "z:\\resource\\avkonsystemsounds\\default_beep.wav" +#define KBatteryRechargeSoundFile "z:\\resource\\avkonsystemsounds\\battery_dead.wav" + + RESOURCE AVKON_SOUND_INFO_LIST r_avkon_default_sound_list { list= @@ -44,14 +51,15 @@ sid=EAvkonSIDConfirmationTone; priority=EAvkonConfirmationNotePriority; preference=EAvkonConfirmationNotePreference; - sequencelength=6; - sequence={0,17,10,118,17,11}; + //sequencelength=6; + //sequence={0,17,10,118,17,11}; // 0x00 = 0 = OPCODE_SEQUENCE_START // 0x11 = 17 = OPCODE_DURATION_UNIT // 0x0A = 10 = duration unit => tone duration is 10ms * tone_tick // 0x76 = 118 => 118-64=54=AUD_TONE_RING_FREQ_F2 = 1397Hz // 0x11 = 17 = tone_tick = 170ms // 0x0B = 11 = OPCODE_END + file = KDefaultBeepSoundFile; volume = 5; }, AVKON_SOUND_INFO @@ -59,14 +67,15 @@ sid=EAvkonSIDErrorTone; priority=EAvkonErrorNotePriority; preference=EAvkonErrorNotePreference; - sequencelength=6; - sequence={0,17,10,108,25,11}; + //sequencelength=6; + //sequence={0,17,10,108,25,11}; // 0x00 = 0 = OPCODE_SEQUENCE_START // 0x11 = 17 = OPCODE_DURATION_UNIT // 0x0A = 10 = duration unit => tone duration is 10ms * tone_tick // 0x6C = 108 => 108-64=44=AUD_TONE_RING_FREQ_G1 = 784Hz // 0x19 = 25 = tone_tick = 250ms // 0x0B = 11 = OPCODE_END + file = KDefaultBeepSoundFile; volume = 5; }, AVKON_SOUND_INFO @@ -74,14 +83,15 @@ sid=EAvkonSIDWarningTone; priority=EAvkonWarningNotePriority; preference=EAvkonWarningNotePreference; - sequencelength=6; - sequence={0,17,10,108,25,11}; + //sequencelength=6; + //sequence={0,17,10,108,25,11}; // 0x00 = 0 = OPCODE_SEQUENCE_START // 0x11 = 17 = OPCODE_DURATION_UNIT // 0x0A = 10 = duration unit => tone duration is 10ms * tone_tick // 0x6C = 108 => 108-64=44=AUD_TONE_RING_FREQ_G1 = 784Hz // 0x19 = 25 = tone_tick = 250ms // 0x0B = 11 = OPCODE_END + file = KDefaultBeepSoundFile; volume = 5; }, @@ -90,14 +100,15 @@ sid=EAvkonSIDVolumeMinTone; priority=EAvkonVolumeSettingTonesPriority; preference=EAknAudioPrefAudioVolumeMin; - sequencelength=6; - sequence={0,17,10,113,6,11}; + //sequencelength=6; + //sequence={0,17,10,113,6,11}; // 0x00 = 0 = OPCODE_SEQUENCE_START // 0x11 = 17 = OPCODE_DURATION_UNIT // 0x0A = 10 = duration unit => tone duration is 10ms * tone_tick // 0x71 = 113 => 113-64=49=AUD_TONE_RING_FREQ_C2 = 1047Hz // 0x06 = 6 = tone_tick = 60ms // 0x0B = 11 = OPCODE_END + file = KVolumeMinSoundFile; volume = 9; }, AVKON_SOUND_INFO @@ -105,14 +116,15 @@ sid=EAvkonSIDVolumeMaxTone; priority=EAvkonVolumeSettingTonesPriority; preference=EAknAudioPrefAudioVolumeMax; - sequencelength=6; - sequence={0,17,10,122,6,11}; + //sequencelength=6; + //sequence={0,17,10,122,6,11}; // 0x00 = 0 = OPCODE_SEQUENCE_START // 0x11 = 17 = OPCODE_DURATION_UNIT // 0x0A = 10 = duration unit => tone duration is 10ms * tone_tick // 0x7A = 122 => 122-64=58=AUD_TONE_RING_FREQ_A3 = 1760Hz // 0x06 = 6 = tone_tick = 60ms // 0x0B = 11 = OPCODE_END + file = KVolumeMaxSoundFile; volume = 6; }, AVKON_SOUND_INFO @@ -139,8 +151,8 @@ sid=EAvkonSIDBatteryLowTone; priority=EAvkonChargingTonesPriority; preference=EAknAudioPrefBatteryLow; - sequencelength=10; - sequence={0,17,10,104,15,102,22,99,30,11}; + //sequencelength=10; + //sequence={0,17,10,104,15,102,22,99,30,11}; // 0x00 = 0 = OPCODE_SEQUENCE_START // 0x11 = 17 = OPCODE_DURATION_UNIT // 0x0A = 10 = duration unit => tone duration is 10ms * tone_tick @@ -151,6 +163,7 @@ // 0x63 = 99 => 99-64=35=AUD_TONE_RING_FREQ_A1 = 440Hz // 0x1E = 30 = tone_tick = 300ms // 11 = OPCODE_END + file = KBatteryLowSoundFile; volume = 5; }, AVKON_SOUND_INFO @@ -207,14 +220,15 @@ sid=EAvkonSIDDefaultSound; priority=EAvkonLowLevelNotesPriority; preference=EAknAudioPrefDefaultTone; - sequencelength=6; - sequence={0,17,10,118,10,11}; + //sequencelength=6; + //sequence={0,17,10,118,10,11}; // 0x00 = 0 = OPCODE_SEQUENCE_START // 0x11 = 17 = OPCODE_DURATION_UNIT // 0x0A = 10 = duration unit => tone duration is 10ms * tone_tick // 0x76 = 118 => 118-64=54=AUD_TONE_RING_FREQ_F2 = 1397Hz // 0x0A = 10 = tone_tick = 100ms // 0x0B = 11 = OPCODE_END + file = KDefaultBeepSoundFile; volume = 5; }, AVKON_SOUND_INFO @@ -304,14 +318,15 @@ sid=EAvkonSIDPowerOffTone; priority=EAvkonPoweringTonesPriority; preference=EAknAudioPrefPowerOff; - sequencelength=6; - sequence={0,17,10,118,10,11}; + //sequencelength=6; + //sequence={0,17,10,118,10,11}; // 0x00 = 0 = OPCODE_SEQUENCE_START // 0x11 = 17 = OPCODE_DURATION_UNIT // 0x0A = 10 = duration unit => tone duration is 10ms * tone_tick // 0x76 = 118 => 118-64=54=AUD_TONE_RING_FREQ_F2 = 1397Hz // 0x0A = 10 = tone_tick = 100ms // 0x0B = 11 = OPCODE_END + file = KDefaultBeepSoundFile; volume = 5; }, @@ -320,14 +335,15 @@ sid=EAvkonSIDPowerOnTone; priority=EAvkonPoweringTonesPriority; preference=EAknAudioPrefPowerOn; - sequencelength=6; - sequence={0,17,10,118,10,11}; + //sequencelength=6; + //sequence={0,17,10,118,10,11}; // 0x00 = 0 = OPCODE_SEQUENCE_START // 0x11 = 17 = OPCODE_DURATION_UNIT // 0x0A = 10 = duration unit => tone duration is 10ms * tone_tick // 0x76 = 118 => 118-64=54=AUD_TONE_RING_FREQ_F2 = 1397Hz // 0x0A = 10 = tone_tick = 100ms // 0x0B = 11 = OPCODE_END + file = KDefaultBeepSoundFile; volume = 5; }, AVKON_SOUND_INFO @@ -335,8 +351,8 @@ sid=EAvkonSIDRechargeBatteryTone; priority=EAvkonChargingTonesPriority; preference=EAknAudioPrefRechargeBattery; - sequencelength=12; - sequence={0,17,10,104,15,102,22,99,30,96,45,11}; + //sequencelength=12; + //sequence={0,17,10,104,15,102,22,99,30,96,45,11}; // 0x00 = 0 = OPCODE_SEQUENCE_START // 0x11 = 17 = OPCODE_DURATION_UNIT // 0x0A = 10 = duration unit => tone duration is 10ms * tone_tick @@ -349,6 +365,7 @@ // 0x60 = 96 => 96-64=32=AUD_TONE_RING_FREQ_G0 = 392Hz // 0x2D = 45 = tone_tick = 450ms // 0x0B = 11 = OPCODE_END + file = KBatteryRechargeSoundFile; volume = 5; }, diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/srcdata/AvkonSystemSounds/battery_dead.wav Binary file uifw/AvKon/srcdata/AvkonSystemSounds/battery_dead.wav has changed diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/srcdata/AvkonSystemSounds/battery_low.wav Binary file uifw/AvKon/srcdata/AvkonSystemSounds/battery_low.wav has changed diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/srcdata/AvkonSystemSounds/default_beep.wav Binary file uifw/AvKon/srcdata/AvkonSystemSounds/default_beep.wav has changed diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/srcdata/AvkonSystemSounds/volume_max.wav Binary file uifw/AvKon/srcdata/AvkonSystemSounds/volume_max.wav has changed diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/srcdata/AvkonSystemSounds/volume_min.wav Binary file uifw/AvKon/srcdata/AvkonSystemSounds/volume_min.wav has changed diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/AvKon/srcdata/avkon.rss --- a/uifw/AvKon/srcdata/avkon.rss Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/AvKon/srcdata/avkon.rss Fri Apr 30 17:20:48 2010 +0100 @@ -10202,4 +10202,39 @@ }; } +RESOURCE DIALOG r_avkon_special_character_table_dialog_for_lockcode_symbol_input + { + flags = EGeneralQueryFlags | EEikDialogFlagNoBorder | EEikDialogFlagNoShadow; + buttons = r_avkon_softkeys_select_cancel__select; + items= + { + DLG_LINE + { + type = EAknCtPopupHeadingPane; + id = EAknSCTQueryHeadingId; + control = AVKON_HEADING + { + label = qtn_pop_up_select_character; + headinglayout = r_avkon_sct_list_heading_pane; + }; + }, + DLG_LINE + { + type = EAknCtSpecialCharacterMap; + id = EAknSCTQueryContentId; + control = SPECIAL_CHAR_TABLE + { + contents = + { + SCT_CHAR_SET + { + id = EAknSCTLowerCase; + chars = qtn_sct_special_characters_lockcode; + } + }; + }; + } + }; + } + // End of File diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/EikStd/coctlsrc/AknClearer.cpp --- a/uifw/EikStd/coctlsrc/AknClearer.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/EikStd/coctlsrc/AknClearer.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -295,30 +295,28 @@ iExtension->iBgContext->SetLayerImage( n, KAknsIIDNone ); } - TBool widescreenPaneUsed( - R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL == - AVKONENV->StatusPaneResIdForCurrentLayout( - R_AVKON_STATUS_PANE_LAYOUT_USUAL ) || - R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE == - AVKONENV->StatusPaneResIdForCurrentLayout( - R_AVKON_STATUS_PANE_LAYOUT_IDLE ) ); + CAknEnv* aknEnv = AVKONENV; + + TInt usualSpLayout = + aknEnv->StatusPaneResIdForCurrentLayout( + R_AVKON_STATUS_PANE_LAYOUT_USUAL ); + + TInt idleSpLayout = + aknEnv->StatusPaneResIdForCurrentLayout( + R_AVKON_STATUS_PANE_LAYOUT_IDLE ); + + TBool widescreenPaneUsed = + ( 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 = - ( ( R_AVKON_STATUS_PANE_LAYOUT_USUAL != - AVKONENV->StatusPaneResIdForCurrentLayout( - R_AVKON_STATUS_PANE_LAYOUT_USUAL ) ) && - ( R_AVKON_STATUS_PANE_LAYOUT_USUAL_MIRRORED != - AVKONENV->StatusPaneResIdForCurrentLayout( - R_AVKON_STATUS_PANE_LAYOUT_USUAL ) ) ); + ( usualSpLayout != R_AVKON_STATUS_PANE_LAYOUT_USUAL ) && + ( usualSpLayout != R_AVKON_STATUS_PANE_LAYOUT_USUAL_MIRRORED ); TBool flatStatuspaneusedInLandscape = - ( R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT == - AVKONENV->StatusPaneResIdForCurrentLayout( - R_AVKON_STATUS_PANE_LAYOUT_USUAL ) ); - ( R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT == - AVKONENV->StatusPaneResIdForCurrentLayout( - R_AVKON_STATUS_PANE_LAYOUT_USUAL ) ); + ( usualSpLayout == R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT ) || + ( usualSpLayout == R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT ); // TRect application_window = iAvkonAppUi->ApplicationRect(); @@ -485,7 +483,7 @@ CEikStatusPaneBase* statusPane = CEikStatusPaneBase::Current(); if (statusPane) { - TInt currentStatusPaneLayoutResId = AVKONENV->StatusPaneResIdForCurrentLayout(statusPane->CurrentLayoutResId()); + TInt currentStatusPaneLayoutResId = aknEnv->StatusPaneResIdForCurrentLayout(statusPane->CurrentLayoutResId()); staconPaneRight = ((currentStatusPaneLayoutResId == R_AVKON_STACON_PANE_LAYOUT_USUAL_SOFTKEYS_RIGHT) || (currentStatusPaneLayoutResId == R_AVKON_STACON_PANE_LAYOUT_EMPTY_SOFTKEYS_RIGHT) || diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/EikStd/coctlsrc/EIKEDWIN.CPP --- a/uifw/EikStd/coctlsrc/EIKEDWIN.CPP Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/EikStd/coctlsrc/EIKEDWIN.CPP Fri Apr 30 17:20:48 2010 +0100 @@ -1576,7 +1576,7 @@ CreateLayoutL(globalText); SetHeightForNumOfLinesL(); DoCreateCustomDrawL(); - if ( iEdwinExtension->iSmiley ) + if ( iEdwinExtension && iEdwinExtension->iSmiley ) { TextLayout()->SetCustomWrap( iEdwinExtension->iSmileyWrap ); } @@ -1817,7 +1817,7 @@ } if (iEdwinUserFlags&EDisplayOnly) return EKeyWasConsumed; - if ( iEdwinExtension->iDrawInvoked == CEikEdwinExtension::ENotDraw ) + if ( iEdwinExtension && iEdwinExtension->iDrawInvoked == CEikEdwinExtension::ENotDraw ) { PerformRecordedOperationL(); } @@ -2164,7 +2164,7 @@ formatChange=formatHasChanged; } } - if ( reportChange && iEdwinExtension->iSmiley ) + if ( reportChange && iEdwinExtension && iEdwinExtension->iSmiley ) { ConvertTextForSmileyL( TCursorSelection( cursorPos, cursorPos ), ETrue ); @@ -2222,7 +2222,7 @@ { TInt pos=DeleteHighlightL(formatHasChanged); TRAPD(err,iText->InsertL(pos,character)); - if ( iEdwinExtension->iSmiley ) + if ( iEdwinExtension && iEdwinExtension->iSmiley ) { iEdwinExtension->iSmiley->HandleInsertL( pos, 1 ); ConvertTextForSmileyL( TCursorSelection( pos, pos ), ETrue ); @@ -2246,7 +2246,7 @@ { iText->InsertL(CursorPos(),character); ClearUndo(); - if ( iEdwinExtension->iSmiley ) + if ( iEdwinExtension && iEdwinExtension->iSmiley ) { TInt cursorPos( CursorPos() ); iEdwinExtension->iSmiley->HandleInsertL( cursorPos, 1 ); @@ -2267,7 +2267,7 @@ { ReportEdwinEventL( MEikEdwinObserver::EEventTextUpdate ); DoReportEventL( MCoeControlObserver::EEventStateChanged ); - if ( iEdwinExtension->iSmiley ) + if ( iEdwinExtension && iEdwinExtension->iSmiley ) { TInt docPos( CursorPos() ); iEdwinExtension->iSmiley->HandleSetCursor( docPos, @@ -2278,7 +2278,7 @@ } } } - if (navigation) + if ( navigation && iEdwinExtension ) { iEdwinExtension->iThumbPos = KErrNotFound; ReportEdwinEventL(MEikEdwinObserver::EEventNavigation); @@ -2382,7 +2382,7 @@ } } - if ( iEdwinExtension->iDrawInvoked == CEikEdwinExtension::ENotDraw ) + if ( iEdwinExtension && iEdwinExtension->iDrawInvoked == CEikEdwinExtension::ENotDraw ) { PerformRecordedOperationL(); } @@ -2472,8 +2472,11 @@ } TBool shouldReturn( EFalse ); - iEdwinExtension->iPhysicsHandler->HandleKineticScrolling( - aPointerEvent, shouldReturn ); + if ( iEdwinExtension ) + { + iEdwinExtension->iPhysicsHandler->HandleKineticScrolling( + aPointerEvent, shouldReturn ); + } if ( shouldReturn ) { @@ -2533,7 +2536,7 @@ } } // Kinetic scrolling not enabled - if ( iEdwinExtension->iPtSuppressor->SuppressPointerEvent( aPointerEvent ) ) + if ( iEdwinExtension && iEdwinExtension->iPtSuppressor->SuppressPointerEvent( aPointerEvent ) ) { return; } @@ -2676,7 +2679,7 @@ iEdwinInternalFlags&=(~ELeftDownInViewRect); // We can't open cut-copy-paste menu if dragging started - if ( IsReadOnly() && IsSelectionVisible() && !( iEdwinUserFlags&ENoAutoSelection ) && !( kineticScrollingEnabled + if ( IsReadOnly() && IsSelectionVisible() && IsFocused() && !( kineticScrollingEnabled && iEdwinExtension->iPhysicsHandler->DraggingStarted() ) ) { iEdwinFepSupport->iFeedback->InstantFeedback( @@ -3058,7 +3061,7 @@ DoCreateCustomDrawL(); // Done after TextView is created so that optimized drawer is constructed // Create the required formatters according to the editor set-up - if ( IsPurePhoneNumberEditor() ) + if ( IsPurePhoneNumberEditor() && iEdwinExtension ) { if ( phoneNumberGroupingSupported ) { @@ -3067,14 +3070,14 @@ iEdwinExtension->CreatePurePhoneNumberFormatterL( *iLayout, *iText ); } } - else // Make approximation that all other editors have no matches indicator functionality + else if ( iEdwinExtension )// Make approximation that all other editors have no matches indicator functionality { iEdwinExtension->CreateNoMatchesIndicatorFormatterL( *iLayout ); } // Rich text editors that have been configured for phone number grouping if (iEdwinInternalFlags&ERichText && iEdwinInternalFlags&EPhoneNumberGrouping && - phoneNumberGroupingSupported ) + phoneNumberGroupingSupported && iEdwinExtension ) { CAknEdwinState* edwinState = STATIC_CAST( CAknEdwinState*, iEdwinFepSupport->State(KNullUid) ); edwinState->SetFlags( edwinState->Flags() | EAknEditorFlagNumberGrouping ); @@ -3082,7 +3085,7 @@ } // Install the custom formatter system if needed - if ( iEdwinExtension->FormExtendedInferfaceProvider() ) + if ( iEdwinExtension && iEdwinExtension->FormExtendedInferfaceProvider() ) TextLayout()->SetInterfaceProvider( iEdwinExtension->FormExtendedInferfaceProvider() ); UpdateScrollBarsL(); @@ -3220,7 +3223,10 @@ SetCursorVisibilityL( ETrue ); } // View size changed, Initialize physics here - iEdwinExtension->InitPhysicsL(); + if ( iEdwinExtension ) + { + iEdwinExtension->InitPhysicsL(); + } } EXPORT_C TInt CEikEdwin::CountComponentControls() const @@ -3245,7 +3251,7 @@ if (!iTextView) return; const TInt chars=iText->DocumentLength(); - if ( iEdwinExtension->iSmiley && !iEdwinExtension->iDisableConvertInFormat ) + if ( iEdwinExtension && iEdwinExtension->iSmiley && !iEdwinExtension->iDisableConvertInFormat ) { if ( chars > KFullFormatLengthForSmiley ) { @@ -3302,7 +3308,7 @@ if (!iTextView) return; const TInt chars=iText->DocumentLength(); - if ( iEdwinExtension->iSmiley && !iEdwinExtension->iDisableConvertInFormat ) + if ( iEdwinExtension && iEdwinExtension->iSmiley && !iEdwinExtension->iDisableConvertInFormat ) { if ( chars > KFullFormatLengthForSmiley ) { @@ -3376,7 +3382,7 @@ for (TInt ii=0;iiHandleEdwinEventL(this,aEventType); } - if ( aEventType == MEikEdwinObserver::EEventTextUpdate ) + if ( aEventType == MEikEdwinObserver::EEventTextUpdate && iEdwinExtension ) { iEdwinExtension->iExtendedInputCapabilities->ReportEventL( CAknExtendedInputCapabilities:: @@ -3432,7 +3438,7 @@ // CTextView::SetDocPosL will cause textview to be drawn. This could happen // before the drawing of editor. So adding following codes to postpone the action to // first drawing of editor. - if ( iEdwinExtension->iDrawInvoked == CEikEdwinExtension::ENotDraw ) + if ( iEdwinExtension && iEdwinExtension->iDrawInvoked == CEikEdwinExtension::ENotDraw ) { iEdwinExtension->iTempCursorPos = aDocPos; iEdwinExtension->iTempSelect = aSelect; @@ -3452,7 +3458,7 @@ CreateTextViewL(); TInt oldPos( CursorPos() ); TInt docPos( aDocPos ); - if ( iEdwinExtension->iSmiley ) + if ( iEdwinExtension && iEdwinExtension->iSmiley ) { iEdwinExtension->iSmiley->HandleSetCursor( oldPos, docPos ); } @@ -3475,7 +3481,8 @@ TRAP_IGNORE( edwinState->ReportAknEdStateEventL( MAknEdStateObserver::EAknCursorPositionChanged ) ); } } - + // scrollbar:thumb is displayed on the top when editor set cursor position. + iEdwinExtension->iThumbPos = KErrNotFound; UpdateVertScrollBarThumbL(); UpdateHorizScrollBarThumb(); } @@ -3496,7 +3503,7 @@ } if (!iTextView) CreateTextViewL(); - if ( iEdwinExtension->iDrawInvoked == CEikEdwinExtension::ENotDraw ) + if ( iEdwinExtension && iEdwinExtension->iDrawInvoked == CEikEdwinExtension::ENotDraw ) { iEdwinExtension->iTempCursorPos = aCursorPos; iEdwinExtension->iTempAnchorPos = aAnchorPos; @@ -3510,7 +3517,10 @@ TCursorSelection select( aCursorPos, aAnchorPos ); HandleSelectionForSmiley( select ); iTextView->SetSelectionL( select ); - iEdwinExtension->iThumbPos = KErrNotFound; + if ( iEdwinExtension ) + { + iEdwinExtension->iThumbPos = KErrNotFound; + } if ( iEdwinFepSupport ) { @@ -3618,7 +3628,10 @@ else CCoeControl::SetContainerWindowL(aParent); - iEdwinExtension->EnablePhysicsL(); + if ( iEdwinExtension ) + { + iEdwinExtension->EnablePhysicsL(); + } } EXPORT_C void CEikEdwin::SetContainerWindowL() @@ -3627,7 +3640,10 @@ if (!OwnsWindow()) CreateWindowL(); - iEdwinExtension->EnablePhysicsL(); + if ( iEdwinExtension ) + { + iEdwinExtension->EnablePhysicsL(); + } } EXPORT_C TCoeInputCapabilities CEikEdwin::InputCapabilities() const @@ -3688,7 +3704,7 @@ { __ASSERT_DEBUG(aLayDoc,Panic(EEikPanicEdwinNoText)); - if ((iEdwinUserFlags&EAvkonEditor)) + if ( iEdwinUserFlags&EAvkonEditor && iEdwinExtension ) { iLayout=CTextLayout::NewL(aLayDoc,KMaxTInt); // supply real wrapping width later iLayout->SetCustomWrap(&(iEdwinExtension->TextWrapper())); @@ -3863,7 +3879,7 @@ EXPORT_C void CEikEdwin::TrappedDraw(const TRect& aViewRect) const { - if ( iEdwinExtension->iDrawInvoked == CEikEdwinExtension::ENotDraw ) + if ( iEdwinExtension && iEdwinExtension->iDrawInvoked == CEikEdwinExtension::ENotDraw ) { CEikEdwin* edwin( const_cast( this ) ); edwin->iEdwinExtension->iDrawInvoked = CEikEdwinExtension::EDrawing; @@ -3984,7 +4000,7 @@ } TInt oldCursor( CursorPos() ); TPoint movePoint=iTextView->MoveCursorL( aMovement, aSelect ); - if ( iEdwinExtension->iSmiley ) + if ( iEdwinExtension && iEdwinExtension->iSmiley ) { TCursorSelection select( 0, 0 ); if ( AdjustCursorForSmileyL( oldCursor, select ) ) @@ -4021,7 +4037,7 @@ // Before scrolling into blank space was allowed, but this eventually // causes a panic at CTextView::ScrollDisplayL(). const TInt move=iTextView->ScrollDisplayL(aMovement,CTextLayout::EFDisallowScrollingBlankSpace); - if (move) + if ( move && iEdwinExtension ) { iEdwinExtension->iThumbPos = KErrNotFound; switch (aMovement) @@ -4076,7 +4092,7 @@ EXPORT_C TInt CEikEdwin::CursorPos() const { __ASSERT_DEBUG(iTextView,Panic(EEikPanicEdwinNoView)); - if ( iEdwinExtension->iDrawInvoked == CEikEdwinExtension::ENotDraw && + if ( iEdwinExtension && iEdwinExtension->iDrawInvoked == CEikEdwinExtension::ENotDraw && iEdwinExtension->iTempCursorPos != KErrNotFound ) { return iEdwinExtension->iTempCursorPos; @@ -4092,7 +4108,7 @@ { __ASSERT_DEBUG(iTextView,Panic(EEikPanicEdwinNoView)); TCursorSelection selection( 0, 0 ); - if ( iEdwinExtension->iDrawInvoked == CEikEdwinExtension::ENotDraw && + if ( iEdwinExtension && iEdwinExtension->iDrawInvoked == CEikEdwinExtension::ENotDraw && iEdwinExtension->iTempCursorPos != KErrNotFound && iEdwinExtension->iTempAnchorPos != KErrNotFound ) { @@ -4152,7 +4168,7 @@ STATIC_CAST(CRichText*,iText)->CancelInsertCharFormat(); aChanged=iText->DeleteL(aSelection.LowerPos(),length); } - if ( iEdwinExtension->iSmiley ) + if ( iEdwinExtension && iEdwinExtension->iSmiley ) { iEdwinExtension->iSmiley->HandleDeleteL( aSelection.LowerPos(), length ); } @@ -4184,7 +4200,7 @@ { SetAknEditorFlags( edwinState->Flags() | EAknEditorFlagTextCursorVisible ); } - else + else if ( iEdwinExtension ) { SetAknEditorFlags( edwinState->Flags() & ~EAknEditorFlagTextCursorVisible ); @@ -4405,7 +4421,7 @@ select.iCursorPos = iTextLimit; } TBool hasSmiley( EFalse ); - if ( iEdwinExtension->iSmiley ) + if ( iEdwinExtension && iEdwinExtension->iSmiley ) { hasSmiley = iEdwinExtension->iSmiley->HasSmileyIconsInText(); } @@ -4491,7 +4507,7 @@ AknTextUtils::ReplaceCharacters(segmBufPtr, KLineBreakCharacter, TChar(CEditableText::EParagraphDelimiter)); iText->InsertL(oldLength+segmStart,*segmBuf); - if ( iEdwinExtension->iSmiley ) + if ( iEdwinExtension && iEdwinExtension->iSmiley ) { iEdwinExtension->iSmiley->HandleInsertL( oldLength+segmStart, insertLength ); @@ -4505,7 +4521,7 @@ CleanupStack::PopAndDestroy(segmBuf); TRAP(err,iText->DeleteL(0,oldLength)); - if ( iEdwinExtension->iSmiley ) + if ( iEdwinExtension && iEdwinExtension->iSmiley ) { iEdwinExtension->iSmiley->HandleDeleteL( 0, oldLength ); ConvertTextForSmileyL( TCursorSelection( 0, @@ -4515,7 +4531,7 @@ else { iText->Reset(); // Duplicates previous behaviour where null pointer argument reset text object - if ( iEdwinExtension->iSmiley ) + if ( iEdwinExtension && iEdwinExtension->iSmiley ) { iEdwinExtension->iSmiley->HandleDeleteL( 0, iText->DocumentLength() ); @@ -4524,9 +4540,15 @@ CheckRemovePictures(0,iText->DocumentLength()); CheckValidityOfChars(0,iText->DocumentLength()); - iEdwinExtension->iDisableConvertInFormat = ETrue; - SetAmountToFormatL(ETrue); // performs formatting - iEdwinExtension->iDisableConvertInFormat = EFalse; + if ( iEdwinExtension ) + { + iEdwinExtension->iDisableConvertInFormat = ETrue; + } + SetAmountToFormatL(ETrue); // performs formatting + if ( iEdwinExtension ) + { + iEdwinExtension->iDisableConvertInFormat = EFalse; + } // Update cursor position as CursorWidth() needs that. if (IsReadyToDraw()) { @@ -4556,7 +4578,10 @@ iCcpuSupport->HandleSelectionChangeL(); } } - iEdwinExtension->iThumbPos = KErrNotFound; + if ( iEdwinExtension ) + { + iEdwinExtension->iThumbPos = KErrNotFound; + } if (IsReadyToDraw()) { UpdateScrollBarsL(); @@ -4567,7 +4592,7 @@ EXPORT_C TCursorSelection CEikEdwin::Selection() const { - if ( iEdwinExtension->iDrawInvoked == CEikEdwinExtension::ENotDraw && + if ( iEdwinExtension && iEdwinExtension->iDrawInvoked == CEikEdwinExtension::ENotDraw && iEdwinExtension->iTempCursorPos != KErrNotFound && iEdwinExtension->iTempAnchorPos != KErrNotFound ) { @@ -4622,7 +4647,7 @@ TRAPD(err,undoneLength=iText->PasteFromStoreL(iUndoStore->Store(),iUndoStore->Dictionary(),lower)) const TInt cursorPos=iUndoStore->OldCursorPos(); iTextView->SetPendingSelection(TCursorSelection(cursorPos,cursorPos)); - if ( iEdwinExtension->iSmiley ) + if ( iEdwinExtension && iEdwinExtension->iSmiley ) { iEdwinExtension->iSmiley->HandleInsertL( lower, undoneLength ); ConvertTextForSmileyL( TCursorSelection( lower, undoneLength ), ETrue ); @@ -4700,7 +4725,7 @@ iText->ImportTextFileL(cursorPos,aFileName,aTextOrganisation); TInt insertLength( iText->DocumentLength() - oldLength ); CheckValidityOfChars( oldLength, insertLength ); - if ( iEdwinExtension->iSmiley ) + if ( iEdwinExtension && iEdwinExtension->iSmiley ) { iEdwinExtension->iSmiley->HandleInsertL( cursorPos, insertLength ); ConvertTextForSmileyL( TCursorSelection( cursorPos, @@ -4818,14 +4843,14 @@ // If we have deleted some text and previous position (before delete) is // out of current editor content, we must move back to inside content. TInt formattedHeight( iLayout->FormattedHeightInPixels() ); - if ( prevEndPosition > formattedHeight ) + if ( prevEndPosition > formattedHeight && iEdwinExtension ) { TInt movement( prevEndPosition - formattedHeight ); iEdwinExtension->iPhysicsHandler->MoveScrollIndex( movement ); } } - if (reportChange) + if ( reportChange && iEdwinExtension ) { iEdwinExtension->iThumbPos = KErrNotFound; ReportEdwinEventL( MEikEdwinObserver::EEventTextUpdate ); @@ -4876,7 +4901,7 @@ CPlainText* text( iText ); TInt start( selection.LowerPos() ); HBufC* buf( NULL ); - if ( iEdwinExtension->iSmiley ) + if ( iEdwinExtension && iEdwinExtension->iSmiley ) { buf = ExtractTextLC( selection ); text = CPlainText::NewL(); @@ -4888,7 +4913,7 @@ text->InsertL( start, *buf ); } text->CopyToStoreL(aStore, aDict, start, selection.Length() ); - if ( iEdwinExtension->iSmiley ) + if ( iEdwinExtension && iEdwinExtension->iSmiley ) { CleanupStack::PopAndDestroy( text ); CleanupStack::PopAndDestroy( buf ); @@ -4927,7 +4952,7 @@ iTextView->SetPendingSelection(TCursorSelection(higher,higher)); selection.iAnchorPos=selection.LowerPos(); selection.iCursorPos=selection.iAnchorPos+pastedLength; - if ( iEdwinExtension->iSmiley ) + if ( iEdwinExtension && iEdwinExtension->iSmiley ) { iEdwinExtension->iSmiley->HandleInsertL( selection.LowerPos(), selection.Length() ); @@ -5621,9 +5646,13 @@ TRect viewRect( AdjustedViewRect() ); const TInt formattedLines = Max(1, iLayout->NumFormattedLines()); - const TInt formattedHeight = iLayout->FormattedHeightInPixels(); - const TBool formattedHeightchanged( formattedHeight != iEdwinExtension->iRecordFormattedHeight ); - iEdwinExtension->iRecordFormattedHeight = formattedHeight; + const TInt formattedHeight = iLayout->FormattedHeightInPixels(); + const TBool formattedHeightchanged( iEdwinExtension && + ( formattedHeight != iEdwinExtension->iRecordFormattedHeight ) ); + if ( iEdwinExtension ) + { + iEdwinExtension->iRecordFormattedHeight = formattedHeight; + } const TInt viewRectHeight = viewRect.Height(); const TInt totalChars = iText->DocumentLength(); const TInt formattedLength = Min( totalChars, iLayout->FormattedLength() ); @@ -5639,8 +5668,11 @@ if ( !iLayout->IsFormattingBand() ) { aVertModel.iThumbSpan = viewRectHeight; - aVertModel.iScrollSpan = formattedHeight; - aVertModel.iThumbPosition = iEdwinExtension->iThumbPos; + aVertModel.iScrollSpan = formattedHeight; + if ( iEdwinExtension ) + { + aVertModel.iThumbPosition = iEdwinExtension->iThumbPos; + } if ( aVertModel.iThumbPosition == KErrNotFound || formattedHeightchanged ) { if ( bottomPos == totalChars ) @@ -5673,7 +5705,10 @@ aVertModel.iThumbSpan = bottomPos - topPos; aVertModel.iScrollSpan = totalChars; aVertModel.iThumbPosition = topPos; - iEdwinExtension->iThumbPos = topPos; + if ( iEdwinExtension ) + { + iEdwinExtension->iThumbPos = topPos; + } } return; } @@ -5831,7 +5866,7 @@ static_cast< const TAknDoubleSpanScrollBarModel* > ( iSBFrame->CEikScrollBarFrame::VerticalScrollBar()->Model() ); - if ( !iEdwinExtension->iUseRateScroll ) + if ( iEdwinExtension && ( !iEdwinExtension->iUseRateScroll ) ) { aVertModel.iScrollSpan = heightBeforeFormat + formattedHeight + heightAfterFormat; @@ -5840,7 +5875,7 @@ // Rate scrolling - if ( iEdwinExtension->iUseRateScroll ) + if ( iEdwinExtension && iEdwinExtension->iUseRateScroll ) { TInt heightAboveView = formattedHeightAboveView + heightBeforeFormat; TInt heightBelowView = formattedHeightBelowView + heightAfterFormat; @@ -5893,7 +5928,7 @@ } } - if ( iEdwinExtension->iUseRateScroll ) + if ( iEdwinExtension && iEdwinExtension->iUseRateScroll ) { aVertModel.iThumbPosition = anchorThumbPos; } @@ -5901,7 +5936,10 @@ { aVertModel.iThumbPosition = approxTopVisibleLine * avgLineHeight; } - iEdwinExtension->iScrollbarPosition = aVertModel.iThumbPosition; + if ( iEdwinExtension ) + { + iEdwinExtension->iScrollbarPosition = aVertModel.iThumbPosition; + } } // --------------------------------------------------------------------------- @@ -5921,7 +5959,11 @@ TInt thumbSpaceAbove = aScrollBar->ThumbPosition(); TInt thumbSpaceBelow = curScrollSpan - curThumbSpan - thumbSpaceAbove; - TInt moveOffset = thumbSpaceAbove - iEdwinExtension->iScrollbarPosition; + TInt moveOffset = 0; + if ( iEdwinExtension ) + { + moveOffset = thumbSpaceAbove - iEdwinExtension->iScrollbarPosition; + } const TInt formattedLines = Max( 1, iLayout->NumFormattedLines() ); const TInt formattedHeight = iLayout->FormattedHeightInPixels(); @@ -5959,7 +6001,6 @@ { return; } - iEdwinExtension->iScrollbarPosition = thumbSpaceAbove; // If scrollbar thumb is moved to the beginning or end of scrollbar, // ensure that also editor content is moved also exactly to the beginning @@ -5975,12 +6016,16 @@ textMovePixels -= KAdditionalPixels; } - iEdwinExtension->iScrolledByScrollBar = ETrue; - - // Actual scrolling is done by calling MoveScrollIndex - iEdwinExtension->iPhysicsHandler->MoveScrollIndex( -textMovePixels ); - - iEdwinExtension->iScrolledByScrollBar = EFalse; + if ( iEdwinExtension ) + { + iEdwinExtension->iScrollbarPosition = thumbSpaceAbove; + iEdwinExtension->iScrolledByScrollBar = ETrue; + + // Actual scrolling is done by calling MoveScrollIndex + iEdwinExtension->iPhysicsHandler->MoveScrollIndex( -textMovePixels ); + + iEdwinExtension->iScrolledByScrollBar = EFalse; + } } EXPORT_C void CEikEdwin::HandleScrollEventL(CEikScrollBar* aScrollBar,TEikScrollEvent aEventType) @@ -6102,7 +6147,7 @@ TInt bottomPos( iTextView->XyPosToDocPosL( viewRect.iBr ) ); TInt visibleRange( bottomPos - topPos ); - if ( thumbPosition != thumbSpan ) + if ( thumbPosition != thumbSpan && iEdwinExtension ) { TInt scrollRange( totalChars - visibleRange ); docPos = ( TInt )( ( TInt64 )( thumbPosition ) * scrollRange @@ -6128,7 +6173,10 @@ docPos = totalChars; yPos = viewRect.iBr.iY; } - iEdwinExtension->iThumbPos = thumbPosition; + if ( iEdwinExtension ) + { + iEdwinExtension->iThumbPos = thumbPosition; + } TViewYPosQualifier yPosQ; yPosQ.SetMakeLineFullyVisible(); iTextView->SetViewL( docPos, yPos, yPosQ, @@ -6499,7 +6547,7 @@ { TRAP_IGNORE( iText->DeleteL(aStartPos,1)); } - if ( iEdwinExtension->iSmiley ) + if ( iEdwinExtension && iEdwinExtension->iSmiley ) { iEdwinExtension->iSmiley->HandleDeleteL( aStartPos, 1 ); } @@ -6650,12 +6698,14 @@ { case KEikDynamicLayoutVariantSwitch: { - if ( KineticScrollingEnabled() ) + if ( KineticScrollingEnabled() && iEdwinExtension ) { iEdwinExtension->iPhysicsHandler->DisableDragging(); } - - iEdwinExtension->iThumbPos = KErrNotFound; + if ( iEdwinExtension ) + { + iEdwinExtension->iThumbPos = KErrNotFound; + } SizeChanged(); if ( !IsReadOnly() && !IsNonFocusing() && !( iEdwinUserFlags & EDisplayOnly ) @@ -6898,13 +6948,13 @@ else { formatChanged=iText->DeleteL(lowerPos,length); - if ( iEdwinExtension->iSmiley ) + if ( iEdwinExtension && iEdwinExtension->iSmiley ) { iEdwinExtension->iSmiley->HandleDeleteL( lowerPos, length ); } } iText->InsertL(aInsertPos,aText); - if ( iEdwinExtension->iSmiley ) + if ( iEdwinExtension && iEdwinExtension->iSmiley ) { iEdwinExtension->iSmiley->HandleInsertL( aInsertPos, aText.Length() ); ConvertTextForSmileyL( TCursorSelection( aInsertPos, @@ -7387,7 +7437,11 @@ edwinState = STATIC_CAST(CAknEdwinState*, iEdwinFepSupport->State(KNullUid)); } - CAknPictographInterface* pictographInterface = iEdwinExtension->PictographInterface(); + CAknPictographInterface* pictographInterface = NULL; + if ( iEdwinExtension ) + { + pictographInterface = iEdwinExtension->PictographInterface(); + } if (edwinState) { if (FeatureManager::FeatureSupported(KFeatureIdJapanese)) @@ -7963,7 +8017,10 @@ EXPORT_C void CEikEdwin::SetPictographAnimationCallBack( TCallBack& aCallBack ) { - iEdwinExtension->SetPictoCallBack( aCallBack ); + if ( iEdwinExtension ) + { + iEdwinExtension->SetPictoCallBack( aCallBack ); + } } const TCallBack& CEikEdwin::PictographAnimationCallBack() const @@ -8095,7 +8152,11 @@ void CEikEdwin::SetVKBStatus() { - TUint cap = iEdwinExtension->iExtendedInputCapabilities->Capabilities(); + TUint cap = 0; + if ( iEdwinExtension ) + { + cap = iEdwinExtension->iExtendedInputCapabilities->Capabilities(); + } if ( iEdwinUserFlags & EAvkonDisableVKB ) { cap |= CAknExtendedInputCapabilities::EInputEditorDisableVKB; @@ -8103,8 +8164,11 @@ else { cap &= ~CAknExtendedInputCapabilities::EInputEditorDisableVKB; - } - iEdwinExtension->iExtendedInputCapabilities->SetCapabilities( cap ); + } + if ( iEdwinExtension ) + { + iEdwinExtension->iExtendedInputCapabilities->SetCapabilities( cap ); + } } void CEikEdwin::ScrollViewToCursorLineL() @@ -8136,7 +8200,7 @@ void CEikEdwin::PerformRecordedOperationL() { - if ( iEdwinExtension->iDrawInvoked == CEikEdwinExtension::ENotDraw || + if ( iEdwinExtension && iEdwinExtension->iDrawInvoked == CEikEdwinExtension::ENotDraw || iEdwinExtension->iDrawInvoked == CEikEdwinExtension::EDrawing ) { if ( iEdwinExtension->iDrawInvoked == CEikEdwinExtension::ENotDraw ) @@ -8195,8 +8259,8 @@ UpdateScrollBarsL(); scroll = ETrue ; } - if ( scroll && iEdwinExtension->iDrawInvoked != - CEikEdwinExtension::EDrawing ) + if ( scroll && iEdwinExtension && + iEdwinExtension->iDrawInvoked != CEikEdwinExtension::EDrawing ) { ReportEdwinEventL( MEikEdwinObserver::EEventNavigation ); } @@ -8227,7 +8291,7 @@ // for smiley support void CEikEdwin::EnableSmileySupportL( TBool aEnableSmiley ) { - if ( aEnableSmiley && !AknLayoutUtils::LayoutMirrored() ) + if ( aEnableSmiley && !AknLayoutUtils::LayoutMirrored() && iEdwinExtension ) { if ( !iEdwinExtension->iSmiley ) { @@ -8244,7 +8308,7 @@ TextLayout()->SetCustomWrap( iEdwinExtension->iSmileyWrap ); } } - else + else if ( iEdwinExtension ) { delete iEdwinExtension->iSmiley; iEdwinExtension->iSmiley = NULL; @@ -8257,7 +8321,12 @@ TBool CEikEdwin::IsSmileyEnabled() const { - return ( iEdwinExtension->iSmiley != NULL ); + TBool ret = EFalse; + if ( iEdwinExtension ) + { + ret = ( iEdwinExtension->iSmiley != NULL ); + } + return ret; } void CEikEdwin::DrawSmileyInTextL( RRegion& rgn, const TRect& aDrawRect, @@ -8288,7 +8357,7 @@ TInt smileyWidth( aFont.TextWidthInPixels( KSmileyString ) ); for ( TInt i( 0 ); i < text.Length(); i++ ) { - if ( CSmileyManager::IsSmileyCode( text[i] ) ) + if ( iEdwinExtension && CSmileyManager::IsSmileyCode( text[i] ) ) { TInt x( pt.iX + aFont.TextWidthInPixels( text.Left( i ) ) ); TRect clipRect( x, aDrawRect.iTl.iY, x + smileyWidth, @@ -8304,7 +8373,7 @@ void CEikEdwin::ConvertVisibleTextForSmileyL( TBool aTextToCode ) { - if ( !iEdwinExtension->iSmiley && !iTextView ) + if ( iEdwinExtension && !iEdwinExtension->iSmiley && !iTextView ) { return; } @@ -8315,7 +8384,7 @@ void CEikEdwin::ConvertTextForSmileyL( TCursorSelection aSelect, TBool aTextToCode, TBool aRedraw ) { - if ( iEdwinExtension->iSmiley && !iEdwinExtension->iInlineEditing ) + if ( iEdwinExtension && iEdwinExtension->iSmiley && !iEdwinExtension->iInlineEditing ) { if ( aTextToCode ) { @@ -8387,7 +8456,7 @@ void CEikEdwin::ConvertSmileyIconToTextL( TInt aStartPos, TDes& aText ) { - if ( iEdwinExtension->iSmiley ) + if ( iEdwinExtension && iEdwinExtension->iSmiley ) { iEdwinExtension->iSmiley->ConvertTextForSmileyL( aStartPos, aText, EFalse ); @@ -8396,7 +8465,7 @@ void CEikEdwin::ExtendedRangeForSmiley( TCursorSelection& aSelect ) { - if ( iEdwinExtension->iSmiley ) + if ( iEdwinExtension && iEdwinExtension->iSmiley ) { TInt textLength( TextLength() ); TInt start = aSelect.LowerPos() - CSmileyManager::KMaxLength; @@ -8416,7 +8485,7 @@ TBool CEikEdwin::ConvertSmileyForDeleteL( TInt aDocPos, TBool aBackSpace ) { - if ( !iEdwinExtension->iSmiley || ( aDocPos == 0 && aBackSpace ) || + if ( iEdwinExtension && !iEdwinExtension->iSmiley || ( aDocPos == 0 && aBackSpace ) || ( aDocPos == TextLength() && !aBackSpace ) ) { return EFalse; @@ -8454,7 +8523,7 @@ void CEikEdwin::ConvertSmileyForDeleteL( const TCursorSelection &aSelect ) { - if ( !iEdwinExtension->iSmiley ) + if ( iEdwinExtension && !iEdwinExtension->iSmiley ) { return; } @@ -8485,7 +8554,10 @@ TBool ret( EFalse ); TCursorSelection select( Selection() ); TInt cursor( select.iCursorPos ); - iEdwinExtension->iSmiley->HandleSetCursor( aOldCursor, cursor ); + if ( iEdwinExtension ) + { + iEdwinExtension->iSmiley->HandleSetCursor( aOldCursor, cursor ); + } if ( cursor != select.iCursorPos ) { if ( select.iAnchorPos == select.iCursorPos ) @@ -8509,7 +8581,7 @@ TBool aSelect ) { TBool ret( EFalse ); - if ( iEdwinExtension->iSmiley ) + if ( iEdwinExtension && iEdwinExtension->iSmiley ) { TInt oldPos( CursorPos() ); TInt curPos( oldPos ); @@ -8533,14 +8605,14 @@ void CEikEdwin::SetSelectionVisibilityL( TBool aIsVisable ) { - if ( iEdwinExtension->iSmiley && !aIsVisable ) + if ( iEdwinExtension && iEdwinExtension->iSmiley && !aIsVisable ) { iTextView->SetSelectionVisibilityL( aIsVisable ); HandleSelectionForSmiley( TCursorSelection( 0, 0 ) ); } else { - if ( iEdwinExtension->iSmiley ) + if ( iEdwinExtension && iEdwinExtension->iSmiley ) { HandleSelectionForSmiley( Selection() ); } @@ -8606,7 +8678,7 @@ { // We can't move enough, we have exceeded the border // (at the beginning or end of the document) - if ( aPixelsToScroll != 0 ) + if ( aPixelsToScroll != 0 && iEdwinExtension ) { if ( aPixelsToScroll < 0 ) { @@ -8630,7 +8702,7 @@ } } - if ( scrolledPixels != 0 ) + if ( scrolledPixels != 0 && iEdwinExtension ) { iEdwinExtension->iScrolledDelta = scrolledPixels; TRAP_IGNORE( UpdateVertScrollBarThumbL() ); @@ -8658,21 +8730,24 @@ // After that we have to move to mode where we use ScrollDisplayPixelsL // to detect if we exceed border again. TBool adjustScrolling( EFalse ); - if ( aPixelsToScroll > 0 && iEdwinExtension->iEndBorderExceeded ) - { - if ( aPixelsToScroll > - iEdwinExtension->iPixelsOutOfBorder ) - { - adjustScrolling = ETrue; - } - } - else if ( aPixelsToScroll < 0 && iEdwinExtension->iStartBorderExceeded ) - { - if ( aPixelsToScroll < - iEdwinExtension->iPixelsOutOfBorder ) - { - adjustScrolling = ETrue; - } - } - + if ( iEdwinExtension ) + { + if ( aPixelsToScroll > 0 && iEdwinExtension->iEndBorderExceeded ) + { + if ( aPixelsToScroll > - iEdwinExtension->iPixelsOutOfBorder ) + { + adjustScrolling = ETrue; + } + } + else if ( aPixelsToScroll < 0 && iEdwinExtension->iStartBorderExceeded ) + { + if ( aPixelsToScroll < - iEdwinExtension->iPixelsOutOfBorder ) + { + adjustScrolling = ETrue; + } + } + } + if ( adjustScrolling ) { // we are scrolling over the border, calculate how many @@ -8685,23 +8760,26 @@ // We are out of borders. Call scrolling function that supports bounce-effect TRAP_IGNORE( iTextView->ScrollDisplayPixelsNoLimitBorderL( aPixelsToScroll ) ); - // Update variable that tells how near the border we are. - iEdwinExtension->iPixelsOutOfBorder += aPixelsToScroll; - - if ( iEdwinExtension->iStartBorderExceeded - && iEdwinExtension->iPixelsOutOfBorder <= 0 ) - { - // We are inside borders, reset flag and tell to caller - iEdwinExtension->iStartBorderExceeded = EFalse; - aEndOfBounce = ETrue; - } - else if ( iEdwinExtension->iEndBorderExceeded - && iEdwinExtension->iPixelsOutOfBorder >= 0 ) - { - // we are inside borders, reset flag and tell to caller - iEdwinExtension->iEndBorderExceeded = EFalse; - aEndOfBounce = ETrue; - } + if ( iEdwinExtension ) + { + // Update variable that tells how near the border we are. + iEdwinExtension->iPixelsOutOfBorder += aPixelsToScroll; + + if ( iEdwinExtension->iStartBorderExceeded + && iEdwinExtension->iPixelsOutOfBorder <= 0 ) + { + // We are inside borders, reset flag and tell to caller + iEdwinExtension->iStartBorderExceeded = EFalse; + aEndOfBounce = ETrue; + } + else if ( iEdwinExtension->iEndBorderExceeded + && iEdwinExtension->iPixelsOutOfBorder >= 0 ) + { + // we are inside borders, reset flag and tell to caller + iEdwinExtension->iEndBorderExceeded = EFalse; + aEndOfBounce = ETrue; + } + } if ( aPixelsToScroll != 0 ) { @@ -8719,7 +8797,12 @@ // TInt CEikEdwin::PixelsOutOfBorder() const { - return iEdwinExtension->iPixelsOutOfBorder; + TInt ret = 0; + if ( iEdwinExtension ) + { + ret = iEdwinExtension->iPixelsOutOfBorder; + } + return ret; } // --------------------------------------------------------------------------- @@ -8736,7 +8819,10 @@ // If aEnable is EFalse, Position scrolling mode is in use. // If aEnable is ETrue, Rate scrolling mode is in use. - iEdwinExtension->iUseRateScroll = aEnable; + if ( iEdwinExtension ) + { + iEdwinExtension->iUseRateScroll = aEnable; + } } // --------------------------------------------------------------------------- @@ -8746,7 +8832,7 @@ void CEikEdwin::StoreCursorState() { CAknEdwinState* state( EditorState() ); - if ( state && state->Flags() & EAknEditorFlagTextCursorVisible ) + if ( iEdwinExtension && state && state->Flags() & EAknEditorFlagTextCursorVisible ) { TRAP_IGNORE( SetCursorVisibilityL( EFalse ) ); iEdwinExtension->iCursorWasVisible = ETrue; @@ -8759,7 +8845,7 @@ // void CEikEdwin::RestoreCursorState() { - if ( iEdwinExtension->iCursorWasVisible ) + if ( iEdwinExtension && iEdwinExtension->iCursorWasVisible ) { TRAP_IGNORE( SetCursorVisibilityL( ETrue ) ); iEdwinExtension->iCursorWasVisible = EFalse; @@ -8792,7 +8878,8 @@ window.BeginRedraw( viewRect ); gc.Activate( window ); - if ( !AknsDrawUtils::DrawBackground( + if ( iEdwinExtension && + !AknsDrawUtils::DrawBackground( iEdwinExtension->iSkinInstance, SkinBackgroundControlContext(), this, @@ -8822,18 +8909,21 @@ void CEikEdwin::HandleSelectionForSmiley( TCursorSelection aSelect ) { - if ( !iEdwinExtension->iSmiley ) - { - return; - } - if ( iCustomDrawer ) - { - iEdwinExtension->iSmiley->SetHighlightColor( - iCustomDrawer->SystemColor( TLogicalRgb::ESystemSelectionBackgroundIndex, - KRgbWhite ) ); - } - iEdwinExtension->iSmiley->HandleSelection( aSelect.LowerPos(), - aSelect.Length() ); + if ( iEdwinExtension ) + { + if ( !iEdwinExtension->iSmiley ) + { + return; + } + if ( iCustomDrawer ) + { + iEdwinExtension->iSmiley->SetHighlightColor( + iCustomDrawer->SystemColor( TLogicalRgb::ESystemSelectionBackgroundIndex, + KRgbWhite ) ); + } + iEdwinExtension->iSmiley->HandleSelection( aSelect.LowerPos(), + aSelect.Length() ); + } } // --------------------------------------------------------------------------- diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/EikStd/coctlsrc/EIKLBX.CPP --- a/uifw/EikStd/coctlsrc/EIKLBX.CPP Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/EikStd/coctlsrc/EIKLBX.CPP Fri Apr 30 17:20:48 2010 +0100 @@ -2887,7 +2887,7 @@ TEikScrollBarFrameLayout layout; CreateScrollBarFrameLayout(layout); TBool sizeChanged=iSBFrame->TileL(&hSbarModel, &vSbarModel, clientRect, inclusiveRect, layout); - if (iListBoxExt->UpdateScrollBarsColors()) + if ( iListBoxExt && iListBoxExt->UpdateScrollBarsColors() ) UpdateScrollBarsColors(); if (!sizeChanged) return; @@ -3014,11 +3014,7 @@ _AKNTRACE_FUNC_EXIT; return; } - if( !iListBoxExt ) - { - _AKNTRACE_FUNC_EXIT; - return; - } + CEikButtonGroupContainer *bgc; CCoeControl* MSK( NULL ); CEikCba* cba( NULL ); @@ -3056,16 +3052,22 @@ // marking still works even MSK isn't changed if ( err ) { - iListBoxExt->iSelectionModeEnabled = EFalse; + if ( iListBoxExt ) + { + iListBoxExt->iSelectionModeEnabled = EFalse; + } _AKNTRACE_FUNC_EXIT; return; } cba->DrawNow(); - iListBoxExt->iSelectionModeEnabled = ETrue; + if ( iListBoxExt ) + { + iListBoxExt->iSelectionModeEnabled = ETrue; + } } // remove stacked MSK - if( !aEnable && iListBoxExt->iSelectionModeEnabled ) + if( !aEnable && iListBoxExt && iListBoxExt->iSelectionModeEnabled ) { if( ( MSK && cba->ControlId( MSK ) == EAknSoftkeyMark ) || ( MSK && cba->ControlId( MSK ) == EAknSoftkeyUnmark ) ) @@ -3074,11 +3076,13 @@ } iListBoxExt->iSelectionModeEnabled = EFalse; // just in case } - - TInt count = iListBoxExt->iSelectionObservers.Count(); - for ( int i=0; i < count; i++ ) - { - iListBoxExt->iSelectionObservers[i]->SelectionModeChanged( this, aEnable ); + if ( iListBoxExt ) + { + TInt count = iListBoxExt->iSelectionObservers.Count(); + for ( int i=0; i < count; i++ ) + { + iListBoxExt->iSelectionObservers[i]->SelectionModeChanged( this, aEnable ); + } } _AKNTRACE_FUNC_EXIT; } @@ -3098,7 +3102,7 @@ iView->ClearFlags(CListBoxView::EItemCountModified); - if ( iListBoxExt->iLongTappedItem != KErrNotFound ) + if ( iListBoxExt && iListBoxExt->iLongTappedItem != KErrNotFound ) { iListBoxExt->EnableHighlight( EFalse ); } @@ -3394,7 +3398,8 @@ { selectionMode = CListBoxView::ENoSelection; UpdateMarkUnmarkMSKL(); - if (IsSelectionMarkKeys(code, aKeyEvent.iScanCode, iListBoxExt->iWesternVariant)) + if ( iListBoxExt + && IsSelectionMarkKeys( code, aKeyEvent.iScanCode, iListBoxExt->iWesternVariant ) ) { __KeyDebug(ETrue, "SelectionMarkKey") View()->ClearSelectionAnchorAndActiveIndex(); @@ -3405,7 +3410,7 @@ // CAknGrid marking is implemeted in avkon.dll. But we still need to disable short // hash mark in here. - if ( iListBoxFlags & EMultipleSelection && + if ( iListBoxExt && iListBoxFlags & EMultipleSelection && iListBoxFlags & EShiftEnterMarks && aType == EEventKeyUp ) { if ( aKeyEvent.iScanCode == EStdKeyLeftArrow || @@ -3617,7 +3622,8 @@ } } - if ( ScrollingDisabled() || ( !iListBoxExt->MovePhysicsCursorL( moveto, selectionMode ) ) ) + if ( ScrollingDisabled() + || ( iListBoxExt && !iListBoxExt->MovePhysicsCursorL( moveto, selectionMode ) ) ) { iView->MoveCursorL(moveto, selectionMode); } @@ -3666,7 +3672,8 @@ } } - if ( ScrollingDisabled() || ( !iListBoxExt->MovePhysicsCursorL( moveto, selectionMode ) ) ) + if ( ScrollingDisabled() + || ( iListBoxExt && !iListBoxExt->MovePhysicsCursorL( moveto, selectionMode ) ) ) { iView->MoveCursorL(moveto, selectionMode); } @@ -3751,7 +3758,7 @@ // if(switchMSK) { - if( selectionMode == CListBoxView::EDisjointMarkSelection ) + if( iListBoxExt && selectionMode == CListBoxView::EDisjointMarkSelection ) { // if hash and either up or down pressed -> no short marking iListBoxExt->iShortHashMark = EFalse; @@ -3810,7 +3817,7 @@ // only if a markable list is active, otherwise the simulated event might open // the selected item, which we don't want. if((iListBoxFlags & EMultipleSelection) && (iListBoxFlags & EShiftEnterMarks) && - iListBoxExt->iWesternVariant && + iListBoxExt && iListBoxExt->iWesternVariant && iListBoxExt->iAknFepHashKeySelection && iListBoxExt->iQwertyMode == EFalse && aType == EEventKeyUp && aKeyEvent.iScanCode == EStdKeyHash && @@ -3912,10 +3919,17 @@ case MEikListBoxObserver::EEventPanningStarted: { iItemDrawer->SetFlags( CListItemDrawer::EDisableMarquee ); - if ( aEvent == MEikListBoxObserver::EEventFlickStarted ) - iListBoxExt->SetFlickOngoing( ETrue ); - else - iListBoxExt->SetPanningOngoing( ETrue ); + if ( iListBoxExt ) + { + if ( aEvent == MEikListBoxObserver::EEventFlickStarted ) + { + iListBoxExt->SetFlickOngoing( ETrue ); + } + else + { + iListBoxExt->SetPanningOngoing( ETrue ); + } + } break; } @@ -3923,15 +3937,17 @@ case MEikListBoxObserver::EEventPanningStopped: { iItemDrawer->ClearFlags( CListItemDrawer::EDisableMarquee ); - if ( aEvent == MEikListBoxObserver::EEventFlickStopped ) - { - iListBoxExt->SetFlickOngoing( EFalse ); - } - else - { - iListBoxExt->SetPanningOngoing( EFalse ); - } - + if ( iListBoxExt ) + { + if ( aEvent == MEikListBoxObserver::EEventFlickStopped ) + { + iListBoxExt->SetFlickOngoing( EFalse ); + } + else + { + iListBoxExt->SetPanningOngoing( EFalse ); + } + } break; } } @@ -3980,7 +3996,7 @@ EXPORT_C void CEikListBox::HandlePhysicsScrollEventL( TInt aDeltaPixels ) { _AKNTRACE_FUNC_ENTER; - if ( iListBoxExt->iPhysics ) + if ( iListBoxExt && iListBoxExt->iPhysics ) { iListBoxExt->InitPhysicsL(); @@ -3995,7 +4011,7 @@ EXPORT_C void CEikListBox::HandleScrollEventL(CEikScrollBar* aScrollBar,TEikScrollEvent aEventType) { _AKNTRACE_FUNC_ENTER; - if ( iListBoxExt->iSingleClickEnabled ) + if ( iListBoxExt && iListBoxExt->iSingleClickEnabled ) { iListBoxExt->EnableHighlight( EFalse ); iView->DrawItem( iView->CurrentItemIndex() ); @@ -4138,17 +4154,17 @@ } #endif - if ( iListBoxExt->iPhysics ) + if ( iListBoxExt && iListBoxExt->iPhysics ) { iListBoxExt->InitPhysicsL(); TInt deltaPixels = newThumbPos; #ifdef _DEBUG - RDebug::Print( _L( "CListBox::HandleScrollEventL, deltaPixels = %d" ), deltaPixels ); + RDebug::Print( _L( "CListBox::HandleScrollEventL, deltaPixels = %d" ), deltaPixels ); #endif // _DEBUG TPoint newPosition( iListBoxExt->iViewPosition.iX, deltaPixels + iView->ViewRect().Height() / 2 ); - iListBoxExt->ViewPositionChanged( newPosition ); + iListBoxExt->ViewPositionChanged( newPosition ); } else { @@ -4170,7 +4186,9 @@ // If the event has changed thumb position, then update scroll bar // unless physics is used. In that case thumb is updated via // CEikListBox::ScrollView. - if ( AknLayoutUtils::PenEnabled() && newThumbPos != newThumbPosBeforeCorrecting && !iListBoxExt->iPhysics ) + if ( AknLayoutUtils::PenEnabled() + && newThumbPos != newThumbPosBeforeCorrecting + && iListBoxExt && !iListBoxExt->iPhysics ) { UpdateScrollBarThumbs(); } @@ -4189,7 +4207,6 @@ return; } - CheckCreateExtensionL(); if (!(iListBoxFlags & ELeftDownInViewRect)) { _AKNTRACE_FUNC_EXIT; @@ -5364,7 +5381,7 @@ // switch off selection (marking) mode when we lose focus // this also corrects situation, where FEP-menu is launched // and thus listbox doesn't receive shift up event - if (NULL != iListBoxExt) + if ( iListBoxExt ) { if ((iListBoxFlags & EMultipleSelection) && (iListBoxFlags & EShiftEnterMarks)) { @@ -5384,9 +5401,9 @@ iView->SetEmphasized(EFalse); iView->HideMatcherCursor(); - if (iItemEditor && - (iListBoxFlags & EPaintedSelection) && - (NULL != iListBoxExt && iListBoxExt->ReasonForFocusLost() == EFocusLostToExternalControl)) + if ( iItemEditor && + ( iListBoxFlags & EPaintedSelection ) && + ( iListBoxExt && iListBoxExt->ReasonForFocusLost() == EFocusLostToExternalControl ) ) { iView->DeselectItem(CurrentItemIndex()); } @@ -5738,7 +5755,7 @@ if ( iView ) { - iView->SetItemOffsetInPixels( 0 ); + iView->SetItemOffsetInPixels( 0 ); } // make sure that highlight is removed and long tap is canceled @@ -5985,9 +6002,15 @@ { rect.iTl.iX += iItemDrawer->MarkColumn() + iItemDrawer->MarkGutter(); } - iListBoxExt->SetReasonForFocusLost(EFocusLostToInternalEditor); + if ( iListBoxExt ) + { + iListBoxExt->SetReasonForFocusLost(EFocusLostToInternalEditor); + } itemEditor->StartEditingL(*this,rect,index,aMaxLength); - iListBoxExt->SetReasonForFocusLost(EFocusLostToExternalControl); + if ( iListBoxExt ) + { + iListBoxExt->SetReasonForFocusLost(EFocusLostToExternalControl); + } ReportListBoxEventL( MEikListBoxObserver::EEventEditingStarted ); } _AKNTRACE_FUNC_EXIT; @@ -6115,18 +6138,21 @@ EXPORT_C void CEikListBox::DisableScrolling( TBool aDisabled ) { _AKNTRACE_FUNC_ENTER; - iListBoxExt->iScrollingDisabled = aDisabled; - iView->iExtension->iScrollingDisabled = aDisabled; - - if ( aDisabled && iListBoxExt->iPhysics ) - { - delete iListBoxExt->iPhysics; - iListBoxExt->iPhysics = NULL; - iView->SetItemOffsetInPixels( 0 ); - } - else if ( !aDisabled && !iListBoxExt->iPhysics && CAknPhysics::FeatureEnabled() ) - { - iListBoxExt->iPhysics = CAknPhysics::NewL( *iListBoxExt, this); + if ( iListBoxExt ) + { + iListBoxExt->iScrollingDisabled = aDisabled; + iView->iExtension->iScrollingDisabled = aDisabled; + + if ( aDisabled && iListBoxExt->iPhysics ) + { + delete iListBoxExt->iPhysics; + iListBoxExt->iPhysics = NULL; + iView->SetItemOffsetInPixels( 0 ); + } + else if ( !aDisabled && !iListBoxExt->iPhysics && CAknPhysics::FeatureEnabled() ) + { + iListBoxExt->iPhysics = CAknPhysics::NewL( *iListBoxExt, this); + } } _AKNTRACE_FUNC_EXIT; } @@ -6138,19 +6164,29 @@ // EXPORT_C TBool CEikListBox::ScrollingDisabled() { - return !iListBoxExt->iPhysics || iListBoxExt->iScrollingDisabled; + if ( iListBoxExt ) + { + return !iListBoxExt->iPhysics || iListBoxExt->iScrollingDisabled; + } + else + { + return ETrue; + } } EXPORT_C void CEikListBox::SetPointerEventFilterDisabledL( const CArrayFix& aItemIndexes ) { _AKNTRACE_FUNC_ENTER; - iListBoxExt->iMutiTappingItems.Reset(); - - for(TInt i=0; iiMutiTappingItems.InsertInOrderL( aItemIndexes.At(i) ); - } + if ( iListBoxExt ) + { + iListBoxExt->iMutiTappingItems.Reset(); + + for(TInt i=0; iiMutiTappingItems.InsertInOrderL( aItemIndexes.At(i) ); + } + } _AKNTRACE_FUNC_EXIT; } @@ -6206,8 +6242,8 @@ // EXPORT_C void CEikListBox::DisableSingleClick( TBool aDisabled ) { - _AKNTRACE_FUNC_ENTER; - if ( aDisabled && iListBoxExt->iSingleClickEnabled ) + _AKNTRACE_FUNC_ENTER; + if ( aDisabled && iListBoxExt && iListBoxExt->iSingleClickEnabled ) { iListBoxExt->DisableSingleClick(); } @@ -6235,11 +6271,11 @@ // EXPORT_C TBool CEikListBox::IsHighlightEnabled() { - _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_ENTER; TBool enabled( EFalse ); if ( !( iItemDrawer->Flags() & CListItemDrawer::EDisableHighlight ) ) { - if ( iListBoxExt->iSingleClickEnabled ) + if ( iListBoxExt && iListBoxExt->iSingleClickEnabled ) { enabled = !( iItemDrawer->Flags() & CListItemDrawer::ESingleClickDisabledHighlight ); @@ -6258,9 +6294,9 @@ _AKNTRACE_FUNC_ENTER; #ifdef _DEBUG RDebug::Print( _L( "CEikListBox::ScrollView, aOffset = %d, aDrawNow = %d" ), aOffset, aDrawNow ); -#endif // _DEBUG - - if ( aOffset != 0 ) +#endif // _DEBUG + + if ( iListBoxExt && aOffset != 0 ) { TInt itemHeight = iView->ItemHeight(); TInt viewHeight = iView->ViewRect().Size().iHeight; @@ -6334,7 +6370,10 @@ TRect rect(Rect()); // list position changed - iListBoxExt->iBackgroundDrawingSuppressed = ETrue; + if ( iListBoxExt ) + { + iListBoxExt->iBackgroundDrawingSuppressed = ETrue; + } UpdateScrollBarThumbs(); DrawNow(); if (iSBFrame && iSBFrame->VerticalScrollBar() && !iSBFrame->VerticalScrollBar()->OwnsWindow()) @@ -6345,7 +6384,10 @@ iSBFrame->DrawScrollBarsNow(); } } - iListBoxExt->iBackgroundDrawingSuppressed = EFalse; + if ( iListBoxExt ) + { + iListBoxExt->iBackgroundDrawingSuppressed = EFalse; + } } _AKNTRACE_FUNC_EXIT; } @@ -6617,7 +6659,8 @@ _AKNTRACE_FUNC_ENTER; TInt oldCurrentItemIndex = iView->CurrentItemIndex(); - if ( iListBoxExt->iReportDelayedPenDown && !iListBoxExt->iScrolling ) + if ( iListBoxExt && iListBoxExt->iReportDelayedPenDown + && !iListBoxExt->iScrolling ) { #ifdef RD_UI_TRANSITION_EFFECTS_LIST if ( aItemIndex != oldCurrentItemIndex ) @@ -6640,14 +6683,14 @@ iListBoxExt->iDelayedPointerDownEvent ); } - if ( iListBoxExt->iDelayedMultiselection ) + if ( iListBoxExt && iListBoxExt->iDelayedMultiselection ) { iItemDrawer->SetFlags( CListItemDrawer::EPressedDownState ); } iView->SetItemIndex( aItemIndex ); - if ( iListBoxExt->iMarkableListMarking ) + if ( iListBoxExt && iListBoxExt->iMarkableListMarking ) { if ( iListBoxExt->iMarkableListShiftKeyPressed ) { @@ -6677,7 +6720,7 @@ iView->DrawItem( oldCurrentItemIndex ); iView->DrawItem( aItemIndex ); - if ( iListBoxExt->iDelayedMultiselection ) + if ( iListBoxExt && iListBoxExt->iDelayedMultiselection ) { iListBoxFlags |= EStateChanged; Buffer()->iPressedIndex = aItemIndex; diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/EikStd/coctlsrc/EIKMENUP.CPP --- a/uifw/EikStd/coctlsrc/EIKMENUP.CPP Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/EikStd/coctlsrc/EIKMENUP.CPP Fri Apr 30 17:20:48 2010 +0100 @@ -2287,7 +2287,7 @@ numItemsInPane = iItemArray->Count(); } - if ( iExtension->iSct ) + if ( iExtension && iExtension->iSct ) { numItemsInPane++; } @@ -3766,7 +3766,7 @@ { TPointerEvent ptrEvent; ptrEvent.iType = TPointerEvent::EButton1Up; - menubar->HandlePointerEventL( ptrEvent ); + TRAP_IGNORE( menubar->HandlePointerEventL( ptrEvent ) ); } else { @@ -4284,6 +4284,7 @@ else { // Clicked out side submenu, parent handles this + iExtension->iDownOnMenuArea = EFalse; if ( iOwner ) { iExtension->CalculateParentEvent(aPointerEvent, parentEvent); @@ -4381,7 +4382,7 @@ iExtension->EnableHighlight( EFalse ); } - if ( iExtension->iPanningActive ) + if ( iExtension->iPanningActive && iExtension->iDownOnMenuArea ) { TPoint delta( 0, iExtension->iPrevPoint.iY - aPointerEvent.iPosition.iY ); @@ -4435,20 +4436,6 @@ CloseCascadeMenu(); } } - else - { - TInt oldSelected = iSelectedItem; - // update highlight to new item - if ( oldSelected != ii ) - { - iExtension->iPressedDown = EFalse; - } - TRect screenRect( TPoint( KMinTInt, KMinTInt ), - TPoint( KMaxTInt, KMaxTInt ) ); - TRect repeatRect( screenRect.iTl.iX, item->iPos, - screenRect.iBr.iX, item->iPos - + iItemHeight ); - } // item found, break break; } @@ -5104,7 +5091,7 @@ } else { - DoUpdateScrollBarL(); + TRAP_IGNORE( DoUpdateScrollBarL() ); } } _AKNTRACE_FUNC_EXIT; @@ -5383,7 +5370,7 @@ pointerEvent.iType = TPointerEvent::EButton1Up; // Sending a up event to scroll bar for dehighlighting // the scroll bar. - verScrollBar->HandlePointerEventL(pointerEvent); + TRAP_IGNORE ( verScrollBar->HandlePointerEventL(pointerEvent) ); iSBFrame->DrawScrollBarsDeferred(); ClaimPointerGrab( EFalse ); } diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/EikStd/coctlsrc/aknitemactionmenu.cpp --- a/uifw/EikStd/coctlsrc/aknitemactionmenu.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/EikStd/coctlsrc/aknitemactionmenu.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -510,7 +510,7 @@ } } // Inform collection that submenu was closed - if ( iStates.Find( informState ) != KErrNotFound ) + if ( informState && iStates.Find( informState ) != KErrNotFound ) { informState->ItemActionMenuClosed(); } diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/EikStd/coctlsrc/aknstyluspopupmenu.cpp --- a/uifw/EikStd/coctlsrc/aknstyluspopupmenu.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/EikStd/coctlsrc/aknstyluspopupmenu.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -119,7 +119,10 @@ // CAknStylusPopUpMenu::~CAknStylusPopUpMenu() { - iContent->SetObserver(NULL); + if ( iContent ) + { + iContent->SetObserver(NULL); + } if ( iIsDeleted ) { *iIsDeleted = ETrue; diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/EikStd/coctlsrc/akntoolbarextensionview.cpp --- a/uifw/EikStd/coctlsrc/akntoolbarextensionview.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/EikStd/coctlsrc/akntoolbarextensionview.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -487,13 +487,24 @@ *button, EColorControlBackground, KRgbWhite ) ); TRAP_IGNORE( AknLayoutUtils::OverrideControlColorL( *button, EColorButtonText, KRgbBlack ) ); + } + else + { + //Reset the pressed down text color when get the skin change message and + // KAknTbExtensionDsaMode isn't used. + TRgb pressDownColor; + if ( AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), + pressDownColor, KAknsIIDQsnTextColors, + EAknsCIQsnTextColorsCG11 ) == KErrNone ) + { + TRAP_IGNORE( AknLayoutUtils::OverrideControlColorL( *button, + EColorButtonTextPressed, pressDownColor ) ); + } } } } } - - // Remember to check here if iSelectedItem still is in iVisibleItems, and if // not then do something. if ( ( aType == KAknsMessageSkinChange || @@ -770,8 +781,22 @@ cell_tb_ext_pane_t1( useOutline ? 0 : 1 ).LayoutLine().FontId() ); aButton.SetTextFont( font ); - aButton.SetTextColorIds( KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG60 ); - + aButton.SetTextColorIds( KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG20 ); + + + //Using CAknButton default frame if KAknTbExtensionTransparent + //and KAknTbExtensionDsaMode are not defined. + if ( !( iExtension->ExtensionFlags() & KAknTbExtensionTransparent || + iExtension->ExtensionFlags() & KAknTbExtensionDsaMode ) ) + { + aButton.SetFrameAndCenterIds( + KAknsIIDQsnFrButtonNormal, KAknsIIDQsnFrButtonCenterNormal, + KAknsIIDQsnFrButtonPressed, KAknsIIDQsnFrButtonCenterPressed, + KAknsIIDQsnFrButtonInactive, KAknsIIDQsnFrButtonCenterInactive, + KAknsIIDQsnFrGrid, KAknsIIDQsnFrGridCenter, + KAknsIIDQsnFrButtonInactive, KAknsIIDQsnFrButtonCenterInactive ); + } + if ( iExtension->ExtensionFlags() & KAknTbExtensionDsaMode ) { AknLayoutUtils::OverrideControlColorL( aButton, @@ -779,6 +804,18 @@ AknLayoutUtils::OverrideControlColorL( aButton, EColorButtonText, KRgbBlack ); } + else + { + //Reset the pressed down text color when get the skin change message and + // KAknTbExtensionDsaMode isn't used. + TRgb pressDownColor; + if ( AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), pressDownColor, + KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG11 ) == KErrNone ) + { + AknLayoutUtils::OverrideControlColorL( aButton, + EColorButtonTextPressed, pressDownColor ); + } + } } diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/EikStd/coctlsrc/eikspmod.cpp --- a/uifw/EikStd/coctlsrc/eikspmod.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/EikStd/coctlsrc/eikspmod.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -1484,7 +1484,7 @@ if ( aLayoutId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS ) { layout = - aknLayoutScalable_Avkon.navi_pane( 10 ).LayoutLine(); + aknLayoutScalable_Avkon.navi_pane( 2 ).LayoutLine(); } else { @@ -1504,7 +1504,7 @@ if ( aLayoutId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS ) { layout = - aknLayoutScalable_Avkon.title_pane( 12 ).LayoutLine(); + aknLayoutScalable_Avkon.title_pane( 2 ).LayoutLine(); } else { @@ -1515,8 +1515,17 @@ } case EEikStatusPaneUidIndic: { - layout = - aknLayoutScalable_Avkon.uni_indicator_pane( 5 ).LayoutLine(); + if (aLayoutId + == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS) + { + layout + = aknLayoutScalable_Avkon.uni_indicator_pane( 1 ).LayoutLine(); + } + else + { + layout + = aknLayoutScalable_Avkon.uni_indicator_pane( 5 ).LayoutLine(); + } break; } case EEikStatusPaneUidBattery: diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/EikStd/dlgsrc/EIKDIALG.CPP --- a/uifw/EikStd/dlgsrc/EIKDIALG.CPP Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/EikStd/dlgsrc/EIKDIALG.CPP Fri Apr 30 17:20:48 2010 +0100 @@ -1917,104 +1917,133 @@ */ EXPORT_C void CEikDialog::TryExitL(TInt aButtonId) { - _AKNTRACE_FUNC_ENTER; - _AKNTRACE("iDialogFlags = %d, buttonId = %d", iDialogFlags, aButtonId); - if ( iDialogFlags & EEikDialogFlagNoUserExit ) + _AKNTRACE("CEikDialog::TryExitL iDialogFlags = %d, buttonId = %d", iDialogFlags, aButtonId); + if (iDialogFlags & EEikDialogFlagNoUserExit) { - return; + return; } // use delayed exit if pointer event handling is in progress - if ( Extension()->iPublicFlags.IsSet( CEikDialogExtension::EDelayedExit ) ) + if (Extension()->iPublicFlags.IsSet(CEikDialogExtension::EDelayedExit)) { Extension()->iButtonId = aButtonId; Extension()->StartDelayedExit(); + _AKNTRACE("CEikDialog::TryExitL return with delayedExit"); return; } - TBool effectTriggered = EFalse; - - TBool effectButton = aButtonId == EEikBidCancel - || aButtonId == EAknSoftkeyExit - || aButtonId == EAknSoftkeyBack - || aButtonId == EAknSoftkeyNo; + TBool effectButton = aButtonId == EEikBidCancel + || aButtonId == EAknSoftkeyExit + || aButtonId == EAknSoftkeyBack + || aButtonId == EAknSoftkeyNo; #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS - effectButton = effectButton - || aButtonId == EAknSoftkeyClose - || aButtonId == EAknSoftkeyDone - || aButtonId == EAknSoftkeyOk; + effectButton = effectButton + || aButtonId == EAknSoftkeyClose + || aButtonId == EAknSoftkeyDone + || aButtonId == EAknSoftkeyOk; #endif - CAknAppUi* aknAppUi = static_cast( iEikonEnv->EikAppUi() ); - if (GfxTransEffect::IsRegistered(this) && IsVisible() && effectButton + + TBool effectTriggered = EFalse; + CAknAppUi* aknAppUi = static_cast(iEikonEnv->EikAppUi()); + + if (!(iDialogFlags & EEikDialogFlagDelayEffects) + && GfxTransEffect::IsRegistered(this) && IsVisible() && effectButton #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS - && !(iDialogFlags&EEikDialogFlagSleeping) + && !(iDialogFlags & EEikDialogFlagSleeping) #endif - && (!aknAppUi->IsFullScreenApp() || aknAppUi->IsForeground()) + && (!aknAppUi->IsFullScreenApp() || aknAppUi->IsForeground()) && !IsBlankScreenDisplayed() - ) - { + ) + { CAknTransitionUtils::SetAllParents(this); GfxTransEffect::Begin(this, KGfxControlDisappearAction); GfxTransEffect::NotifyExternalState(ECaptureComponentsBegin, (const TDesC8*)this); TRect demarcation; - CAknTransitionUtils::GetDemarcation(CAknTransitionUtils::EPopup, - demarcation); + CAknTransitionUtils::GetDemarcation(CAknTransitionUtils::EPopup, demarcation); GfxTransEffect::SetDemarcation(this, demarcation); effectTriggered = ETrue; } - if (aButtonId!=EEikBidCancel) + if (aButtonId != EEikBidCancel) + { PrepareForFocusTransitionL(); - else if (!(iDialogFlags&EEikDialogFlagNotifyEsc)) + } + else if (!(iDialogFlags & EEikDialogFlagNotifyEsc)) + { goto finished; + } + if (!OkToExitL(aButtonId)) + { + if (effectTriggered) { - if ( effectTriggered ) - { - GfxTransEffect::NotifyExternalState( ECaptureComponentsAbort, - ( const TDesC8* ) this ); - GfxTransEffect::Abort( this ); - } - _AKNTRACE_FUNC_EXIT; - return; + GfxTransEffect::NotifyExternalState(ECaptureComponentsAbort, (const TDesC8*)this); + GfxTransEffect::Abort(this); } - if (aButtonId != EEikBidCancel) + _AKNTRACE("CEikDialog::TryExitL return with OkToExitL false"); + return; + } + + if (aButtonId != EEikBidCancel) + { GetAutoValues(); + } + finished: + if (iExitConfirmed) - *iExitConfirmed=((MappedCommandId( aButtonId ) ==EEikBidCancel)? 0: aButtonId); + { + *iExitConfirmed = MappedCommandId(aButtonId) == EEikBidCancel ? 0 : aButtonId; + } // Remove content observer in order to prevent unnecessary layout // calculations in dialog shutdown. - EnableContentObserver( EFalse ); - - if (iDialogFlags&EEikDialogFlagSleeping) + EnableContentObserver(EFalse); + + if (iDialogFlags & EEikDialogFlagSleeping) + { ExitSleepingDialog(); + } else { // Remove content observer in order to prevent unnecessary layout // calculations in dialog shutdown. - EnableContentObserver( EFalse ); - - if ( effectTriggered ) - { - MakeVisible(EFalse); - CAknTransitionUtils::MakeVisibleSubComponents( this, - CAknTransitionUtils::EForceInvisible ); - - GfxTransEffect::NotifyExternalState(ECaptureComponentsEnd, (const TDesC8*)this); - GfxTransEffect::End(this); + EnableContentObserver(EFalse); + + // The dialog is asked to postpone the effect after OkToExitL. + if ((iDialogFlags & EEikDialogFlagDelayEffects) && !effectTriggered) + { + if (GfxTransEffect::IsRegistered(this) && IsVisible() && effectButton + && (!aknAppUi->IsFullScreenApp() || aknAppUi->IsForeground()) + && !IsBlankScreenDisplayed() + ) + { + TRect demarcation; + CAknTransitionUtils::SetAllParents(this); + GfxTransEffect::Begin(this, KGfxControlDisappearAction); + GfxTransEffect::NotifyExternalState(ECaptureComponentsBegin, (const TDesC8*)this); + CAknTransitionUtils::GetDemarcation(CAknTransitionUtils::EPopup, demarcation); + GfxTransEffect::SetDemarcation(this, demarcation); + effectTriggered = ETrue; } - else - { - MakeVisible(EFalse); - CAknTransitionUtils::MakeVisibleSubComponents( this, - CAknTransitionUtils::EForceInvisible ); - GfxTransEffect::NotifyExternalState( ECaptureComponentsAbort, - ( const TDesC8* ) this ); - GfxTransEffect::Abort(this); + } + + if (effectTriggered) + { + MakeVisible(EFalse); + CAknTransitionUtils::MakeVisibleSubComponents(this, CAknTransitionUtils::EForceInvisible); + GfxTransEffect::NotifyExternalState(ECaptureComponentsEnd, (const TDesC8*)this); + GfxTransEffect::End(this); + } + else + { + // Why we need abort the effect here ?? + MakeVisible(EFalse); + CAknTransitionUtils::MakeVisibleSubComponents(this, CAknTransitionUtils::EForceInvisible); + GfxTransEffect::NotifyExternalState(ECaptureComponentsAbort, (const TDesC8*)this); + GfxTransEffect::Abort(this); } delete(this); } diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/EikStd/srvuiinc/eikkeysoundserver.h --- a/uifw/EikStd/srvuiinc/eikkeysoundserver.h Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/EikStd/srvuiinc/eikkeysoundserver.h Fri Apr 30 17:20:48 2010 +0100 @@ -266,7 +266,6 @@ virtual void MapcPlayComplete(TInt aError); virtual void DoPlay(); private: - void LoadAudioDataL(RFs& aFs, const TDesC& aFileName, TDes8& aDes); void DoSetVolume(CMdaAudioPlayerUtility* aAudioPlayer); // From MMdaObjectStateChangeObserver @@ -274,11 +273,10 @@ TInt aErrorCode); public: CMdaAudioPlayerUtility* iAudioPlayer; - HBufC8* iAudioData; private: TBool iPlaying; TBool iPrepared; - CMdaServer* iMdaServer; + TFileName iFileName; }; diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/EikStd/srvuisrc/eikkeysoundserver.cpp --- a/uifw/EikStd/srvuisrc/eikkeysoundserver.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/EikStd/srvuisrc/eikkeysoundserver.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -314,6 +314,11 @@ aPlaySelf = ETrue; } + if(!iATSoundServerAPI) + { + aPlaySelf = ETrue; + } + if(!aPlaySelf && iATSoundServerAPI) { TAudioThemeEvent event = static_cast(aSid); @@ -425,7 +430,10 @@ RemoveSids(iClientUid); if (iHasLockedContext) { - iServer->SetContextLocked(EFalse); + if( iServer ) + { + iServer->SetContextLocked(EFalse); + } } if (iOwnsDefaultSounds) { @@ -1120,56 +1128,16 @@ CAknFileSoundInfo::~CAknFileSoundInfo() { delete iAudioPlayer; - delete iAudioData; } void CAknFileSoundInfo::InitL(const TDesC& aFileName, CMdaServer* aMdaServer) { LOGTEXT(_L("CAknFileSoundInfo::InitL() - Filename:")); LOGTEXT(aFileName); - - iMdaServer = aMdaServer; - - delete iAudioData; - iAudioData = NULL; - - RFs fsSession; - User::LeaveIfError( fsSession.Connect() ); - CleanupClosePushL(fsSession); - - TEntry entry; - User::LeaveIfError(fsSession.Entry(aFileName, entry)); - TInt fileSize = entry.iSize; - - LOGTEXT1(_L(" CAknFileSoundInfo::InitL() - File size:%d"), fileSize); - - iAudioData = HBufC8::NewMaxL(fileSize); - - TPtr8 dataPtr = iAudioData->Des(); - LoadAudioDataL(fsSession, aFileName, dataPtr); - - CleanupStack::PopAndDestroy(); // fsSession - + iFileName = aFileName; LOGTEXT(_L(" CAknFileSoundInfo::InitL() - Exit")); } - -void CAknFileSoundInfo::LoadAudioDataL(RFs& aFs, const TDesC& aFileName, TDes8& aDes) - { - RDebug::Print(_L("CAknFileSoundInfo::LoadAudioDataL().")); - - RFile file; - User::LeaveIfError( file.Open(aFs, aFileName,EFileRead|EFileShareAny) ); - CleanupClosePushL(file); - TInt error = file.Read(aDes, aDes.Length()); - file.Close(); - CleanupStack::Pop(); //file - User::LeaveIfError(error); - - LOGTEXT(_L(" CAknFileSoundInfo::LoadAudioDataL() - Exit")); - } - - void CAknFileSoundInfo::PlayL() { LOGTEXT(_L("CAknFileSoundInfo::PlayL().")); @@ -1179,9 +1147,7 @@ Stop(); // Create audio player. DoPlay() will be called in all circumstances. - iAudioPlayer = CMdaAudioPlayerUtility::NewDesPlayerReadOnlyL( - *iAudioData, *this, iPriority, (TMdaPriorityPreference)iPreference, iMdaServer); - + iAudioPlayer = CMdaAudioPlayerUtility::NewFilePlayerL(iFileName, *this); LOGTEXT(_L(" CAknFileSoundInfo::PlayL() - Exit")); } diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/eikctl/src/EIKCLB.CPP --- a/uifw/eikctl/src/EIKCLB.CPP Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/eikctl/src/EIKCLB.CPP Fri Apr 30 17:20:48 2010 +0100 @@ -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" @@ -812,25 +812,27 @@ EXPORT_C void CColumnListBoxView::Draw( const TRect* aRect ) const { - - if (RedrawDisabled() || !IsVisible()) + if ( RedrawDisabled() || !IsVisible() ) { return; } - TInt i=0; + TInt i = 0; - CColumnListBoxItemDrawer* lbi = (CColumnListBoxItemDrawer*)ItemDrawer(); - CEikListBox* listbox = static_cast( lbi->ColumnData()->Control() ); - MAknsSkinInstance *skin = AknsUtils::SkinInstance(); - MAknsControlContext *cc = AknsDrawUtils::ControlContext( listbox ); + CColumnListBoxItemDrawer* lbi = + static_cast( ItemDrawer() ); + CEikListBox* listbox = + static_cast( lbi->ColumnData()->Control() ); + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + MAknsControlContext* cc = AknsDrawUtils::ControlContext( listbox ); if ( !cc ) { cc = lbi->ColumnData()->SkinBackgroundContext(); } - // draw the whole background at once, this is faster than drawing it in separate items + // 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 @@ -856,9 +858,10 @@ } TInt firstPotentialItemIndex = iTopItemIndex; - TInt lastPotentialItemIndex = iTopItemIndex + NumberOfItemsThatFitInRect(iViewRect); + TInt lastPotentialItemIndex = + iTopItemIndex + NumberOfItemsThatFitInRect( iViewRect ) - 1; - if (iModel->NumberOfItems() == 0) + if ( iModel->NumberOfItems() == 0 ) { // Empty } @@ -866,15 +869,15 @@ { if ( lastPotentialItemIndex > iBottomItemIndex ) { - // Fix for EAAA-797CKC lastPotentialItemIndex = iBottomItemIndex; } + ITEM_EXISTS_BEGIN; - for (i = firstPotentialItemIndex; i <= lastPotentialItemIndex; i++) + for ( i = firstPotentialItemIndex; i <= lastPotentialItemIndex; i++ ) { - if (ITEM_EXISTS(i)) + if ( ITEM_EXISTS( i ) ) { - DrawItem(i); + DrawItem( i ); } else { @@ -885,7 +888,8 @@ if ( listbox && !listbox->BackgroundDrawingSuppressed() ) { - // clear the unused portion of the viewing area (this handles drawing the vertical line too :) + // Clear the unused portion of the viewing area + // (this handles drawing the vertical line too :) #ifdef RD_UI_TRANSITION_EFFECTS_LIST MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal( iGc ); @@ -895,32 +899,16 @@ } #endif // RD_UI_TRANSITION_EFFECTS_LIST - 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 ) ); - // also clear area behind scroll bar. - // this is a terrible hack, which is unfortunately needed since layouts - // leave 2 pixel (in double res) wide margins to both sides of the - // scroll bar, and there is no other way to do this. This hack is - // only really valid for main pane lists, but it does not seem to - // break popup lists, popup field lists or setting page radiobutton - // lists. - TRect sbbg( iViewRect ); // whole area behind scroll bar - TRect margin( iViewRect ); // it gets even worse in mirrored layouts + // Also draw the area behind scroll bar. + TRect sbbg( iViewRect ); // whole area behind scroll bar if ( AknLayoutUtils::LayoutMirrored() ) { sbbg.iBr.iX = iViewRect.iBr.iX - lbi->LafItemSize().iWidth; - - // in mirrored layouts we also need to draw a margin slice in right - TRect mainPane; - AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, - mainPane ); - TAknLayoutRect listscrollAppPane; - listscrollAppPane.LayoutRect( mainPane, - AknLayoutScalable_Avkon::listscroll_app_pane( 0 ) ); - - TInt rMargin = mainPane.iBr.iX - listscrollAppPane.Rect().iBr.iX; - margin.iTl.iX = margin.iBr.iX - rMargin; } else { @@ -937,22 +925,19 @@ iViewRect, usedPortionOfViewRect ); - AknsDrawUtils::Background( skin, cc, listbox, *iGc, sbbg ); - - if ( AknLayoutUtils::LayoutMirrored() ) + if ( !sbbg.IsEmpty() ) { - AknsDrawUtils::Background( skin, cc, listbox, *iGc, margin ); + AknsDrawUtils::Background( skin, cc, listbox, *iGc, sbbg ); } } else { iGc->SetBrushColor( BackColor() ); DrawUtils::ClearBetweenRects( *iGc, iViewRect, usedPortionOfViewRect ); - iGc->Clear( sbbg ); - - if ( AknLayoutUtils::LayoutMirrored() ) + + if ( !sbbg.IsEmpty() ) { - iGc->Clear( margin ); + iGc->Clear( sbbg ); } } diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/eikctl/src/EIKMFNE.CPP --- a/uifw/eikctl/src/EIKMFNE.CPP Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/eikctl/src/EIKMFNE.CPP Fri Apr 30 17:20:48 2010 +0100 @@ -1611,7 +1611,7 @@ if ( !ConsumesUpAndDownKeys() && (code==EKeyDownArrow || code==EKeyUpArrow)) return EKeyWasNotConsumed; - if ((aType==EEventKey) && (iCurrentField!=ENullIndex) && + if ((aType==EEventKey) && (iCurrentField!=ENullIndex) && iExtension && ( aKeyEvent.iRepeats == 0 || code == EKeyLeftArrow || code == EKeyRightArrow || code == EKeyDownArrow || code == EKeyUpArrow ) ) { @@ -1741,7 +1741,7 @@ { const CFont& font=*Font(); TBool drawAllFields = ETrue; - if (aHandleDeHighlight) + if ( aHandleDeHighlight && iExtension ) { iFields[iCurrentField]->HandleDeHighlight(font, *iEikonEnv, aDataAltered, aError); iExtension->iValidateValueCallBack.CallBack(); @@ -1843,7 +1843,7 @@ return; } } - if ( aAlignment >= ELayoutAlignNone && iExtension ) + if ( aAlignment >= ELayoutAlignNone ) { iAlignment = aAlignment; TUint capabilities = iExtension-> @@ -2439,7 +2439,7 @@ { if (i>=aFirstField) { - if (focused && ( iExtension->iHighlightAll || ( i == iCurrentField + if (focused && iExtension && ( iExtension->iHighlightAll || ( i == iCurrentField && iFields[i]->HighlightType() == CEikMfneField::EInverseVideo && iFields[i]->FieldText().Length() > 0 ) ) && !isEmpty ) { @@ -2696,12 +2696,15 @@ GetCursorInfo( cursorPosition, cursorHeight, cursorWidth, cursorAscent ); iEikonEnv->DrawCursor(this, cursorPosition, cursorWidth, cursorAscent, cursorHeight); - iExtension->iCursorShown = ETrue; + if ( iExtension ) + { + iExtension->iCursorShown = ETrue; + } } void CEikMfne::HideCursor() { - if ( iExtension->iCursorShown ) + if ( iExtension && iExtension->iCursorShown ) { iEikonEnv->HideCursor(this); iExtension->iCursorShown = EFalse; @@ -4577,7 +4580,7 @@ EXPORT_C void CEikMfne::MakeVisible( TBool aVisible ) { CEikBorderedControl::MakeVisible( aVisible ); - if ( !aVisible && iExtension->iCursorShown ) + if ( !aVisible && iExtension && iExtension->iCursorShown ) { HideCursor(); } diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/eikctl/src/EIKSECED.CPP --- a/uifw/eikctl/src/EIKSECED.CPP Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/eikctl/src/EIKSECED.CPP Fri Apr 30 17:20:48 2010 +0100 @@ -230,6 +230,7 @@ TBool iWindowSet; TBool iLaunchPenInputAutomatic; TBool iPartialScreenInput; + TBool iLockQuerySCT; }; EXPORT_C void CEikSecretEditor::AknSetFont(const CFont &aFont) @@ -582,16 +583,18 @@ gc.UseFont(iFont); TSize size=iBorder.SizeDelta(); - - if ( iRevealSecretText ) - { - gc.DrawText( iSecCharArr->Des(), iExtension->iTextRect, - iAscent, iAlign, 0 ); - } - else - { - gc.DrawText(iBuf, iExtension->iTextRect, iAscent, iAlign, 0); - } + if ( iExtension ) + { + if ( iRevealSecretText ) + { + gc.DrawText( iSecCharArr->Des(), iExtension->iTextRect, + iAscent, iAlign, 0 ); + } + else + { + gc.DrawText(iBuf, iExtension->iTextRect, iAscent, iAlign, 0); + } + } gc.DiscardFont(); } @@ -623,11 +626,14 @@ void CEikSecretEditor::ReportUpdate() { - TRAP_IGNORE ( - iExtension->iExtendedInputCapabilities->ReportEventL( - CAknExtendedInputCapabilities::MAknEventObserver::EControlContentUpdatedInternally, - NULL ); - ) + if ( iExtension ) + { + TRAP_IGNORE ( + iExtension->iExtendedInputCapabilities->ReportEventL( + CAknExtendedInputCapabilities::MAknEventObserver::EControlContentUpdatedInternally, + NULL ); + ) + } } EXPORT_C void CEikSecretEditor::AppendCharacterL( TInt aKeyCode ) @@ -728,7 +734,7 @@ TBool oldShown = iRevealSecretText; iRevealSecretText = aReveal; - if ( !COMPARE_BOOLS( oldShown, iRevealSecretText ) ) + if ( !COMPARE_BOOLS( oldShown, iRevealSecretText ) && iExtension ) { TInt caps = iExtension->iExtendedInputCapabilities->Capabilities(); if ( iRevealSecretText ) @@ -784,12 +790,11 @@ EXPORT_C void CEikSecretEditor::HandlePointerEventL(const TPointerEvent& aPointerEvent) { - if ( iFepState ) + if ( iFepState && iExtension ) { if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) { - if ( iExtension - && iExtension->iFeedback ) + if ( iExtension->iFeedback ) { // tactile feedback is always given on down event iExtension->iFeedback->InstantFeedback( this, ETouchFeedbackEdit ); @@ -809,9 +814,9 @@ } } else if ( aPointerEvent.iType == TPointerEvent::EButton1Up && - iExtension && !iExtension->iDisablePenInput) + !iExtension->iDisablePenInput ) { - if (iExtension && iExtension->iFeedback) + if ( iExtension->iFeedback ) { // Edit feedback is given if PenInput will open on up event iExtension->iFeedback->InstantFeedback( this, @@ -1049,7 +1054,26 @@ ret = KErrGeneral; } break; - + case ELockQuerySCT: + { + if ( iExtension ) + { + iExtension->iLockQuerySCT = aFeatureParam; + CAknEdwinState* edwinState = STATIC_CAST( CAknEdwinState*,State(KNullUid) ); + if ( iExtension->iLockQuerySCT && edwinState ) + { + edwinState->SetSpecialCharacterTableResourceId( + R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_FOR_LOCKCODE_SYMBOL_INPUT ); + TRAP_IGNORE( edwinState->ReportAknEdStateEventL( + MAknEdStateObserver::EAknEdwinStateEventStateUpdate ) ); + } + } + else + { + ret = KErrGeneral; + } + } + break; default: ret = KErrNotSupported; break; @@ -1101,7 +1125,18 @@ ret = KErrGeneral; } break; - + case ELockQuerySCT: + { + if ( iExtension ) + { + aFeatureParam = iExtension->iLockQuerySCT; + } + else + { + ret = KErrGeneral; + } + } + break; default: ret = KErrNotSupported; break; @@ -1119,7 +1154,8 @@ { EDisablePenInput, ELaunchPenInputAutomatic, - EPartialScreenInput + EPartialScreenInput, + ELockQuerySCT }; TBool ret = EFalse; @@ -1137,28 +1173,31 @@ } void CEikSecretEditor::SetCursorFormat() - { - iExtension->iCursor.iType = TTextCursor::ETypeRectangle; - iExtension->iCursor.iFlags = 0; - iExtension->iCursor.iHeight = AknLayoutUtils::CursorHeightFromFont( - iFont->FontSpecInTwips() ); - iExtension->iCursor.iAscent = AknLayoutUtils::CursorAscentFromFont( - iFont->FontSpecInTwips() ); - iExtension->iCursor.iWidth = AknLayoutUtils::CursorWidthFromFont ( - iFont->FontSpecInTwips() ); - iExtension->iCursor.iColor = KRgbWhite; - if ( !iExtension->iWindowSet ) - { -#ifdef RD_UI_TRANSITION_EFFECTS_PHASE2 - CRedirectionListener* listener = ( CRedirectionListener* ) - CAknTransitionUtils::GetData( (TInt) this ); - listener->SetWindows( &( iCoeEnv->RootWin() ), DrawableWindow() ); -#else - iExtension->iWg = &( iCoeEnv->RootWin() ); - iExtension->iWindow = DrawableWindow(); -#endif - iExtension->iWindowSet = ETrue; - } + { + if ( iExtension ) + { + iExtension->iCursor.iType = TTextCursor::ETypeRectangle; + iExtension->iCursor.iFlags = 0; + iExtension->iCursor.iHeight = AknLayoutUtils::CursorHeightFromFont( + iFont->FontSpecInTwips() ); + iExtension->iCursor.iAscent = AknLayoutUtils::CursorAscentFromFont( + iFont->FontSpecInTwips() ); + iExtension->iCursor.iWidth = AknLayoutUtils::CursorWidthFromFont ( + iFont->FontSpecInTwips() ); + iExtension->iCursor.iColor = KRgbWhite; + if ( !iExtension->iWindowSet ) + { + #ifdef RD_UI_TRANSITION_EFFECTS_PHASE2 + CRedirectionListener* listener = ( CRedirectionListener* ) + CAknTransitionUtils::GetData( (TInt) this ); + listener->SetWindows( &( iCoeEnv->RootWin() ), DrawableWindow() ); + #else + iExtension->iWg = &( iCoeEnv->RootWin() ); + iExtension->iWindow = DrawableWindow(); + #endif + iExtension->iWindowSet = ETrue; + } + } } TPoint CEikSecretEditor::CursorPos() @@ -1170,18 +1209,21 @@ iFont->TextWidthInPixels( *iSecCharArr ) : iFont->CharWidthInPixels( KSecretChar ) * pos ); TInt x; - if ( iAlign == CGraphicsContext::ELeft ) - { - x = iExtension->iTextRect.iTl.iX + textWidth; - } - else if (iAlign == CGraphicsContext::ECenter) + if ( iExtension ) { - x = iExtension->iTextRect.iTl.iX + - (iExtension->iTextRect.Width() + textWidth) / 2; - } - else - { - x = iExtension->iTextRect.iBr.iX; + if ( iAlign == CGraphicsContext::ELeft ) + { + x = iExtension->iTextRect.iTl.iX + textWidth; + } + else if (iAlign == CGraphicsContext::ECenter ) + { + x = iExtension->iTextRect.iTl.iX + + (iExtension->iTextRect.Width() + textWidth) / 2; + } + else + { + x = iExtension->iTextRect.iBr.iX; + } } TInt y( Rect().iTl.iY + iAscent ); return TPoint( x, y ); @@ -1248,21 +1290,24 @@ void CEikSecretEditor::UpdateCursor() { -#ifdef RD_UI_TRANSITION_EFFECTS_PHASE2 - CRedirectionListener* listener = ( CRedirectionListener* ) - CAknTransitionUtils::GetData( (TInt) this ); - listener->UpdateCursor( iExtension->iCursor ); -#else - if ( iExtension->iCursorEnabled ) - { - if ( iExtension->iWindow ) - { - iExtension->iWg->SetTextCursor( *iExtension->iWindow, CursorPos(), - iExtension->iCursor ); + if ( iExtension ) + { + #ifdef RD_UI_TRANSITION_EFFECTS_PHASE2 + CRedirectionListener* listener = ( CRedirectionListener* ) + CAknTransitionUtils::GetData( (TInt) this ); + listener->UpdateCursor( iExtension->iCursor ); + #else + if ( iExtension->iCursorEnabled ) + { + if ( iExtension->iWindow ) + { + iExtension->iWg->SetTextCursor( *iExtension->iWindow, CursorPos(), + iExtension->iCursor ); + } + iExtension->iCursorEnabled = ETrue; } - iExtension->iCursorEnabled = ETrue; + #endif } -#endif } EXPORT_C void CEikSecretEditor::FocusChanged( TDrawNow /*aDrawNow*/ ) diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/ganes/BWINS/ganesu.def --- a/uifw/ganes/BWINS/ganesu.def Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/ganes/BWINS/ganesu.def Fri Apr 30 17:20:48 2010 +0100 @@ -114,4 +114,6 @@ ?SetItemToOpenedState@CHgVgMediaWall@@QAEXH@Z @ 113 NONAME ; void CHgVgMediaWall::SetItemToOpenedState(int) ?SetOpenedItemRect@CHgVgMediaWall@@QAEXABVTRect@@@Z @ 114 NONAME ; void CHgVgMediaWall::SetOpenedItemRect(class TRect const &) ?SetMenuProviderL@CHgScroller@@QAEXPAVMObjectProvider@@@Z @ 115 NONAME ; void CHgScroller::SetMenuProviderL(class MObjectProvider *) + ?SetToolbarVisibility@CHgGrid@@QAEXH@Z @ 116 NONAME ; void CHgGrid::SetToolbarVisibility(int) + ?SetFirstIndexOnScreen@CHgScroller@@QAEXH@Z @ 117 NONAME ; void CHgScroller::SetFirstIndexOnScreen(int) diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/ganes/EABI/ganesu.def --- a/uifw/ganes/EABI/ganesu.def Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/ganes/EABI/ganesu.def Fri Apr 30 17:20:48 2010 +0100 @@ -169,4 +169,6 @@ _ZN14CHgVgMediaWall17SetOpenedItemRectERK5TRect @ 168 NONAME _ZN14CHgVgMediaWall20SetItemToOpenedStateEi @ 169 NONAME _ZN11CHgScroller16SetMenuProviderLEP15MObjectProvider @ 170 NONAME + _ZN11CHgScroller21SetFirstIndexOnScreenEi @ 171 NONAME + _ZN7CHgGrid20SetToolbarVisibilityEi @ 172 NONAME diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/ganes/src/HgGrid.cpp --- a/uifw/ganes/src/HgGrid.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/ganes/src/HgGrid.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -91,7 +91,8 @@ CHgGrid::CHgGrid( TInt aItemCount, CGulIcon* aDefaultIcon ) -: CHgScroller( aItemCount, aDefaultIcon ) +: CHgScroller( aItemCount, aDefaultIcon ), + iToolbarVisible( ETrue ) { // No implementation required } @@ -351,34 +352,43 @@ { // Count number of visible rows // First is checked if 3x4 or 4x3 items fits to the grid. - TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0; + + TInt mainVariety = iToolbarVisible ? 0 : 1; + TInt gridVariety = iToolbarVisible ? 0 : 2; + TInt cellVariety = iToolbarVisible ? 0 : 4; - TAknLayoutScalableParameterLimits limits = cell_gallery2_pane_ParamLimits(variety); + if( Layout_Meta_Data::IsLandscapeOrientation() ) + { + ++gridVariety; + ++cellVariety; + } + + TAknLayoutScalableParameterLimits limits = cell_gallery2_pane_ParamLimits(cellVariety); iCols = limits.LastColumn() + 1; iRows = limits.LastRow() + 1; iLayoutData->ChangeCols( iCols ); - iLayoutData->SetBaseLayout(main_gallery2_pane(0)); - iLayoutData->SetItemLayout(grid_gallery2_pane(variety)); - iLayoutData->SetIconLayout(cell_gallery2_pane_g2(variety)); + iLayoutData->SetBaseLayout(main_gallery2_pane(mainVariety)); + iLayoutData->SetItemLayout(grid_gallery2_pane(gridVariety)); + iLayoutData->SetIconLayout(cell_gallery2_pane_g2(cellVariety)); if( iLandscapeScrolling ) { for(TInt i = 0; i < iRows; ++i) { - iLayoutData->SetColumnLayout(i, cell_gallery2_pane(variety, 0, i)); + iLayoutData->SetColumnLayout(i, cell_gallery2_pane(cellVariety, 0, i)); } } else { for(TInt i = 0; i < iCols; ++i) { - iLayoutData->SetColumnLayout(i, cell_gallery2_pane(variety, i, 0)); + iLayoutData->SetColumnLayout(i, cell_gallery2_pane(cellVariety, i, 0)); } } - iLayoutData->SetFirstIndicatorLayout(cell_gallery2_pane_g5(variety)); - iLayoutData->SetSecondIndicatorLayout(cell_gallery2_pane_g4(variety)); + iLayoutData->SetFirstIndicatorLayout(cell_gallery2_pane_g5(cellVariety)); + iLayoutData->SetSecondIndicatorLayout(cell_gallery2_pane_g4(cellVariety)); TAknLayoutRect gridAppPane; TAknLayoutRect gridItem; @@ -808,4 +818,14 @@ } +// ----------------------------------------------------------------------------- +// CHgGrid::SetToolbarVisibility() +// ----------------------------------------------------------------------------- +// +EXPORT_C void CHgGrid::SetToolbarVisibility( TBool aToolbarVisible ) + { + iToolbarVisible = aToolbarVisible; + HandleSizeChanged(); + } + // End of File diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/ganes/src/HgScroller.cpp --- a/uifw/ganes/src/HgScroller.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/ganes/src/HgScroller.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -173,7 +173,7 @@ } // ----------------------------------------------------------------------------- -// CHgScroller::RefreshScreen() +// CHgScroller::FirstIndexOnScreen() // ----------------------------------------------------------------------------- // EXPORT_C TInt CHgScroller::FirstIndexOnScreen() @@ -182,7 +182,16 @@ } // ----------------------------------------------------------------------------- -// CHgScroller::RefreshScreen() +// CHgScroller::SetFirstIndexOnScreen() +// ----------------------------------------------------------------------------- +// +EXPORT_C void CHgScroller::SetFirstIndexOnScreen( TInt aFirstIndexOnScreen ) + { + FitTopItemToView( aFirstIndexOnScreen ); + } + +// ----------------------------------------------------------------------------- +// CHgScroller::ItemsOnScreen() // ----------------------------------------------------------------------------- // EXPORT_C TInt CHgScroller::ItemsOnScreen() @@ -191,7 +200,7 @@ } // ----------------------------------------------------------------------------- -// CHgScroller::RefreshScreen() +// CHgScroller::SelectedIndex() // ----------------------------------------------------------------------------- // EXPORT_C TInt CHgScroller::SelectedIndex() @@ -200,7 +209,7 @@ } // ----------------------------------------------------------------------------- -// CHgScroller::RefreshScreen() +// CHgScroller::SetSelectedIndex() // ----------------------------------------------------------------------------- // EXPORT_C void CHgScroller::SetSelectedIndex( TInt aIndex ) @@ -292,6 +301,7 @@ // EXPORT_C void CHgScroller::GetMarkedItemsL( RArray& aIndexes ) { + ::CleanupClosePushL(aIndexes); for(TInt i = 0; i < iItems.Count(); ++i) { if(iItems[i]->Flags() & CHgItem::EHgItemFlagMarked ) @@ -299,6 +309,7 @@ aIndexes.AppendL( i ); } } + CleanupStack::Pop(&aIndexes); } // ----------------------------------------------------------------------------- @@ -610,6 +621,21 @@ if( iScrollbar ) { sbHandles = iScrollbar->HandlePointerEventL( aEvent ); + + if( sbHandles + && iPhysics + && iPhysics->OngoingPhysicsAction() == CAknPhysics::EAknPhysicsActionFlicking ) + { + iPhysics->StopPhysics(); + iScrollbar->Reset(); + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if ( feedback ) + { + feedback->InstantFeedback( this, ETouchFeedbackList, aEvent ); + } + return sbHandles; + } + if ( sbHandles && !iScrollbar->IsStatic() ) { MTouchFeedback* feedback = MTouchFeedback::Instance(); @@ -634,7 +660,7 @@ feedback->StartFeedback( this, ETouchContinuousSlider, &aEvent, - KIntensity, // intensity 50% + KIntensity, // intensity timeout ); } } @@ -745,8 +771,6 @@ // void CHgScroller::HandleUpEventL( const TPointerEvent& aEvent ) { - MTouchFeedback* feedback = MTouchFeedback::Instance(); - TTouchFeedbackType type = ETouchFeedbackVibra; if( iPanning ) { // enable physics @@ -754,17 +778,14 @@ if(iLandscapeScrolling && AknLayoutUtils::LayoutMirrored()) drag = -drag; iPhysics->StartPhysics(drag, iStartTime); - if ( feedback && iPhysics->OngoingPhysicsAction() == CAknPhysics::EAknPhysicsActionFlicking ) - { - feedback->InstantFeedback( this, ETouchFeedbackFlick, type, aEvent ); - } } else { HandleSelectionL(); + MTouchFeedback* feedback = MTouchFeedback::Instance(); if ( feedback && iSelectedIndex != KErrNotFound ) { - feedback->InstantFeedback( this, ETouchFeedbackList, type, aEvent ); + feedback->InstantFeedback( this, ETouchFeedbackList, ETouchFeedbackVibra, aEvent ); } } } @@ -1016,6 +1037,9 @@ // void CHgScroller::ScrollBarPositionChanged( const TPoint& aNewPosition ) { + if( iPhysics->OngoingPhysicsAction() == CAknPhysics::EAknPhysicsActionFlicking ) + return; + iViewPosition = aNewPosition; iPhysics->StopPhysics(); @@ -1088,8 +1112,8 @@ iCurrentRow = newRow; TBool needsFeedback = - ( iCurrentRow >= 0 && iCurrentRow <= iItems.Count() ) - || ( iItems.Count() - iCurrentRow > ItemsOnScreen() ); + ( CurrentIndex() > 0 && CurrentIndex() <= iItems.Count() ) + || ( iItems.Count() - CurrentIndex() > ItemsOnScreen() ); TInt action = iPhysics->OngoingPhysicsAction(); if( action != CAknPhysics::EAknPhysicsActionNone && needsFeedback ) diff -r 2b7609a571c9 -r aa94898fb0b4 uifw/ganes/src/HgVgMediaWall.cpp --- a/uifw/ganes/src/HgVgMediaWall.cpp Tue Apr 27 16:29:59 2010 +0100 +++ b/uifw/ganes/src/HgVgMediaWall.cpp Fri Apr 30 17:20:48 2010 +0100 @@ -66,8 +66,10 @@ using namespace AknTouchGestureFw; using namespace HgVgConstants; -#ifdef SYMBIAN_GRAPHICS_FIXNATIVEORIENTATION - #define MEDIAWALL_ORIENTATION_FIX +#ifndef __WINSCW__ + #ifdef SYMBIAN_GRAPHICS_FIXNATIVEORIENTATION + #define MEDIAWALL_ORIENTATION_FIX + #endif #endif // ============================ MEMBER FUNCTIONS =============================== @@ -433,6 +435,8 @@ { iRect = Rect(); + SetConstantsForStyle(); + if(iDelayedInit && !iDelayedInit->IsActive()) iDelayedInit->Start(0, 1000000, TCallBack(DelayedInit, this)); @@ -1229,7 +1233,9 @@ // reload images to ive ReloadItemsImages(); - + + ClearFlags(EHgVgMediaWallUninitialized); + // draw using openvg DrawNow(); @@ -1246,6 +1252,10 @@ // make sure we are not animating HandleTransitionAnimationStop(); + // cancel the initialization + if(iDelayedInit) + iDelayedInit->Cancel(); + if (iAnimationTimer->IsActive()) { if (iAnimationState == EHgVgMediaWallAnimationStateOpening) @@ -1590,6 +1600,10 @@ iScrollBar->SetViewPosition( TPoint(iSelectedIndex, 0) ); +#ifdef MEDIAWALL_ORIENTATION_FIX + iScrollBar->EnableLandscapeRendering( iMediaWallStyle == CHgVgMediaWall::EHgVgMediaWallStyleCoverflowFullScreen ); +#endif + } // --------------------------------------------------------------------------- @@ -1646,7 +1660,26 @@ User::Leave(KErrNotSupported); } break; } - + + if( iOpenedItemRect != TRect() ) + { + iRenderer->SetFlippedRect( iOpenedItemRect ); + } + else + { + // set some default flipped rect for opening animation + if(iMediaWallStyle == EHgVgMediaWallStyleGrid) + { + iRenderer->SetFlippedRect(iRect); + } + else + { + iRenderer->SetFlippedRect(TRect(TPoint(iRect.Center().iX - iRect.Height() / 2, + iRect.Center().iY - iRect.Height() / 2), + TSize(iRect.Height(), iRect.Height()))); + } + } + // load default icon InitDefaultIconL(); @@ -2317,9 +2350,10 @@ // EXPORT_C void CHgVgMediaWall::SetOpenedItemRect(const TRect& aRect) { + iOpenedItemRect = aRect; if (iRenderer) { - iRenderer->SetFlippedRect(aRect); + iRenderer->SetFlippedRect(iOpenedItemRect); } } @@ -2381,15 +2415,6 @@ // void CHgVgMediaWall::InitMediaWallFullScreenLandscapeL() { - - // set some factors to mediawall fullscreen mode specific values - iCameraZoomFactor = KMediaWallFullScreenCameraZoomFactor; - iCameraRotationFactor = KMediaWallFullScreenCameraRotationFactor; - iItemsOnScreen = KMediaWallFullScreenItemsOnScreen; - iSpringVelocityToAnimationFactor = KMediaWallFullScreenSpringVelocityToAnimationFactor; - iItemsToMoveOnFullScreenDrag = KMediaWallFullScreenItemsToMoveOnFullScreenDrag; - iRowCount = KMediaWallFullScreenRowCount; - // get front rectange from layout TAknLayoutRect frontRect; frontRect.LayoutRect( iRect, AknLayoutScalable_Apps::cf0_flow_pane_g1(0) ); @@ -2398,11 +2423,6 @@ iRenderer = CHgVgMediaWallRenderer::NewL(KMaxCoversVisible, iRect, frontRect.Rect(), KMediaWallFullScreenZOffset); - // set some default flipped rect for opening animation - iRenderer->SetFlippedRect(TRect(TPoint(iRect.Center().iX - iRect.Height() / 2, - iRect.Center().iY - iRect.Height() / 2), - TSize(iRect.Height(), iRect.Height()))); - // in full screen, enable blurring on flip/zoom iRenderer->EnableBlurOnFlip(ETrue, KDefaultBlurDeviation, KDefaultBlurDeviation); @@ -2415,12 +2435,6 @@ InitScrollBarL(EFalse); - iSpring->SetConstants( - KMediaWallFullScreenSpringK, - KMediaWallFullScreenSpringDamping, - KMediaWallFullScreenSpringMaxVelocity, - KPositionSnap, KMinSpringVelocity); - #ifdef MEDIAWALL_ORIENTATION_FIX iRenderer->EnableLandscapeMode(ETrue); iAlbumLabel->EnableLandscapeRendering(ETrue); @@ -2440,15 +2454,6 @@ // void CHgVgMediaWall::InitMediaWallTBonePortraitL() { - - // set some factors to mediawall fullscreen mode specific values - iCameraZoomFactor = KMediaWallTBoneCameraZoomFactor; - iCameraRotationFactor = KMediaWallTBoneCameraRotationFactor; - iItemsOnScreen = KMediaWallTBoneItemsOnScreen; - iSpringVelocityToAnimationFactor = KMediaWallTBoneSpringVelocityToAnimationFactor; - iItemsToMoveOnFullScreenDrag = KMediaWallTBoneItemsToMoveOnFullScreenDrag; - iRowCount = KMediaWallTBoneRowCount; - // get front rectange from layout TAknLayoutRect frontRect; frontRect.LayoutRect( iRect, AknLayoutScalable_Apps::cf0_flow_pane_g1(0) ); @@ -2456,20 +2461,10 @@ iRenderer = CHgVgMediaWallRenderer::NewL(KMaxCoversVisible, iRect, frontRect.Rect(), KMediaWallTBoneZOffset); - iRenderer->SetFlippedRect(TRect(TPoint(iRect.Center().iX - iRect.Height() / 2, - iRect.Center().iY - iRect.Height() / 2), - TSize(iRect.Height(), iRect.Height()))); - InitLabelsL(0); InitPopupL(0); - iSpring->SetConstants( - KMediaWallTBoneSpringK, - KMediaWallTBoneSpringDamping, - KMediaWallTBoneSpringMaxVelocity, - KPositionSnap, KMinSpringVelocity); - } void CHgVgMediaWall::InitMediaWallGridLandscapeL() @@ -2482,19 +2477,9 @@ frontRect = TRect(TPoint(iRect.Center().iX - size.iWidth/2, iRect.Center().iY - 45 + 90), size); - iCameraZoomFactor = KMediaWallGridCameraZoomFactor; - iCameraRotationFactor = KMediaWallGridCameraRotationFactor; - iItemsOnScreen = KMediaWallGridItemsOnScreen; - iSpringVelocityToAnimationFactor = KMediaWallGridSpringVelocityToAnimationFactor; - iItemsToMoveOnFullScreenDrag = KMediaWallGridItemsToMoveOnFullScreenDrag; - iRowCount = KMediaWallGridRowCount; - iOpeningAnimationType = EHgVgOpeningAnimationZoomIn; - iRenderer = CHgVgMediaWallRenderer::NewL((KMaxCoversVisible+1) * KMediaWallGridRowCount, iRect, frontRect, KMediaWallGridZOffset); - iRenderer->SetFlippedRect(iRect); - InitButtonsL(); InitScrollBarL(EFalse); @@ -2507,12 +2492,6 @@ iRect.Center().iY - lsize.iHeight / 2), lsize), &ScreenFont( TCoeFont( KMediaWallGridPopupFontSize, TCoeFont::EPlain ))); - iSpring->SetConstants( - KMediaWallGridSpringK, - KMediaWallGridSpringDamping, - KMediaWallGridSpringMaxVelocity, - KPositionSnap, - KMinSpringVelocity); } @@ -2570,6 +2549,74 @@ return KErrNone; } +// ----------------------------------------------------------------------------- +// CHgVgMediaWall::SetConstantsForStyle() +// ----------------------------------------------------------------------------- +// +void CHgVgMediaWall::SetConstantsForStyle() + { + switch (iMediaWallStyle) + { + case EHgVgMediaWallStyleCoverflowFullScreen: + { + // set some factors to mediawall fullscreen mode specific values + iCameraZoomFactor = KMediaWallFullScreenCameraZoomFactor; + iCameraRotationFactor = KMediaWallFullScreenCameraRotationFactor; + iItemsOnScreen = KMediaWallFullScreenItemsOnScreen; + iSpringVelocityToAnimationFactor = KMediaWallFullScreenSpringVelocityToAnimationFactor; + iItemsToMoveOnFullScreenDrag = KMediaWallFullScreenItemsToMoveOnFullScreenDrag; + iRowCount = KMediaWallFullScreenRowCount; + + iSpring->SetConstants( + KMediaWallFullScreenSpringK, + KMediaWallFullScreenSpringDamping, + KMediaWallFullScreenSpringMaxVelocity, + KPositionSnap, KMinSpringVelocity); + + } break; + + case EHgVgMediaWallStyleCoverflowTBonePortrait: + { + // set some factors to mediawall tbone mode specific values + iCameraZoomFactor = KMediaWallTBoneCameraZoomFactor; + iCameraRotationFactor = KMediaWallTBoneCameraRotationFactor; + iItemsOnScreen = KMediaWallTBoneItemsOnScreen; + iSpringVelocityToAnimationFactor = KMediaWallTBoneSpringVelocityToAnimationFactor; + iItemsToMoveOnFullScreenDrag = KMediaWallTBoneItemsToMoveOnFullScreenDrag; + iRowCount = KMediaWallTBoneRowCount; + + iSpring->SetConstants( + KMediaWallTBoneSpringK, + KMediaWallTBoneSpringDamping, + KMediaWallTBoneSpringMaxVelocity, + KPositionSnap, KMinSpringVelocity); + + } break; + + case EHgVgMediaWallStyleGrid: + { + // set some factors to mediawall grid mode specific values + iCameraZoomFactor = KMediaWallGridCameraZoomFactor; + iCameraRotationFactor = KMediaWallGridCameraRotationFactor; + iItemsOnScreen = KMediaWallGridItemsOnScreen; + iSpringVelocityToAnimationFactor = KMediaWallGridSpringVelocityToAnimationFactor; + iItemsToMoveOnFullScreenDrag = KMediaWallGridItemsToMoveOnFullScreenDrag; + iRowCount = KMediaWallGridRowCount; + iOpeningAnimationType = EHgVgOpeningAnimationZoomIn; + + iSpring->SetConstants( + KMediaWallGridSpringK, + KMediaWallGridSpringDamping, + KMediaWallGridSpringMaxVelocity, + KPositionSnap, + KMinSpringVelocity); + + } break; + default: + { + } break; + } + } // End of File