--- a/phoneapp/phoneuiview/src/cphoneviewcontroller.cpp Thu Jul 15 18:38:16 2010 +0300
+++ b/phoneapp/phoneuiview/src/cphoneviewcontroller.cpp Thu Aug 19 09:54:27 2010 +0300
@@ -143,6 +143,9 @@
const TInt KTouchDialerOpenEffect = 3;
const TInt KTouchDialerCloseEffect = 5;
+const TInt KTouchCallUiOpenEffect = 1000;
+const TInt KTouchCallUiCloseEffect = 1001;
+
const TInt KDialerInputMaxChars( 100 );
// ================= MEMBER FUNCTIONS =======================
@@ -838,7 +841,6 @@
iMenuController->SetMuteFlag( aCommandParam );
iBubbleWrapper->SetPhoneMuted( aCommandParam );
iIncallIndicator->HandleMuteChange( aCommandParam );
- iAudioController->HandleMuteChange( aCommandParam );
iToolbarController->SetMuteFlag( aCommandParam );
if ( iButtonsController )
{
@@ -1119,7 +1121,15 @@
booleanParam->Boolean() );
break;
}
-
+
+ case EPhoneViewSetVoipCallDTMFVisibilityFlag:
+ {
+ TPhoneCmdParamBoolean* booleanParam =
+ static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
+ iMenuController->SetHideVoipCallDTMFVisibilityFlag(
+ booleanParam->Boolean() );
+ break;
+ }
case EPhoneViewSetVideoCallDTMFVisibilityFlag:
{
TPhoneCmdParamBoolean* booleanParam =
@@ -1583,7 +1593,7 @@
break;
case EPhoneViewGetNeedToReturnToForegroundAppStatus:
- viewResponse = GetNeedToReturnToForegroundAppAfterCall() ?
+ viewResponse = GetNeedToReturnToForegroundAppAfterCallL() ?
EPhoneViewResponseSuccess :
EPhoneViewResponseFailed;
break;
@@ -2085,11 +2095,8 @@
CEikonEnv& aEnv )
{
TInt result = 0;
-
RWsSession& wsSession = aEnv.WsSession();
-
- const TInt numWg =
- wsSession.NumWindowGroups(
+ const TInt numWg = wsSession.NumWindowGroups(
KPhoneApplicationWindowGroupPriority );
CArrayFixFlat<TInt>* wgList =
@@ -2426,15 +2433,12 @@
// CPhoneViewController::FindAppByWgIDL
// ---------------------------------------------------------------------------
//
-TInt CPhoneViewController::FindAppByWgIDL( TInt aAppWgID )
+TInt CPhoneViewController::FindAppByWgIDL( TInt aAppWgID ) const
{
__LOGMETHODSTARTEND( EPhoneUIView,
"CPhoneViewController::FindAppByWgIDL() ")
-
TInt appExists( KErrNotFound );
-
RWsSession& wsSession = iEikEnv.WsSession();
-
const TInt numWg = wsSession.NumWindowGroups(
KPhoneApplicationWindowGroupPriority );
@@ -2444,7 +2448,6 @@
wgList->SetReserveL( numWg );
// Get list of window groups; all applications should be at priority 0.
- //
if ( wsSession.WindowGroupList(
KPhoneApplicationWindowGroupPriority,
wgList ) == KErrNone )
@@ -2458,9 +2461,7 @@
}
}
}
-
CleanupStack::PopAndDestroy( wgList );
-
return appExists;
}
@@ -3368,7 +3369,7 @@
// btaa menu options
iMenuController->SetBTAccFlag( &btaaParam );
-
+ iToolbarController->SetBTAccFlag( &btaaParam );
iAudioController->HandleIhfChange( &ihfParam );
if ( iButtonsController )
@@ -3408,7 +3409,8 @@
// btaa menu options
iMenuController->SetBTAccAvailableFlag( &btAvailableParam );
-
+ iToolbarController->SetBTAccAvailableFlag( &btAvailableParam );
+
if ( iButtonsController )
{
iButtonsController->SetBTAccAvailableFlag( &btAvailableParam );
@@ -3841,42 +3843,26 @@
{
__LOGMETHODSTARTEND(EPhoneUIView,
"CPhoneViewController::HandleTransitionEffect()" );
-
- switch ( aType )
+ __PHONELOG1( EBasic, EPhoneUIView,
+ "CPhoneViewController::HandleTransitionEffect aType:(%d)", aType );
+ TInt useEffect(KErrNotFound);
+ switch ( aType )
{
case EPhoneTransEffectDialerCreate:
case EPhoneTransEffectDialerOpen:
- {
- GfxTransEffect::BeginFullScreen(
- KTouchDialerOpenEffect,
- TRect(),
- AknTransEffect::EParameterType,
- AknTransEffect::GfxTransParam( KUidPhoneApplication,
- AknTransEffect::TParameter::EActivateExplicitCancel ) );
- iEffectOngoing = ETrue;
+ useEffect = KTouchDialerOpenEffect;
break;
- }
case EPhoneTransEffectDialerClose:
- {
- GfxTransEffect::BeginFullScreen(
- KTouchDialerCloseEffect,
- TRect(),
- AknTransEffect::EParameterType,
- AknTransEffect::GfxTransParam( KUidPhoneApplication,
- AknTransEffect::TParameter::EActivateExplicitCancel ) );
- iEffectOngoing = ETrue;
+ useEffect = KTouchDialerCloseEffect;
+ break;
+ case EPhoneTransEffectAppStartFromDialer:
+ useEffect = AknTransEffect::EApplicationStart;
break;
- }
- case EPhoneTransEffectAppStartFromDialer:
- {
- GfxTransEffect::BeginFullScreen(
- AknTransEffect::EApplicationStart,
- TRect(),
- AknTransEffect::EParameterType,
- AknTransEffect::GfxTransParam( aAppUidEffectParam,
- AknTransEffect::TParameter::EActivateExplicitCancel ) );
- iEffectOngoing = ETrue;
- }
+ case EPhoneTransEffectCallUiAppear:
+ useEffect = KTouchCallUiOpenEffect;
+ break;
+ case EPhoneTransEffectCallUiDisappear:
+ useEffect = KTouchCallUiCloseEffect;
break;
case EPhoneTransEffectStop:
{
@@ -3890,6 +3876,17 @@
default:
break;
}
+
+ if ( KErrNotFound < useEffect )
+ {
+ GfxTransEffect::BeginFullScreen(
+ useEffect,
+ TRect(),
+ AknTransEffect::EParameterType,
+ AknTransEffect::GfxTransParam( aAppUidEffectParam,
+ AknTransEffect::TParameter::EActivateExplicitCancel ) );
+ iEffectOngoing = ETrue;
+ }
}
// ---------------------------------------------------------------------------
@@ -4117,33 +4114,66 @@
TPhoneTransEffectType aType )
{
TBool okToUseEffect( EFalse );
-
- TBool isForeground = iAppui->IsForeground();
- // Check whether the idle is on foreground
- TBool idleInFore = ForegroundApplicationWindowGroupId() == IdleWindowGroupId() ?
+ TBool isPhoneForeground = iAppui->IsForeground();
+ TBool isIdleInForeground =
+ ForegroundApplicationWindowGroupId() == IdleWindowGroupId() ?
ETrue : EFalse;
-
- if ( isForeground && // Newer run effect if not at front
- ( ( aType == EPhoneTransEffectDialerCreate && !iDialerActive ) ||
- ( aType == EPhoneTransEffectDialerOpen && !iDialerActive &&
- iBubbleWrapper->IsNumberEntryUsed() ) ||
- ( aType == EPhoneTransEffectDialerClose && iDialerActive ) ) )
+ if ( isPhoneForeground &&
+ IsOkToUseThisTypeOfEffectInsidePhoneApp( aType ) )
+ {
+ okToUseEffect = ETrue;
+ }
+ /* In case transition is from idle to dialer or to incoming call
+ show transition effects as well. */
+ else if ( isIdleInForeground &&
+ ( aType == EPhoneTransEffectDialerOpen ||
+ aType == EPhoneTransEffectCallUiAppear ) )
+ {
+ okToUseEffect = ETrue;
+ }
+ /* isPhoneForeground/isIdleInForeground are false
+ when call is created from some other then phone app for example logs or from phonebook*/
+ else if ( !isPhoneForeground &&
+ !isIdleInForeground &&
+ ( aType == EPhoneTransEffectDialerOpen ||
+ aType == EPhoneTransEffectCallUiAppear ) )
{
okToUseEffect = ETrue;
}
- // In case transition is from idle to dialer show transition effects as well.
- else if ( idleInFore && !iDialerActive &&
- aType == EPhoneTransEffectDialerOpen )
+ return okToUseEffect;
+ }
+
+// -----------------------------------------------------------
+// CPhoneViewController::IsOkToUseThisTypeOfEffectInsidePhoneApp
+// -----------------------------------------------------------
+//
+TBool CPhoneViewController::IsOkToUseThisTypeOfEffectInsidePhoneApp(
+ TPhoneTransEffectType aType )
+ {
+ TBool okToUse(EFalse);
+ switch ( aType )
{
- okToUseEffect = ETrue;
+ case EPhoneTransEffectDialerCreate:
+ case EPhoneTransEffectDialerOpen:
+ okToUse = !iDialerActive;
+ break;
+ case EPhoneTransEffectAppStartFromDialer:
+ okToUse = iDialerActive;
+ break;
+ /* No need to check dialer activity below because effects are
+ common to callhandling/dialer */
+ case EPhoneTransEffectDialerClose:
+ case EPhoneTransEffectCallUiAppear:
+ case EPhoneTransEffectCallUiDisappear:
+ okToUse = ETrue;
+ break;
+ default:
+ break;
}
- else if ( isForeground && iDialerActive &&
- aType == EPhoneTransEffectAppStartFromDialer )
- {
- okToUseEffect = ETrue;
- }
-
- return okToUseEffect;
+ __PHONELOG1( EBasic, EPhoneUIView,
+ "CPhoneViewController::IsOkToUseThisTypeOfEffectInsidePhoneApp(%d)",
+ okToUse );
+ return okToUse;
}
// -----------------------------------------------------------
@@ -4202,11 +4232,18 @@
}
// ---------------------------------------------------------------------------
-// CPhoneViewController::GetNeedToReturnToForegroundAppAfterCall
+// CPhoneViewController::GetNeedToReturnToForegroundAppAfterCallL
// ---------------------------------------------------------------------------
//
-TBool CPhoneViewController::GetNeedToReturnToForegroundAppAfterCall() const
+TBool CPhoneViewController::GetNeedToReturnToForegroundAppAfterCallL()
{
+ // Check that previous app still exists. It might be for example
+ // add to contact - dialog that is allready destroyed or user has closed
+ // app using task swapper.
+ if( KErrNotFound == FindAppByWgIDL( iPrevForegroundAppWg ) )
+ {
+ iNeedToReturnToForegroundAppAfterCall = EFalse;
+ }
return iNeedToReturnToForegroundAppAfterCall;
}