diff -r 35488577e233 -r 2fa1fa551b0b satengine/SatServer/SatInternalClient/src/CSatCDisplayTextHandler.cpp --- a/satengine/SatServer/SatInternalClient/src/CSatCDisplayTextHandler.cpp Mon Aug 23 15:50:31 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,284 +0,0 @@ -/* -* Copyright (c) 2002-2008 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" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: This is the handler for the SIM Application Toolkit -* Display Text proactive command. -* -*/ - - -#include -#include "RSatUiSession.h" -#include "MSatUiObserver.h" -#include "CSatCDisplayTextHandler.h" -#include "SatSOpcodes.h" -#include "SatLog.h" - -// ======== MEMBER FUNCTIONS ======== - -// ----------------------------------------------------------------------------- -// CSatCDisplayTextHandler::CSatCDisplayTextHandler -// C++ default constructor can NOT contain any code, that -// might leave. -// ----------------------------------------------------------------------------- -// -CSatCDisplayTextHandler::CSatCDisplayTextHandler( - TInt aPriority, - RSatUiSession* aSession ) : - CActive( aPriority ), iSession( aSession ), - iDisplayTextData(), - iDisplayTextPckg( iDisplayTextData ), - iDisplayTextRsp(), - iDisplayTextRspPckg( iDisplayTextRsp ) - { - LOG( SIMPLE, - "SATINTERNALCLIENT: CSatCDisplayTextHandler::CSatCDisplayTextHandler calling" ) - - CActiveScheduler::Add( this ); // add to active scheduler - - LOG( SIMPLE, - "SATINTERNALCLIENT: CSatCDisplayTextHandler::CSatCDisplayTextHandler exiting" ) - } - -// ----------------------------------------------------------------------------- -// CSatCDisplayTextHandler::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CSatCDisplayTextHandler* CSatCDisplayTextHandler::NewL( - RSatUiSession* aSat ) - { - LOG( SIMPLE, "SATINTERNALCLIENT: CSatCDisplayTextHandler::NewL calling" ) - - // Perform construction. - CSatCDisplayTextHandler* self = - new ( ELeave ) CSatCDisplayTextHandler( EPriorityLow, aSat ); - - LOG( SIMPLE, "SATINTERNALCLIENT: CSatCDisplayTextHandler::NewL exiting" ) - return self; - } - -// Destructor -CSatCDisplayTextHandler::~CSatCDisplayTextHandler() - { - LOG( SIMPLE, - "SATINTERNALCLIENT: CSatCDisplayTextHandler::~CSatCDisplayTextHandler calling" ) - - // Cancel any outstanding requests. - Cancel(); - iSession = NULL; - - LOG( SIMPLE, - "SATINTERNALCLIENT: CSatCDisplayTextHandler::~CSatCDisplayTextHandler exiting" ) - } - -// ----------------------------------------------------------------------------- -// CSatCDisplayTextHandler::Start -// Starts the handler. -// ----------------------------------------------------------------------------- -// -void CSatCDisplayTextHandler::Start() - { - LOG( SIMPLE, "SATINTERNALCLIENT: CSatCDisplayTextHandler::Start calling" ) - - // Empty the IPC data - TSatDisplayTextV1 temp; - iDisplayTextData = temp; - RSat::TDisplayTextRspV1 temp2; - iDisplayTextRsp = temp2; - - // Request Display Text notifications. - TIpcArgs arguments( &iDisplayTextPckg ); - - // Pass the Display Text IPC package - iSession->CreateRequest( ESatSProactiveDisplayText, arguments, iStatus ); - - // Set this handler to active so that it can receive requests. - SetActive(); - - LOG( SIMPLE, "SATINTERNALCLIENT: CSatCDisplayTextHandler::Start exiting" ) - } - -// ----------------------------------------------------------------------------- -// CSatCDisplayTextHandler::RunL -// Handles the command. -// ----------------------------------------------------------------------------- -// -void CSatCDisplayTextHandler::RunL() - { - LOG( SIMPLE, "SATINTERNALCLIENT: CSatCDisplayTextHandler::RunL calling" ) - - // Check the status of the asnychronous operation - if ( KErrNone != iStatus.Int() ) - { - LOG2( - SIMPLE, - "SATINTERNALCLIENT: CSatCDisplayTextHandler::RunL exiting, error: %d", - iStatus.Int() ) - - // Renew the request - Start(); - } - else - { - // Has to be casted to TInt before casting to TSatIconQualifier, because - // gcc warns about the direct cast. - const struct TSatIconId iconId = { iDisplayTextData.iIconId.iIdentifier, - static_cast( - static_cast( iDisplayTextData.iIconId.iQualifier ) ) }; - - // This will contain EFalse if requested icon is not displayed. - TBool requestedIconDisplayed( ETrue ); - - // Indicator if user is expected to clear the message - TBool waitUserToClear( ETrue ); - - if ( RSat::EClearAfterDelay == iDisplayTextData.iClearScreen ) - { - LOG( SIMPLE, - "SATINTERNALCLIENT: CSatCDisplayTextHandler::RunL EClearAfterDelay" ) - waitUserToClear = EFalse; - } - - // Notify the registered client and save the response. - TSatUiResponse response; - response = iSession->SatUiObserver()->DisplayTextL( - iDisplayTextData.iText, - iDisplayTextData.iSimApplicationName, - iconId, - requestedIconDisplayed, - iDisplayTextData.iSustainedText, - iDisplayTextData.iDuration, - waitUserToClear ); - - // This command never has any additional information. - iDisplayTextRsp.iInfoType = RSat::KNoAdditionalInfo; - iDisplayTextRsp.iAdditionalInfo.Zero(); - - iDisplayTextRsp.SetPCmdNumber( iDisplayTextData.iPCmdNumber ); - - // Examine the client response. - ExamineClientResponse( - response, requestedIconDisplayed ); - - // Pass the Display Text response IPC package. - TIpcArgs arguments( &iDisplayTextRspPckg ); - - // Perform the IPC data transfer. - iSession->CreateRequest( ESatSProactiveDisplayTextResponse, arguments ); - - // Renew the service request. - Start(); - } - LOG( SIMPLE, "SATINTERNALCLIENT: CSatCDisplayTextHandler::RunL exiting" ) - } - -// ----------------------------------------------------------------------------- -// CSatCDisplayTextHandler::ExamineClientResponse -// Examine the client response. -// ----------------------------------------------------------------------------- -// -void CSatCDisplayTextHandler::ExamineClientResponse( - TSatUiResponse aResponse, - TBool aRequestedIconDisplayed ) - { - LOG2( SIMPLE, - "SATINTERNALCLIENT: CSatCDisplayTextHandler::ExamineClientResponse calling,\ - aResponse: %x", aResponse ) - - switch ( aResponse ) - { - case ESatSuccess: - { - // Convert terminal rsp if icon used - RSat::TPCmdResult result( RSat::KSuccess ); - RSat::TIconQualifier iconQualifier( - iDisplayTextData.iIconId.iQualifier ); - - if ( !aRequestedIconDisplayed ) - { - LOG( SIMPLE, - "SATINTERNALCLIENT: CSatCDisplayTextHandler::ExamineClientResponse \ - aRequestedIconDisplayed false" ) - if ( iconQualifier == RSat::ESelfExplanatory || - iconQualifier == RSat::ENotSelfExplanatory ) - { - LOG( SIMPLE, - "SATINTERNALCLIENT: CSatCDisplayTextHandler::ExamineClientResponse \ - IconNotDisplayed" ) - result = RSat::KSuccessRequestedIconNotDisplayed; - } - } - - iDisplayTextRsp.iGeneralResult = result; - break; - } - - case ESatFailure: - { - iDisplayTextRsp.iInfoType = RSat::KMeProblem; - iDisplayTextRsp.iGeneralResult = RSat::KMeUnableToProcessCmd; - iDisplayTextRsp.iAdditionalInfo.SetLength( 1 ); - iDisplayTextRsp.iAdditionalInfo[0] = RSat::KNoSpecificMeProblem; - break; - } - - case ESatSessionTerminatedByUser: - { - iDisplayTextRsp.iGeneralResult = RSat::KPSessionTerminatedByUser; - break; - } - - case ESatBackwardModeRequestedByUser: - { - iDisplayTextRsp.iGeneralResult = - RSat::KBackwardModeRequestedByUser; - break; - } - - case ESatNoResponseFromUser: - { - iDisplayTextRsp.iGeneralResult = RSat::KNoResponseFromUser; - break; - } - - // No help is ever supplied with this command - case EHelpRequestedByUser: - case EPCmdNotAcceptedByUser: - case ESatCmdDataNotUnderstood: - default: - { - iSession->Panic( ESatInvalidResponse ); - break; - } - } - - LOG( SIMPLE, - "SATINTERNALCLIENT: CSatCDisplayTextHandler::ExamineClientResponse exiting" ) - } - -// ----------------------------------------------------------------------------- -// CSatCDisplayTextHandler::DoCancel -// Cancels the pending request. -// ----------------------------------------------------------------------------- -// -void CSatCDisplayTextHandler::DoCancel() - { - LOG( SIMPLE, "SATINTERNALCLIENT: CSatCDisplayTextHandler::DoCancel calling" ) - - // Complete the request with cancel code. - TRequestStatus* requestStatus = &iStatus; - User::RequestComplete( requestStatus, KErrCancel ); - - LOG( SIMPLE, "SATINTERNALCLIENT: CSatCDisplayTextHandler::DoCancel exiting" ) - }