satengine/satserver/Engine/src/CSatSUiSubSession.cpp
author hgs
Fri, 17 Sep 2010 17:09:13 +0300
changeset 48 78df25012fda
parent 33 8d5d7fcf9b59
permissions -rw-r--r--
201037
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
33
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  Ui sub session.
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
// INCLUDE FILES
hgs
parents:
diff changeset
    21
#include    <e32property.h>
hgs
parents:
diff changeset
    22
#include    <satdomainpskeys.h>
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
#include    "CSatSUiSubSession.h"
hgs
parents:
diff changeset
    25
#include    "CSatSSession.h"
hgs
parents:
diff changeset
    26
#include    "CSatSServer.h"
hgs
parents:
diff changeset
    27
#include    "CSatCommandHandler.h"
hgs
parents:
diff changeset
    28
#include    "CSatCommandContainer.h"
hgs
parents:
diff changeset
    29
#include    "MSatApi.h"
hgs
parents:
diff changeset
    30
#include    "EnginePanic.h"
hgs
parents:
diff changeset
    31
#include    "SatLog.h"
hgs
parents:
diff changeset
    32
#include    "SATInternalPSKeys.h"
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
// ============================ MEMBER FUNCTIONS ===============================
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    37
// CSatSUiSubSession::CSatSUiSubSession
hgs
parents:
diff changeset
    38
// C++ default constructor can NOT contain any code, that
hgs
parents:
diff changeset
    39
// might leave.
hgs
parents:
diff changeset
    40
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    41
//
hgs
parents:
diff changeset
    42
//lint -e{1403, 1769} Can not be initialized, harmless.
hgs
parents:
diff changeset
    43
CSatSUiSubSession::CSatSUiSubSession(
hgs
parents:
diff changeset
    44
    CSatSSession& aSession,
hgs
parents:
diff changeset
    45
    MSatApi& aSatApi,
hgs
parents:
diff changeset
    46
    TSatEventMediator& aEventMediator ) // Session
hgs
parents:
diff changeset
    47
    :
hgs
parents:
diff changeset
    48
    CSatSSubSession( aSession ),
hgs
parents:
diff changeset
    49
    iEventData(),
hgs
parents:
diff changeset
    50
    iEventDataPckg( iEventData ),
hgs
parents:
diff changeset
    51
    iSatApi( aSatApi ),
hgs
parents:
diff changeset
    52
    iEventMediator( aEventMediator )
hgs
parents:
diff changeset
    53
    {
hgs
parents:
diff changeset
    54
    LOG( SIMPLE,
hgs
parents:
diff changeset
    55
        "SATENGINE: CSatSUiSubSession::CSatSUiSubSession calling - exiting" )
hgs
parents:
diff changeset
    56
    }
hgs
parents:
diff changeset
    57
hgs
parents:
diff changeset
    58
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    59
// CSatSUiSubSession::ConstructL
hgs
parents:
diff changeset
    60
// Symbian 2nd phase constructor can leave.
hgs
parents:
diff changeset
    61
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    62
//
hgs
parents:
diff changeset
    63
void CSatSUiSubSession::ConstructL()
hgs
parents:
diff changeset
    64
    {
hgs
parents:
diff changeset
    65
    LOG( SIMPLE, "SATENGINE: CSatSUiSubSession::ConstructL calling" )
hgs
parents:
diff changeset
    66
hgs
parents:
diff changeset
    67
    iEventMediator.RegisterL( this, MSatUtils::ESmsSent );
hgs
parents:
diff changeset
    68
hgs
parents:
diff changeset
    69
    // Get registered service requests from MSatUtils.
hgs
parents:
diff changeset
    70
    iServiceRequest = iSession.SatServer()->SatUtils()->ServiceRequests();
hgs
parents:
diff changeset
    71
hgs
parents:
diff changeset
    72
    LOG( SIMPLE, "SATENGINE: CSatSUiSubSession::ConstructL exiting" )
hgs
parents:
diff changeset
    73
    }
hgs
parents:
diff changeset
    74
hgs
parents:
diff changeset
    75
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    76
// CSatSUiSubSession::NewL
hgs
parents:
diff changeset
    77
// Two-phased constructor.
hgs
parents:
diff changeset
    78
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    79
//
hgs
parents:
diff changeset
    80
CSatSUiSubSession* CSatSUiSubSession::NewL(
hgs
parents:
diff changeset
    81
    CSatSSession& aSession,
hgs
parents:
diff changeset
    82
    MSatApi& aSatApi,
hgs
parents:
diff changeset
    83
    TSatEventMediator& aEventMediator )
hgs
parents:
diff changeset
    84
    {
hgs
parents:
diff changeset
    85
    LOG( SIMPLE, "SATENGINE: CSatSUiSubSession::NewL calling" )
hgs
parents:
diff changeset
    86
hgs
parents:
diff changeset
    87
    CSatSUiSubSession* self =
hgs
parents:
diff changeset
    88
        new( ELeave ) CSatSUiSubSession( aSession, aSatApi, aEventMediator );
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
    91
    self->ConstructL();
hgs
parents:
diff changeset
    92
    CleanupStack::Pop( self );
hgs
parents:
diff changeset
    93
hgs
parents:
diff changeset
    94
    LOG( SIMPLE, "SATENGINE: CSatSUiSubSession::NewL exiting" )
hgs
parents:
diff changeset
    95
    return self;
hgs
parents:
diff changeset
    96
    }
hgs
parents:
diff changeset
    97
hgs
parents:
diff changeset
    98
// Destructor
hgs
parents:
diff changeset
    99
CSatSUiSubSession::~CSatSUiSubSession()
hgs
parents:
diff changeset
   100
    {
hgs
parents:
diff changeset
   101
    LOG( SIMPLE, "SATENGINE: CSatSUiSubSession::~CSatSUiSubSession calling" )
hgs
parents:
diff changeset
   102
hgs
parents:
diff changeset
   103
    iServiceRequest = NULL;
hgs
parents:
diff changeset
   104
hgs
parents:
diff changeset
   105
    // Unregister to listen events
hgs
parents:
diff changeset
   106
    iEventMediator.Unregister( this );
hgs
parents:
diff changeset
   107
hgs
parents:
diff changeset
   108
    // Inform session that UI Session is closed.
hgs
parents:
diff changeset
   109
    // Session tells to container of iServiceRequest to reset
hgs
parents:
diff changeset
   110
    // request handlers.
hgs
parents:
diff changeset
   111
    iSession.UiSessionClosed();
hgs
parents:
diff changeset
   112
hgs
parents:
diff changeset
   113
    LOG( SIMPLE, "SATENGINE: CSatSUiSubSession::~CSatSUiSubSession exiting" )
hgs
parents:
diff changeset
   114
    }
hgs
parents:
diff changeset
   115
hgs
parents:
diff changeset
   116
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   117
// CSatSUiSubSession::HandleCommandL
hgs
parents:
diff changeset
   118
// (other items were commented in a header).
hgs
parents:
diff changeset
   119
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   120
//
hgs
parents:
diff changeset
   121
void CSatSUiSubSession::HandleCommandL(
hgs
parents:
diff changeset
   122
    const RMessage2& aMessage ) // Message from ui client.
hgs
parents:
diff changeset
   123
    {
hgs
parents:
diff changeset
   124
    LOG( SIMPLE, "SATENGINE: CSatSUiSubSession::HandleCommandL calling" )
hgs
parents:
diff changeset
   125
    LOG2( SIMPLE, "SATENGINE: CSatSUiSubSession::HandleCommandL \
hgs
parents:
diff changeset
   126
          command: %i", aMessage.Function() )
hgs
parents:
diff changeset
   127
    switch ( aMessage.Function() )
hgs
parents:
diff changeset
   128
        {
hgs
parents:
diff changeset
   129
        // Ui client is ready to handle setupmenu command.
hgs
parents:
diff changeset
   130
        case ESatSProactiveSetUpMenu:
hgs
parents:
diff changeset
   131
            {
hgs
parents:
diff changeset
   132
            // Notifies that SetUpMenu command has been made because SAT Client
hgs
parents:
diff changeset
   133
            // side application is returning to the main menu after SelectItem.
hgs
parents:
diff changeset
   134
            // For example: Next action is LaunchBrowser command and after
hgs
parents:
diff changeset
   135
            // Browser is launched then SAT Client side application has been
hgs
parents:
diff changeset
   136
            // opened top of Browser. In some cases SAT client side application
hgs
parents:
diff changeset
   137
            // stays topmost.
hgs
parents:
diff changeset
   138
            iEventMediator.Notify( MSatUtils::ESetUpMenuRequested );
hgs
parents:
diff changeset
   139
            // This service request is handled also like commands listed below.
hgs
parents:
diff changeset
   140
            }
hgs
parents:
diff changeset
   141
            //lint -fallthrough intended here
hgs
parents:
diff changeset
   142
        case ESatSProactiveDisplayText:
hgs
parents:
diff changeset
   143
        case ESatSProactiveGetInkey:
hgs
parents:
diff changeset
   144
        case ESatSProactiveGetInput:
hgs
parents:
diff changeset
   145
        case ESatSProactiveSelectItem:
hgs
parents:
diff changeset
   146
        case ESatSProactivePlayTone:
hgs
parents:
diff changeset
   147
        case ESatSProactiveRefresh:
hgs
parents:
diff changeset
   148
        case ESatSProactiveDisplayTextResponse:
hgs
parents:
diff changeset
   149
        case ESatSProactiveGetInkeyResponse:
hgs
parents:
diff changeset
   150
        case ESatSProactiveGetInputResponse:
hgs
parents:
diff changeset
   151
        case ESatSProactiveSelectItemResponse:
hgs
parents:
diff changeset
   152
        case ESatSProactivePlayToneResponse:
hgs
parents:
diff changeset
   153
        case ESatSProactiveQuery:
hgs
parents:
diff changeset
   154
        case ESatSProactiveQueryResponse:
hgs
parents:
diff changeset
   155
        case ESatSProactiveNotification:
hgs
parents:
diff changeset
   156
        case ESatSProactiveNotificationResponse:
hgs
parents:
diff changeset
   157
            {
hgs
parents:
diff changeset
   158
            const TInt count( iServiceRequest->Count() );
hgs
parents:
diff changeset
   159
            TBool requestHandled( EFalse );
hgs
parents:
diff changeset
   160
            TInt index( 0 );
hgs
parents:
diff changeset
   161
            // Loop until request is handled or no request handler found.
hgs
parents:
diff changeset
   162
            while ( !requestHandled && index < count )
hgs
parents:
diff changeset
   163
                {
hgs
parents:
diff changeset
   164
                requestHandled = iServiceRequest->At( index )->
hgs
parents:
diff changeset
   165
                    HandleRequest( aMessage );
hgs
parents:
diff changeset
   166
                index++;
hgs
parents:
diff changeset
   167
                }
hgs
parents:
diff changeset
   168
            LOG2( SIMPLE, "SATENGINE: CSatSUiSubSession::HandleCommandL \
hgs
parents:
diff changeset
   169
                  index: %i", index )
hgs
parents:
diff changeset
   170
            break;
hgs
parents:
diff changeset
   171
            }
hgs
parents:
diff changeset
   172
hgs
parents:
diff changeset
   173
        // Menu selection envelope.
hgs
parents:
diff changeset
   174
        case ESatSActiveMenuSelection:
hgs
parents:
diff changeset
   175
            {
hgs
parents:
diff changeset
   176
            LOG( SIMPLE, "SATENGINE: CSatSUiSubSession: MenuSelection" )
hgs
parents:
diff changeset
   177
            // Declare the IPC data structures.
hgs
parents:
diff changeset
   178
            RSat::TMenuSelectionV1 menuSelection;
hgs
parents:
diff changeset
   179
            RSat::TMenuSelectionV1Pckg menuSelectionPckg( menuSelection );
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
            // Perform the IPC transfer of response data.
hgs
parents:
diff changeset
   182
            TRAPD( res, aMessage.ReadL( 0, menuSelectionPckg ) );
hgs
parents:
diff changeset
   183
hgs
parents:
diff changeset
   184
            // Send the response further only if IPC succeeded.
hgs
parents:
diff changeset
   185
            if ( KErrNone != res )
hgs
parents:
diff changeset
   186
                {
hgs
parents:
diff changeset
   187
                LOG( SIMPLE, "SATENGINE: CSatSUiSubSession: KErrNone != res" )
hgs
parents:
diff changeset
   188
                iSession.PanicClient( aMessage, ESatSBadDescriptor );
hgs
parents:
diff changeset
   189
                }
hgs
parents:
diff changeset
   190
            iSatApi.SendMenuSelection( menuSelectionPckg );
hgs
parents:
diff changeset
   191
hgs
parents:
diff changeset
   192
            // Complete the client request.
hgs
parents:
diff changeset
   193
            aMessage.Complete( KErrNone );
hgs
parents:
diff changeset
   194
            LOG( SIMPLE,
hgs
parents:
diff changeset
   195
                "SATENGINE: CSatSUiSubSession::HandleCommandL exiting" )
hgs
parents:
diff changeset
   196
            return;
hgs
parents:
diff changeset
   197
            }
hgs
parents:
diff changeset
   198
hgs
parents:
diff changeset
   199
        case ESatSProactiveEvent:
hgs
parents:
diff changeset
   200
            {
hgs
parents:
diff changeset
   201
            LOG( SIMPLE, "SATENGINE: CSatSUiSubSession: Event" )
hgs
parents:
diff changeset
   202
            iEventRequest = aMessage;
hgs
parents:
diff changeset
   203
            iEventRequestAvailable = ETrue;
hgs
parents:
diff changeset
   204
            if ( iCloseUiRequested )
hgs
parents:
diff changeset
   205
                {
hgs
parents:
diff changeset
   206
                LOG( SIMPLE,
hgs
parents:
diff changeset
   207
                    "SATENGINE: CSatSUiSubSession::HandleCommandL closeui" )
hgs
parents:
diff changeset
   208
                CloseUiSession();
hgs
parents:
diff changeset
   209
                }
hgs
parents:
diff changeset
   210
            else if ( iSmsSent )
hgs
parents:
diff changeset
   211
                {
hgs
parents:
diff changeset
   212
                LOG( SIMPLE,
hgs
parents:
diff changeset
   213
                    "SATENGINE: CSatSUiSubSession::HandleCommandL smssent" )
hgs
parents:
diff changeset
   214
                SendSmsSentEventToClient();
hgs
parents:
diff changeset
   215
                }
hgs
parents:
diff changeset
   216
            else if ( iClearScreenRequested )
hgs
parents:
diff changeset
   217
                {
hgs
parents:
diff changeset
   218
                LOG( SIMPLE, "SATENGINE: CSatSUiSubSession::HandleCommandL \
hgs
parents:
diff changeset
   219
                     clearscreen" )
hgs
parents:
diff changeset
   220
                ClearScreen();
hgs
parents:
diff changeset
   221
                }
hgs
parents:
diff changeset
   222
            else if ( iUiEventRequested )
hgs
parents:
diff changeset
   223
                {
hgs
parents:
diff changeset
   224
                LOG( SIMPLE, "SATENGINE: CSatSUiSubSession::HandleCommandL \
hgs
parents:
diff changeset
   225
                     UiEventRequested" )
hgs
parents:
diff changeset
   226
                HandleUiEventNotification();
hgs
parents:
diff changeset
   227
                }
hgs
parents:
diff changeset
   228
            else
hgs
parents:
diff changeset
   229
                {
hgs
parents:
diff changeset
   230
                LOG( SIMPLE, "SATENGINE:   Event request available" )
hgs
parents:
diff changeset
   231
                }
hgs
parents:
diff changeset
   232
hgs
parents:
diff changeset
   233
            break;
hgs
parents:
diff changeset
   234
            }
hgs
parents:
diff changeset
   235
hgs
parents:
diff changeset
   236
        case ESatSProactiveEventResponse:
hgs
parents:
diff changeset
   237
            {
hgs
parents:
diff changeset
   238
            LOG( SIMPLE, "SATENGINE: CSatSUiSubSession: EventResponse" )
hgs
parents:
diff changeset
   239
            // Declare the IPC data structures.
hgs
parents:
diff changeset
   240
            TSatEventV1 eventRsp;
hgs
parents:
diff changeset
   241
            //lint -e{603} eventRsp read through eventRspPckg in ReadL.
hgs
parents:
diff changeset
   242
            TSatEventV1Pckg eventRspPckg( eventRsp );
hgs
parents:
diff changeset
   243
hgs
parents:
diff changeset
   244
            // Perform the IPC transfer of response data.
hgs
parents:
diff changeset
   245
            TRAPD( res, aMessage.ReadL( 0, eventRspPckg ) );
hgs
parents:
diff changeset
   246
            if ( KErrNone != res )
hgs
parents:
diff changeset
   247
                {
hgs
parents:
diff changeset
   248
                LOG( SIMPLE, "SATENGINE: CSatSUiSubSession::HandleCommandL \
hgs
parents:
diff changeset
   249
                     read response data error" )
hgs
parents:
diff changeset
   250
                iSession.PanicClient( aMessage, ESatSBadDescriptor );
hgs
parents:
diff changeset
   251
                }
hgs
parents:
diff changeset
   252
            else
hgs
parents:
diff changeset
   253
                {
hgs
parents:
diff changeset
   254
                LOG( SIMPLE, "SATENGINE: CSatSUiSubSession::HandleCommandL \
hgs
parents:
diff changeset
   255
                     no error" )
hgs
parents:
diff changeset
   256
                aMessage.Complete( KErrNone );
hgs
parents:
diff changeset
   257
                }
hgs
parents:
diff changeset
   258
            break;
hgs
parents:
diff changeset
   259
            }
hgs
parents:
diff changeset
   260
hgs
parents:
diff changeset
   261
        case ESatSSessionTerminated:
hgs
parents:
diff changeset
   262
            {
hgs
parents:
diff changeset
   263
            LOG( SIMPLE, "SATENGINE: CSatSUiSubSession: SessionTerminated" )
hgs
parents:
diff changeset
   264
            TSatTermination temp;
hgs
parents:
diff changeset
   265
            //lint -e{603} temp read through tempPckg in ReadL.
hgs
parents:
diff changeset
   266
            TSatTerminationPckg tempPckg ( temp );
hgs
parents:
diff changeset
   267
            TRAPD( res, aMessage.ReadL( 0, tempPckg ) );
hgs
parents:
diff changeset
   268
            if ( KErrNone != res )
hgs
parents:
diff changeset
   269
                {
hgs
parents:
diff changeset
   270
                LOG( SIMPLE, "SATENGINE: CSatSUiSubSession::HandleCommandL \
hgs
parents:
diff changeset
   271
                     read tempPckg error" )
hgs
parents:
diff changeset
   272
                iSession.PanicClient( aMessage, ESatSBadDescriptor );
hgs
parents:
diff changeset
   273
                }
hgs
parents:
diff changeset
   274
            else
hgs
parents:
diff changeset
   275
                {
hgs
parents:
diff changeset
   276
                LOG2( SIMPLE, "SATENGINE: CSatSUiSubSession::HandleCommandL \
hgs
parents:
diff changeset
   277
                      temp.type: %i", temp.type )
hgs
parents:
diff changeset
   278
                switch ( temp.type )
hgs
parents:
diff changeset
   279
                    {
hgs
parents:
diff changeset
   280
                    case ETerminatedByCancel:
hgs
parents:
diff changeset
   281
                        {
hgs
parents:
diff changeset
   282
                        iEventMediator.Notify(
hgs
parents:
diff changeset
   283
                            MSatUtils::ECommandCancelled );
hgs
parents:
diff changeset
   284
                        break;
hgs
parents:
diff changeset
   285
                        }
hgs
parents:
diff changeset
   286
                    case ETerminatedByEndKey:
hgs
parents:
diff changeset
   287
                        {
hgs
parents:
diff changeset
   288
                        iEventMediator.Notify(
hgs
parents:
diff changeset
   289
                            MSatUtils::ECancelledUsingEndKey );
hgs
parents:
diff changeset
   290
hgs
parents:
diff changeset
   291
                        PublishSatAppClosedUsingEndKey();
hgs
parents:
diff changeset
   292
                            
hgs
parents:
diff changeset
   293
                        // Inform session that UI Session is closed.
hgs
parents:
diff changeset
   294
                        // Session is not actually closed yet but this prevents
hgs
parents:
diff changeset
   295
                        // sending data through this session.
hgs
parents:
diff changeset
   296
                        // Notify thread death monitor
hgs
parents:
diff changeset
   297
                        iSession.NotifyThreadDeathMonitor();
hgs
parents:
diff changeset
   298
                        break;
hgs
parents:
diff changeset
   299
                        }
hgs
parents:
diff changeset
   300
                    default:
hgs
parents:
diff changeset
   301
                        {
hgs
parents:
diff changeset
   302
                        LOG( SIMPLE, "SATENGINE:   Unknown termination type" )
hgs
parents:
diff changeset
   303
                        }
hgs
parents:
diff changeset
   304
                    }
hgs
parents:
diff changeset
   305
                }
hgs
parents:
diff changeset
   306
            // Complete the client request.
hgs
parents:
diff changeset
   307
            aMessage.Complete( KErrNone );
hgs
parents:
diff changeset
   308
            break;
hgs
parents:
diff changeset
   309
            }
hgs
parents:
diff changeset
   310
hgs
parents:
diff changeset
   311
        default:
hgs
parents:
diff changeset
   312
            {
hgs
parents:
diff changeset
   313
            LOG( SIMPLE, "  Unhandled command")
hgs
parents:
diff changeset
   314
            }
hgs
parents:
diff changeset
   315
        }
hgs
parents:
diff changeset
   316
hgs
parents:
diff changeset
   317
    LOG( SIMPLE, "SATENGINE: CSatSUiSubSession::HandleCommandL exiting" )
hgs
parents:
diff changeset
   318
    }
hgs
parents:
diff changeset
   319
hgs
parents:
diff changeset
   320
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   321
// CSatSUiSubSession::CloseUiSession
hgs
parents:
diff changeset
   322
// (other items were commented in a header).
hgs
parents:
diff changeset
   323
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   324
//
hgs
parents:
diff changeset
   325
void CSatSUiSubSession::CloseUiSession()
hgs
parents:
diff changeset
   326
    {
hgs
parents:
diff changeset
   327
    LOG( SIMPLE, "SATENGINE: CSatSUiSubSession::CloseUiSession calling" )
hgs
parents:
diff changeset
   328
hgs
parents:
diff changeset
   329
    // Set request flag to ETrue. Updated when command is successfully sent.
hgs
parents:
diff changeset
   330
    iCloseUiRequested = ETrue;
hgs
parents:
diff changeset
   331
hgs
parents:
diff changeset
   332
    // Notify thread death monitor
hgs
parents:
diff changeset
   333
    iSession.NotifyThreadDeathMonitor();
hgs
parents:
diff changeset
   334
hgs
parents:
diff changeset
   335
    iEventData.iEvent = ESatSCloseSatUiAppEvent;
hgs
parents:
diff changeset
   336
hgs
parents:
diff changeset
   337
    const TBool commandSent( SendCommandDataToClient( iEventRequestAvailable,
hgs
parents:
diff changeset
   338
                             iEventDataPckg,
hgs
parents:
diff changeset
   339
                             iEventRequest ) );
hgs
parents:
diff changeset
   340
hgs
parents:
diff changeset
   341
    if ( commandSent )
hgs
parents:
diff changeset
   342
        {
hgs
parents:
diff changeset
   343
        LOG( SIMPLE, 
hgs
parents:
diff changeset
   344
        "SATENGINE: CSatSUiSubSession::CloseUiSession commandSent" )
hgs
parents:
diff changeset
   345
        // If command was sent, set flag to false, so when next Event request
hgs
parents:
diff changeset
   346
        // arrives, command data is not sent.
hgs
parents:
diff changeset
   347
        iCloseUiRequested = EFalse;
hgs
parents:
diff changeset
   348
        }
hgs
parents:
diff changeset
   349
hgs
parents:
diff changeset
   350
    LOG( SIMPLE, "SATENGINE: CSatSUiSubSession::CloseUiSession exiting" )
hgs
parents:
diff changeset
   351
    }
hgs
parents:
diff changeset
   352
hgs
parents:
diff changeset
   353
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   354
// CSatSUiSubSession::ClearScreen
hgs
parents:
diff changeset
   355
// (other items were commented in a header).
hgs
parents:
diff changeset
   356
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   357
//
hgs
parents:
diff changeset
   358
void CSatSUiSubSession::ClearScreen()
hgs
parents:
diff changeset
   359
    {
hgs
parents:
diff changeset
   360
    LOG( SIMPLE, "SATENGINE: CSatSUiSubSession::ClearScreen calling" )
hgs
parents:
diff changeset
   361
hgs
parents:
diff changeset
   362
    // Set request flag to ETrue. Updated when command is successfully sent.
hgs
parents:
diff changeset
   363
    iClearScreenRequested = ETrue;
hgs
parents:
diff changeset
   364
hgs
parents:
diff changeset
   365
    iEventData.iEvent = ESatSClearScreenEvent;
hgs
parents:
diff changeset
   366
hgs
parents:
diff changeset
   367
    const TBool commandSent( SendCommandDataToClient( iEventRequestAvailable,
hgs
parents:
diff changeset
   368
                             iEventDataPckg,
hgs
parents:
diff changeset
   369
                             iEventRequest ) );
hgs
parents:
diff changeset
   370
hgs
parents:
diff changeset
   371
    if ( commandSent )
hgs
parents:
diff changeset
   372
        {
hgs
parents:
diff changeset
   373
        LOG( SIMPLE, 
hgs
parents:
diff changeset
   374
        "SATENGINE: CSatSUiSubSession::ClearScreen commandSent" )
hgs
parents:
diff changeset
   375
        // If command was sent, set flag to false, so when next Event request
hgs
parents:
diff changeset
   376
        // arrives, command data is not sent.
hgs
parents:
diff changeset
   377
        iClearScreenRequested = EFalse;
hgs
parents:
diff changeset
   378
        }
hgs
parents:
diff changeset
   379
hgs
parents:
diff changeset
   380
    LOG( SIMPLE, "SATENGINE: CSatSUiSubSession::ClearScreen exiting" )
hgs
parents:
diff changeset
   381
    }
hgs
parents:
diff changeset
   382
hgs
parents:
diff changeset
   383
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   384
// CSatSUiSubSession::UiEventNotification
hgs
parents:
diff changeset
   385
// (other items were commented in a header).
hgs
parents:
diff changeset
   386
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   387
//
hgs
parents:
diff changeset
   388
void CSatSUiSubSession::UiEventNotification(
hgs
parents:
diff changeset
   389
    TInt aEventId, TInt aEventStatus, TInt aEventError )
hgs
parents:
diff changeset
   390
    {
hgs
parents:
diff changeset
   391
    LOG( SIMPLE, "SATENGINE: CSatSUiSubSession::UiEventNotification calling" )
hgs
parents:
diff changeset
   392
hgs
parents:
diff changeset
   393
    // Set request flag to ETrue. Updated when command is successfully sent.
hgs
parents:
diff changeset
   394
    iUiEventRequested = ETrue;
hgs
parents:
diff changeset
   395
    iEventData.iEvent = static_cast< TSatSEvent >( aEventId );
hgs
parents:
diff changeset
   396
    iEventData.iStatus = static_cast< TSatSEventStatus >( aEventStatus );
hgs
parents:
diff changeset
   397
    iEventData.iError = aEventError;
hgs
parents:
diff changeset
   398
hgs
parents:
diff changeset
   399
    HandleUiEventNotification();
hgs
parents:
diff changeset
   400
hgs
parents:
diff changeset
   401
    LOG( SIMPLE, "SATENGINE: CSatSUiSubSession::UiEventNotification exiting" )
hgs
parents:
diff changeset
   402
    }
hgs
parents:
diff changeset
   403
hgs
parents:
diff changeset
   404
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   405
// CSatSUiSubSession::HandleUiEventNotification
hgs
parents:
diff changeset
   406
// (other items were commented in a header).
hgs
parents:
diff changeset
   407
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   408
//
hgs
parents:
diff changeset
   409
void CSatSUiSubSession::HandleUiEventNotification()
hgs
parents:
diff changeset
   410
    {
hgs
parents:
diff changeset
   411
    LOG( SIMPLE,
hgs
parents:
diff changeset
   412
        "SATENGINE: CSatSUiSubSession::HandleUiEventNotification calling" )
hgs
parents:
diff changeset
   413
hgs
parents:
diff changeset
   414
    // Send Command to client
hgs
parents:
diff changeset
   415
    const TBool commandSent( SendCommandDataToClient( iEventRequestAvailable,
hgs
parents:
diff changeset
   416
                             iEventDataPckg,
hgs
parents:
diff changeset
   417
                             iEventRequest ) );
hgs
parents:
diff changeset
   418
hgs
parents:
diff changeset
   419
    // Check the status of command sending
hgs
parents:
diff changeset
   420
    if ( commandSent )
hgs
parents:
diff changeset
   421
        {
hgs
parents:
diff changeset
   422
        LOG( SIMPLE, 
hgs
parents:
diff changeset
   423
        "SATENGINE: CSatSUiSubSession::HandleUiEventNotification commandSent" )
hgs
parents:
diff changeset
   424
        // If command was sent, set flag to false, so when next Event request
hgs
parents:
diff changeset
   425
        // arrives, command data is not sent.
hgs
parents:
diff changeset
   426
        iUiEventRequested = EFalse;
hgs
parents:
diff changeset
   427
        }
hgs
parents:
diff changeset
   428
hgs
parents:
diff changeset
   429
    LOG( SIMPLE,
hgs
parents:
diff changeset
   430
        "SATENGINE: CSatSUiSubSession::HandleUiEventNotification exiting" )
hgs
parents:
diff changeset
   431
    }
hgs
parents:
diff changeset
   432
hgs
parents:
diff changeset
   433
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   434
// CSatSUiSubSession::SendCommand
hgs
parents:
diff changeset
   435
// (other items were commented in a header).
hgs
parents:
diff changeset
   436
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   437
//
hgs
parents:
diff changeset
   438
void CSatSUiSubSession::SendCommand(
hgs
parents:
diff changeset
   439
    TDesC8* aCmdData, // Data from SIM.
hgs
parents:
diff changeset
   440
    TDes8* aCmdRsp, // Response.
hgs
parents:
diff changeset
   441
    TSatServerRequest aRequest ) // Request, which the aData is sent.
hgs
parents:
diff changeset
   442
    {
hgs
parents:
diff changeset
   443
    LOG( SIMPLE, "SATENGINE: CSatSUiSubSession::SendCommand calling" )
hgs
parents:
diff changeset
   444
hgs
parents:
diff changeset
   445
    const TInt count( iServiceRequest->Count() );
hgs
parents:
diff changeset
   446
    TBool requestHandled( EFalse );
hgs
parents:
diff changeset
   447
    TInt index( 0 );
hgs
parents:
diff changeset
   448
hgs
parents:
diff changeset
   449
    // Loop until request is handled or no request handler found.
hgs
parents:
diff changeset
   450
    while ( !requestHandled && ( index < count ) )
hgs
parents:
diff changeset
   451
        {
hgs
parents:
diff changeset
   452
        requestHandled = iServiceRequest->At( index )->HandleCommand(
hgs
parents:
diff changeset
   453
            aCmdData, aCmdRsp, aRequest );
hgs
parents:
diff changeset
   454
        index++;
hgs
parents:
diff changeset
   455
        }
hgs
parents:
diff changeset
   456
    LOG2( SIMPLE, "SATENGINE: CSatSUiSubSession::SendCommand \
hgs
parents:
diff changeset
   457
          index: %i", index )
hgs
parents:
diff changeset
   458
    LOG( SIMPLE, "SATENGINE: CSatSUiSubSession::SendCommand exiting" )
hgs
parents:
diff changeset
   459
    }
hgs
parents:
diff changeset
   460
hgs
parents:
diff changeset
   461
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   462
// CSatSUiSubSession::Event
hgs
parents:
diff changeset
   463
// (other items were commented in a header).
hgs
parents:
diff changeset
   464
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   465
//
hgs
parents:
diff changeset
   466
void CSatSUiSubSession::Event( TInt aEvent )
hgs
parents:
diff changeset
   467
    {
hgs
parents:
diff changeset
   468
    LOG( SIMPLE, "SATENGINE: CSatSUiSubSession::Event calling" )
hgs
parents:
diff changeset
   469
hgs
parents:
diff changeset
   470
    if ( MSatUtils::ESmsSent == aEvent )
hgs
parents:
diff changeset
   471
        {
hgs
parents:
diff changeset
   472
        LOG( SIMPLE, "SATENGINE: CSatSUiSubSession::Event ESmsSent" )
hgs
parents:
diff changeset
   473
        iSmsSent = ETrue;
hgs
parents:
diff changeset
   474
        SendSmsSentEventToClient();
hgs
parents:
diff changeset
   475
        }
hgs
parents:
diff changeset
   476
hgs
parents:
diff changeset
   477
    LOG( SIMPLE, "SATENGINE: CSatSUiSubSession::Event exiting" )
hgs
parents:
diff changeset
   478
    }
hgs
parents:
diff changeset
   479
hgs
parents:
diff changeset
   480
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   481
// CSatSUiSubSession::SendCommandDataToClient
hgs
parents:
diff changeset
   482
// Writes descriptor to clients address space and
hgs
parents:
diff changeset
   483
// completes the request.
hgs
parents:
diff changeset
   484
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   485
//
hgs
parents:
diff changeset
   486
TBool CSatSUiSubSession::SendCommandDataToClient(
hgs
parents:
diff changeset
   487
    TBool& aRequestAvailable, // Is request available
hgs
parents:
diff changeset
   488
    const TDesC8& aData, // Data to be sent to client
hgs
parents:
diff changeset
   489
    const RMessage2& aMessage ) const // Message of the request
hgs
parents:
diff changeset
   490
    {
hgs
parents:
diff changeset
   491
    LOG( SIMPLE,
hgs
parents:
diff changeset
   492
        "SATENGINE: CSatSUiSubSession::SendCommandDataToClient calling" )
hgs
parents:
diff changeset
   493
hgs
parents:
diff changeset
   494
    TBool commandSent( EFalse );
hgs
parents:
diff changeset
   495
hgs
parents:
diff changeset
   496
    // Is ui client ready to receive the command data.
hgs
parents:
diff changeset
   497
    if ( aRequestAvailable )
hgs
parents:
diff changeset
   498
        {
hgs
parents:
diff changeset
   499
        LOG( SIMPLE, "SATENGINE: SendCommandDataToClient: Sending to Client" )
hgs
parents:
diff changeset
   500
        TRAPD( res, aMessage.WriteL( 0, aData ) );
hgs
parents:
diff changeset
   501
        if ( KErrNone != res )
hgs
parents:
diff changeset
   502
            {
hgs
parents:
diff changeset
   503
            LOG( SIMPLE, 
hgs
parents:
diff changeset
   504
            "SATENGINE: SendCommandDataToClient: KErrNone != res" )
hgs
parents:
diff changeset
   505
            iSession.PanicClient( aMessage, ESatSBadDescriptor );
hgs
parents:
diff changeset
   506
            }
hgs
parents:
diff changeset
   507
        aMessage.Complete( KErrNone );
hgs
parents:
diff changeset
   508
        aRequestAvailable = EFalse;
hgs
parents:
diff changeset
   509
        commandSent = ETrue;
hgs
parents:
diff changeset
   510
        }
hgs
parents:
diff changeset
   511
hgs
parents:
diff changeset
   512
    LOG( SIMPLE,
hgs
parents:
diff changeset
   513
        "SATENGINE: CSatSUiSubSession::SendCommandDataToClient exiting" )
hgs
parents:
diff changeset
   514
    return commandSent;
hgs
parents:
diff changeset
   515
    }
hgs
parents:
diff changeset
   516
hgs
parents:
diff changeset
   517
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   518
// CSatSUiSubSession::SendSmsSentEventToClient
hgs
parents:
diff changeset
   519
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   520
//
hgs
parents:
diff changeset
   521
void CSatSUiSubSession::SendSmsSentEventToClient()
hgs
parents:
diff changeset
   522
    {
hgs
parents:
diff changeset
   523
    LOG( SIMPLE,
hgs
parents:
diff changeset
   524
        "SATENGINE: CSatSUiSubSession::SendSmsSentEventToClient calling" )
hgs
parents:
diff changeset
   525
hgs
parents:
diff changeset
   526
    iEventData.iEvent = ESatSSmEndEvent;
hgs
parents:
diff changeset
   527
    const TBool commandSent( SendCommandDataToClient( iEventRequestAvailable,
hgs
parents:
diff changeset
   528
        iEventDataPckg, iEventRequest ) );
hgs
parents:
diff changeset
   529
hgs
parents:
diff changeset
   530
    if ( commandSent )
hgs
parents:
diff changeset
   531
        {
hgs
parents:
diff changeset
   532
        LOG( SIMPLE, 
hgs
parents:
diff changeset
   533
        "SATENGINE: CSatSUiSubSession::SendSmsSentEventToClient commandSent" )
hgs
parents:
diff changeset
   534
        // If command was sent, set flag to false, so when next Event request
hgs
parents:
diff changeset
   535
        // arrives, command data is not sent.
hgs
parents:
diff changeset
   536
        iSmsSent = EFalse;
hgs
parents:
diff changeset
   537
        }
hgs
parents:
diff changeset
   538
hgs
parents:
diff changeset
   539
    LOG( SIMPLE,
hgs
parents:
diff changeset
   540
        "SATENGINE: CSatSUiSubSession::SendSmsSentEventToClient exiting" )
hgs
parents:
diff changeset
   541
    }
hgs
parents:
diff changeset
   542
    
hgs
parents:
diff changeset
   543
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   544
// Publish the P&S key KSatAppClosedUsingEndKey to indicate the occurred
hgs
parents:
diff changeset
   545
// End Key action
hgs
parents:
diff changeset
   546
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   547
//
hgs
parents:
diff changeset
   548
void CSatSUiSubSession::PublishSatAppClosedUsingEndKey()
hgs
parents:
diff changeset
   549
    {
hgs
parents:
diff changeset
   550
    LOG( SIMPLE,
hgs
parents:
diff changeset
   551
        "SATENGINE:CSatSUiSubSession::PublishSatAppClosedUsingEndKey calling" )
hgs
parents:
diff changeset
   552
hgs
parents:
diff changeset
   553
    TInt error = RProperty::Set( KPSUidSatServerInternal,
hgs
parents:
diff changeset
   554
        KSatAppClosedUsingEndKey, KSatAppTerminatedUsingEndKey );
hgs
parents:
diff changeset
   555
    LOG2( SIMPLE, "CSatSUiSubSession::PublishSatAppClosedUsingEndKey \
hgs
parents:
diff changeset
   556
          P&S key: %i", KSatAppTerminatedUsingEndKey )    
hgs
parents:
diff changeset
   557
    LOG2(NORMAL, 
hgs
parents:
diff changeset
   558
        "SATENGINE: CSatSUiSubSession::PublishSatAppClosedUsingEndKey -  \
hgs
parents:
diff changeset
   559
        publish KSapAppClosedUsingEndKey and return: %d ", error );
hgs
parents:
diff changeset
   560
hgs
parents:
diff changeset
   561
    LOG( SIMPLE,
hgs
parents:
diff changeset
   562
        "SATENGINE:CSatSUiSubSession::PublishSatAppClosedUsingEndKey exiting" )
hgs
parents:
diff changeset
   563
    }