satengine/satserver/Commands/SetUpMenuCmd/src/CSetUpMenuHandler.cpp
author hgs
Fri, 03 Sep 2010 13:59:20 +0300
changeset 46 2fa1fa551b0b
parent 33 8d5d7fcf9b59
permissions -rw-r--r--
201035
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:  Handles the SetUpMenu command from SIM.
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
#include    <MSatShellController.h>
hgs
parents:
diff changeset
    20
#include    "MSatApi.h"
hgs
parents:
diff changeset
    21
#include    "MSatUiSession.h"
hgs
parents:
diff changeset
    22
#include    "SatSOpcodes.h"
hgs
parents:
diff changeset
    23
#include    "MSatSUiClientHandler.h"
hgs
parents:
diff changeset
    24
#include    "CSetUpMenuHandler.h"
hgs
parents:
diff changeset
    25
#include    "SATPrivateCRKeys.h"
hgs
parents:
diff changeset
    26
#include    "SatLog.h"
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
const TInt KMaxSatAppName = 30;
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
// ======== MEMBER FUNCTIONS ========
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    33
// CSetUpMenuHandler::CSetUpMenuHandler
hgs
parents:
diff changeset
    34
// C++ default constructor can NOT contain any code, that
hgs
parents:
diff changeset
    35
// might leave.
hgs
parents:
diff changeset
    36
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    37
//
hgs
parents:
diff changeset
    38
CSetUpMenuHandler::CSetUpMenuHandler() :
hgs
parents:
diff changeset
    39
    CSatCommandHandler(),
hgs
parents:
diff changeset
    40
    iSetUpMenuData(),
hgs
parents:
diff changeset
    41
    iSetUpMenuPckg( iSetUpMenuData ),
hgs
parents:
diff changeset
    42
    iArrivedSetUpMenuData(),
hgs
parents:
diff changeset
    43
    iArrivedSetUpMenuPckg( iArrivedSetUpMenuData ),
hgs
parents:
diff changeset
    44
    iSatAppNameUpdated( EFalse ),
hgs
parents:
diff changeset
    45
    iSatServiceAvailable( EFalse ),
hgs
parents:
diff changeset
    46
    // To be removed when icons are allowed in this command
hgs
parents:
diff changeset
    47
    iIconCommand( EFalse )
hgs
parents:
diff changeset
    48
    {
hgs
parents:
diff changeset
    49
    LOG( SIMPLE,
hgs
parents:
diff changeset
    50
        "SETUPMENU: CSetUpMenuHandler::CSetUpMenuHandler calling - exiting" )
hgs
parents:
diff changeset
    51
    }
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    54
// CSetUpMenuHandler::ConstructL
hgs
parents:
diff changeset
    55
// Symbian 2nd phase constructor can leave.
hgs
parents:
diff changeset
    56
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    57
//
hgs
parents:
diff changeset
    58
void CSetUpMenuHandler::ConstructL()
hgs
parents:
diff changeset
    59
    {
hgs
parents:
diff changeset
    60
    LOG( SIMPLE, "SETUPMENU: CSetUpMenuHandler::ConstructL calling" )
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
    // Register Service request handler for this command handler.
hgs
parents:
diff changeset
    63
    iUtils->RegisterServiceRequestL(
hgs
parents:
diff changeset
    64
        ESatSProactiveSetUpMenu,
hgs
parents:
diff changeset
    65
        ESatSNone,
hgs
parents:
diff changeset
    66
        this );
hgs
parents:
diff changeset
    67
hgs
parents:
diff changeset
    68
    // Remove the sat ui client icon from the shell, otherwise
hgs
parents:
diff changeset
    69
    // sat icon remains in shell once set in shell.
hgs
parents:
diff changeset
    70
    iUtils->SatUiHandler().ShellController().RemoveSatUiL();
hgs
parents:
diff changeset
    71
hgs
parents:
diff changeset
    72
    // When sim session arrives, setupmenu may need to be displayed.
hgs
parents:
diff changeset
    73
    iUtils->RegisterL( this, MSatUtils::ESimSessionEndExecuting );
hgs
parents:
diff changeset
    74
    iUtils->RegisterL( this, MSatUtils::ESatUiLaunched );
hgs
parents:
diff changeset
    75
    iUtils->RegisterL( this, MSatUtils::ESetUpMenuNeeded );
hgs
parents:
diff changeset
    76
    iUtils->RegisterL( this, MSatUtils::EApplNameUpdated );
hgs
parents:
diff changeset
    77
    iUtils->RegisterL( this, MSatUtils::ESimResetCalled );
hgs
parents:
diff changeset
    78
    iUtils->RegisterL( this, MSatUtils::ERemoveSatUiCalled );
hgs
parents:
diff changeset
    79
    iUtils->RegisterL( this, MSatUtils::EAddSatUiCalled );
hgs
parents:
diff changeset
    80
    iUtils->RegisterL( this, MSatUtils::ECallControlDone );
hgs
parents:
diff changeset
    81
hgs
parents:
diff changeset
    82
    LOG( SIMPLE, "SETUPMENU: CSetUpMenuHandler::ConstructL exiting" )
hgs
parents:
diff changeset
    83
    }
hgs
parents:
diff changeset
    84
hgs
parents:
diff changeset
    85
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    86
// CSetUpMenuHandler::NewL
hgs
parents:
diff changeset
    87
// Two-phased constructor.
hgs
parents:
diff changeset
    88
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    89
//
hgs
parents:
diff changeset
    90
CSetUpMenuHandler* CSetUpMenuHandler::NewL( MSatUtils* aUtils )
hgs
parents:
diff changeset
    91
    {
hgs
parents:
diff changeset
    92
    LOG( SIMPLE, "SETUPMENU: CSetUpMenuHandler::NewL calling" )
hgs
parents:
diff changeset
    93
hgs
parents:
diff changeset
    94
    CSetUpMenuHandler* self = new( ELeave ) CSetUpMenuHandler;
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
    97
    self->BaseConstructL( aUtils ); // Need to be called before ConstructL
hgs
parents:
diff changeset
    98
    self->ConstructL();
hgs
parents:
diff changeset
    99
    CleanupStack::Pop( self );
hgs
parents:
diff changeset
   100
hgs
parents:
diff changeset
   101
    LOG( SIMPLE, "SETUPMENU: CSetUpMenuHandler::NewL exiting" )
hgs
parents:
diff changeset
   102
    return self;
hgs
parents:
diff changeset
   103
    }
hgs
parents:
diff changeset
   104
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
// Destructor
hgs
parents:
diff changeset
   107
CSetUpMenuHandler::~CSetUpMenuHandler()
hgs
parents:
diff changeset
   108
    {
hgs
parents:
diff changeset
   109
    LOG( SIMPLE, "SETUPMENU: CSetUpMenuHandler::~CSetUpMenuHandler calling" )
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
    Cancel();
hgs
parents:
diff changeset
   112
hgs
parents:
diff changeset
   113
    LOG( SIMPLE, "SETUPMENU: CSetUpMenuHandler::~CSetUpMenuHandler exiting" )
hgs
parents:
diff changeset
   114
    }
hgs
parents:
diff changeset
   115
hgs
parents:
diff changeset
   116
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   117
// CSetUpMenuHandler::ClientResponse
hgs
parents:
diff changeset
   118
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   119
//
hgs
parents:
diff changeset
   120
void CSetUpMenuHandler::ClientResponse()
hgs
parents:
diff changeset
   121
    {
hgs
parents:
diff changeset
   122
    // This is needed to prevent Panic when UI is closed right after start
hgs
parents:
diff changeset
   123
    }
hgs
parents:
diff changeset
   124
hgs
parents:
diff changeset
   125
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   126
// CSetUpMenuHandler::Event
hgs
parents:
diff changeset
   127
// Event notification
hgs
parents:
diff changeset
   128
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   129
//
hgs
parents:
diff changeset
   130
void CSetUpMenuHandler::Event( TInt aEvent )
hgs
parents:
diff changeset
   131
    {
hgs
parents:
diff changeset
   132
    LOG( SIMPLE, "SETUPMENU: CSetUpMenuHandler::Event calling" )
hgs
parents:
diff changeset
   133
hgs
parents:
diff changeset
   134
    switch ( aEvent )
hgs
parents:
diff changeset
   135
        {
hgs
parents:
diff changeset
   136
        // Sim session has arrived from SIM or ui launched
hgs
parents:
diff changeset
   137
        case MSatUtils::ESatUiLaunched:
hgs
parents:
diff changeset
   138
            {
hgs
parents:
diff changeset
   139
            LOG( NORMAL, "SETUPMENU:   Event: ESatUiLaunched" )
hgs
parents:
diff changeset
   140
            // Send SetUpMenu to ui client if ui client is running,
hgs
parents:
diff changeset
   141
            // ui client is launced by user and the set up menu data
hgs
parents:
diff changeset
   142
            // has arrived from SIM.
hgs
parents:
diff changeset
   143
            if ( iSetUpMenuArrived )
hgs
parents:
diff changeset
   144
                {
hgs
parents:
diff changeset
   145
                LOG( NORMAL, "SETUPMENU:   Event: iSetUpMenuArrived true" )
hgs
parents:
diff changeset
   146
                SendSetUpMenuToClient();
hgs
parents:
diff changeset
   147
                }
hgs
parents:
diff changeset
   148
            else
hgs
parents:
diff changeset
   149
                {
hgs
parents:
diff changeset
   150
                SendEmptySetupMenuToClient();
hgs
parents:
diff changeset
   151
                }
hgs
parents:
diff changeset
   152
hgs
parents:
diff changeset
   153
            break;
hgs
parents:
diff changeset
   154
            }
hgs
parents:
diff changeset
   155
hgs
parents:
diff changeset
   156
        case MSatUtils::ESetUpMenuNeeded:
hgs
parents:
diff changeset
   157
            {
hgs
parents:
diff changeset
   158
            LOG( NORMAL, "SETUPMENU:   Event: ESetUpMenuNeeded" )
hgs
parents:
diff changeset
   159
            // Some command has finished executing and needs SetUpMenu.
hgs
parents:
diff changeset
   160
            SendSetUpMenuToClient();
hgs
parents:
diff changeset
   161
            break;
hgs
parents:
diff changeset
   162
            }
hgs
parents:
diff changeset
   163
hgs
parents:
diff changeset
   164
        case MSatUtils::EApplNameUpdated:
hgs
parents:
diff changeset
   165
            {
hgs
parents:
diff changeset
   166
            LOG( NORMAL, "SETUPMENU:   Event: EApplNameUpdated" )
hgs
parents:
diff changeset
   167
            // Update SetUpMenu to ui client if ui client is running,
hgs
parents:
diff changeset
   168
            // ui client is launced by user and the set up menu data
hgs
parents:
diff changeset
   169
            // has arrived from SIM.
hgs
parents:
diff changeset
   170
            TRAPD( err, UpdateSetUpMenuToClientL() );
hgs
parents:
diff changeset
   171
            if ( KErrNone != err )
hgs
parents:
diff changeset
   172
                {
hgs
parents:
diff changeset
   173
                LOG2( SIMPLE, "SETUPMENU:   Error: %i", err )
hgs
parents:
diff changeset
   174
                }            
hgs
parents:
diff changeset
   175
            break;
hgs
parents:
diff changeset
   176
            }
hgs
parents:
diff changeset
   177
hgs
parents:
diff changeset
   178
        case MSatUtils::ESimSessionEndExecuting:
hgs
parents:
diff changeset
   179
            {
hgs
parents:
diff changeset
   180
            LOG( NORMAL, "SETUPMENU:   Event: ESimSessionEndExecuting" )
hgs
parents:
diff changeset
   181
            // If the sim session end is only command active currently
hgs
parents:
diff changeset
   182
            // then send the setupmenu to client.
hgs
parents:
diff changeset
   183
            if ( 1 == iUtils->NumberOfExecutingCommandHandlers() )
hgs
parents:
diff changeset
   184
                {
hgs
parents:
diff changeset
   185
                LOG( NORMAL, "SETUPMENU:   Event: setupmenu" )
hgs
parents:
diff changeset
   186
                SendSetUpMenuToClient();
hgs
parents:
diff changeset
   187
                }
hgs
parents:
diff changeset
   188
            break;
hgs
parents:
diff changeset
   189
            }
hgs
parents:
diff changeset
   190
hgs
parents:
diff changeset
   191
        case MSatUtils::ESimResetCalled:
hgs
parents:
diff changeset
   192
            {
hgs
parents:
diff changeset
   193
            LOG( NORMAL, "SETUPMENU:   Event: ESimResetCalled" )
hgs
parents:
diff changeset
   194
            // Close SatUi and remove Sat icon from application shell
hgs
parents:
diff changeset
   195
            MSatUiSession* uiSession = iUtils->SatUiHandler().UiSession();
hgs
parents:
diff changeset
   196
            if ( uiSession )
hgs
parents:
diff changeset
   197
                {
hgs
parents:
diff changeset
   198
                LOG( NORMAL, "SETUPMENU:   Event: CloseUiSession" )
hgs
parents:
diff changeset
   199
                uiSession->CloseUiSession();
hgs
parents:
diff changeset
   200
                }
hgs
parents:
diff changeset
   201
            TRAP_IGNORE( RemoveIconFromShellL() )
hgs
parents:
diff changeset
   202
            break;
hgs
parents:
diff changeset
   203
            }
hgs
parents:
diff changeset
   204
hgs
parents:
diff changeset
   205
        case MSatUtils::EAddSatUiCalled:
hgs
parents:
diff changeset
   206
            {
hgs
parents:
diff changeset
   207
            LOG( NORMAL, "SETUPMENU:   Event: EAddSatUiCalled" )
hgs
parents:
diff changeset
   208
            iSatServiceAvailable = ETrue;
hgs
parents:
diff changeset
   209
            if ( iSetUpMenuArrived )
hgs
parents:
diff changeset
   210
                {
hgs
parents:
diff changeset
   211
                LOG( NORMAL, "SETUPMENU:   Event: iSetUpMenuArrived true" )
hgs
parents:
diff changeset
   212
                TRAP_IGNORE( AddIconToShellL(
hgs
parents:
diff changeset
   213
                    iArrivedSetUpMenuData.iAlphaId.iAlphaId,
hgs
parents:
diff changeset
   214
                    iArrivedSetUpMenuData.iIconId ) )
hgs
parents:
diff changeset
   215
                }
hgs
parents:
diff changeset
   216
            break;
hgs
parents:
diff changeset
   217
            }
hgs
parents:
diff changeset
   218
hgs
parents:
diff changeset
   219
        case MSatUtils::ERemoveSatUiCalled:
hgs
parents:
diff changeset
   220
            {
hgs
parents:
diff changeset
   221
            iSatServiceAvailable = EFalse;
hgs
parents:
diff changeset
   222
            LOG( NORMAL, "SETUPMENU:   Event: ERemoveSatUiCalled" )
hgs
parents:
diff changeset
   223
            // Close SAT UI and remove SAT icon from Application Shell.
hgs
parents:
diff changeset
   224
            MSatUiSession* uiSession = iUtils->SatUiHandler().UiSession();
hgs
parents:
diff changeset
   225
            if ( uiSession )
hgs
parents:
diff changeset
   226
                {
hgs
parents:
diff changeset
   227
                LOG( NORMAL, "SETUPMENU:   Event: CloseUiSession" )
hgs
parents:
diff changeset
   228
                uiSession->CloseUiSession();
hgs
parents:
diff changeset
   229
                }
hgs
parents:
diff changeset
   230
            TRAP_IGNORE( RemoveIconFromShellL() )
hgs
parents:
diff changeset
   231
            break;
hgs
parents:
diff changeset
   232
            }
hgs
parents:
diff changeset
   233
hgs
parents:
diff changeset
   234
        case MSatUtils::ECallControlDone:
hgs
parents:
diff changeset
   235
            {
hgs
parents:
diff changeset
   236
            // If all commands end up, send the setupmenu to client.
hgs
parents:
diff changeset
   237
            if ( 0 == iUtils->NumberOfExecutingCommandHandlers() )
hgs
parents:
diff changeset
   238
                {
hgs
parents:
diff changeset
   239
                LOG( NORMAL, "SETUPMENU:   Event: setupmenu" )
hgs
parents:
diff changeset
   240
                SendSetUpMenuToClient();
hgs
parents:
diff changeset
   241
                }
hgs
parents:
diff changeset
   242
            break;
hgs
parents:
diff changeset
   243
            }
hgs
parents:
diff changeset
   244
hgs
parents:
diff changeset
   245
        default:
hgs
parents:
diff changeset
   246
            {
hgs
parents:
diff changeset
   247
            LOG2( NORMAL, "SETUPMENU:   Unexpected event: %i", aEvent )
hgs
parents:
diff changeset
   248
            CSatCommandHandler::Event( aEvent );
hgs
parents:
diff changeset
   249
            }
hgs
parents:
diff changeset
   250
        }
hgs
parents:
diff changeset
   251
hgs
parents:
diff changeset
   252
    LOG( SIMPLE, "SETUPMENU: CSetUpMenuHandler::Event exiting" )
hgs
parents:
diff changeset
   253
    }
hgs
parents:
diff changeset
   254
hgs
parents:
diff changeset
   255
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   256
// CSetUpMenuHandler::DoCancel
hgs
parents:
diff changeset
   257
// Cancels the SetUpMenu notification from SIM.
hgs
parents:
diff changeset
   258
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   259
//
hgs
parents:
diff changeset
   260
void CSetUpMenuHandler::DoCancel()
hgs
parents:
diff changeset
   261
    {
hgs
parents:
diff changeset
   262
    LOG( SIMPLE, "SETUPMENU: CSetUpMenuHandler::DoCancel calling" )
hgs
parents:
diff changeset
   263
hgs
parents:
diff changeset
   264
    iUtils->USatAPI().NotifySetUpMenuCancel();
hgs
parents:
diff changeset
   265
hgs
parents:
diff changeset
   266
    LOG( SIMPLE, "SETUPMENU: CSetUpMenuHandler::DoCancel exiting" )
hgs
parents:
diff changeset
   267
    }
hgs
parents:
diff changeset
   268
hgs
parents:
diff changeset
   269
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   270
// CSetUpMenuHandler::AddIconToShellL
hgs
parents:
diff changeset
   271
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   272
//
hgs
parents:
diff changeset
   273
void CSetUpMenuHandler::AddIconToShellL(
hgs
parents:
diff changeset
   274
    const TDesC& aAlphaId, // Alpha id of SetUpMenu command
hgs
parents:
diff changeset
   275
    const RSat::TIconId& aIconId ) // Icon id of SetUpMenu command
hgs
parents:
diff changeset
   276
    {
hgs
parents:
diff changeset
   277
    LOG( SIMPLE, "SETUPMENU: CSetUpMenuHandler::AddIconToShellL calling" )
hgs
parents:
diff changeset
   278
    TPtrC name( aAlphaId );
hgs
parents:
diff changeset
   279
hgs
parents:
diff changeset
   280
    if ( 0 != aAlphaId.Length() )
hgs
parents:
diff changeset
   281
        {
hgs
parents:
diff changeset
   282
        LOG( SIMPLE, 
hgs
parents:
diff changeset
   283
        "SETUPMENU: CSetUpMenuHandler::AddIconToShellL aAlphaId not null" )
hgs
parents:
diff changeset
   284
        // Set new sat app name.
hgs
parents:
diff changeset
   285
        iUtils->SetSatAppNameL( aAlphaId );
hgs
parents:
diff changeset
   286
        }
hgs
parents:
diff changeset
   287
    else
hgs
parents:
diff changeset
   288
        {
hgs
parents:
diff changeset
   289
        LOG( SIMPLE, 
hgs
parents:
diff changeset
   290
        "SETUPMENU: CSetUpMenuHandler::AddIconToShellL aAlphaId null" )
hgs
parents:
diff changeset
   291
        iUtils->RestoreSatAppNameL();
hgs
parents:
diff changeset
   292
        name.Set( iUtils->SatAppName() );
hgs
parents:
diff changeset
   293
        }
hgs
parents:
diff changeset
   294
hgs
parents:
diff changeset
   295
    // Menu application needs only a short name.
hgs
parents:
diff changeset
   296
    if ( iUtils->SatAppName().Length() > KMaxSatAppName )
hgs
parents:
diff changeset
   297
        {
hgs
parents:
diff changeset
   298
        LOG( SIMPLE, 
hgs
parents:
diff changeset
   299
        "SETUPMENU: CSetUpMenuHandler::AddIconToShellL AppName too long" )
hgs
parents:
diff changeset
   300
        name.Set( iUtils->SatAppName().Left( KMaxSatAppName ) );
hgs
parents:
diff changeset
   301
        }
hgs
parents:
diff changeset
   302
    else
hgs
parents:
diff changeset
   303
        {
hgs
parents:
diff changeset
   304
        name.Set( iUtils->SatAppName() );
hgs
parents:
diff changeset
   305
        }
hgs
parents:
diff changeset
   306
hgs
parents:
diff changeset
   307
    // Check if there is icon available.
hgs
parents:
diff changeset
   308
    MSatShellController& controller = iUtils->SatUiHandler().ShellController();
hgs
parents:
diff changeset
   309
    if ( ( RSat::ENoIconId == aIconId.iQualifier ) ||
hgs
parents:
diff changeset
   310
         ( RSat::EIconQualifierNotSet == aIconId.iQualifier ) )
hgs
parents:
diff changeset
   311
        {
hgs
parents:
diff changeset
   312
        LOG( SIMPLE, 
hgs
parents:
diff changeset
   313
        "SETUPMENU: CSetUpMenuHandler::AddIconToShellL no icon" )
hgs
parents:
diff changeset
   314
        controller.AddSatUiL( name );
hgs
parents:
diff changeset
   315
        }
hgs
parents:
diff changeset
   316
    else
hgs
parents:
diff changeset
   317
        {
hgs
parents:
diff changeset
   318
        controller.AddSatUiL( name, aIconId.iIdentifier );
hgs
parents:
diff changeset
   319
        }
hgs
parents:
diff changeset
   320
hgs
parents:
diff changeset
   321
    LOG( SIMPLE, "SETUPMENU: CSetUpMenuHandler::AddIconToShellL exiting" )
hgs
parents:
diff changeset
   322
    }
hgs
parents:
diff changeset
   323
hgs
parents:
diff changeset
   324
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   325
// CSetUpMenuHandler::RemoveIconFromShellL
hgs
parents:
diff changeset
   326
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   327
//
hgs
parents:
diff changeset
   328
void CSetUpMenuHandler::RemoveIconFromShellL()
hgs
parents:
diff changeset
   329
    {
hgs
parents:
diff changeset
   330
    LOG( SIMPLE, "SETUPMENU: CSetUpMenuHandler::RemoveIconFromShellL calling" )
hgs
parents:
diff changeset
   331
hgs
parents:
diff changeset
   332
    iUtils->SatUiHandler().ShellController().RemoveSatUiL();
hgs
parents:
diff changeset
   333
hgs
parents:
diff changeset
   334
    // Restore the original name of SAT application.
hgs
parents:
diff changeset
   335
    iUtils->RestoreSatAppNameL();
hgs
parents:
diff changeset
   336
hgs
parents:
diff changeset
   337
    LOG( SIMPLE, "SETUPMENU: CSetUpMenuHandler::RemoveIconFromShellL exiting" )
hgs
parents:
diff changeset
   338
    }
hgs
parents:
diff changeset
   339
hgs
parents:
diff changeset
   340
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   341
// CSetUpMenuHandler::SendSetUpMenuToClient
hgs
parents:
diff changeset
   342
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   343
//
hgs
parents:
diff changeset
   344
void CSetUpMenuHandler::SendSetUpMenuToClient()
hgs
parents:
diff changeset
   345
    {
hgs
parents:
diff changeset
   346
    LOG( SIMPLE, "SETUPMENU: CSetUpMenuHandler::SendSetUpMenuToClient calling" )
hgs
parents:
diff changeset
   347
hgs
parents:
diff changeset
   348
    MSatUiSession* uiSession = iUtils->SatUiHandler().UiSession();
hgs
parents:
diff changeset
   349
    if ( uiSession &&
hgs
parents:
diff changeset
   350
         iUtils->SatUiHandler().UiLaunchedByUser() &&
hgs
parents:
diff changeset
   351
         iSetUpMenuArrived )
hgs
parents:
diff changeset
   352
        {
hgs
parents:
diff changeset
   353
        LOG( SIMPLE, 
hgs
parents:
diff changeset
   354
        "SETUPMENU: CSetUpMenuHandler::SendSetUpMenuToClient setupmenu" )
hgs
parents:
diff changeset
   355
hgs
parents:
diff changeset
   356
        // Does not update SIM application name when it is restored and service
hgs
parents:
diff changeset
   357
        // is not available.
hgs
parents:
diff changeset
   358
        if ( iSatServiceAvailable )
hgs
parents:
diff changeset
   359
            {
hgs
parents:
diff changeset
   360
            LOG( SIMPLE, 
hgs
parents:
diff changeset
   361
            "SETUPMENU: CSetUpMenuHandler::SendSetUpMenuToClient \
hgs
parents:
diff changeset
   362
            iSatServiceAvailable true" )
hgs
parents:
diff changeset
   363
            // When ME is launched with special SIM and SetUpMenu made with
hgs
parents:
diff changeset
   364
            // different name. Then also SetUpMenu data update is needed
hgs
parents:
diff changeset
   365
            // when Menu name was already OK.
hgs
parents:
diff changeset
   366
            iArrivedSetUpMenuData.iAlphaId.iAlphaId.Zero();
hgs
parents:
diff changeset
   367
            iArrivedSetUpMenuData.iAlphaId.iAlphaId.Copy(
hgs
parents:
diff changeset
   368
                iUtils->SatAppName() );
hgs
parents:
diff changeset
   369
            }
hgs
parents:
diff changeset
   370
hgs
parents:
diff changeset
   371
        // Client does not respond to setupmenu cmd, therefore NULL.
hgs
parents:
diff changeset
   372
        uiSession->SendCommand(
hgs
parents:
diff changeset
   373
            &iArrivedSetUpMenuPckg,
hgs
parents:
diff changeset
   374
            NULL,
hgs
parents:
diff changeset
   375
            ESatSProactiveSetUpMenu );
hgs
parents:
diff changeset
   376
        }
hgs
parents:
diff changeset
   377
hgs
parents:
diff changeset
   378
    LOG( SIMPLE, "SETUPMENU: CSetUpMenuHandler::SendSetUpMenuToClient exiting" )
hgs
parents:
diff changeset
   379
    }
hgs
parents:
diff changeset
   380
hgs
parents:
diff changeset
   381
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   382
// CSetUpMenuHandler::SendEmptySetupMenuToClient
hgs
parents:
diff changeset
   383
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   384
//
hgs
parents:
diff changeset
   385
void CSetUpMenuHandler::SendEmptySetupMenuToClient()
hgs
parents:
diff changeset
   386
    {
hgs
parents:
diff changeset
   387
    LOG( SIMPLE, "SETUPMENU: CSetUpMenuHandler::SendEmptySetupMenuToClient\
hgs
parents:
diff changeset
   388
     calling" )
hgs
parents:
diff changeset
   389
hgs
parents:
diff changeset
   390
    MSatUiSession* uiSession = iUtils->SatUiHandler().UiSession();
hgs
parents:
diff changeset
   391
    if ( uiSession &&
hgs
parents:
diff changeset
   392
         iUtils->SatUiHandler().UiLaunchedByUser() )
hgs
parents:
diff changeset
   393
        {
hgs
parents:
diff changeset
   394
        LOG( SIMPLE, "SETUPMENU: CSetUpMenuHandler::SendEmptySetupMenuToClient\
hgs
parents:
diff changeset
   395
        send setupmenu" )
hgs
parents:
diff changeset
   396
        // Client does not respond to setupmenu cmd, therefore NULL.
hgs
parents:
diff changeset
   397
        uiSession->SendCommand(
hgs
parents:
diff changeset
   398
            &iSetUpMenuPckg,
hgs
parents:
diff changeset
   399
            NULL,
hgs
parents:
diff changeset
   400
            ESatSProactiveSetUpMenu );
hgs
parents:
diff changeset
   401
        }
hgs
parents:
diff changeset
   402
hgs
parents:
diff changeset
   403
    LOG( SIMPLE, "SETUPMENU: CSetUpMenuHandler::SendEmptySetupMenuToClient\
hgs
parents:
diff changeset
   404
     exiting" )
hgs
parents:
diff changeset
   405
    }
hgs
parents:
diff changeset
   406
hgs
parents:
diff changeset
   407
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   408
// CSetUpMenuHandler::UpdateSetUpMenuToClientL
hgs
parents:
diff changeset
   409
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   410
//
hgs
parents:
diff changeset
   411
void CSetUpMenuHandler::UpdateSetUpMenuToClientL()
hgs
parents:
diff changeset
   412
    {
hgs
parents:
diff changeset
   413
    LOG( SIMPLE,
hgs
parents:
diff changeset
   414
        "SETUPMENU: CSetUpMenuHandler::UpdateSetUpMenuToClientL calling" )
hgs
parents:
diff changeset
   415
hgs
parents:
diff changeset
   416
    iSatAppNameUpdated = ETrue;
hgs
parents:
diff changeset
   417
    if ( iSetUpMenuArrived )
hgs
parents:
diff changeset
   418
        {
hgs
parents:
diff changeset
   419
        // SetUpMenu application name update is needed.
hgs
parents:
diff changeset
   420
        iArrivedSetUpMenuData.iAlphaId.iAlphaId.Zero();
hgs
parents:
diff changeset
   421
        iArrivedSetUpMenuData.iAlphaId.iAlphaId.Append( iUtils->SatAppName() );
hgs
parents:
diff changeset
   422
        LOG( NORMAL, "SETUPMENU:   Name updated" )
hgs
parents:
diff changeset
   423
hgs
parents:
diff changeset
   424
        // Restore icon after update.
hgs
parents:
diff changeset
   425
        AddIconToShellL(
hgs
parents:
diff changeset
   426
            iArrivedSetUpMenuData.iAlphaId.iAlphaId,
hgs
parents:
diff changeset
   427
            iArrivedSetUpMenuData.iIconId );
hgs
parents:
diff changeset
   428
hgs
parents:
diff changeset
   429
        // Update display, when ui is launched.
hgs
parents:
diff changeset
   430
        MSatUiSession* uiSession = iUtils->SatUiHandler().UiSession();
hgs
parents:
diff changeset
   431
        if ( uiSession && iUtils->SatUiHandler().UiLaunchedByUser() )
hgs
parents:
diff changeset
   432
            {
hgs
parents:
diff changeset
   433
            LOG( SIMPLE,
hgs
parents:
diff changeset
   434
            "SETUPMENU: CSetUpMenuHandler::UpdateSetUpMenuToClientL \
hgs
parents:
diff changeset
   435
            UiLaunchedByUser" )
hgs
parents:
diff changeset
   436
            // Update it only when it is not empty.
hgs
parents:
diff changeset
   437
            if ( 0 != iArrivedSetUpMenuData.NumberOfItems() )
hgs
parents:
diff changeset
   438
                {
hgs
parents:
diff changeset
   439
                LOG( SIMPLE,
hgs
parents:
diff changeset
   440
                "SETUPMENU: CSetUpMenuHandler::UpdateSetUpMenuToClientL \
hgs
parents:
diff changeset
   441
                item not empty" )
hgs
parents:
diff changeset
   442
                // Send update to ui.
hgs
parents:
diff changeset
   443
                // Client does not respond to setupmenu cmd, therefore NULL.
hgs
parents:
diff changeset
   444
                uiSession->SendCommand(
hgs
parents:
diff changeset
   445
                    &iArrivedSetUpMenuPckg,
hgs
parents:
diff changeset
   446
                    NULL,
hgs
parents:
diff changeset
   447
                    ESatSProactiveSetUpMenu );
hgs
parents:
diff changeset
   448
                }
hgs
parents:
diff changeset
   449
            }
hgs
parents:
diff changeset
   450
        }
hgs
parents:
diff changeset
   451
hgs
parents:
diff changeset
   452
    LOG( SIMPLE,
hgs
parents:
diff changeset
   453
        "SETUPMENU: CSetUpMenuHandler::UpdateSetUpMenuToClientL exiting" )
hgs
parents:
diff changeset
   454
    }
hgs
parents:
diff changeset
   455
hgs
parents:
diff changeset
   456
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   457
// CSetUpMenuHandler::IssueUSATRequest
hgs
parents:
diff changeset
   458
// Makes the request of SetUpMenu from SIM
hgs
parents:
diff changeset
   459
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   460
//
hgs
parents:
diff changeset
   461
void CSetUpMenuHandler::IssueUSATRequest( TRequestStatus& aStatus )
hgs
parents:
diff changeset
   462
    {
hgs
parents:
diff changeset
   463
    LOG( SIMPLE, "SETUPMENU: CSetUpMenuHandler::IssueUSATRequest calling" )
hgs
parents:
diff changeset
   464
hgs
parents:
diff changeset
   465
    // Without reset, old menu items stay in the list.
hgs
parents:
diff changeset
   466
    iSetUpMenuData.Reset();
hgs
parents:
diff changeset
   467
hgs
parents:
diff changeset
   468
#ifdef __WINS__
hgs
parents:
diff changeset
   469
    // Empty the IPC data
hgs
parents:
diff changeset
   470
    RSat::TSetUpMenuV2 temp;
hgs
parents:
diff changeset
   471
    iSetUpMenuData = temp;
hgs
parents:
diff changeset
   472
#endif
hgs
parents:
diff changeset
   473
hgs
parents:
diff changeset
   474
    iUtils->USatAPI().NotifySetUpMenu( aStatus, iSetUpMenuPckg );
hgs
parents:
diff changeset
   475
hgs
parents:
diff changeset
   476
    LOG( SIMPLE, "SETUPMENU: CSetUpMenuHandler::IssueUSATRequestx exiting" )
hgs
parents:
diff changeset
   477
    }
hgs
parents:
diff changeset
   478
hgs
parents:
diff changeset
   479
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   480
// CSetUpMenuHandler::CommandAllowed
hgs
parents:
diff changeset
   481
// SetUpMenu is allowed always.
hgs
parents:
diff changeset
   482
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   483
//
hgs
parents:
diff changeset
   484
TBool CSetUpMenuHandler::CommandAllowed()
hgs
parents:
diff changeset
   485
    {
hgs
parents:
diff changeset
   486
    LOG( SIMPLE,
hgs
parents:
diff changeset
   487
        "SETUPMENU: CSetUpMenuHandler::CommandAllowed calling" )
hgs
parents:
diff changeset
   488
hgs
parents:
diff changeset
   489
    TBool commandAllowed( ETrue );
hgs
parents:
diff changeset
   490
    TBool nullText( EFalse );
hgs
parents:
diff changeset
   491
    TInt err ( KErrNone );
hgs
parents:
diff changeset
   492
    RSat::TItem item;
hgs
parents:
diff changeset
   493
    TUint numberOfItems( iSetUpMenuData.NumberOfItems() );
hgs
parents:
diff changeset
   494
    TBool titleIcon(
hgs
parents:
diff changeset
   495
        ( RSat::ENotSelfExplanatory == iSetUpMenuData.iIconId.iQualifier ) ||
hgs
parents:
diff changeset
   496
        ( RSat::ESelfExplanatory == iSetUpMenuData.iIconId.iQualifier ) );
hgs
parents:
diff changeset
   497
    TBool itemIcons(
hgs
parents:
diff changeset
   498
        ( RSat::ENotSelfExplanatory == iSetUpMenuData.iIconListQualifier ) ||
hgs
parents:
diff changeset
   499
        ( RSat::ESelfExplanatory == iSetUpMenuData.iIconListQualifier ) );
hgs
parents:
diff changeset
   500
    RSat::TSetUpMenuRspV1 setUpMenuRsp;
hgs
parents:
diff changeset
   501
    RSat::TSetUpMenuRspV1Pckg setUpMenuRspPckg( setUpMenuRsp );
hgs
parents:
diff changeset
   502
hgs
parents:
diff changeset
   503
    // Check if some item does not have text
hgs
parents:
diff changeset
   504
    for ( TUint count = 1; ( count <= numberOfItems ) && !nullText &&
hgs
parents:
diff changeset
   505
        ( KErrNone == err ); count++ )
hgs
parents:
diff changeset
   506
        {
hgs
parents:
diff changeset
   507
        err = iSetUpMenuData.GetItem( count, item );
hgs
parents:
diff changeset
   508
hgs
parents:
diff changeset
   509
        if ( ( KErrNone == err ) && ( 0 == item.iItemString.Length() ) )
hgs
parents:
diff changeset
   510
            {
hgs
parents:
diff changeset
   511
            LOG( SIMPLE,
hgs
parents:
diff changeset
   512
            "SETUPMENU: CSetUpMenuHandler::CommandAllowed item null" )
hgs
parents:
diff changeset
   513
            nullText = ETrue;
hgs
parents:
diff changeset
   514
            }
hgs
parents:
diff changeset
   515
        }
hgs
parents:
diff changeset
   516
    LOG2( SIMPLE,
hgs
parents:
diff changeset
   517
    "SETUPMENU: CSetUpMenuHandler::CommandAllowed numberOfItems:%d",
hgs
parents:
diff changeset
   518
    numberOfItems )
hgs
parents:
diff changeset
   519
    // If icon is provided without any text
hgs
parents:
diff changeset
   520
    if ( ( ( RSat::EAlphaIdProvided != iSetUpMenuData.iAlphaId.iStatus ) &&
hgs
parents:
diff changeset
   521
             titleIcon ) || ( nullText && itemIcons ) )
hgs
parents:
diff changeset
   522
        {
hgs
parents:
diff changeset
   523
        setUpMenuRsp.iGeneralResult = RSat::KCmdDataNotUnderstood;
hgs
parents:
diff changeset
   524
        setUpMenuRsp.iInfoType = RSat::KNoAdditionalInfo;
hgs
parents:
diff changeset
   525
        setUpMenuRsp.iAdditionalInfo.Zero();
hgs
parents:
diff changeset
   526
        setUpMenuRsp.SetPCmdNumber( setUpMenuRsp.PCmdNumber() );
hgs
parents:
diff changeset
   527
        TerminalRsp( RSat::ESetUpMenu, setUpMenuRspPckg );
hgs
parents:
diff changeset
   528
        commandAllowed = EFalse;
hgs
parents:
diff changeset
   529
        LOG( NORMAL, "SETUPMENU: CSetUpMenuHandler::\
hgs
parents:
diff changeset
   530
            CommandAllowed icon received without alpha id" )
hgs
parents:
diff changeset
   531
        }
hgs
parents:
diff changeset
   532
    // Set icon command flag whether icon data was received and set qualifier
hgs
parents:
diff changeset
   533
    // to no icon id
hgs
parents:
diff changeset
   534
    // To be removed when icons are allowed in this command
hgs
parents:
diff changeset
   535
    else if ( !titleIcon && !itemIcons )
hgs
parents:
diff changeset
   536
        {
hgs
parents:
diff changeset
   537
        LOG( SIMPLE,
hgs
parents:
diff changeset
   538
        "SETUPMENU: CSetUpMenuHandler::CommandAllowed no icon" )
hgs
parents:
diff changeset
   539
        iIconCommand = EFalse;
hgs
parents:
diff changeset
   540
        }
hgs
parents:
diff changeset
   541
    else
hgs
parents:
diff changeset
   542
        {
hgs
parents:
diff changeset
   543
        iIconCommand = ETrue;
hgs
parents:
diff changeset
   544
hgs
parents:
diff changeset
   545
        if ( titleIcon )
hgs
parents:
diff changeset
   546
            {
hgs
parents:
diff changeset
   547
            LOG( SIMPLE,
hgs
parents:
diff changeset
   548
            "SETUPMENU: CSetUpMenuHandler::CommandAllowed titleIcon true" )
hgs
parents:
diff changeset
   549
            iSetUpMenuData.iIconId.iQualifier = RSat::ENoIconId;
hgs
parents:
diff changeset
   550
            }
hgs
parents:
diff changeset
   551
hgs
parents:
diff changeset
   552
        if ( itemIcons )
hgs
parents:
diff changeset
   553
            {
hgs
parents:
diff changeset
   554
            LOG( SIMPLE,
hgs
parents:
diff changeset
   555
            "SETUPMENU: CSetUpMenuHandler::CommandAllowed itemIcons true" )
hgs
parents:
diff changeset
   556
            iSetUpMenuData.iIconListQualifier = RSat::ENoIconId;
hgs
parents:
diff changeset
   557
            }
hgs
parents:
diff changeset
   558
        }
hgs
parents:
diff changeset
   559
hgs
parents:
diff changeset
   560
    LOG2( SIMPLE,
hgs
parents:
diff changeset
   561
    "SETUPMENU: CSetUpMenuHandler::CommandAllowed exiting,commandAllowed: %d",
hgs
parents:
diff changeset
   562
    commandAllowed )
hgs
parents:
diff changeset
   563
    return commandAllowed;
hgs
parents:
diff changeset
   564
    }
hgs
parents:
diff changeset
   565
hgs
parents:
diff changeset
   566
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   567
// CSetUpMenuHandler::NeedUiSession
hgs
parents:
diff changeset
   568
// SetUpMenu command itself does not need ui session.
hgs
parents:
diff changeset
   569
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   570
//
hgs
parents:
diff changeset
   571
TBool CSetUpMenuHandler::NeedUiSession()
hgs
parents:
diff changeset
   572
    {
hgs
parents:
diff changeset
   573
    LOG( SIMPLE,
hgs
parents:
diff changeset
   574
        "SETUPMENU: CSetUpMenuHandler::NeedUiSession calling - exiting" )
hgs
parents:
diff changeset
   575
    return EFalse;
hgs
parents:
diff changeset
   576
    }
hgs
parents:
diff changeset
   577
hgs
parents:
diff changeset
   578
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   579
// CSetUpMenuHandler::HandleCommand
hgs
parents:
diff changeset
   580
// Handles the SetUpMenu proactive command.
hgs
parents:
diff changeset
   581
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   582
//
hgs
parents:
diff changeset
   583
void CSetUpMenuHandler::HandleCommand()
hgs
parents:
diff changeset
   584
    {
hgs
parents:
diff changeset
   585
    LOG( SIMPLE, "SETUPMENU: CSetUpMenuHandler::HandleCommand calling" )
hgs
parents:
diff changeset
   586
hgs
parents:
diff changeset
   587
    // This could be moved to base class.
hgs
parents:
diff changeset
   588
    iUtils->NotifyEvent( MSatUtils::ESetUpMenuExecuting );
hgs
parents:
diff changeset
   589
hgs
parents:
diff changeset
   590
    iArrivedSetUpMenuData = iSetUpMenuData;
hgs
parents:
diff changeset
   591
hgs
parents:
diff changeset
   592
    TInt err( KErrNone );
hgs
parents:
diff changeset
   593
hgs
parents:
diff changeset
   594
    if ( iSetUpMenuData.IsRemoveMenu() ||
hgs
parents:
diff changeset
   595
         ( 0 == iSetUpMenuData.NumberOfItems() ) )
hgs
parents:
diff changeset
   596
        {
hgs
parents:
diff changeset
   597
        LOG( SIMPLE, 
hgs
parents:
diff changeset
   598
        "SETUPMENU: CSetUpMenuHandler::HandleCommand remove icon" )
hgs
parents:
diff changeset
   599
        TRAP( err, RemoveIconFromShellL() );
hgs
parents:
diff changeset
   600
        }
hgs
parents:
diff changeset
   601
    else
hgs
parents:
diff changeset
   602
        {
hgs
parents:
diff changeset
   603
        // If name has been changed prior launch of SetUpMenu, update name.
hgs
parents:
diff changeset
   604
        if ( iSatAppNameUpdated )
hgs
parents:
diff changeset
   605
            {
hgs
parents:
diff changeset
   606
            LOG( SIMPLE, 
hgs
parents:
diff changeset
   607
            "SETUPMENU: CSetUpMenuHandler::HandleCommand iSatAppNameUpdated" )
hgs
parents:
diff changeset
   608
            iArrivedSetUpMenuData.iAlphaId.iAlphaId.Zero();
hgs
parents:
diff changeset
   609
            }
hgs
parents:
diff changeset
   610
hgs
parents:
diff changeset
   611
        // Set SAT name to alpha id if alpha ID is zero.
hgs
parents:
diff changeset
   612
        if ( 0 == iArrivedSetUpMenuData.iAlphaId.iAlphaId.Length() )
hgs
parents:
diff changeset
   613
            {
hgs
parents:
diff changeset
   614
            TRAP( err, iUtils->RestoreSatAppNameL() );
hgs
parents:
diff changeset
   615
            iArrivedSetUpMenuData.iAlphaId.iAlphaId.Append(
hgs
parents:
diff changeset
   616
                iUtils->SatAppName() );
hgs
parents:
diff changeset
   617
            LOG( NORMAL, 
hgs
parents:
diff changeset
   618
            "SETUPMENU: CSetUpMenuHandler::HandleCommand Name updated" )
hgs
parents:
diff changeset
   619
            }        
hgs
parents:
diff changeset
   620
        //Rentain the title of "SIM card application" for special card
hgs
parents:
diff changeset
   621
        else
hgs
parents:
diff changeset
   622
            {
hgs
parents:
diff changeset
   623
            // Set new sat app name.
hgs
parents:
diff changeset
   624
            TRAP( err, iUtils->SetSatAppNameL( 
hgs
parents:
diff changeset
   625
                               iArrivedSetUpMenuData.iAlphaId.iAlphaId ) );            
hgs
parents:
diff changeset
   626
            iArrivedSetUpMenuData.iAlphaId.iAlphaId.Zero();
hgs
parents:
diff changeset
   627
            iArrivedSetUpMenuData.iAlphaId.iAlphaId.Copy(
hgs
parents:
diff changeset
   628
                iUtils->SatAppName() );            
hgs
parents:
diff changeset
   629
            }
hgs
parents:
diff changeset
   630
            
hgs
parents:
diff changeset
   631
        MSatUiSession* session = iUtils->SatUiHandler().UiSession();
hgs
parents:
diff changeset
   632
        if ( session )
hgs
parents:
diff changeset
   633
            {
hgs
parents:
diff changeset
   634
            LOG( SIMPLE, 
hgs
parents:
diff changeset
   635
            "SETUPMENU: CSetUpMenuHandler::HandleCommand session true" )
hgs
parents:
diff changeset
   636
            // Send the setupmenu to ui client.
hgs
parents:
diff changeset
   637
            session->SendCommand(
hgs
parents:
diff changeset
   638
                &iArrivedSetUpMenuPckg,
hgs
parents:
diff changeset
   639
                NULL,
hgs
parents:
diff changeset
   640
                ESatSProactiveSetUpMenu );
hgs
parents:
diff changeset
   641
            }
hgs
parents:
diff changeset
   642
hgs
parents:
diff changeset
   643
        if ( KErrNone == err )
hgs
parents:
diff changeset
   644
            {
hgs
parents:
diff changeset
   645
            LOG( SIMPLE, 
hgs
parents:
diff changeset
   646
            "SETUPMENU: CSetUpMenuHandler::HandleCommand AddIconToShellL" )
hgs
parents:
diff changeset
   647
            TRAP( err, AddIconToShellL(
hgs
parents:
diff changeset
   648
                iArrivedSetUpMenuData.iAlphaId.iAlphaId,
hgs
parents:
diff changeset
   649
                iArrivedSetUpMenuData.iIconId ) );
hgs
parents:
diff changeset
   650
            }
hgs
parents:
diff changeset
   651
hgs
parents:
diff changeset
   652
        }
hgs
parents:
diff changeset
   653
hgs
parents:
diff changeset
   654
    RSat::TSetUpMenuRspV1 setUpMenuRsp;
hgs
parents:
diff changeset
   655
    RSat::TSetUpMenuRspV1Pckg setUpMenuRspPckg( setUpMenuRsp );
hgs
parents:
diff changeset
   656
    setUpMenuRsp.iInfoType = RSat::KNoAdditionalInfo;
hgs
parents:
diff changeset
   657
    setUpMenuRsp.iAdditionalInfo.Zero();
hgs
parents:
diff changeset
   658
    setUpMenuRsp.SetPCmdNumber( iArrivedSetUpMenuData.PCmdNumber() );
hgs
parents:
diff changeset
   659
hgs
parents:
diff changeset
   660
    if ( KErrNone == err )
hgs
parents:
diff changeset
   661
        {
hgs
parents:
diff changeset
   662
        LOG( SIMPLE, 
hgs
parents:
diff changeset
   663
        "SETUPMENU: CSetUpMenuHandler::HandleCommand no error" )
hgs
parents:
diff changeset
   664
        iSetUpMenuArrived = ETrue;
hgs
parents:
diff changeset
   665
        setUpMenuRsp.iGeneralResult = RSat::KSuccess;
hgs
parents:
diff changeset
   666
        // If command had icon data and was done succesfully, report that icon
hgs
parents:
diff changeset
   667
        // was not shown
hgs
parents:
diff changeset
   668
        // To be removed when icons are allowed in this command
hgs
parents:
diff changeset
   669
        // Result of icon showing must be received
hgs
parents:
diff changeset
   670
        if ( iIconCommand )
hgs
parents:
diff changeset
   671
            {
hgs
parents:
diff changeset
   672
            LOG( SIMPLE, 
hgs
parents:
diff changeset
   673
            "SETUPMENU: CSetUpMenuHandler::HandleCommand iIconCommand true" )
hgs
parents:
diff changeset
   674
            setUpMenuRsp.iGeneralResult =
hgs
parents:
diff changeset
   675
                        RSat::KSuccessRequestedIconNotDisplayed;
hgs
parents:
diff changeset
   676
            }
hgs
parents:
diff changeset
   677
        }
hgs
parents:
diff changeset
   678
    else
hgs
parents:
diff changeset
   679
        {
hgs
parents:
diff changeset
   680
        LOG( SIMPLE, 
hgs
parents:
diff changeset
   681
        "SETUPMENU: CSetUpMenuHandler::HandleCommand error" )
hgs
parents:
diff changeset
   682
        setUpMenuRsp.iGeneralResult = RSat::KMeUnableToProcessCmd;
hgs
parents:
diff changeset
   683
        }
hgs
parents:
diff changeset
   684
hgs
parents:
diff changeset
   685
    CSatCommandHandler::TerminalRsp( RSat::ESetUpMenu, setUpMenuRspPckg );
hgs
parents:
diff changeset
   686
hgs
parents:
diff changeset
   687
    LOG( SIMPLE, "SETUPMENU: CSetUpMenuHandler::HandleCommand exiting" )
hgs
parents:
diff changeset
   688
    }
hgs
parents:
diff changeset
   689
hgs
parents:
diff changeset
   690
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   691
// CSetUpMenuHandler::UiLaunchFailed
hgs
parents:
diff changeset
   692
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   693
//
hgs
parents:
diff changeset
   694
void CSetUpMenuHandler::UiLaunchFailed()
hgs
parents:
diff changeset
   695
    {
hgs
parents:
diff changeset
   696
    LOG( SIMPLE,
hgs
parents:
diff changeset
   697
        "SETUPMENU: CSetUpMenuHandler::UiLaunchFailed calling - exiting" )
hgs
parents:
diff changeset
   698
    // SetUpMenu command does not launch UI.
hgs
parents:
diff changeset
   699
    }