diff -r 3d340a0166ff -r 941195f2d488 uifw/EikStd/dlgsrc/EIKDIALG.CPP --- a/uifw/EikStd/dlgsrc/EIKDIALG.CPP Tue May 11 16:27:42 2010 +0300 +++ b/uifw/EikStd/dlgsrc/EIKDIALG.CPP Tue May 25 12:58:19 2010 +0300 @@ -41,6 +41,7 @@ #include #include #include +#include // #include "eikdialogext.h" #include @@ -70,6 +71,7 @@ #include #include #include +#include #include "akncbacontentobserver.h" #include "akntrace.h" @@ -849,32 +851,33 @@ _AKNTRACE_FUNC_ENTER; if (iDialogFlags&EEikDialogFlagFillAppClientRect) { + TRect destRect = iEikonEnv->EikAppUi()->ClientRect(); // if this is a view app then ask client rect from the currently active view TVwsViewId uid; if ( iAvkonAppUi->GetActiveViewId( uid ) == KErrNone ) { if ( uid.iAppUid != uid.iViewUid ) { - CAknView* view = iAvkonViewAppUi->View(uid.iViewUid); - if (view) + CAknView* view = iAvkonViewAppUi->View( uid.iViewUid ); + if ( view ) { - SetRect(view->ClientRect()); - } - else - { - SetRect(iEikonEnv->EikAppUi()->ClientRect()); + destRect = view->ClientRect(); } } - else + } + + if ( !Layout_Meta_Data::IsLandscapeOrientation() && iButtonGroupContainer != NULL ) + { + TRect controlPane; + AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EControlPane, controlPane ); + + if ( destRect.iBr.iY > controlPane.iTl.iY ) { - SetRect(iEikonEnv->EikAppUi()->ClientRect()); + destRect.iBr.iY = controlPane.iTl.iY; } - } - else - { - SetRect( iEikonEnv->EikAppUi()->ClientRect() ); - } - } + } + SetRect( destRect ); + } else { SetRect( TRect( AknPopupUtils::Position( aSize, this ), aSize ) ); @@ -1652,6 +1655,16 @@ GfxTransEffect::NotifyExternalState(EInternalHandleSequence, (const TDesC8*)this); #endif GfxTransEffect::Begin(this, KGfxControlAppearAction); + MTouchFeedback* feedback = NULL; + if(AknLayoutUtils::PenEnabled()) + { + feedback = static_cast(ExtensionInterface(KExIfTactileFeedbackUid)); + } + if(feedback && CAknTransitionUtils::TransitionsEnabled(AknTransEffect::EComponentTransitionsOff )) + { + feedback->InstantFeedback(this, ETouchFeedbackIncreasingPopUp, + ETouchFeedbackVibra, TPointerEvent()); + } GfxTransEffect::NotifyExternalState(ECaptureComponentsBegin, (const TDesC8*)this); TRect demarcation; @@ -1664,6 +1677,11 @@ GfxTransEffect::NotifyExternalState(ECaptureComponentsEnd, (const TDesC8*)this); GfxTransEffect::End(this); + if(feedback) + { + feedback->InstantFeedback(this, ETouchFeedbackPopUp, + ETouchFeedbackVibra, TPointerEvent()); + } } else { @@ -1999,7 +2017,13 @@ TBool effectTriggered = EFalse; CAknAppUi* aknAppUi = static_cast(iEikonEnv->EikAppUi()); - + + MTouchFeedback* feedback = NULL; + if(AknLayoutUtils::PenEnabled()) + { + feedback = static_cast(ExtensionInterface(KExIfTactileFeedbackUid)); + } + if (!(iDialogFlags & EEikDialogFlagDelayEffects) && IsFocusedWindowGroup( this ) && GfxTransEffect::IsRegistered(this) && IsVisible() && effectButton @@ -2012,6 +2036,21 @@ { CAknTransitionUtils::SetAllParents(this); GfxTransEffect::Begin(this, KGfxControlDisappearAction); + + if(feedback) + { + if(CAknTransitionUtils::TransitionsEnabled(AknTransEffect::EComponentTransitionsOff)) + { + feedback->InstantFeedback(this, ETouchFeedbackDecreasingPopUp, + ETouchFeedbackVibra, TPointerEvent()); + } + else + { + feedback->InstantFeedback(this, ETouchFeedbackPopUp, + ETouchFeedbackVibra, TPointerEvent()); + } + } + GfxTransEffect::NotifyExternalState(ECaptureComponentsBegin, (const TDesC8*)this); TRect demarcation; CAknTransitionUtils::GetDemarcation(CAknTransitionUtils::EPopup, demarcation); @@ -2080,6 +2119,21 @@ TRect demarcation; CAknTransitionUtils::SetAllParents(this); GfxTransEffect::Begin(this, KGfxControlDisappearAction); + + if(feedback) + { + if(CAknTransitionUtils::TransitionsEnabled(AknTransEffect::EComponentTransitionsOff)) + { + feedback->InstantFeedback(this, ETouchFeedbackDecreasingPopUp, + ETouchFeedbackVibra, TPointerEvent()); + } + else + { + feedback->InstantFeedback(this, ETouchFeedbackPopUp, + ETouchFeedbackVibra , TPointerEvent()); + } + } + GfxTransEffect::NotifyExternalState(ECaptureComponentsBegin, (const TDesC8*)this); CAknTransitionUtils::GetDemarcation(CAknTransitionUtils::EPopup, demarcation); GfxTransEffect::SetDemarcation(this, demarcation); @@ -3241,7 +3295,8 @@ // softkeys if ( iExtension && CbaEmbeddedInDialog( iDialogFlags ) ) { - TSize dialogSize( Rect().Size() ); + TRect oldDialogRect( Rect() ); + TSize dialogSize( oldDialogRect.Size() ); CEikCba* cba = static_cast( iButtonGroupContainer->ButtonGroup() ); TBool cbaVisible( cba->IsVisible() && !cba->IsEmpty() ); @@ -3266,8 +3321,14 @@ dialogSize.iHeight -= cbaRect.Rect().Height(); } - SetRect( TRect( - AknPopupUtils::Position( dialogSize, this ), dialogSize ) ); + TRect newDialogRect( AknPopupUtils::Position( dialogSize, cbaVisible ), + dialogSize ); + SetRect( newDialogRect ); + + if ( oldDialogRect != newDialogRect ) + { + DrawDeferred(); + } } }