--- a/phoneclientserver/phoneserver/Src/Ussd/CPhSrvUssdManager.cpp Tue Aug 31 15:45:17 2010 +0300
+++ b/phoneclientserver/phoneserver/Src/Ussd/CPhSrvUssdManager.cpp Wed Sep 01 12:15:03 2010 +0100
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
@@ -16,20 +16,26 @@
*/
// INCLUDE FILES
-#include "cphsrvussdmanager.h"
-#include "phsrvutils.h"
-#include "cphsrvussdsendhandler.h"
-#include "cphsrvussdreceivehandler.h"
-#include "cphsrvussdnotifynwrelease.h"
-#include "cphsrvresourcemanager.h"
-#include "cphsrvussdreplytimer.h"
-#include "mphsrvussdmessagesentobserver.h"
-#include "mphsrvphoneinterface.h"
-#include "cphsrvussdsessioncancelwaiter.h"
+#include "CPhSrvUssdManager.h"
+#include "PhSrvUtils.h"
+#include "CPhSrvUssdSendHandler.h"
+#include "CPhSrvUssdReceiveHandler.h"
+#include "CPhSrvUssdNotifyNWRelease.h"
+#include "CPhSrvResourceManager.h"
+#include "CPhSrvUssdReplyTimer.h"
+#include "MPhSrvUssdMessageSentObserver.h"
+#include "MPhSrvPhoneInterface.h"
+#include "CPhSrvUssdSessionCancelWaiter.h"
+#include <AknGlobalNote.h>
+#include <aknnotedialog.h>
+#include <aknstaticnotedialog.h>
+#include <AknProgressDialog.h>
#include <apacmdln.h>
#include <apgtask.h>
#include <bautils.h>
+#include <StringLoader.h>
+#include <AknGlobalMsgQuery.h>
#include <textresolver.h>
#include <charconv.h>
#include <gsmuelem.h>
@@ -38,26 +44,32 @@
#include <w32std.h>
#include <apgcli.h>
-#include <cphcltussd.h>
-#include <hbtextresolversymbian.h>
-#include <phoneserver.rsg>
-#include "phsrvdebuginfo.h"
+#include <CPhCltUssd.h>
+#include <avkon.rsg>
+#include <PhoneServer.rsg>
+#include <telservicesvariant.hrh>
+#include "PhSrvDebugInfo.h"
#include <e32property.h>
+
+#include <NcnListInternalPSKeys.h>
#include <centralrepository.h>
+#include <telservicesinternalcrkeys.h>
#include <coreapplicationuisdomainpskeys.h>
+//RM-RIM 417-66528
+#include <CUssdExtensionInterface.h>
// CONSTANTS
const TInt KPhSrvDefaultValue = 0x00000000;
-// See SharedDataKeysVariant.h or NcnListInternalPSKeys.h
-// const TInt KPhSrvUssdNoTone = 0;
+// const TInt KPhSrvUssdNoTone = 0; // See SharedDataKeysVariant.h or NcnListInternalPSKeys.h
+const TInt KPhSrvUssdTone = 2; // See SharedDataKeysVariant.h or NcnListInternalPSKeys.h
+
// const TInt KPhSrvUssdTimeOutObserverGranularity = 2;
// const TInt KPhSrvUssdSentMessageObserverGranularity = 2;
-// See KUssdSecureId in phcltclientserver.h
-//const TInt KPhSrvUssdAppUID = 0x10005955;
+const TInt KPhSrvUssdAppUID = 0x10005955;
const TInt KPhSrvUssdMessageQueryInterval = 500000; // 0.5 sec
-//const TInt KPhSrvUssdNoteExitPeriod = 500000; // 0.5 sec
+const TInt KPhSrvUssdNoteExitPeriod = 500000; // 0.5 sec
//
const TUint KPhSrvUssdDefaultDCS = 0x0f; // 00001111
@@ -82,24 +94,6 @@
const TUint KPhSrvUssdDcsMessageHandlingAlphabet8Bit = 0xf4; // 1111x1xx
const TInt KPhrUssdNotifyArraySize = 1;
-// Refers to HbPopup::NoDismiss = 0
-const TInt KPhSrvUssdPopupDismissPolicy = 0;
-// The time out only for testing, from CPhSrvUssdReplyTimer.cpp
-const TUint KPhSrvUssdTimeout = 300000000;
-
-// Use QT style localization
-_LIT(KUssdLocFilename, "ussd_");
-_LIT(KCommonLocFilename, "common_");
-_LIT(KLocPath, "z:\\resource\\qt\\translations");
-_LIT(KUssdReply, "txt_ussd_button_reply"); // Reply
-_LIT(KUssdExit, "txt_ussd_button_exit"); // Exit
-_LIT(KUssdNext, "txt_ussd_button_next"); //Next
-_LIT(KUssdYes, "txt_common_button_yes"); // Yes
-_LIT(KUssdNo, "txt_common_button_no"); // No
-_LIT(KUssdTitle, "txt_ussd_title_message"); // Message
-_LIT(KUssdDone, "txt_ussd_dpopinfo_done"); // Done
-_LIT(KUssdConfirm, "txt_ussd_info_there_are_still_unread_notifications");
-
// MACROS
#define _DPRINT_FLAGS() \
@@ -387,10 +381,9 @@
:CActive( EPriorityLow ),
iFsSession( aFsSession ),
iResourceManager( aResourceManager ),
- iDeviceDialog( NULL ),
iDCS ( KPhCltDcsUnknown ),
- iReturnResultPckg ( iReturnResult ),
- iTextBuffer ( NULL )
+ iReturnResultPckg ( iReturnResult )
+
{
CActiveScheduler::Add( this );
}
@@ -405,7 +398,7 @@
//
CPhSrvUssdManager::~CPhSrvUssdManager()
{
- _DPRINT( 4, "PhSrv.~CPhSrvUssdManager.start" );
+ _DPRINT( 4, "PhSrv.~CPhSrvUssdManager.start" ); // debug print
delete iUssdSendHandler;
@@ -420,12 +413,9 @@
Cancel();
iTimer.Close();
-
- delete iTextBuffer;
- iTextBuffer = NULL;
-
- delete iDeviceDialog;
- iDeviceDialog = NULL;
+
+ delete iGlobalMsgQuery;
+ iGlobalMsgQuery = NULL;
if ( iNotifyArray )
{
@@ -442,10 +432,17 @@
iFsSession.Close();
iMobileUssdMessaging.Close();
+
+ delete iMeQuHeaderText;
+ iMeQuHeaderText = NULL;
delete iMoAckCallback;
- _DPRINT( 4, "PhSrv.~CPhSrvUssdManager.end" );
+ // RM-RIM 417-66528
+ delete iUssdExtnInterface;
+ iUssdExtnInterface = NULL;
+
+ _DPRINT( 4, "PhSrv.~CPhSrvUssdManager.end" ); // debug print
}
@@ -458,10 +455,7 @@
//
void CPhSrvUssdManager::ConstructL( MPhSrvPhoneInterface& aPhoneInterface )
{
- _DPRINT( 4, "PhSrv.ConstructL.Start" );
- const TBool textResolver = HbTextResolverSymbian::Init(
- KUssdLocFilename, KLocPath );
- _DDPRINT( 4, "PhSrv.ConstructL.ussd loc:", textResolver );
+ _DPRINT( 4, "PhSrv.ConstructL.Start" ); // debug print
User::LeaveIfError( iTimer.CreateLocal() );
User::LeaveIfError( iMobileUssdMessaging.Open( aPhoneInterface.PhSrvMobilePhone() ) );
@@ -497,10 +491,18 @@
User::LeaveIfError( GetTelephonyVariantData() );
- _DDPRINT( 4, "PhSrv.ConstructL.iSatCanceled ", iSatCanceled );
+ iMeQuHeaderText = iResourceManager.ReadResourceLC(
+ R_PHSRV_USSD_MESQUERY_MESSAGE);
+ CleanupStack::Pop( iMeQuHeaderText );
+
+ _DDPRINT( 4, "PhSrv.ConstructL.iSatCanceled ", iSatCanceled );
_DDPRINT( 4, "PhSrv.ConstructL.iShowDone ", iShowDone );
iNotifyArray = new( ELeave ) CDesCArrayFlat( KPhrUssdNotifyArraySize );
- _DPRINT( 4, "PhSrv.ConstructL.End" );
+
+ // RM-RIM 417-66528
+ TRAP_IGNORE(iUssdExtnInterface = CUssdExtensionInterface::NewL());
+ _DPRINT( 4, "PhSrv.ConstructL.iUssdExtnInterface Created");
+ _DPRINT( 4, "PhSrv.ConstructL.End" ); // debug print
}
@@ -515,20 +517,20 @@
{
// If SendHandler is not created, first check that MO Ussd
// is supported by the TSY.
- _DPRINT( 4, "PhSrv.SendHandlerL.Start" );
+ _DPRINT( 4, "PhSrv.SendHandlerL.Start" ); // debug print
if ( iUssdSendHandler == NULL )
{
- _DPRINT( 4, "PhSrv.SendHandlerL.iUssdSendHandler.NULL" );
+ _DPRINT( 4, "PhSrv.SendHandlerL.iUssdSendHandler.NULL" ); // debug print
RMobileUssdMessaging::TMobileUssdCapsV1 caps;
RMobileUssdMessaging::TMobileUssdCapsV1Pckg pckgCaps( caps );
User::LeaveIfError( iMobileUssdMessaging.GetCaps( pckgCaps ) );
- _DPRINT( 4, "PhSrv.SendHandlerL.iMobileUssdMessaging.GetCaps" );
+ _DPRINT( 4, "PhSrv.SendHandlerL.iMobileUssdMessaging.GetCaps" ); // debug print
if ( ( caps.iUssdTypes & RMobileUssdMessaging::KCapsMOUssd ) == 0 ||
( caps.iUssdFormat & RMobileUssdMessaging::KCapsPackedString )
== 0 )
{
- _DPRINT( 4, "PhSrv.SendHandlerL.KErrNotSupported" );
+ _DPRINT( 4, "PhSrv.SendHandlerL.KErrNotSupported" ); // debug print
User::Leave( KErrNotSupported );
}
@@ -538,7 +540,7 @@
iMobileUssdMessaging,
*iPhoneInterface );
}
- _DPRINT( 4, "PhSrv.SendHandlerL.End" );
+ _DPRINT( 4, "PhSrv.SendHandlerL.End" ); // debug print
return *iUssdSendHandler;
}
@@ -555,15 +557,25 @@
RMobileUssdMessaging::TMobileUssdAttributesV1& aMsgAttribute,
MPhSrvUssdMessageSentObserver& aObserver )
{
- _DPRINT( 4, "PhSrv.SendUssdL.Start ######" );
+ _DPRINT( 4, "PhSrv.SendUssdL.Start ######" ); // debug print
_DPRINT_FLAGS();
+ //417-66528
+ if (iUssdExtnInterface)
+ {
+ if(!iUssdExtnInterface->ValidateUssdMsgSending(aMsgData,aMsgAttribute))
+ {
+ // invalid attempt to send USSD message. Show the note
+ User::Leave( KErrAccessDenied );
+ }
+ }
+
if ( iObserver && iNetworkReleased )
{
// Network has been released but the previous send request is still alive.
// Cancel the pervious send operation, complete the old request with error
// and clean up the pointer.
- _DPRINT( 4, "PhSrv.SendUssdL.Error.Complete.Existing" );
+ _DPRINT( 4, "PhSrv.SendUssdL.Error.Complete.Existing" ); // debug print
if ( iUssdSendHandler )
{
iUssdSendHandler->Cancel();
@@ -574,7 +586,7 @@
if ( iObserver || iSendingAck )
{
- _DPRINT( 4, "PhSrv.SendUssdL.KErrInUse" );
+ _DPRINT( 4, "PhSrv.SendUssdL.KErrInUse" ); // debug print
// Other client is using the service.
User::Leave( KErrInUse );
}
@@ -582,14 +594,14 @@
// Check that message type is set
if( ( aMsgAttribute.iFlags & RMobileUssdMessaging::KUssdMessageType )
== 0 )
- _DPRINT( 4, "PhSrv.SendUssdL.KUssdMessageType.0" );
+ _DPRINT( 4, "PhSrv.SendUssdL.KUssdMessageType.0" ); // debug print
{
// Mesasge type not set -> Set it.
aMsgAttribute.iFlags |= RMobileUssdMessaging::KUssdMessageType;
if ( NetworkWaitingForAnAnswer() )
{
// Network is waiting for an answer
- _DPRINT( 4, "PhSrv.SendUssdL.EUssdMOReply" ); // debug print
+ _DPRINT( 4, "PhSrv.SendUssdL.EUssdMOReply" ); // debug print
aMsgAttribute.iType = RMobileUssdMessaging::EUssdMOReply;
}
else
@@ -602,7 +614,7 @@
RMobileUssdMessaging::TMobileUssdAttributesV1Pckg attribs( aMsgAttribute );
iShowDone = ETrue;
_DPRINT( 4, "PhSrv.SendUssdL.iShowDone.ETrue" );
- _DPRINT( 4, "PhSrv.SendUssdL.Send" );
+ _DPRINT( 4, "PhSrv.SendUssdL.Send" ); // debug print
SendHandlerL().SendUssdL( aMsgData , attribs );
iObserver = &aObserver;
// Not closing nor closed anymore
@@ -617,7 +629,7 @@
_DPRINT( 4, "PhSrv.SendUssdCancel.TimerStop" ); // debug print
iUssdReplyTimer->Stop();
}
- _DPRINT( 4, "PhSrv.SendUssdL.End" );
+ _DPRINT( 4, "PhSrv.SendUssdL.End" ); // debug print
}
// -----------------------------------------------------------------------------
@@ -637,7 +649,7 @@
//
void CPhSrvUssdManager::SendUssdCancel()
{
- _DPRINT( 4, "PhSrv.SendUssdCancel.Start #######" );
+ _DPRINT( 4, "PhSrv.SendUssdCancel.Start #######" ); // debug print
// Ack sending should not be canceled unless it's about terminating
// the whole session
@@ -656,7 +668,7 @@
iObserver = NULL;
SetActiveIfPendingNotificationsExist();
- _DPRINT( 4, "PhSrv.SendUssdCancel.End" );
+ _DPRINT( 4, "PhSrv.SendUssdCancel.End" ); // debug print
}
// -----------------------------------------------------------------------------
@@ -695,14 +707,14 @@
// complete SAT if needed
if ( aError < KErrNone )
{
-
+ // debug print
_DPRINT( 4, "PhSrv.UssdNetworkObserverHandleSendEventL.CompleteSat" );
CompleteSatL( NULL, aError );
}
if ( iObserver )
{
-
+ // debug print
_DPRINT( 4, "PhSrv.UssdNetworkObserverHandleSendEventL.Observer" );
iObserver->UssdMessageSentObserverHandleResult( aError );
@@ -717,7 +729,6 @@
_DPRINT( 4, "PhSrv.UssdNetworkObserverHandleSendEventL.End" );
}
-
// -----------------------------------------------------------------------------
// CPhSrvUssdManager::UssdAppTaskExists
//
@@ -733,7 +744,7 @@
_DPRINT( 4, "PhSrv.UssdAppTaskExists.wsSession.Connect" );
CleanupClosePushL(wsSession);
TApaTaskList tasklist(wsSession);
- TApaTask task = tasklist.FindApp( KUssdSecureId );
+ TApaTask task = tasklist.FindApp(TUid::Uid(KPhSrvUssdAppUID));
ret = task.Exists();
CleanupStack::PopAndDestroy();
@@ -760,7 +771,7 @@
if ( aError != KErrNone )
{
TurnLightsOn(); //Ensure lights on
-
+ // debug print
_DPRINT( 4, "PhSrv.UssdNetworkObserverHandleReceivedEventL.ShErNote" );
ShowErrorNoteL( aError );
}
@@ -777,6 +788,9 @@
// -----------------------------------------------------------------------------
// CPhSrvUssdManager::UssdHandleReceivedEventL
+//
+//
+//
// -----------------------------------------------------------------------------
//
void CPhSrvUssdManager::UssdHandleReceivedEventL(
@@ -786,15 +800,15 @@
// This always is either ongoing transaction or starting a new based
// on incoming message, mark transaction to be open.
iNetworkReleased = EFalse;
-
+
// 2. Complete Send with some positive value.
- if ( iObserver )
+ if ( iObserver )
{
-
+ // debug print
_DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.Observer" );
UssdNetworkObserverHandleSendEventL( 1 ); // some positive value
}
-
+
if ( aMsgAttributes.iFlags&RMobileUssdMessaging::KUssdMessageType &&
aMsgAttributes.iType == RMobileUssdMessaging::EUssdMTRequest )
{
@@ -816,6 +830,14 @@
{
iReceivedMessage = iDecodedMessage;
}
+ // 4. Invoke UssdExtensionPlugin
+ // 417-66528
+ TBool isResponseValidated = EFalse;
+ if (iUssdExtnInterface)
+ {
+ _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.InvokeExtension" );
+ isResponseValidated = iUssdExtnInterface->ValidateUssdResponse(aMsgData);
+ }
// 5. Show note.
// debug print
_DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.Note" );
@@ -824,77 +846,81 @@
{
if ( !ShowNotesL() )
{
-
+ // debug print
_DPRINT( 4,
"PhSrv.UssdHandleReceivedEventL.SAtReturn" );
return;
}
}
-
+ //6. Check if the response is valid for the extension
+ //RM-RIM 417-66528
+ if (iUssdExtnInterface && isResponseValidated)
+ PorcessReceivedMessageInExtesnionL(aMsgData, aMsgAttributes);
+ else
+ ProcessReceivedMessageL(aMsgData, aMsgAttributes);
+
+ _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.Editor" );
+ if (aMsgAttributes.iType == RMobileUssdMessaging::EUssdMTRequest
+ && UssdAppTaskExistsL())
+ {
+ iEmptyEditor = ETrue;
+ } _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.End" );
+ }
+// -----------------------------------------------------------------------------
+// CPhSrvUssdManager::ProcessReceivedMessageL
+//
+//
+//
+// -----------------------------------------------------------------------------
+//
+void CPhSrvUssdManager::ProcessReceivedMessageL(const TDes8& /*aMsgData*/,
+ const RMobileUssdMessaging::TMobileUssdAttributesV1& aMsgAttributes)
+ {
// empty string is handled as ok message
- if ( !iDecodedMessage.Length() )
+ if (!iDecodedMessage.Length())
{
TurnLightsOn(); //Ensure lights on
-
+
+ // debug print
_DPRINT( 4,
- "PhSrv.UssdHandleReceivedEventL.EmptyString" );
-
+ "PhSrv.UssdHandleReceivedEventL.EmptyString" );
ShowDoneNoteL();
-
-
+ // debug print
_DPRINT( 4,
- "PhSrv.UssdHandleReceivedEventL.EmptyString.OK" );
+ "PhSrv.UssdHandleReceivedEventL.EmptyString.OK" );
}
else
{
_DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.String" );
- iNotifyMessage = ( aMsgAttributes.iType == RMobileUssdMessaging::EUssdMTNotify );
- _DDPRINT( 4, "PhSrv.UssdHandleReceivedEventL.iNotifyMessage: ", iNotifyMessage );
+ iNotifyMessage = (aMsgAttributes.iType
+ == RMobileUssdMessaging::EUssdMTNotify);
+ _DDPRINT( 4, "PhSrv.UssdHandleReceivedEventL.iNotifyMessage: ", iNotifyMessage );
_DDPRINT( 4, "PhSrv.UssdNOHREventL.iNotifyMessage: ", iNotifyMessage );
- iMsgTypeReply = ( aMsgAttributes.iType == RMobileUssdMessaging::EUssdMTReply );
+ iMsgTypeReply = (aMsgAttributes.iType
+ == RMobileUssdMessaging::EUssdMTReply);
_DDPRINT( 4, "PhSrv.UssdHandleReceivedEventL.iMsgTypeReply: ", iMsgTypeReply );
-
- if ( iNotifyMessage )
+
+ if (iNotifyMessage)
{
// need to send an MO ack
- iAcksToBeSent ++;
+ iAcksToBeSent++;
}
-
- if ( !iDeviceDialog ){
- iDeviceDialog = CHbDeviceMessageBoxSymbian::NewL(
- CHbDeviceMessageBoxSymbian::EInformation );
- iDeviceDialog->SetObserver( this );
- iDeviceDialog->SetTimeout( KPhSrvUssdTimeout );
- iDeviceDialog->SetDismissPolicy ( KPhSrvUssdPopupDismissPolicy );
- iDeviceDialog->SetIconVisible(EFalse);
-
- // Show left key with empty string accoring to ui concept
- iDeviceDialog->SetButton(
- CHbDeviceMessageBoxSymbian::EAcceptButton, EFalse );
- // Show Exit Key always
- iDeviceDialog->SetButton(
- CHbDeviceMessageBoxSymbian::ERejectButton, ETrue );
- iDeviceDialog->SetButtonTextL(
- CHbDeviceMessageBoxSymbian::ERejectButton,
- LoadDefaultString( KUssdExit ) );
- _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.Exit" );
- }
-
- if ( iNotifyMessage || iMsgTypeReply )
+
+ if (iNotifyMessage || iMsgTypeReply)
{
//This is for reply message in notifyarray
iNotifyMessage = ETrue;
_DDPRINT( 4, "PhSrv.UssdHandleReceivedEventL.iNotifyMessage: ", iNotifyMessage );
//Notify added to array
- iNotifyArray->AppendL( iReceivedMessage );
+ iNotifyArray->AppendL(iReceivedMessage);
- _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.AppendL" );
- UpdateNotifyMessageL();
+ _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.AppendL" ); // debug print
+ UpdateNotifyMessage();
- if ( !iSendRelease && NotifyCount() <= 1 )
+ if (!iSendRelease && NotifyCount() <= 1)
{
- _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.!SendRelease.Cancel" );
+ _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.!SendRelease.Cancel" ); // debug print
Cancel();
}
}
@@ -902,61 +928,79 @@
{
// New message deletes old message, i.e. Cancel existing query.
Cancel();
- _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.NewAnswerable" );
+ _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.NewAnswerable" ); // debug print
}
+ CreateGlobalMessageQueryL(aMsgAttributes);
+ AsyncProcessMoAcks();
+ }
+ _DPRINT( 4, "PhSrv.ProcesdReceivedMessageL.End" );
+ }
- // Remove Reply key
- if( !( aMsgAttributes.iFlags & RMobileUssdMessaging::KUssdMessageType )
- || aMsgAttributes.iType != RMobileUssdMessaging::EUssdMTRequest )
+// -----------------------------------------------------------------------------
+// CPhSrvUssdManager::PorcessReceivedMessageInExtesnionL
+//
+//
+//
+// -----------------------------------------------------------------------------
+//
+void CPhSrvUssdManager::PorcessReceivedMessageInExtesnionL(
+ const TDes8& /*aMsgData*/,
+ const RMobileUssdMessaging::TMobileUssdAttributesV1& aMsgAttributes)
+ {
+ TInt errfromextension = KErrNone;
+ // empty string is handled as ok message
+ if (!iDecodedMessage.Length())
+ {
+ // debug print
+ _DPRINT( 4,
+ "PhSrv.UssdHandleReceivedEventL.EmptyString" );
+ //RM-RIM 417-66528
+ TRAP_IGNORE(iUssdExtnInterface->ProcessReceivedUssdL(iDecodedMessage, errfromextension));
+ // debug print
+ _DPRINT( 4,
+ "PhSrv.UssdHandleReceivedEventL.EmptyString.OK" );
+ }
+ else
+ {
+ _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.String" );
+ iNotifyMessage = (aMsgAttributes.iType
+ == RMobileUssdMessaging::EUssdMTNotify);
+ _DDPRINT( 4, "PhSrv.UssdHandleReceivedEventL.iNotifyMessage: ", iNotifyMessage );
+ _DDPRINT( 4, "PhSrv.UssdNOHREventL.iNotifyMessage: ", iNotifyMessage );
+ iMsgTypeReply = (aMsgAttributes.iType
+ == RMobileUssdMessaging::EUssdMTReply);
+ _DDPRINT( 4, "PhSrv.UssdHandleReceivedEventL.iMsgTypeReply: ", iMsgTypeReply );
+
+ if (iNotifyMessage)
{
- // Remove Answer key
- iDeviceDialog->SetButton(
- CHbDeviceMessageBoxSymbian::EAcceptButton, EFalse );
- _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.NoAnswer" );
- }
- // Show Reply key
- else
- {
- iDeviceDialog->SetButton(
- CHbDeviceMessageBoxSymbian::EAcceptButton, ETrue );
- iDeviceDialog->SetButtonTextL(
- CHbDeviceMessageBoxSymbian::EAcceptButton,
- LoadDefaultString( KUssdReply ) );
- _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.WithAnswer" );
+ // need to send an MO ack
+ iAcksToBeSent++;
}
-
- _DPRINT( 4,
- "PhSrv.UssdHandleReceivedEventL.String.Middle" );
-
- // Play the USSD tone if needed. Logically should be in RunL, but here
- // to give better balancing with voice and visible message.
- // <-- QT PHONE START-->
- /*
- if ( IsTelephonyFeatureSupported( KTelephonyLVFlagUssdTone ) )
+ if (iNotifyMessage || iMsgTypeReply)
{
- _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.PlayTone" );
- PlayUssdTone();
+ //This is for reply message in notifyarray
+ iNotifyMessage = ETrue;
+ _DDPRINT( 4, "PhSrv.UssdHandleReceivedEventL.iNotifyMessage: ", iNotifyMessage );
+ if (!iSendRelease && NotifyCount() <= 1)
+ {
+ _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.!SendRelease.Cancel" ); // debug print
+ Cancel();
+ }
}
- */
- // <-- QT PHONE END-->
- // Launch the new message query
- if ( !IsActive() )
+ else
{
- iLaunchGMQ = ETrue;
- iTimer.After( iStatus , KPhSrvUssdMessageQueryInterval );
- SetActive();
+ // New message deletes old message, i.e. Cancel existing query.
+ Cancel();
+ _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.NewAnswerable" ); // debug print
}
- AsyncProcessMoAcks();
+ TInt errfromextension = KErrNone;
+ ProcessMoAcksL();
+ iLaunchGMQ = EFalse;
+ TRAP_IGNORE(iUssdExtnInterface->ProcessReceivedUssdL(iDecodedMessage, errfromextension));
+ _DDPRINT( 4, "PhSrv.UssdHandleReceivedEventL.Extn.ProcessReceivedUssdL.ErrCode", errfromextension);
}
- _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.Editor" );
- if( aMsgAttributes.iType == RMobileUssdMessaging::EUssdMTRequest && UssdAppTaskExistsL() )
- {
- iEmptyEditor = ETrue;
- }
- _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.End" );
}
-
// -----------------------------------------------------------------------------
// CPhSrvUssdManager::RestartReplyTimerL
//
@@ -992,31 +1036,31 @@
void CPhSrvUssdManager::UssdNetworkObserverHandleNotifyNWReleaseL(
const RMobilePhone::TMobilePhoneSendSSRequestV3 & aReturnResult,
TInt aError )
- {
- _DDPRINT( 4, "PhSrv.UssdNotifyNWRelease ##### ", aError ); // debug print
+ {
+ _DDPRINT( 4, "PhSrv.UssdNotifyNWRelease ##### ", aError ); // debug print
_DPRINT_FLAGS();
- TBool showNotes = ShowNotesL();
- iNetworkReleased = ETrue;
- iSendingAck = EFalse;
+ TBool showNotes = ShowNotesL();
+ iNetworkReleased = ETrue;
+ iSendingAck = EFalse;
iSendRelease = EFalse;
- iAcksToBeSent = 0;
-
- if ( iHavePendingSatMessagePointer )
- {
- iReturnResult = aReturnResult;
- if ( !iSatCanceled )
- {
- CompleteSatL(&iReceivedMessage, aError );
- _DPRINT( 4, "PhSrv.UssdNetworkObserverHandleNotifyNWReleaseL.CompleteSat" );
- }
- }
- if ( iUssdReplyTimer && iUssdReplyTimer->IsTimerActive() )
- {
- _DPRINT( 4, "PhSrv.UssdNetworkObserverHandleNotifyNWReleaseL.Timer.Stop" );
- iUssdReplyTimer->Stop();
- Cancel();
- CheckArray();
- }
+ iAcksToBeSent = 0;
+
+ if ( iHavePendingSatMessagePointer )
+ {
+ iReturnResult = aReturnResult;
+ if ( !iSatCanceled )
+ {
+ CompleteSatL(&iReceivedMessage, aError );
+ _DPRINT( 4, "PhSrv.UssdNetworkObserverHandleNotifyNWReleaseL.CompleteSat" ); // debug print
+ }
+ }
+ if ( iUssdReplyTimer && iUssdReplyTimer->IsTimerActive() )
+ {
+ _DPRINT( 4, "PhSrv.UssdNetworkObserverHandleNotifyNWReleaseL.Timer.Stop" );
+ iUssdReplyTimer->Stop();
+ Cancel();
+ CheckArray();
+ }
if ( showNotes && iShowDone )
{
ShowDoneNoteL();
@@ -1026,14 +1070,19 @@
// if we are sending ack, it can be canceled.
iUssdSendHandler->Cancel();
}
-
+ //417-66528
+ //Notify Extension on NWRelease
+ if(iUssdExtnInterface)
+ {
+ iUssdExtnInterface->NotifyNWError(aError);
+ }
iSatCanceled = EFalse;
_DPRINT( 4, "PhSrv.UssdNetworkObserverHandleNotifyNWReleaseL.iSatCanceled.EFalse" );
iShowDone = EFalse;
_DPRINT( 4, "PhSrv.UssdNetworkObserverHandleNotifyNWReleaseL.Ending" );
_DPRINT_FLAGS();
_DPRINT( 4, "PhSrv.UssdNetworkObserverHandleNotifyNWReleaseL.End" );
- }
+ }
// -----------------------------------------------------------------------------
// CPhSrvUssdManager::ShowDoneNoteL
@@ -1044,8 +1093,11 @@
{
_DDPRINT( 4, "PhSrv.ShowDoneNoteL.iShowDone", iShowDone );
// Show global confirmation note "Done"
- CHbDeviceMessageBoxSymbian::InformationL(
- LoadDefaultString( KUssdDone ) );
+ HBufC* noteText = iResourceManager.ReadResourceLC( R_PHSRV_TEXT_DONE );
+ CAknGlobalNote* note = CAknGlobalNote::NewLC();
+ note->ShowNoteL( EAknGlobalConfirmationNote, *noteText );
+ CleanupStack::PopAndDestroy( note );
+ CleanupStack::PopAndDestroy( noteText );
iShowDone = EFalse;
}
@@ -1063,16 +1115,14 @@
return;
}
- // Show specific error message
CTextResolver* textResolver = CTextResolver::NewLC();
+
HBufC* buffer = textResolver->ResolveErrorString( aError ).AllocLC();
- CHbDeviceMessageBoxSymbian::InformationL( buffer ->Des() );
+ CAknGlobalNote* note = CAknGlobalNote::NewLC();
+ note->ShowNoteL( EAknGlobalErrorNote, *buffer );
- CleanupStack::PopAndDestroy( buffer );
- CleanupStack::PopAndDestroy( textResolver );
-
-
+ CleanupStack::PopAndDestroy( 3 ); // note, buffer, textResolver
_DPRINT( 4, "PhSrv.ShowErrorNoteL.End" );
return;
}
@@ -1265,7 +1315,7 @@
if ( aError == KErrNone &&
IsActive() &&
- iDeviceDialog )
+ iGlobalMsgQuery )
{
Cancel();
// Terminates USSD session.
@@ -1281,88 +1331,12 @@
// -----------------------------------------------------------------------------
-// CPhSrvUssdManager::MessageBoxClosed
-// -----------------------------------------------------------------------------
-//
-void CPhSrvUssdManager::MessageBoxClosed(
- const CHbDeviceMessageBoxSymbian* aMessageBox,
- CHbDeviceMessageBoxSymbian::TButtonId aButton)
- {
- _DPRINT( 4, "PhSrv.MsgClose.Start" );
- // ussd device dialog observer callback function
- TPtrC leftBtn = aMessageBox->ButtonText(
- CHbDeviceMessageBoxSymbian::EAcceptButton );
- TPtrC rightBtn = aMessageBox->ButtonText(
- CHbDeviceMessageBoxSymbian::ERejectButton );
-
- TInt err = KErrNone;
- // Click Yes on Confirmation note (Yes, No)
- if ( !leftBtn.Compare(
- LoadDefaultString( KUssdYes ) ) &&
- ( CHbDeviceMessageBoxSymbian::EAcceptButton == aButton ) )
- {
- _DPRINT( 4, "PhSrv.MsgClose.SK.Yes" );
- iClearArray = EFalse;
- iNotifyArray->Reset();
- TryCloseSession();
- }
- // Click "No" on Confirmation note (Yes, No)
- else if ( !rightBtn.Compare(
- LoadDefaultString( KUssdNo ) ) &&
- ( CHbDeviceMessageBoxSymbian::ERejectButton == aButton ) )
- {
- _DPRINT( 4, "PhSrv.MsgClose.SK.No" );
- iClearArray = EFalse;
- iNotifyMessage = ETrue; // for removing the yes/no query
- CheckArray();
- TryCloseSession();
- }
- // Click "Next" on Notification note (Next, Exit)
- else if ( !leftBtn.Compare(
- LoadDefaultString( KUssdNext ) ) &&
- ( CHbDeviceMessageBoxSymbian::EAcceptButton == aButton ) )
- {
- _DPRINT( 4, "PhSrv.MsgClose.SK.Next" );
- CheckArray();
- TryCloseSession();
- }
- // Click "Exit" on Notification note (Next, Exit or only Exit)
- else if ( !rightBtn.Compare(
- LoadDefaultString( KUssdExit ) ) &&
- ( CHbDeviceMessageBoxSymbian::ERejectButton == aButton ) )
- {
- TRAP( err, ClearArrayL() );
- _DDPRINT( 4, "PhSrv.MsgClose.SK.Clear.%d", err );
- TryCloseSession();
- _DPRINT( 4, "PhSrv.MsgClose.SK.Exit" );
- }
- // Click "Reply" on Message note (Reply, Exit)
- else if ( !leftBtn.Compare(
- LoadDefaultString( KUssdReply ) ) &&
- ( CHbDeviceMessageBoxSymbian::EAcceptButton == aButton ) )
- {
- // Answer
- iStartEditor = ETrue;
- iShowDone = EFalse;
- // Start the USSD editor now.
- TRAP( err, RequestStartEditingL() );
- _DDPRINT( 4, "PhSrv.MsgClose.RequestStartEditingL.%d", err );
- }
- else
- {
- _DPRINT( 4, "PhSrv.MsgClose.SK.Default" );
- }
-
- _DPRINT( 4, "PhSrv.MsgClose.End" );
- }
-
-// -----------------------------------------------------------------------------
// CPhSrvUssdManager::RunL
// -----------------------------------------------------------------------------
//
void CPhSrvUssdManager::RunL()
{
- _DPRINT( 4, "PhSrv.RunL.Start" );
+ _DPRINT( 4, "PhSrv.RunL.Start" ); // debug print
ProcessMoAcksL();
@@ -1376,11 +1350,122 @@
else
{
iStartEditor = EFalse;
- // update device dialog
+
+ TInt key = iStatus.Int();
+ if ( key == EEikBidOk ) // OK key
+ {
+ if ( NetworkWaitingForAnAnswer() )
+ {
+ key = EAknSoftkeyShow;
+ }
+ else
+ {
+ key = EAknSoftkeyExit;
+ }
+ }
+
+ switch( key )
+ {
+ case EAknSoftkeyShow:
+ {
+ // Answer
+ iStartEditor = ETrue;
+ iShowDone = EFalse;
+ // Start the USSD editor now.
+ _DPRINT( 4, "PhSrv.RunL.RequestStartEditingL" ); // debug print
+ RequestStartEditingL();
+ break;
+ }
+ case EAknSoftkeyYes:
+ {
+ _DPRINT( 4, "PhSrv.RunL.SK.Yes" );
+ iClearArray = EFalse;
+ iNotifyArray->Reset();
+ TryCloseSession();
+ break;
+ }
+ case EAknSoftkeyCancel:
+ _DPRINT( 4, "PhSrv.RunL.SK.Cancel" );
+ if ( iHavePendingSatMessagePointer )
+ {
+ iSatCanceled = ETrue;
+ CompleteSatL( &iReceivedMessage, KErrCancel );
+ _DPRINT( 4, "PhSrv.RunL.CompleteSatL" );
+ }
+ // fall through.
+ case EAknSoftkeyExit:
+ _DPRINT( 4, "PhSrv.RunL.SK.Exit" );
+ ClearArrayL();
+ TryCloseSession();
+ break;
+ case EAknSoftkeyBack:
+ _DPRINT( 4, "PhSrv.RunL.SK.Back" );
+ ClearArrayL();
+ TryCloseSession();
+ break;
+ case EAknSoftkeyNo:
+ _DPRINT( 4, "PhSrv.RunL.SK.No" );
+ iClearArray = EFalse;
+ iNotifyMessage = ETrue; // for removing the yes/no query
+ // fall through.
+ case EAknSoftkeyNext:
+ _DPRINT( 4, "PhSrv.RunL.SK.Next" );
+ CheckArray();
+ TryCloseSession();
+ break;
+ default:
+ _DPRINT( 4, "PhSrv.RunL.SK.Default" );
+ break;
+ }
_DPRINT( 4, "PhSrv.RunL.End" ); // debug print
}
}
+// RM-RIM 417-66528
+// -----------------------------------------------------------------------------
+// CPhSrvUssdManager::CreateGlobalMessageQueryL
+// -----------------------------------------------------------------------------
+//
+void CPhSrvUssdManager::CreateGlobalMessageQueryL(
+ const RMobileUssdMessaging::TMobileUssdAttributesV1& aMsgAttributes)
+ {
+ if (!iGlobalMsgQuery)
+ {
+ iGlobalMsgQuery = CAknGlobalMsgQuery::NewL();
+ }
+ // Delay after message query so that application execution order will
+ // be correct.
+ iGlobalMsgQuery->SetExitDelay(KPhSrvUssdNoteExitPeriod);
+
+ TInt softkeys = R_AVKON_SOFTKEYS_USSD_ANSWER_EXIT__ANSWER;
+ if (!(aMsgAttributes.iFlags & RMobileUssdMessaging::KUssdMessageType)
+ || aMsgAttributes.iType != RMobileUssdMessaging::EUssdMTRequest)
+ {
+ softkeys = R_AVKON_SOFTKEYS_EXIT;
+ }
+
+ // Set timer that lauches Global MessageQuery after time interval.
+ iSoftkeys = softkeys;
+
+ // debug print
+ _DPRINT( 4,
+ "PhSrv.UssdHandleReceivedEventL.String.Middle" );
+
+ // Play the USSD tone if needed. Logically should be in RunL, but here
+ // to give better balancing with voice and visible message.
+ if (IsTelephonyFeatureSupported(KTelSrvLVFlagUssdTone))
+ {
+ _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.PlayTone" );
+ PlayUssdTone();
+ }
+ // Launch the new message query
+ if (!IsActive())
+ {
+ iLaunchGMQ = ETrue;
+ iTimer.After(iStatus, KPhSrvUssdMessageQueryInterval);
+ SetActive();
+ }
+ }
// -----------------------------------------------------------------------------
// CPhSrvUssdManager::LaunchGlobalMessageQueryL
// -----------------------------------------------------------------------------
@@ -1389,58 +1474,22 @@
{
_DPRINT( 4, "PhSrv.LGMQ.start" );
_DPRINT_FLAGS();
-
if ( iNotifyMessage )
{
_DDPRINT( 4, "PhSrv.LGMQ.NotifyMessage", iNotifyMessage );
iNotifyMessage = ETrue;
TInt count = NotifyCount();
- //check softkey in avkon.rss
if ( count > 1 )
{
- // Next, Exit
- iDeviceDialog->SetButton(
- CHbDeviceMessageBoxSymbian::EAcceptButton, ETrue );
- iDeviceDialog->SetButtonTextL(
- CHbDeviceMessageBoxSymbian::EAcceptButton,
- LoadDefaultString( KUssdNext ) );
- iDeviceDialog->SetButton(
- CHbDeviceMessageBoxSymbian::ERejectButton, ETrue );
- iDeviceDialog->SetButtonTextL(
- CHbDeviceMessageBoxSymbian::ERejectButton,
- LoadDefaultString( KUssdExit ) );
- _DPRINT( 4, "PhSrv.LGMQ.Next&Exit" );
+ iSoftkeys = R_AVKON_SOFTKEYS_NEXT_EXIT__NEXT;
}
else
{
- // Only Exit
- iDeviceDialog->SetButton(
- CHbDeviceMessageBoxSymbian::EAcceptButton, EFalse );
- iDeviceDialog->SetButton(
- CHbDeviceMessageBoxSymbian::ERejectButton, ETrue );
- iDeviceDialog->SetButtonTextL(
- CHbDeviceMessageBoxSymbian::ERejectButton,
- LoadDefaultString( KUssdExit ) );
- _DPRINT( 4, "PhSrv.LGMQ.onlyExit" );
+ iSoftkeys = R_AVKON_SOFTKEYS_EXIT;
}
if ( iClearArray )
{
- HbTextResolverSymbian::Init( KCommonLocFilename, KLocPath );
- _DPRINT( 4, "PhSrv.LGMQ.use common loc file" );
- // Yes, No
- iDeviceDialog->SetButton(
- CHbDeviceMessageBoxSymbian::EAcceptButton, ETrue );
- iDeviceDialog->SetButtonTextL(
- CHbDeviceMessageBoxSymbian::EAcceptButton,
- LoadDefaultString( KUssdYes ) );
- iDeviceDialog->SetButton(
- CHbDeviceMessageBoxSymbian::ERejectButton, ETrue );
- iDeviceDialog->SetButtonTextL(
- CHbDeviceMessageBoxSymbian::ERejectButton,
- LoadDefaultString( KUssdNo ) );
- _DPRINT( 4, "PhSrv.LGMQ.Yes&No" );
- HbTextResolverSymbian::Init( KUssdLocFilename, KLocPath );
- _DPRINT( 4, "PhSrv.LGMQ.back up to use ussd loc file" );
+ iSoftkeys = R_AVKON_SOFTKEYS_YES_NO;
}
iReceivedMessage.Zero();
iReceivedMessage = (*iNotifyArray)[0];
@@ -1449,27 +1498,11 @@
_DPRINT( 4, "PhSrv.LGMQ.ShMsgQuery" ); // debug print
// Launch Global MessageQuery as requested.
- // Dialog not support header text, this code is only
- // for testing, not final solution.
- TInt receiveLength = iReceivedMessage.Length();
- _DDPRINT( 4, "PhSrv.LGMQ.ShMsgQuery.MsgLength", receiveLength );
-
- TInt titleLength = LoadDefaultString( KUssdTitle ).Length();
- _DDPRINT( 4, "PhSrv.LGMQ.ShMsgQuery.TilteLength", titleLength );
-
- TInt length = receiveLength + titleLength;
- _DDPRINT( 4, "PhSrv.LGMQ.ShMsgQuery.TotalLength", length );
-
- HBufC* titleAndText = HBufC::NewLC( length );
- titleAndText->Des().Append( LoadDefaultString( KUssdTitle ) );
- titleAndText->Des().Append( iReceivedMessage );
- iDeviceDialog->SetTextL( titleAndText->Des() );
- CleanupStack::Pop( titleAndText );
-
- iDeviceDialog->Close();
- iDeviceDialog->ShowL();
+ iGlobalMsgQuery->ShowMsgQueryL(iStatus, iReceivedMessage, iSoftkeys,
+ *iMeQuHeaderText, KNullDesC);
+ _DPRINT( 4, "PhSrv.LGMQ.SetActive" );
+ SetActive();
iShowDone = EFalse;
-
// Do nothing else in RunL this time.
_DPRINT( 4, "PhSrv.LGMQ.ShMsgQuery.ret" ); // debug print
}
@@ -1573,112 +1606,105 @@
// -----------------------------------------------------------------------------
//
void CPhSrvUssdManager::CheckArray()
- {
- _DPRINT( 4, "PhSrv.CheckArray.Start" ); // debug print
- if (iNotifyArray && NotifyCount() > 0)
- {
- if ( !iNotifyMessage && !iClearArray )
- {
- iLaunchGMQ = ETrue;
- iNotifyMessage = ETrue;
- _DPRINT( 4, "PhSrv.CheckArray.iNotifyMessage.ETrue" );
- iTimer.After( iStatus , KPhSrvUssdMessageQueryInterval );
- _DDPRINT( 4, "PhSrv.CheckArray.SetActive.NoNotifyMessage ", iStatus.Int() );
- SetActive();
- }
- else if( NotifyCount() > 1 )
- {
- ( iNotifyArray )->Delete( 0 );
- ( iNotifyArray )->Compress();
- iLaunchGMQ = ETrue;
- iNotifyMessage = ETrue;
- _DPRINT( 4, "PhSrv.CheckArray.iNotifyMessage.ETrue" );
- iTimer.After( iStatus , KPhSrvUssdMessageQueryInterval );
- _DDPRINT( 4, "PhSrv.CheckArray.SetActive.NotifyCount>1 ", iStatus.Int() );
- SetActive();
- }
- else
- {
- iNotifyArray->Reset();
- iNotifyMessage = EFalse;
- _DPRINT( 4, "PhSrv.CheckArray.iNotifyMessage.EFalse" );
- }
- }
+ {
+ _DPRINT( 4, "PhSrv.CheckArray.Start" ); // debug print
+ if (iNotifyArray && NotifyCount() > 0)
+ {
+ if ( !iNotifyMessage && !iClearArray )
+ {
+ iLaunchGMQ = ETrue;
+ iNotifyMessage = ETrue;
+ _DPRINT( 4, "PhSrv.CheckArray.iNotifyMessage.ETrue" );
+ iTimer.After( iStatus , KPhSrvUssdMessageQueryInterval );
+ _DDPRINT( 4, "PhSrv.CheckArray.SetActive.NoNotifyMessage ", iStatus.Int() );
+ SetActive();
+ }
+ else if( NotifyCount() > 1 )
+ {
+ ( iNotifyArray )->Delete( 0 );
+ ( iNotifyArray )->Compress();
+ iLaunchGMQ = ETrue;
+ iNotifyMessage = ETrue;
+ _DPRINT( 4, "PhSrv.CheckArray.iNotifyMessage.ETrue" );
+ iTimer.After( iStatus , KPhSrvUssdMessageQueryInterval );
+ _DDPRINT( 4, "PhSrv.CheckArray.SetActive.NotifyCount>1 ", iStatus.Int() );
+ SetActive();
+ }
+ else
+ {
+ iNotifyArray->Reset();
+ iNotifyMessage = EFalse;
+ _DPRINT( 4, "PhSrv.CheckArray.iNotifyMessage.EFalse" );
+ }
+ }
_DPRINT_FLAGS();
- _DPRINT( 4, "PhSrv.CheckArray.End" ); // debug print
- }
+ _DPRINT( 4, "PhSrv.CheckArray.End" ); // debug print
+ }
// -----------------------------------------------------------------------------
// CPhSrvUssdManager::ClearArray()
// -----------------------------------------------------------------------------
//
void CPhSrvUssdManager::ClearArrayL()
- {
- _DPRINT( 4, "PhSrv.ClearArrayL.Start" ); // debug print
- if (iNotifyArray && NotifyCount() > 0)
- {
- if (iNotifyMessage && NotifyCount()== 1 )
- {
- iNotifyArray->Reset();
- }
- else
- {
- iReceivedMessage.Zero();
- iReceivedMessage.Append(
- LoadDefaultString( KUssdConfirm ) );
- iNotifyArray->InsertL( 0, iReceivedMessage );
- iLaunchGMQ = ETrue;
- iNotifyMessage = ETrue;
- _DPRINT( 4, "PhSrv.ClearArrayL.iNotifyMessage.ETrue" );
- iClearArray = ETrue;
- iTimer.After( iStatus , KPhSrvUssdMessageQueryInterval );
- _DDPRINT( 4, "PhSrv.ClearArrayL.iTimer ", iStatus.Int() );
- SetActive();
- }
- }
+ {
+ _DPRINT( 4, "PhSrv.ClearArrayL.Start" ); // debug print
+ if (iNotifyArray && NotifyCount() > 0)
+ {
+ if (iNotifyMessage && NotifyCount()== 1 )
+ {
+ iNotifyArray->Reset();
+ }
+ else
+ {
+ iReceivedMessage.Zero();
+ HBufC* unreadText = iResourceManager.ReadResourceLC( R_PHSRV_TEXT_UNREAD );
+ TPtr pMessage( unreadText->Des() );
+ iReceivedMessage.Append( pMessage );
+ iNotifyArray->InsertL( 0, iReceivedMessage );
+ CleanupStack::PopAndDestroy( unreadText );
+ iLaunchGMQ = ETrue;
+ iNotifyMessage = ETrue;
+ _DPRINT( 4, "PhSrv.ClearArrayL.iNotifyMessage.ETrue" );
+ iClearArray = ETrue;
+ iTimer.After( iStatus , KPhSrvUssdMessageQueryInterval );
+ _DDPRINT( 4, "PhSrv.ClearArrayL.iTimer ", iStatus.Int() );
+ SetActive();
+ }
+ }
_DPRINT_FLAGS();
- _DPRINT( 4, "PhSrv.ClearArrayL.End" ); // debug print
- }
+ _DPRINT( 4, "PhSrv.ClearArrayL.End" ); // debug print
+ }
// -----------------------------------------------------------------------------
// CPhSrvUssdManager::NotifyCount()
// -----------------------------------------------------------------------------
//
-TInt CPhSrvUssdManager:: NotifyCount()
-{
- TInt count = iNotifyArray->Count();
- _DDPRINT( 4, "PhSrv.NotifyCount:", count ); // debug print
- return count;
-}
+ TInt CPhSrvUssdManager::NotifyCount()
+ {
+ if( iNotifyArray )
+ {
+ return iNotifyArray->Count();
+ }
+ else
+ {
+ return 0;
+ }
+ }
-// -----------------------------------------------------------------------------
-// CPhSrvUssdManager::UpdateNotifyMessageL()
+ // -----------------------------------------------------------------------------
+// CPhSrvUssdManager::UpdateNotifyMessage()
// -----------------------------------------------------------------------------
//
- void CPhSrvUssdManager:: UpdateNotifyMessageL()
- {
- _DDPRINT( 4, "PhSrv.UpdateNotifyMessageL.Start, clear: ", iClearArray ); // debug print
-
- // Show left softkey - "Next"
- if (NotifyCount() > 1 && !iClearArray )
- {
- _DPRINT( 4, "PhSrv.UpdateNotifyMessageL" ); // debug print
- iDeviceDialog->SetButton(
- CHbDeviceMessageBoxSymbian::EAcceptButton, ETrue );
- iDeviceDialog->SetButtonTextL(
- CHbDeviceMessageBoxSymbian::EAcceptButton,
- LoadDefaultString( KUssdNext ) );
- }
- // Remove left softkey
- else
- {
- iDeviceDialog->SetButton(
- CHbDeviceMessageBoxSymbian::EAcceptButton, EFalse );
- }
- iDeviceDialog->UpdateL();
-
- _DPRINT( 4, "PhSrv.UpdateNotifyMessageL.End" ); // debug print
- }
+ void CPhSrvUssdManager::UpdateNotifyMessage()
+ {
+ _DDPRINT( 4, "PhSrv.UpdateNotifyMessage.Start, clear: ", iClearArray ); // debug print
+ if (NotifyCount() > 1 && !iClearArray )
+ {
+ _DPRINT( 4, "PhSrv.UpdateNotifyMessage" ); // debug print
+ iGlobalMsgQuery->UpdateMsgQuery( R_AVKON_SOFTKEYS_NEXT_EXIT__NEXT );
+ }
+ _DPRINT( 4, "PhSrv.UpdateNotifyMessage.End" ); // debug print
+ }
// -----------------------------------------------------------------------------
// CPhSrvUssdManager::DoCancel
@@ -1689,12 +1715,11 @@
_DPRINT( 4, "PhSrv.DoCancel.Start" ); // debug print
iTimer.Cancel();
iLaunchGMQ = EFalse;
- if ( iDeviceDialog )
+
+ if ( iGlobalMsgQuery )
{
_DPRINT( 4, "PhSrv.DoCancel" ); // debug print
- iDeviceDialog->Close();
- delete iDeviceDialog;
- iDeviceDialog = NULL;
+ iGlobalMsgQuery->CancelMsgQuery();
}
_DPRINT( 4, "PhSrv.DoCancel.End" ); // debug print
}
@@ -1727,7 +1752,7 @@
// Find the task with name
TApaTaskList tasklist( wsSession );
- TApaTask task = tasklist.FindApp( KUssdSecureId );
+ TApaTask task = tasklist.FindApp( TUid::Uid( KPhSrvUssdAppUID ) );
// If task exists, bring it to foreground
if ( task.Exists() )
@@ -1744,12 +1769,13 @@
CleanupClosePushL( apaLsSession );
TApaAppInfo appInfo;
-
- TInt err = apaLsSession.GetAppInfo( appInfo, KUssdSecureId );
- _DDPRINT( 4, "PhSrv.RequestStartEditingL.GetAppInfo ", err ); // debug print
-
+ TInt err = apaLsSession.GetAppInfo(
+ appInfo,
+ TUid::Uid( KPhSrvUssdAppUID ) );
if ( err == KErrNone )
{
+ _DDPRINT( 4, "PhSrv.RequestStartEditingL.GetAppInfo ", err ); // debug print
+
#ifndef SYMBIAN_SUPPORT_UI_FRAMEWORKS_V1
CApaCommandLine* apaCommandLine = CApaCommandLine::NewLC();
apaCommandLine->SetExecutableNameL( appInfo.iFullName );
@@ -1758,22 +1784,10 @@
CApaCommandLine::NewLC( appInfo.iFullName );
#endif // SYMBIAN_SUPPORT_UI_FRAMEWORKS_V1
- TThreadId id( static_cast<TInt64>( 0 ) );
- err = apaLsSession.StartApp( *apaCommandLine, id );
- _DDPRINT( 4, "PhSrv.RequestStartEditingL.ThreadId ", id );
+ err = apaLsSession.StartApp( *apaCommandLine );
CleanupStack::PopAndDestroy( apaCommandLine );
}
- CleanupStack::PopAndDestroy( &apaLsSession ); // apaLsSession
-
- // bring the ussd editor to foreground, only for testing
- TApaTaskList tasklist( wsSession );
- TApaTask task = tasklist.FindApp( KUssdSecureId );
- if ( task.Exists() )
- {
- _DPRINT( 4, "PhSrv.UssdM.RequestStartEditingL.task.BringToForeground" );
- task.BringToForeground();
- }
- // bring the ussd editor to foreground, only for testing
+ CleanupStack::PopAndDestroy(); // apaLsSession
}
CleanupStack::PopAndDestroy(); // wsSession
@@ -1812,7 +1826,7 @@
{
if ( iUssdReplyTimer->IsTimerActive() )
{
-
+ // debug print
_DPRINT( 4, "PhSrv.UssdM.InfUssdAppTerminatingL.timer" );
// Read the information what is the reason
@@ -1823,14 +1837,14 @@
0,
exitReasonPckg );
-
+ // debug print
_DPRINT( 4, "PhSrv.UssdM.InfUssdAppTerminatingL.timer2" );
// If reason was the completion of send operation, the USSD
// session is not canceled, otherwise it is canceled.
if ( exitReason != EPhCltSendCompleted )
{
-
+ // debug print
_DPRINT( 4, "PhSrv.UssdM.InfUssdAppTerminatingL.SendRelease" );
CloseSession();
}
@@ -1898,7 +1912,7 @@
}
else
{
- _DPRINT( 4, "PhSrv.InformStartSAT.Set" );
+ _DPRINT( 4, "PhSrv.InformStartSAT.Set" ); // debug print
// There was not pending SAT message
iHavePendingSatMessagePointer = ETrue;
@@ -1916,7 +1930,7 @@
//
void CPhSrvUssdManager::InformStopSAT()
{
- _DPRINT( 4, "PhSrv.InformStopSAT.Start" );
+ _DPRINT( 4, "PhSrv.InformStopSAT.Start" ); // debug print
// Do the actions only if there is pending SAT message.
if ( iHavePendingSatMessagePointer )
@@ -1929,7 +1943,7 @@
}
iHavePendingSatMessagePointer = EFalse;
}
- _DPRINT( 4, "PhSrv.InformStopSAT.End" );
+ _DPRINT( 4, "PhSrv.InformStopSAT.End" ); // debug print
}
// -----------------------------------------------------------------------------
@@ -1981,7 +1995,7 @@
TDesC* aReceiveString,
TInt aError )
{
- _DPRINT( 4, "PhSrv.CompleteSatL.Start" );
+ _DPRINT( 4, "PhSrv.CompleteSatL.Start" ); // debug print
if ( aReceiveString )
{
if ( aReceiveString->Length() )
@@ -1990,7 +2004,7 @@
// copy the received string to client side.
if ( iPendingSatMessagePointer.Int1() < aReceiveString->Length() )
{
-
+ // debug print
_DPRINT( 4, "PhSrv.CompleteSatL.recString.LengthError" );
if ( !iPendingSatMessagePointer.IsNull() )
{
@@ -1999,8 +2013,8 @@
}
iHavePendingSatMessagePointer = EFalse;
}
- else
- {
+ else
+ {
_DPRINT( 4, "PhSrv.CompleteSatL.recString.Write" ); // debug print
iPendingSatMessagePointer.WriteL(
2,
@@ -2014,7 +2028,7 @@
}
}
}
- _DPRINT( 4, "PhSrv.CompleteSatL.Middle" );
+ _DPRINT( 4, "PhSrv.CompleteSatL.Middle" ); // debug print
if ( !iPendingSatMessagePointer.IsNull() )
{
if ( aReceiveString && !iSatCanceled )
@@ -2031,7 +2045,7 @@
iHavePendingSatMessagePointer = EFalse;
- _DPRINT( 4, "PhSrv.CompleteSatL.End" );
+ _DPRINT( 4, "PhSrv.CompleteSatL.End" ); // debug print
}
@@ -2043,7 +2057,7 @@
TBool CPhSrvUssdManager::IsTelephonyFeatureSupported(
const TInt aFeatureId )
{
- return ( aFeatureId & iVariantReadOnlyValues );
+ return ( aFeatureId & iVariantReadOnlyValues );
}
@@ -2054,13 +2068,12 @@
//
TInt CPhSrvUssdManager::PlayUssdTone()
{
- _DPRINT( 4, "PhSrv.UssdM.PlayTone.start" );
+ _DPRINT( 4, "PhSrv.UssdM.PlayTone.start" ); // debug print
TInt err = KErrNone;
-// <-- QT PHONE START-->
-// RProperty::Define( KPSUidNcnList, KNcnPlayAlertTone, RProperty::EInt, ECapability_None , ECapabilityWriteDeviceData );
-// RProperty::Set( KPSUidNcnList, KNcnPlayAlertTone, KPhSrvUssdTone );
-// <-- QT PHONE END-->
+
+ RProperty::Define( KPSUidNcnList, KNcnPlayAlertTone, RProperty::EInt, ECapability_None , ECapabilityWriteDeviceData );
+ RProperty::Set( KPSUidNcnList, KNcnPlayAlertTone, KPhSrvUssdTone );
// debug print
_DDPRINT(
@@ -2079,8 +2092,7 @@
{
_DPRINT( 4, "PhSrv.UssdM.GetTelephonyVariantData.Start" );
TInt err = KErrNone;
-// <-- QT PHONE START-->
-/*
+
// Variation data should be unchangable during run-time,
// therefore, if once succesfully read, later reads are
// not allowed.
@@ -2088,10 +2100,10 @@
{
CRepository* cenRepSession = NULL;
TRAP ( err ,
- cenRepSession = CRepository::NewL( KCRUidTelVariation ) );
+ cenRepSession = CRepository::NewL( KCRUidTelSrvVariation ) );
if ( err == KErrNone )
{
- err = cenRepSession->Get( KTelVariationFlags,
+ err = cenRepSession->Get( KTelSrvVariationFlags,
iVariantReadOnlyValues );
}
delete cenRepSession;
@@ -2099,8 +2111,6 @@
_DDPRINT( 4, "PhSrv.UssdM.variant", iVariantReadOnlyValues ); // debug print
_DPRINT( 4, "PhSrv.UssdM.GetTelephonyVariantData.End" );
- */
-// <-- QT PHONE END-->
return err;
}
@@ -2112,7 +2122,7 @@
//
void CPhSrvUssdManager::SendMoAcknowledgementL()
{
- _DPRINT( 4, "PhSrv.SendMoAckL.Start" );
+ _DPRINT( 4, "PhSrv.SendMoAckL.Start" ); // debug print
// Acknowledge MT USSD message.
RMobileUssdMessaging::TMobileUssdAttributesV1 msgAttribs;
@@ -2130,7 +2140,7 @@
RMobileUssdMessaging::TMobileUssdAttributesV1Pckg attribs = msgAttribs;
SendHandlerL().SendUssdL( KNullDesC8() , attribs );
- _DPRINT( 4, "PhSrv.SendMoAckL.End" );
+ _DPRINT( 4, "PhSrv.SendMoAckL.End" ); // debug print
}
// -----------------------------------------------------------------------------
@@ -2140,51 +2150,20 @@
//
void CPhSrvUssdManager::TurnLightsOn()
{
- _DPRINT( 4, "PhSrv.TurnLightsOn.Start" );
+ _DPRINT( 4, "PhSrv.TurnLightsOn Start" ); // debug print
- // Change the bit on and off. SysAp will detect that
+ // Change the bit on and off. SysAp will detect that
// the lights should be switched on for the specified time.
//
- RProperty::Set(KPSUidCoreApplicationUIs, KLightsControl, ELightsOn);
- TInt err = RProperty::Set(KPSUidCoreApplicationUIs, KLightsControl, ELightsOff);
-
- if ( err != KErrNone )
- {
- _DDPRINT( 4,"PhSrv.TurnLightsOn.Error: ",err );// debug print
- }
-
- _DPRINT( 4, "PhSrv.TurnLightsOn.End" );
- }
+ RProperty::Set(KPSUidCoreApplicationUIs, KLightsControl, ELightsOn);
+ TInt err = RProperty::Set(KPSUidCoreApplicationUIs, KLightsControl, ELightsOff);
-// -----------------------------------------------------------------------------
-// CPhSrvUssdManager::LoadDefaultString
-// -----------------------------------------------------------------------------
-//
-const TPtrC CPhSrvUssdManager::LoadDefaultString( const TDesC& aText )
- {
- _DPRINT( 4, "PhSrv.LoadDefaultString.Start" );
-
- if ( iTextBuffer )
- {
- delete iTextBuffer;
- iTextBuffer = NULL;
- _DPRINT( 4, "PhSrv.LoadDefaultString.Clear" );
- }
- TInt err = KErrNone;
- TPtrC ptr( aText );
- if ( ptr.Length() )
- {
- TRAP( err, iTextBuffer = HbTextResolverSymbian::LoadL( ptr ) );
- _DDPRINT( 4, "PhSrv.LoadDefaultString.LoadL.%d", err );
- if ( iTextBuffer )
- {
- ptr.Set( iTextBuffer->Des() );
- _DPRINT( 4, "PhSrv.LoadDefaultString.Set" );
- }
- }
- _DPRINT( 4, "PhSrv.LoadDefaultString.End" );
- return ptr;
+ if ( err != KErrNone )
+ {
+ _DDPRINT( 4,"PhSrv.TurnLightsOn.Error: ",err );// debug print
+ }
+
+ _DPRINT( 4, "PhSrv.TurnLightsOn.End" ); // debug print
}
-
// End of File