--- a/phoneapp/phoneuistates/src/cphoneerrormessageshandler.cpp Thu Aug 19 09:54:27 2010 +0300
+++ b/phoneapp/phoneuistates/src/cphoneerrormessageshandler.cpp Tue Aug 31 15:14:29 2010 +0300
@@ -34,6 +34,12 @@
#include "tphonecmdparamglobalnote.h"
#include "tphonecmdparamnote.h"
#include "cphonemainresourceresolver.h"
+#include "cphonecenrepproxy.h"
+
+// CONSTANTS
+const TUid KCRUidTelConfiguration = {0x102828B8};
+
+const TUint32 KTelShowCauseCode = 0x00000002;
// ================= MEMBER FUNCTIONS =======================
@@ -45,9 +51,17 @@
MPhoneViewCommandHandle* aViewCommandHandle,
MPhoneStateMachine* aStateMachine ) :
iViewCommandHandle( aViewCommandHandle),
- iStateMachine (aStateMachine )
+ iStateMachine( aStateMachine ),
+ iCauseCodeVariation( EFalse )
{
- }
+ if ( KErrNone != CPhoneCenRepProxy::Instance()->GetInt(
+ KCRUidTelConfiguration,
+ KTelShowCauseCode,
+ iCauseCodeVariation ) )
+ {
+ iCauseCodeVariation = EFalse;
+ }
+ }
// -----------------------------------------------------------
// CPhoneErrorMessagesHandler::~CPhoneErrorMessagesHandler()
@@ -93,7 +107,8 @@
// CPhoneErrorMessagesHandler::SendGlobalInfoNoteL
// ---------------------------------------------------------
//
-EXPORT_C void CPhoneErrorMessagesHandler::SendGlobalInfoNoteL( TInt aResourceId )
+EXPORT_C void CPhoneErrorMessagesHandler::SendGlobalInfoNoteL(
+ TInt aResourceId, TBool aNotificationDialog )
{
__LOGMETHODSTARTEND( EPhoneControl,
"CPhoneErrorMessagesHandler::SendGlobalInfoNoteL()" );
@@ -105,16 +120,34 @@
// Re-enable global notes
TPhoneCmdParamBoolean globalNotifierParam;
globalNotifierParam.SetBoolean( EFalse );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetGlobalNotifiersDisabled, &globalNotifierParam );
+ iViewCommandHandle->ExecuteCommandL(
+ EPhoneViewSetGlobalNotifiersDisabled,
+ &globalNotifierParam );
TPhoneCmdParamGlobalNote globalNoteParam;
-
- globalNoteParam.SetType( EAknGlobalInformationNote );
- globalNoteParam.SetTextResourceId(
- CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( aResourceId ) );
- globalNoteParam.SetTone( EAvkonSIDInformationTone );
+ PhoneNotificationType type = aNotificationDialog ?
+ EPhoneNotificationDialog : EPhoneMessageBoxInformation;
+ globalNoteParam.SetType( type );
+ globalNoteParam.SetNotificationDialog( aNotificationDialog );
+ TInt resourceID( KErrNotFound );
+ TInt causeCode( KErrNotFound );
+ TBool notification( ETrue );
+ if ( iCauseCodeVariation && GetCauseCode( causeCode, resourceID, notification ) )
+ {
+ globalNoteParam.SetNotificationDialog( notification );
+ globalNoteParam.SetCauseCode(causeCode);
+ globalNoteParam.SetTextResourceId(
+ CPhoneMainResourceResolver::Instance()->
+ ResolveResourceID( resourceID ) );
+ }
+ else
+ {
+ globalNoteParam.SetTextResourceId(
+ CPhoneMainResourceResolver::Instance()->
+ ResolveResourceID( aResourceId ) );
+ }
+
iViewCommandHandle->ExecuteCommandL(
EPhoneViewShowGlobalNote, &globalNoteParam );
}
@@ -125,7 +158,8 @@
// CPhoneErrorMessagesHandler::SendGlobalErrorNoteL
// ---------------------------------------------------------
//
-EXPORT_C void CPhoneErrorMessagesHandler::SendGlobalErrorNoteL( TInt aResourceId )
+EXPORT_C void CPhoneErrorMessagesHandler::SendGlobalErrorNoteL(
+ TInt aResourceId, TBool aNotificationDialog )
{
__LOGMETHODSTARTEND( EPhoneControl,
"CPhoneErrorMessagesHandler::SendGlobalErrorNoteL()" );
@@ -142,12 +176,29 @@
&globalNotifierParam );
TPhoneCmdParamGlobalNote globalNoteParam;
- globalNoteParam.SetType( EAknGlobalErrorNote );
- globalNoteParam.SetTextResourceId(
- CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( aResourceId ) );
- globalNoteParam.SetTone( CAknNoteDialog::EErrorTone );
-
+ PhoneNotificationType type = aNotificationDialog ?
+ EPhoneNotificationDialog : EPhoneMessageBoxInformation;
+ globalNoteParam.SetType( type );
+ globalNoteParam.SetNotificationDialog( aNotificationDialog );
+
+ TInt resourceID( KErrNotFound );
+ TInt causeCode( KErrNotFound );
+ TBool notification( ETrue );
+ if ( iCauseCodeVariation && GetCauseCode( causeCode, resourceID, notification ) )
+ {
+ globalNoteParam.SetNotificationDialog( notification );
+ globalNoteParam.SetCauseCode(causeCode);
+ globalNoteParam.SetTextResourceId(
+ CPhoneMainResourceResolver::Instance()->
+ ResolveResourceID( resourceID ) );
+ }
+ else
+ {
+ globalNoteParam.SetTextResourceId(
+ CPhoneMainResourceResolver::Instance()->
+ ResolveResourceID( aResourceId ) );
+ }
+
iViewCommandHandle->ExecuteCommandL(
EPhoneViewShowGlobalNote, &globalNoteParam );
}
@@ -158,7 +209,8 @@
// CPhoneErrorMessagesHandler::SendGlobalWarningNoteL
// ---------------------------------------------------------
//
-EXPORT_C void CPhoneErrorMessagesHandler::SendGlobalWarningNoteL( TInt aResourceId )
+EXPORT_C void CPhoneErrorMessagesHandler::SendGlobalWarningNoteL(
+ TInt aResourceId, TBool aNotificationDialog )
{
__LOGMETHODSTARTEND(EPhoneControl, "CPhoneErrorMessagesHandler::SendGlobalWarningNoteL( ) ");
__ASSERT_DEBUG( aResourceId, Panic( EPhoneCtrlParameterNotInitialized ) );
@@ -175,12 +227,29 @@
&globalNotifierParam );
TPhoneCmdParamGlobalNote globalNoteParam;
- globalNoteParam.SetType( EAknGlobalWarningNote );
- globalNoteParam.SetTextResourceId(
- CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( aResourceId ) );
- globalNoteParam.SetTone( EAvkonSIDWarningTone );
+ PhoneNotificationType type = aNotificationDialog ?
+ EPhoneNotificationDialog : EPhoneMessageBoxInformation;
+ globalNoteParam.SetType( type );
+ globalNoteParam.SetNotificationDialog( aNotificationDialog );
+ TInt resourceID( KErrNotFound );
+ TInt causeCode( KErrNotFound );
+ TBool notification( ETrue );
+ if ( iCauseCodeVariation && GetCauseCode( causeCode, resourceID, notification) )
+ {
+ globalNoteParam.SetNotificationDialog( notification );
+ globalNoteParam.SetCauseCode(causeCode);
+ globalNoteParam.SetTextResourceId(
+ CPhoneMainResourceResolver::Instance()->
+ ResolveResourceID( resourceID ) );
+ }
+ else
+ {
+ globalNoteParam.SetTextResourceId(
+ CPhoneMainResourceResolver::Instance()->
+ ResolveResourceID( aResourceId ) );
+ }
+
iViewCommandHandle->ExecuteCommandL(
EPhoneViewShowGlobalNote, &globalNoteParam );
}
@@ -209,26 +278,27 @@
__PHONELOG1( EBasic, EPhoneControl,
"PhoneUIControl: CPhoneErrorMessagesHandler::ShowErrorSpecificNoteL - aErrorInfo.iErrorCode =%d ",
aErrorInfo.iErrorCode);
-
+ iCallId = aErrorInfo.iCallId;
+
switch( aErrorInfo.iErrorCode )
{
case ECCPErrorRejected:
case ECCPRequestFailure:
- SendGlobalErrorNoteL( EPhoneNoteTextRequestRejected );
+ SendGlobalErrorNoteL( EPhoneNoteTextRequestRejected, ETrue );
break;
case ECCPErrorInvalidPhoneNumber:
- SendGlobalErrorNoteL( EPhoneInvalidPhoneNumber );
+ SendGlobalErrorNoteL( EPhoneInvalidPhoneNumber, ETrue );
break;
case ECCPErrorInvalidURI:
if( IsVideoCall( aErrorInfo.iCallId ) )
{
- SendGlobalInfoNoteL( EPhoneInvalidPhoneNumber );
+ SendGlobalInfoNoteL( EPhoneInvalidPhoneNumber, ETrue );
}
else
{
- SendGlobalErrorNoteL( EPhoneInvalidPhoneNumber );
+ SendGlobalErrorNoteL( EPhoneInvalidPhoneNumber, ETrue );
}
break;
@@ -239,13 +309,13 @@
}
else
{
- SendGlobalInfoNoteL( EPhoneNoteTextCheckNetworkservices );
+ SendGlobalInfoNoteL( EPhoneNoteTextCheckNetworkservices, ETrue );
}
break;
case ECCPErrorNotAllowedInOfflineMode:
case ECCPErrorAuthenticationFailed:
- SendGlobalWarningNoteL( EPhoneEmergencyCallsOnly );
+ SendGlobalWarningNoteL( EPhoneEmergencyCallsOnly, ETrue );
break;
case ECCPErrorNotReady:
@@ -254,69 +324,68 @@
case ECCPErrorNotFound:
case ECCPErrorTimedOut:
case ECCPErrorAccessDenied:
- SendGlobalWarningNoteL( EPhoneNoteTextNotAllowed );
+ SendGlobalWarningNoteL( EPhoneNoteTextNotAllowed, ETrue );
break;
case ECCPErrorAlreadyInUse:
- SendGlobalErrorNoteL( EPhoneNoteTextCallNotAllowed );
+ SendGlobalErrorNoteL( EPhoneNoteTextCallNotAllowed, ETrue );
break;
case ECCPErrorInvalidFDN:
- SendGlobalWarningNoteL( EPhoneNoteTextCallNotAllowedFDN );
+ SendGlobalWarningNoteL( EPhoneNoteTextCallNotAllowedFDN, ETrue );
break;
case ECCPErrorNotReached:
if( IsVideoCall( aErrorInfo.iCallId ) )
{
- SendGlobalInfoNoteL( EPhoneNumberNotInUse );
+ SendGlobalInfoNoteL( EPhoneNumberNotInUse, ETrue );
}
else
{
- SendGlobalWarningNoteL( EPhoneNumberNotInUse );
+ SendGlobalWarningNoteL( EPhoneNumberNotInUse, ETrue );
}
break;
case ECCPErrorUnacceptableChannel:
- case ECCPErrorCCDestinationOutOfOrder:
- case ECCPErrorAccessInformationDiscarded:
- case ECCPErrorQualityOfServiceNotAvailable:
+ case ECCPErrorCCDestinationOutOfOrder:
case ECCPErrorInvalidCallReferenceValue:
case ECCPErrorCCInvalidTransitNetworkSelection:
case ECCPErrorConnectionError:
case ECCPErrorCCIncompatibleMessageInCallState:
- if( IsVideoCall( aErrorInfo.iCallId ) &&
- iStateMachine->PhoneEngineInfo()->ProfileId() != EProfileOffLineId )
+ if( IsVideoCall( aErrorInfo.iCallId ) )
{
SendGlobalInfoNoteL( EPhoneNoteVideoCallNotPossible );
}
else
{
- SendGlobalWarningNoteL( EPhoneErrorInConnection );
+ SendGlobalWarningNoteL( EPhoneErrorInConnection, ETrue );
}
break;
-
+
+ case ECCPErrorQualityOfServiceNotAvailable:
+ case ECCPErrorAccessInformationDiscarded:
case ECCPErrorCCResourceNotAvailable:
- SendGlobalWarningNoteL( EPhoneErrorInConnection );
+ SendGlobalWarningNoteL( EPhoneErrorInConnection, ETrue );
break;
case ECCPErrorNumberBarred:
- SendGlobalWarningNoteL( EPhoneNumberBarred );
+ SendGlobalWarningNoteL( EPhoneNumberBarred, ETrue );
break;
case ECCPErrorCCUserAlertingNoAnswer:
if( IsVideoCall( aErrorInfo.iCallId ) )
{
- SendGlobalInfoNoteL( EPhoneNoAnswer );
+ SendGlobalInfoNoteL( EPhoneNoAnswer, ETrue );
}
else
{
- SendGlobalWarningNoteL( EPhoneNoAnswer );
+ SendGlobalWarningNoteL( EPhoneNoAnswer, ETrue );
}
break;
case KErrPhoneEngineNoWcdmaNetwork: // Videotel special case. Refactoring PE/CSPlugin needed
- case ECCPErrorVideoCallNotSupportedByNetwork:
+ case ECCPErrorVideoCallNotSupportedByNetwork: ////
SendGlobalInfoNoteL( EPhoneInformationNoNetworkSupportForVideoCallNote );
break;
@@ -331,37 +400,37 @@
break;
case ECCPErrorNetworkBusy:
- SendGlobalWarningNoteL( EPhoneNetworkBusy );
+ SendGlobalWarningNoteL( EPhoneNetworkBusy, ETrue );
break;
case ECCPErrorNoService:
- SendGlobalWarningNoteL( EPhoneNoteNoService );
+ SendGlobalWarningNoteL( EPhoneNoteNoService, ETrue );
break;
case ECCPErrorBusy:
- SendGlobalWarningNoteL( EPhoneNumberBusy );
+ SendGlobalWarningNoteL( EPhoneNumberBusy, ETrue );
break;
case ECCPErrorUserNotInCug:
if( IsVideoCall( aErrorInfo.iCallId ) )
{
- SendGlobalInfoNoteL( EPhoneNumberNotInCUG );
+ SendGlobalInfoNoteL( EPhoneNumberNotInCUG, ETrue );
}
- else
+ else
{
- SendGlobalWarningNoteL( EPhoneNumberNotInCUG );
+ SendGlobalWarningNoteL( EPhoneNumberNotInCUG, ETrue );
}
break;
case ECCPErrorCCNoRouteToDestination:
- if( IsVideoCall( aErrorInfo.iCallId ) )
- {
- SendGlobalInfoNoteL( EPhoneNotePhoneOutOf3GCoverage );
- }
- else
- {
- SendGlobalWarningNoteL( EPhoneErrorInConnection );
- }
+ if( IsVideoCall( aErrorInfo.iCallId ) )
+ {
+ SendGlobalInfoNoteL( EPhoneErrorInConnection );
+ }
+ else
+ {
+ SendGlobalWarningNoteL( EPhoneErrorInConnection, ETrue );
+ }
break;
case ECCPErrorCCNormalCallClearing:
@@ -374,59 +443,69 @@
case ECCPErrorCCUserNotResponding:
if( IsVideoCall( aErrorInfo.iCallId ) )
{
- SendGlobalInfoNoteL( EPhoneNoteCallInfoCauseValue18 );
+ SendGlobalInfoNoteL( EPhoneNoAnswer );
}
else
{
- SendGlobalWarningNoteL( EPhoneNoAnswer );
+ SendGlobalWarningNoteL( EPhoneNoAnswer, ETrue );
}
break;
case ECCPErrorCCCallRejected:
- if( IsVideoCall( aErrorInfo.iCallId ) )
+ if ( !iStateMachine->PhoneEngineInfo()->IsOutgoingCallBarringActivated() )
{
- SendGlobalInfoNoteL( EPhoneNoteCalledNumberHasBarredIncomingCalls );
- }
- else if ( IsVoiceCall( aErrorInfo.iCallId ))
- {
- SendGlobalWarningNoteL( EPhoneNoteCallInfoCauseValue21 );
+ if( IsVideoCall( aErrorInfo.iCallId ) )
+ {
+ SendGlobalInfoNoteL( EPhoneNoteCalledNumberHasBarredIncomingCalls );
+ }
+ else if ( IsVoiceCall( aErrorInfo.iCallId ))
+ {
+ SendGlobalWarningNoteL( EPhoneNoteCalledNumberHasBarredIncomingCalls, ETrue );
+ }
}
break;
case ECCPErrorMovedPermanently:
- SendGlobalInfoNoteL( EPhoneNoteCallInfoCauseValue22 );
+ if( IsVideoCall( aErrorInfo.iCallId ) )
+ {
+ SendGlobalInfoNoteL( EPhoneNumberNotInUse );
+ }
+ else
+ {
+ SendGlobalWarningNoteL( EPhoneNumberNotInUse, ETrue );
+ }
break;
case ECCPErrorNoAnswerForVideo:
if( IsVideoCall( aErrorInfo.iCallId ) )
{
- SendGlobalInfoNoteL( EPhoneNoteCallInfoCauseValue16 );
+ SendGlobalInfoNoteL( EPhoneNotePhoneOutOf3GCoverage );
}
else
{
- SendGlobalWarningNoteL( EPhoneNoAnswer );
+ SendGlobalWarningNoteL( EPhoneNoAnswer, ETrue );
}
break;
case ECCPErrorCCNoChannelAvailable:
if( IsVideoCall( aErrorInfo.iCallId ) )
{
- SendGlobalInfoNoteL( EPhoneNoteCallInfoCauseValue34 );
+ SendGlobalInfoNoteL( EPhoneNetworkBusy );
}
else
{
- SendGlobalWarningNoteL( EPhoneNetworkBusy );
+ SendGlobalWarningNoteL( EPhoneNetworkBusy, ETrue );
}
break;
case ECCPErrorNetworkOutOfOrder:
if( IsVideoCall( aErrorInfo.iCallId ) )
{
- SendGlobalInfoNoteL( EPhoneNoteCallInfoCauseValue38 );
+ SendGlobalInfoNoteL( EPhoneErrorInConnection );
}
else
{
- SendGlobalWarningNoteL( EPhoneErrorInConnection );
+ SendGlobalWarningNoteL( EPhoneErrorInConnection, ETrue );
}
break;
@@ -437,12 +516,19 @@
}
else
{
- SendGlobalWarningNoteL( EPhoneNoteTextNotAllowed );
+ SendGlobalWarningNoteL( EPhoneNoteTextNotAllowed, ETrue );
}
break;
case ECCPErrorCCIncomingCallsBarredInCug:
- SendGlobalInfoNoteL( EPhoneNoteCallInfoCauseValue55 );
+ if( IsVideoCall( aErrorInfo.iCallId ) )
+ {
+ SendGlobalInfoNoteL( EPhoneNumberBarred );
+ }
+ else
+ {
+ SendGlobalWarningNoteL( EPhoneNumberBarred, ETrue );
+ }
break;
case ECCPErrorCCIncompatibleDestination:
@@ -451,12 +537,22 @@
{
SendGlobalInfoNoteL( EPhoneNoteUnableToMakeVideoCallNotSupportedByOtherPhone );
}
+ else
+ {
+ SendGlobalWarningNoteL( EPhoneErrorInConnection, ETrue );
+ }
break;
case ECCPErrorCCBearerCapabilityNotCurrentlyAvailable:
+ case ECCPErrorCCInvalidMandatoryInformation:
+ case ECCPErrorCCUnspecifiedInterworkingError:
if( IsVideoCall( aErrorInfo.iCallId ) )
{
- SendGlobalInfoNoteL( EPhoneNoteCallInfoCauseValue58 );
+ SendGlobalInfoNoteL( EPhoneNoteVideoCallNotPossible );
+ }
+ else
+ {
+ SendGlobalWarningNoteL( EPhoneErrorInConnection, ETrue );
}
break;
@@ -467,91 +563,102 @@
}
else
{
- SendGlobalWarningNoteL( EPhoneErrorInConnection );
+ SendGlobalWarningNoteL( EPhoneErrorInConnection, ETrue );
}
break;
- case ECCPErrorCCUnspecifiedInterworkingError:
- if( IsVideoCall( aErrorInfo.iCallId ) )
- {
- SendGlobalInfoNoteL( EPhoneNoteCallInfoCauseValue127 );
- }
- break;
-
- case ECCPErrorCCPreemption:
- case ECCPErrorCCResponseToStatusEnquiry:
- case ECCPErrorCCInvalidMandatoryInformation:
- case ECCPErrorCCNonExistentMessageType:
- case ECCPErrorCCIncompatibleMessageInProtocolState:
- case ECCPErrorCCNonExistentInformationElement:
- if( IsVideoCall( aErrorInfo.iCallId ) )
- {
- SendGlobalInfoNoteL( EPhoneNoteCallInfoNotSupported );
- }
- else
- {
- SendGlobalWarningNoteL( EPhoneErrorInConnection );
- }
- break;
-
- case ECCPErrorCCRecoveryOnTimerExpiry:
- if( IsVideoCall( aErrorInfo.iCallId ) )
- {
- SendGlobalInfoNoteL( EPhoneNoteCallInfoNotSupported );
- }
- break;
-
- case ECCPErrorCCFacilityRejected:
+ case ECCPErrorCCPreemption:
if( IsVideoCall( aErrorInfo.iCallId ) )
{
SendGlobalInfoNoteL( EPhoneNoteCallInfoNotSupported );
}
else
{
- SendGlobalErrorNoteL( EPhoneNoteTextRequestRejected );
+ SendGlobalWarningNoteL( EPhoneErrorInConnection, ETrue );
+ }
+ break;
+ case ECCPErrorCCResponseToStatusEnquiry:
+ if( IsVideoCall( aErrorInfo.iCallId ) )
+ {
+ SendGlobalInfoNoteL( EPhoneErrorInConnection );
+ }
+ else
+ {
+ SendGlobalWarningNoteL( EPhoneErrorInConnection, ETrue );
+ }
+ break;
+
+ case ECCPErrorCCFacilityRejected:
+ if( IsVideoCall( aErrorInfo.iCallId ) )
+ {
+ SendGlobalInfoNoteL( EPhoneNoteTextRequestRejected );
+ }
+ else
+ {
+ SendGlobalErrorNoteL( EPhoneNoteTextRequestRejected, ETrue );
}
break;
case ECCPTransferFailed:
- SendGlobalErrorNoteL( EPhoneNoteTextRequestRejected );
+ SendGlobalErrorNoteL( EPhoneNoteTextRequestRejected, ETrue );
break;
- case ECCPErrorCCServiceNotAvailable:
case ECCPErrorCCBearerServiceNotImplemented:
case ECCPErrorCCOnlyRestrictedDigitalInformationBCAvailable:
+ case ECCPErrorCCNonExistentMessageType:
+ case ECCPErrorCCIncompatibleMessageInProtocolState:
+ case ECCPErrorCCNonExistentInformationElement:
+ case ECCPErrorCCRecoveryOnTimerExpiry:
+ if ( IsVideoCall( aErrorInfo.iCallId ) )
+ {
+ SendGlobalInfoNoteL( EPhoneNoteVideoCallNotPossible ); //Video call didn't succeed to called end.
+ }
+ else
+ {
+ SendGlobalWarningNoteL( EPhoneErrorInConnection, ETrue );
+ }
+ break;
+
case ECCPErrorCCServiceNotImplemented:
if( IsVideoCall( aErrorInfo.iCallId ) )
{
SendGlobalInfoNoteL( EPhoneNoteCallInfoServiceNotAvailable );
}
+ break;
+
+ case ECCPErrorCCServiceNotAvailable:
+ if( IsVideoCall( aErrorInfo.iCallId ) )
+ {
+ SendGlobalInfoNoteL( EPhoneErrorInConnection );
+ }
else
{
- SendGlobalWarningNoteL( EPhoneErrorInConnection );
+ SendGlobalWarningNoteL( EPhoneErrorInConnection, ETrue );
}
break;
case ECCPErrorCUGOutgoingCallsBarred:
- SendGlobalInfoNoteL( EPhoneOutgoingCallsBarredWithinCUG );
+ SendGlobalInfoNoteL( EPhoneOutgoingCallsBarredWithinCUG, ETrue );
break;
case ECCPErrorCUGNotSelected:
- SendGlobalInfoNoteL( EPhoneNoCUGSelected );
+ SendGlobalInfoNoteL( EPhoneNoCUGSelected, ETrue );
break;
case ECCPErrorCUGIndexUnknown:
- SendGlobalInfoNoteL( EPhoneUnknownCUGIndex );
+ SendGlobalInfoNoteL( EPhoneUnknownCUGIndex, ETrue );
break;
case ECCPErrorCUGIndexIncompatible:
- SendGlobalInfoNoteL( EPhoneCUGIndexIncompatible );
+ SendGlobalInfoNoteL( EPhoneCUGIndexIncompatible, ETrue );
break;
case ECCPErrorCUGCallsFailure:
- SendGlobalInfoNoteL( EPhoneCUGCallsFailure );
+ SendGlobalInfoNoteL( EPhoneCUGCallsFailure, ETrue );
break;
case ECCPErrorCLIRNotSubscribed:
- SendGlobalInfoNoteL( EPhoneCLIRNotSubscribed );
+ SendGlobalInfoNoteL( EPhoneCLIRNotSubscribed, ETrue );
break;
case ECCPErrorCCBSPossible:
@@ -567,6 +674,8 @@
aErrorInfo.iErrorCode);
break;
}
+
+ iCallId = KErrNotFound;
}
// -----------------------------------------------------------
@@ -587,7 +696,7 @@
return ( iStateMachine->PhoneEngineInfo()
->CallType( aCallId )== EPECallTypeVideo );
}
-
+
// -----------------------------------------------------------
// CPhoneErrorMessagesHandler::IsVoiceCall
// -----------------------------------------------------------
@@ -606,5 +715,464 @@
return ( iStateMachine->PhoneEngineInfo()
->CallType( aCallId )== EPECallTypeCSVoice );
}
+
+// -----------------------------------------------------------
+// CPhoneErrorMessagesHandler::GetCauseCode
+// -----------------------------------------------------------
+//
+TBool CPhoneErrorMessagesHandler::GetCauseCode(
+ TInt &aCauseCode, TInt &aResourceId, TBool &aNotification ) const
+ {
+ __LOGMETHODSTARTEND( EPhoneControl, "CPhoneErrorMessagesHandler::CauseCode() ");
+
+ aCauseCode = KErrNotFound;
+ aNotification = ETrue;
+ TInt callId = (KErrNotFound == iCallId) ?
+ iStateMachine->PhoneEngineInfo()->CallId() :
+ iCallId;
+
+
+ //get exit code error from call data
+ TInt callError = iStateMachine->PhoneEngineInfo()->ProtocolError(
+ callId );
+
+ switch( callError )
+ {
+ case KErrGsmCCUnassignedNumber:
+ aResourceId = EPhoneNumberNotInUse;
+ aCauseCode = 1;
+ break;
+
+ case KErrGsmCCNoRouteToDestination:
+ aResourceId = EPhoneErrorInConnection;
+ aCauseCode = 3;
+ break;
+
+ case KErrGsmCCChannelUnacceptable:
+ if ( IsVideoCall( callId ) )
+ {
+ aResourceId = EPhoneNoteVideoCallNotPossible; //Video call didn't succeed to called end.
+ aNotification = EFalse;
+ }
+ else
+ {
+ aResourceId = EPhoneErrorInConnection;
+ }
+ aCauseCode = 6;
+ break;
+
+ case KErrGsmCCOperatorDeterminedBarring:
+ aResourceId = EPhoneNumberBarred;
+ aCauseCode = 8;
+ break;
+
+ case KErrGsmCCUserBusy:
+ aResourceId = EPhoneNumberBusy;
+ aCauseCode = 17;
+ break;
+
+ case KErrGsmCCUserNotResponding:
+ aResourceId = EPhoneNoAnswer;
+ aCauseCode = 18;
+ break;
+
+ case KErrGsmCCUserAlertingNoAnswer:
+ aResourceId = EPhoneNoAnswer;
+ aCauseCode = 19;
+ break;
+
+ case KErrGsmCCCallRejected:
+ if ( !iStateMachine->PhoneEngineInfo()->IsOutgoingCallBarringActivated() )
+ {
+ aResourceId = EPhoneNoteCalledNumberHasBarredIncomingCalls;
+ aCauseCode = 21;
+ aNotification = (EFalse == IsVideoCall( callId ));
+ }
+ break;
+
+ case KErrGsmCCNumberChanged:
+ aResourceId = EPhoneNumberNotInUse;
+ aCauseCode = 22;
+ break;
+
+ case KErrGsmCCNonSelectedUserClearing:
+ if ( IsVideoCall( callId ) )
+ {
+ aResourceId = EPhoneNotePhoneOutOf3GCoverage;
+ aNotification = EFalse;
+ }
+ else
+ {
+ aResourceId = EPhoneNoAnswer;
+ }
+ aCauseCode = 26;
+ break;
+
+ case KErrGsmCCDestinationOutOfOrder:
+ if ( IsVideoCall( callId ) )
+ {
+ aResourceId = EPhoneNoteVideoCallNotPossible; //Video call didn't succeed to called end.
+ aNotification = EFalse;
+ }
+ else
+ {
+ aResourceId = EPhoneErrorInConnection;
+ }
+ aCauseCode = 27;
+ break;
+
+ case KErrGsmCCInvalidNumberFormat:
+ aResourceId = EPhoneInvalidPhoneNumber;
+ aCauseCode = 28;
+ break;
+
+ case KErrGsmCCFacilityRejected:
+ aResourceId = EPhoneNoteTextRequestRejected;
+ aCauseCode = 29;
+ break;
+
+ case KErrGsmCCResponseToStatusEnquiry:
+ aResourceId = EPhoneErrorInConnection;
+ aCauseCode = 30;
+ break;
+
+ case KErrGsmCCNormalUnspecified:
+ if ( IsVideoCall( callId ) )
+ {
+ aResourceId = EPhoneNotePhoneOutOf3GCoverage;
+ aNotification = EFalse;
+ }
+ else
+ {
+ aResourceId = EPhoneNoAnswer;
+ }
+ aCauseCode = 31;
+ break;
+
+ case KErrGsmCCNoChannelAvailable:
+ aResourceId = EPhoneNetworkBusy;
+ aCauseCode = 34;
+ break;
+
+ case KErrGsmCCNetworkOutOfOrder:
+ aResourceId = EPhoneErrorInConnection;
+ aCauseCode = 38;
+ break;
+
+ case KErrGsmCCTemporaryFailure:
+ aResourceId = EPhoneNetworkBusy;
+ aCauseCode = 41;
+ break;
+
+ case KErrGsmCCSwitchingEquipmentCongestion:
+ aResourceId = EPhoneNetworkBusy;
+ aCauseCode = 42;
+ break;
+
+ case KErrGsmCCAccessInformationDiscarded:
+ aResourceId = EPhoneErrorInConnection;
+ aCauseCode = 43;
+ break;
+
+ case KErrGsmCCRequestedChannelNotAvailable:
+ aResourceId = EPhoneNetworkBusy;
+ aCauseCode = 44;
+ break;
+
+ case KErrGsmCCResourceNotAvailable:
+ aResourceId = EPhoneErrorInConnection;
+ aCauseCode = 47;
+ break;
+
+ case KErrGsmCCQualityOfServiceNotAvailable:
+ aResourceId = EPhoneErrorInConnection;
+ aCauseCode = 49;
+ break;
+
+ case KErrGsmCCRequestedFacilityNotSubscribed:
+ if ( IsVideoCall( callId ) )
+ {
+ aResourceId = EPhoneNoteVideoCallOnlyPossibleUnder3GCoverage;
+ aNotification = EFalse;
+ }
+ else
+ {
+ aResourceId = EPhoneNoteTextNotAllowed;
+ }
+ aCauseCode = 50;
+ break;
+
+ case KErrGsmCCIncomingCallsBarredInCug:
+ aResourceId = EPhoneNumberBarred;
+ aCauseCode = 55;
+ break;
+
+ case KErrGsmCCBearerCapabilityNotAuthorised:
+ if ( IsVideoCall( callId ) )
+ {
+ aResourceId = EPhoneNoteUnableToMakeVideoCallNotSupportedByOtherPhone;
+ aNotification = EFalse;
+ }
+ else
+ {
+ aResourceId = EPhoneErrorInConnection;
+ }
+ aCauseCode = 57;
+ break;
+
+ case KErrGsmCCBearerCapabilityNotCurrentlyAvailable:
+ if ( IsVideoCall( callId ) )
+ {
+ aResourceId = EPhoneNoteVideoCallNotPossible; //Video call didn't succeed to called end.
+ aNotification = EFalse;
+ }
+ else
+ {
+ aResourceId = EPhoneErrorInConnection;
+ }
+ aCauseCode = 58;
+ break;
+
+ case KErrGsmCCServiceNotAvailable:
+ aResourceId = EPhoneErrorInConnection;
+ aCauseCode = 63;
+ break;
+
+ case KErrGsmCCBearerServiceNotImplemented:
+ if ( IsVideoCall( callId ) )
+ {
+ aResourceId = EPhoneNoteVideoCallNotPossible; //Video call didn't succeed to called end.
+ aNotification = EFalse;
+ }
+ else
+ {
+ aResourceId = EPhoneErrorInConnection;
+ }
+ aCauseCode = 65;
+ break;
+
+ case KErrGsmCCAcmGreaterThanAcmMax:
+ aResourceId = EPhoneErrorInConnection;
+ aCauseCode = 68;
+ break;
+
+ case KErrGsmCCRequestedFacilityNotImplemented:
+ if ( IsVideoCall( callId ) )
+ {
+ aResourceId = EPhoneNotePhoneOutOf3GCoverage;
+ aNotification = EFalse;
+ }
+ else
+ {
+ aResourceId = EPhoneNoteTextCheckNetworkservices;
+ }
+ aCauseCode = 69;
+ break;
+
+ case KErrGsmCCOnlyRestrictedDigitalInformationBCAvailable:
+ if ( IsVideoCall( callId ) )
+ {
+ aResourceId = EPhoneNoteVideoCallNotPossible;
+ aNotification = EFalse;
+ }
+ else
+ {
+ aResourceId = EPhoneNoteTextCheckNetworkservices;
+ }
+ aCauseCode = 70;
+ break;
+
+ case KErrGsmCCServiceNotImplemented:
+ if ( IsVideoCall( callId ) )
+ {
+ aResourceId = EPhoneNoteVideoCallNotPossible;
+ aNotification = EFalse;
+ }
+ else
+ {
+ aResourceId = EPhoneErrorInConnection;
+ }
+ aCauseCode = 79;
+ break;
+
+ case KErrGsmCCInvalidCallReferenceValue:
+ if ( IsVideoCall( callId ) )
+ {
+ aResourceId = EPhoneNoteVideoCallNotPossible;
+ aNotification = EFalse;
+ }
+ else
+ {
+ aResourceId = EPhoneErrorInConnection;
+ }
+ aCauseCode = 81;
+ break;
+
+ case KErrGsmCCUserNotInCug:
+ aResourceId = EPhoneNumberNotInCUG;
+ aCauseCode = 87;
+ break;
+
+ case KErrGsmCCIncompatibleDestination:
+ if ( IsVideoCall( callId ) )
+ {
+ aResourceId = EPhoneNoteUnableToMakeVideoCallNotSupportedByOtherPhone;
+ aNotification = EFalse;
+ }
+ else
+ {
+ aResourceId = EPhoneErrorInConnection;
+ }
+ aCauseCode = 88;
+ break;
+
+ case KErrGsmCCInvalidTransitNetworkSelection:
+ if ( IsVideoCall( callId ) )
+ {
+ aResourceId = EPhoneNoteVideoCallNotPossible; //Video call didn't succeed to called end.
+ aNotification = EFalse;
+ }
+ else
+ {
+ aResourceId = EPhoneErrorInConnection;
+ }
+ aCauseCode = 91;
+ break;
+
+ case KErrGsmCCSemanticallyIncorrectMessage:
+ if ( IsVideoCall( callId ) )
+ {
+ aResourceId = EPhoneNoteVideoCallNotPossible; //Video call didn't succeed to called end.
+ aNotification = EFalse;
+ }
+ else
+ {
+ aResourceId = EPhoneErrorInConnection;
+ }
+ aCauseCode = 95;
+ break;
+
+ case KErrGsmCCInvalidMandatoryInformation:
+ if ( IsVideoCall( callId ) )
+ {
+ aResourceId = EPhoneNoteVideoCallNotPossible; //Video call didn't succeed to called end.
+ aNotification = EFalse;
+ }
+ else
+ {
+ aResourceId = EPhoneErrorInConnection;
+ }
+ aCauseCode = 96;
+ break;
+
+ case KErrGsmCCNonExistentMessageType:
+ if ( IsVideoCall( callId ) )
+ {
+ aResourceId = EPhoneNoteVideoCallNotPossible; //Video call didn't succeed to called end.
+ aNotification = EFalse;
+ }
+ else
+ {
+ aResourceId = EPhoneErrorInConnection;
+ }
+ aCauseCode = 97;
+ break;
+
+ case KErrGsmCCIncompatibleMessageInProtocolState:
+ if ( IsVideoCall( callId ) )
+ {
+ aResourceId = EPhoneNoteVideoCallNotPossible; //Video call didn't succeed to called end.
+ aNotification = EFalse;
+ }
+ else
+ {
+ aResourceId = EPhoneErrorInConnection;
+ }
+ aCauseCode = 98;
+ break;
+
+ case KErrGsmCCNonExistentInformationElement:
+ if ( IsVideoCall( callId ) )
+ {
+ aResourceId = EPhoneNoteVideoCallNotPossible; //Video call didn't succeed to called end.
+ aNotification = EFalse;
+ }
+ else
+ {
+ aResourceId = EPhoneErrorInConnection;
+ }
+ aCauseCode = 99;
+ break;
+
+ case KErrGsmCCConditionalIEError:
+ if ( IsVideoCall( callId ) )
+ {
+ aResourceId = EPhoneNoteVideoCallNotPossible; //Video call didn't succeed to called end.
+ aNotification = EFalse;
+ }
+ else
+ {
+ aResourceId = EPhoneErrorInConnection;
+ }
+ aCauseCode = 100;
+ break;
+
+ case KErrGsmCCIncompatibleMessageInCallState:
+ if ( IsVideoCall( callId ) )
+ {
+ aResourceId = EPhoneNoteVideoCallNotPossible; //Video call didn't succeed to called end.
+ aNotification = EFalse;
+ }
+ else
+ {
+ aResourceId = EPhoneErrorInConnection;
+ }
+ aCauseCode = 101;
+ break;
+
+ case KErrGsmCCRecoveryOnTimerExpiry:
+ if ( IsVideoCall( callId ) )
+ {
+ aResourceId = EPhoneNoteVideoCallNotPossible; //Video call didn't succeed to called end.
+ aNotification = EFalse;
+ }
+ else
+ {
+ aResourceId = EPhoneErrorInConnection;
+ }
+ aCauseCode = 102;
+ break;
+
+ case KErrGsmCCUnspecifiedProtocolError:
+ if ( IsVideoCall( callId ) )
+ {
+ aResourceId = EPhoneNoteVideoCallNotPossible; //Video call didn't succeed to called end.
+ aNotification = EFalse;
+ }
+ else
+ {
+ aResourceId = EPhoneErrorInConnection;
+ }
+ aCauseCode = 111;
+ break;
+
+ case KErrGsmCCUnspecifiedInterworkingError:
+ if ( IsVideoCall( callId ) )
+ {
+ aResourceId = EPhoneNoteVideoCallNotPossible; //Video call didn't succeed to called end.
+ aNotification = EFalse;
+ }
+ else
+ {
+ aResourceId = EPhoneErrorInConnection;
+ }
+ aCauseCode = 127;
+ break;
+ default:
+ break;
+ }
+
+ return (aCauseCode != KErrNotFound);
+ }
// End of File