diff -r aecbbf00d063 -r d48ab3b357f1 uifw/AvKon/src/AknSettingPage.cpp --- a/uifw/AvKon/src/AknSettingPage.cpp Tue Aug 31 15:28:30 2010 +0300 +++ b/uifw/AvKon/src/AknSettingPage.cpp Wed Sep 01 12:16:19 2010 +0100 @@ -45,9 +45,21 @@ //For MCoeCaptionRetrieverForFep #include #include +#include +#include +#include +#include #include "aknitemactionmenuregister.h" #include "aknqueryeditorindicator.h" + + +// +// the function's definition is in the AknNoteDialog.cpp +// +TBool IsFocusedWindowGroup( const CCoeControl* aControl ); + + // This determines the maximum number of digits in the optional number displayed on the // top left of the setting page const TInt KAknSettingPageMaxOrdinalDigits = 3; @@ -568,9 +580,19 @@ EXPORT_C CAknSettingPage::~CAknSettingPage() { AKNTASHOOK_REMOVE(); + + StopActiveScheduler(); + + // If navi pane context is not poped out yet, pop it now. + PopNaviDecoratorIfRequired(); + if ( GfxTransEffect::IsRegistered( this ) ) + { + GfxTransEffect::Deregister( this ); + } + iEikonEnv->EikAppUi()->RemoveFromStack(this); - AknItemActionMenuRegister::SetOverridingMenuBarOwnerL( NULL ); + TRAP_IGNORE(AknItemActionMenuRegister::SetOverridingMenuBarOwnerL( NULL )); if (iMenuBar) { @@ -585,12 +607,9 @@ delete iHintText; delete iCba; delete iExtension; + iExtension = NULL; - // If navi pane context is not poped out yet, pop it now. - PopNaviDecoratorIfRequired(); delete iNaviDecorator; - - StopActiveScheduler(); } void CAknSettingPage::StopActiveScheduler() @@ -770,9 +789,6 @@ { CreateWindowL(); - SetGloballyCapturing( ETrue ); - SetPointerCapture(ETrue); - if( NULL == iExtension ) { iExtension = CAknSettingPageExtension::NewL( this ); @@ -886,6 +902,12 @@ } } + if(iExtension->iEmbeddedSoftkeys) + { + SetGloballyCapturing( ETrue ); + SetPointerCapture(ETrue); + } + AknItemActionMenuRegister::SetOverridingMenuBarOwnerL( this ); if ( !iExtension->iEmbeddedSoftkeys ) @@ -899,15 +921,16 @@ iCba = CEikButtonGroupContainer::NewL( CEikButtonGroupContainer::ECba, CEikButtonGroupContainer::EHorizontal, this, resourceId, *this, CEikButtonGroupContainer::EIsEmbedded | - CEikButtonGroupContainer::EAddToStack ); + CEikButtonGroupContainer::EAddToStack | + CEikButtonGroupContainer::EAlwaysShown ); } iExtension->CreateBackgroundContextL(); - if ( iExtension->iEmbeddedSoftkeys && - CAknEnv::Static()->TransparencyEnabled() ) + if ( iExtension->iEmbeddedSoftkeys ) { EnableWindowTransparency(); + GfxTransEffect::Register( this, KGfxPopupDefaultControlUid ); } // Make the menu bar @@ -915,7 +938,6 @@ iMenuBar->ConstructL( this, NULL, iMenuBarId ) ; iEikonEnv->EikAppUi()->AddToStackL(iMenuBar,ECoeStackPriorityMenu,ECoeStackFlagRefusesFocus); - iTextLabel = new(ELeave) CEikLabel( ); iTextLabel->UseLogicalToVisualConversion(ETrue); iTextLabel->SetContainerWindowL(*this); @@ -1378,8 +1400,26 @@ */ 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 ); - MakeVisible( EFalse ); if ( aAccept ) { @@ -1393,6 +1433,17 @@ if ( iSettingPageObserver ) iSettingPageObserver->HandleSettingPageEventL(this, MAknSettingPageObserver::EEventSettingCancelled); } + + if ( GfxTransEffect::IsRegistered( this ) && IsFocusedWindowGroup( this ) && IsVisible() ) + { + GfxTransEffect::Begin( this, KGfxControlDisappearAction ); + MakeVisible( EFalse ); + GfxTransEffect::End( this ); + } + else + { + MakeVisible( EFalse ); + } iEikonEnv->RemoveFromStack(iCba); delete iCba; @@ -1633,6 +1684,30 @@ // Ensure we have a menu bar by this point __ASSERT_DEBUG( iMenuBar, Panic( EAknPanicSettingPageNoMenuBar ) ) ; + if ( AknLayoutUtils::PenEnabled() ) + { + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if ( feedback ) + { + TTouchLogicalFeedback fbLogicalType = ETouchFeedbackPopUp; + if ( CAknTransitionUtils::TransitionsEnabled( + AknTransEffect::EComponentTransitionsOff ) ) + { + fbLogicalType = ETouchFeedbackIncreasingPopUp; + } + feedback->InstantFeedback( + this, + fbLogicalType, + ETouchFeedbackVibra, + TPointerEvent() ); + } + } + + // + // Set editor control to be invisible + // + iEditorControl->MakeVisible( EFalse ); + DynamicInitL(); ActivateL(); @@ -1640,10 +1715,25 @@ { iExtension->iFader.FadeBehindPopup( iExtension, this, ETrue ); } - - // Catch up with editor's brute draw (in editor setting page) - DrawNow(); // EECO-7QYCR4 and TSAA-7Q3D2J is conflict , so make an extra draw operation here - DrawDeferred(); + + if ( GfxTransEffect::IsRegistered( this ) ) + { + GfxTransEffect::Begin( this, KGfxControlAppearAction ); + + TRect demarcation; + CAknTransitionUtils::GetDemarcation( CAknTransitionUtils::EPopup, + demarcation ); + GfxTransEffect::SetDemarcation( this, demarcation ); + + iEditorControl->MakeVisible( ETrue ); + MakeVisible( ETrue ); + GfxTransEffect::End( this ); + } + else + { + iEditorControl->MakeVisible( ETrue ); + MakeVisible( ETrue ); + } iEditorControl->SetObserver( this ); iEikonEnv->EikAppUi()->AddToStackL(this,ECoeStackPriorityDialog); @@ -1703,7 +1793,9 @@ StartActiveScheduler(); } else - AttemptExitL(EFalse); + { + AttemptExitL(EFalse); + } iEikonEnv->EikAppUi()->RemoveFromStack(this); CleanupStack::Pop(); // this @@ -2058,6 +2150,10 @@ { return SupplyMopObject( aId, iExtension->iEditIndicator ); } + else if( aId.iUid == MAknsControlContext::ETypeId) + { + return MAknsControlContext::SupplyMopObject(aId, iExtension->iSettingPageBgContext); + } return SupplyMopObject( aId, iCba, iMenuBar ); } @@ -2121,7 +2217,7 @@ void CAknSettingPage::PopNaviDecoratorIfRequired() { - if ( iNaviPane && !iExtension->iEmbeddedSoftkeys ) + if ( iNaviPane && iExtension && !iExtension->iEmbeddedSoftkeys ) { iNaviPane->Pop( iNaviDecorator ); // iNaviDecorator is not to be detroyed yet