--- a/phoneapp/phoneuistates/src/cphonetwosinglesandwaiting.cpp Thu Aug 19 09:54:27 2010 +0300
+++ b/phoneapp/phoneuistates/src/cphonetwosinglesandwaiting.cpp Tue Aug 31 15:14:29 2010 +0300
@@ -36,6 +36,7 @@
#include "phonerssbase.h"
#include "phonestatedefinitionsgsm.h"
#include "phonelogger.h"
+#include "mphonestorage.h"
// ================= MEMBER FUNCTIONS =======================
@@ -113,20 +114,20 @@
{
// send-key
case EKeyYes:
- {
+ {
if( IsNumberEntryVisibleL() )
{
- CallFromNumberEntryL();
+ CallFromNumberEntryL();
}
else
{
// Waiting call bubble is over number entry
// so display not allowed note because we
// can't answer the call
- SendGlobalWarningNoteL( EPhoneNoteTextCallNotAllowed );
+ SendGlobalWarningNoteL( EPhoneNoteTextCallNotAllowed, ETrue );
}
break;
- }
+ }
default:
CPhoneTwoSingles::HandleKeyMessageL( aMessage, aCode );
@@ -135,6 +136,22 @@
}
// -----------------------------------------------------------
+// CPhoneTwoSinglesAndWaiting::HandleKeyEventL
+// -----------------------------------------------------------
+//
+void CPhoneTwoSinglesAndWaiting::HandleKeyEventL(
+ const TKeyEvent& aKeyEvent,
+ TEventCode /*aEventCode*/ )
+ {
+ if( EKeyDeviceF == aKeyEvent.iCode )
+ {
+ __PHONELOG( EBasic, EPhoneUIStates,
+ "CPhoneTwoSinglesAndWaiting::HandleKeyMessageL-deviceF" );
+ HandleHoldSwitchL();
+ }
+ }
+
+// -----------------------------------------------------------
// CPhoneTwoSinglesAndWaiting::HandlePhoneEngineMessageL
// -----------------------------------------------------------
//
@@ -149,7 +166,10 @@
case MEngineMonitor::EPEMessageIdle:
HandleIdleL( aCallId );
break;
-
+ case MEngineMonitor::EPEMessageConnected:
+ UpdateInCallCbaL();
+ CPhoneTwoSingles::HandlePhoneEngineMessageL( aMessage, aCallId );
+ break;
default:
CPhoneTwoSingles::HandlePhoneEngineMessageL( aMessage, aCallId );
break;
@@ -179,37 +199,6 @@
}
// -----------------------------------------------------------
-// CPhoneTwoSinglesAndWaiting::OpenMenuBarL
-// -----------------------------------------------------------
-//
-void CPhoneTwoSinglesAndWaiting::OpenMenuBarL()
- {
- __LOGMETHODSTARTEND( EPhoneUIStates,
- "CPhoneTwoSinglesAndWaiting::OpenMenuBarL()");
-
- TInt resourceId ( EPhoneCallTwoSinglesWaitingLockMenubar );
-
- if ( !IsAutoLockOn() )
- {
- if ( IsNumberEntryVisibleL() )
- {
- resourceId = EPhoneCallActiveHeldAndWaitingMenubarWithNumberEntry;
- }
- else
- {
- resourceId = EPhoneCallActiveHeldAndWaitingMenubar;
- }
- }
-
- TPhoneCmdParamInteger integerParam;
- integerParam.SetInteger(
- CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( resourceId ) );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarOpen,
- &integerParam );
- }
-
-// -----------------------------------------------------------
// CPhoneTwoSinglesAndWaiting::HandleIdleL
// -----------------------------------------------------------
//
@@ -217,21 +206,21 @@
{
__LOGMETHODSTARTEND( EPhoneUIStates,
"CPhoneTwoSinglesAndWaiting::HandleIdleL()");
- BeginUiUpdateLC();
- if ( !IsNumberEntryUsedL() )
- {
- iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
- }
+
+ BeginUiUpdateLC();
+
+ // Remove call
iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId );
if ( iRingingCallId == aCallId )
{
- StateTransitionToTwoSinglesL();
+ StateTransitionToTwoSinglesL();
}
else
{
StateTransitionToSingleAndWaitingL();
}
+
EndUiUpdate();
}
@@ -246,13 +235,11 @@
if ( IsNumberEntryUsedL() )
{
// Go to background if necessary
- if ( NeedToReturnToForegroundAppL() )
+ if ( NeedToSendToBackgroundL() )
{
- // Return phone to the background if menu application is needed to foreground.
+ // Return phone to the background if send to background is needed.
iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility );
-
UpdateCbaL( EPhoneCallHandlingInCallCBA );
}
else
@@ -265,21 +252,29 @@
{
// Set Two singles softkeys
UpdateCbaL( EPhoneCallHandlingNewCallSwapCBA );
-
- // If numberentry is not open just check NeedToReturnToForegroundAppL and
+
+ // If numberentry is not open just check NeedToSendToBackgroundL and
// sendbackround if needed.
- if ( NeedToReturnToForegroundAppL() )
+ if ( NeedToSendToBackgroundL() )
{
// Return phone to the background if send to background is needed.
iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
}
}
+ if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke )
+ && iStateMachine->PhoneStorage()->IsScreenLocked() )
+ {
+ EnableCallUIL();
+ }
+
+ // Reset blocked keys list
+ iStateMachine->PhoneStorage()->ResetBlockedKeysList();
+
// Go to two singles state
- SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer );
SetTouchPaneButtons( EPhoneTwoSinglesButtons );
// CBA updates in above if-else conditions
- iStateMachine->ChangeState( EPhoneStateTwoSingles );
+ iStateMachine->ChangeState( EPhoneStateTwoSingles );
}
// -----------------------------------------------------------
@@ -291,10 +286,21 @@
__LOGMETHODSTARTEND( EPhoneUIStates,
"CPhoneTwoSinglesAndWaiting::StateTransitionToSingleAndWaitingL()");
// Go to two singles state
- UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );
-
- // Set touch controls
- SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer );
+ TPhoneCmdParamInteger callIdParam;
+ iViewCommandHandle->ExecuteCommandL(
+ EPhoneViewGetExpandedBubbleCallId, &callIdParam );
+
+ if ( callIdParam.Integer()!=iRingingCallId )
+ {
+ CPhoneGsmInCall::UpdateInCallCbaL();
+ }
+ else
+ {
+ iCbaManager->SetCbaL( EPhoneCallHandlingCallWaitingCBA );
+ }
+
+ // Check if HW Keys or Call UI should be disabled
+ CheckDisableHWKeysAndCallUIL();
SetTouchPaneButtons( EPhoneWaitingCallButtons );
@@ -322,7 +328,9 @@
conferenceText,
callLabelId,
CCoeEnv::Static() );
- callHeaderParam.SetCLIText( conferenceText, CBubbleManager::ERight );
+ callHeaderParam.SetCLIText( conferenceText, TPhoneCmdParamCallHeaderData::ERight );
+
+ callHeaderParam.SetCallState(EPEStateConnectedConference);
callHeaderParam.SetCiphering(
iStateMachine->PhoneEngineInfo()->IsSecureCall( aCallId ) );
@@ -334,17 +342,25 @@
// can be taken into account at phoneuiview.
callHeaderParam.SetServiceId(
iStateMachine->PhoneEngineInfo()->ServiceId( aCallId ) );
-
- // Set touch controls
- SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer );
+
+ // Check if HW Keys or Call UI should be disabled
+ CheckDisableHWKeysAndCallUIL();
- SetTouchPaneButtons( EPhoneWaitingCallButtons );
iViewCommandHandle->ExecuteCommandL( EPhoneViewCreateConference, aCallId,
&callHeaderParam );
- SetNeedToReturnToForegroundAppStatusL( EFalse );
-
+ // Clear the flag
+ TPhoneCmdParamBoolean booleanParam;
+ booleanParam.SetBoolean( EFalse );
+ iViewCommandHandle->ExecuteCommandL(
+ EPhoneViewSetNeedToSendToBackgroundStatus, &booleanParam );
+
+ // Set touch controls
+ SetTouchPaneButtons( EPhoneWaitingCallButtons );
+
+ UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );
+
EndUiUpdate();
// Go to Conference And Waiting state
// No need for CBA update
@@ -359,7 +375,19 @@
{
__LOGMETHODSTARTEND( EPhoneUIStates,
"CPhoneTwoSinglesAndWaiting::UpdateInCallCbaL()");
- UpdateCbaL ( EPhoneCallHandlingCallWaitingCBA );
+
+ TPhoneCmdParamInteger callIdParam;
+ iViewCommandHandle->ExecuteCommandL(
+ EPhoneViewGetExpandedBubbleCallId, &callIdParam );
+
+ if ( callIdParam.Integer()!=iRingingCallId )
+ {
+ CPhoneGsmInCall::UpdateInCallCbaL();
+ }
+ else
+ {
+ iCbaManager->SetCbaL( EPhoneCallHandlingIncomingRejectCBA );
+ }
}
// -----------------------------------------------------------
@@ -372,5 +400,39 @@
"CPhoneTwoSinglesAndWaiting::HandleNumberEntryClearedL()");
UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );
}
-
+
+// -----------------------------------------------------------
+// CPhoneTwoSinglesAndWaiting::HandleCommandL
+// -----------------------------------------------------------
+//
+TBool CPhoneTwoSinglesAndWaiting::HandleCommandL( TInt aCommand )
+ {
+ __LOGMETHODSTARTEND( EPhoneUIStates,
+ "CPhoneTwoSinglesAndWaiting::HandleCommandL() ");
+ TBool commandStatus = ETrue;
+
+ switch( aCommand )
+ {
+ case EPhoneCmdUpdateUiControls:
+ UpdateUiControlsL();
+ break;
+
+ default:
+ commandStatus = CPhoneGsmInCall::HandleCommandL( aCommand );
+ break;
+ }
+
+ return commandStatus;
+ }
+
+// -----------------------------------------------------------
+// CPhoneTwoSinglesAndWaiting::UpdateUiControlsL
+// -----------------------------------------------------------
+//
+void CPhoneTwoSinglesAndWaiting::UpdateUiControlsL()
+ {
+ __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndWaiting::UpdateUiControlsL( ) ");
+ UpdateInCallCbaL();
+ }
+
// End of File