gssettingsuis/Gs/GSNetworkPlugin/Src/GSNetworkPluginContainer.cpp
author hgs
Thu, 04 Nov 2010 13:38:47 +0800
changeset 68 13e71d907dc3
permissions -rw-r--r--
201044
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
68
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2003 - 2006 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:  Container for Network folder in GSTelPlugin.
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 FILES
hgs
parents:
diff changeset
    20
#include "GSNetworkPluginModel.h"       //for CGSModel
hgs
parents:
diff changeset
    21
#include "gssettingid.h"            //for view IDs
hgs
parents:
diff changeset
    22
#include "GSNetworkPluginContainer.h" //for CGSNetworkPluginContainer
hgs
parents:
diff changeset
    23
#include "GsLogger.h"
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
#include <aknlists.h>               //for CAknSettingStyleListBox
hgs
parents:
diff changeset
    27
#include <aknnotewrappers.h>        //for AknErrorNote
hgs
parents:
diff changeset
    28
#include <aknappui.h>               //for iAvkonAppUi
hgs
parents:
diff changeset
    29
#include <StringLoader.h>           //for StringLoader
hgs
parents:
diff changeset
    30
#include <gsnetworkpluginrsc.rsg>       //for resource IDs
hgs
parents:
diff changeset
    31
#include <PsetContainer.h>          //for CPsetContainer
hgs
parents:
diff changeset
    32
#include <PsetNetwork.h>            //for CPsetNetwork
hgs
parents:
diff changeset
    33
#include <gslistbox.h>              //for listbox classes
hgs
parents:
diff changeset
    34
#include <csxhelp/cp.hlp.hrh>
hgs
parents:
diff changeset
    35
#include <gsfwviewuids.h>           // for KUidGS
hgs
parents:
diff changeset
    36
#include <MPsetNetworkModeObs.h>    //for network mode values
hgs
parents:
diff changeset
    37
#include <gsmerror.h>               //for GSM-specific error messages
hgs
parents:
diff changeset
    38
#include <featmgr.h>                //Feature Manager
hgs
parents:
diff changeset
    39
#include <MPsetNetworkModeObs.h>
hgs
parents:
diff changeset
    40
#include "GSNetworkDebugHelper.h"
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
#ifndef RD_STARTUP_CHANGE
hgs
parents:
diff changeset
    43
    #include <sysstartup.h>             //Startup reasons
hgs
parents:
diff changeset
    44
#else
hgs
parents:
diff changeset
    45
    #include <starterclient.h>          // Startup reasons
hgs
parents:
diff changeset
    46
#endif // RD_STARTUP_CHANGE
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
hgs
parents:
diff changeset
    49
// LOCAL CONSTANTS
hgs
parents:
diff changeset
    50
_LIT( KNameOfClass, "CGSNetworkPluginContainer" );
hgs
parents:
diff changeset
    51
hgs
parents:
diff changeset
    52
// ================= MEMBER FUNCTIONS =======================
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    55
// C++ Constructor. Needed for initializing iPlugin.
hgs
parents:
diff changeset
    56
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    57
CGSNetworkPluginContainer::CGSNetworkPluginContainer( CGSNetworkPlugin* aPlugin )
hgs
parents:
diff changeset
    58
    :iPlugin( aPlugin )
hgs
parents:
diff changeset
    59
    {
hgs
parents:
diff changeset
    60
    }
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    63
//
hgs
parents:
diff changeset
    64
// Symbian OS two phased constructor with pointer to Network object
hgs
parents:
diff changeset
    65
//
hgs
parents:
diff changeset
    66
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    67
void CGSNetworkPluginContainer::ConstructL( const TRect& aRect )
hgs
parents:
diff changeset
    68
    {
hgs
parents:
diff changeset
    69
    iListBox = new ( ELeave ) CAknSettingStyleListBox;
hgs
parents:
diff changeset
    70
hgs
parents:
diff changeset
    71
    //model construction
hgs
parents:
diff changeset
    72
    iModel = CGSNetworkPluginModel::NewL( this, iPlugin );
hgs
parents:
diff changeset
    73
hgs
parents:
diff changeset
    74
    BaseConstructL( aRect,
hgs
parents:
diff changeset
    75
                    R_GS_NET_VIEW_TITLE,
hgs
parents:
diff changeset
    76
                    R_NET_LBX );
hgs
parents:
diff changeset
    77
    }
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    80
//
hgs
parents:
diff changeset
    81
// Destructor
hgs
parents:
diff changeset
    82
//
hgs
parents:
diff changeset
    83
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    84
CGSNetworkPluginContainer::~CGSNetworkPluginContainer()
hgs
parents:
diff changeset
    85
    {
hgs
parents:
diff changeset
    86
    if ( iListboxItemArray )
hgs
parents:
diff changeset
    87
        {
hgs
parents:
diff changeset
    88
        delete iListboxItemArray;
hgs
parents:
diff changeset
    89
        iListboxItemArray = NULL;
hgs
parents:
diff changeset
    90
        }
hgs
parents:
diff changeset
    91
hgs
parents:
diff changeset
    92
    if( iModel )
hgs
parents:
diff changeset
    93
        {
hgs
parents:
diff changeset
    94
        delete iModel;
hgs
parents:
diff changeset
    95
        iModel = NULL;
hgs
parents:
diff changeset
    96
        }
hgs
parents:
diff changeset
    97
    }
hgs
parents:
diff changeset
    98
hgs
parents:
diff changeset
    99
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   100
//
hgs
parents:
diff changeset
   101
// Creates list box
hgs
parents:
diff changeset
   102
//
hgs
parents:
diff changeset
   103
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   104
void CGSNetworkPluginContainer::ConstructListBoxL( TInt aResLbxId )
hgs
parents:
diff changeset
   105
    {
hgs
parents:
diff changeset
   106
    __GSLOGSTRING("[GS]--> CGSNetworkPluginContainer::ConstructListBoxL");
hgs
parents:
diff changeset
   107
    iListBox->ConstructL( this, EAknListBoxSelectionList );
hgs
parents:
diff changeset
   108
    iListboxItemArray = CGSListBoxItemTextArray::NewL( aResLbxId,
hgs
parents:
diff changeset
   109
        *iListBox, *iCoeEnv );
hgs
parents:
diff changeset
   110
    iListBox->Model()->SetItemTextArray( iListboxItemArray );
hgs
parents:
diff changeset
   111
    iListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
hgs
parents:
diff changeset
   112
hgs
parents:
diff changeset
   113
    CreateListBoxItemsL();
hgs
parents:
diff changeset
   114
    __GSLOGSTRING("[GS] <--CGSNetworkPluginContainer::ConstructListBoxL");
hgs
parents:
diff changeset
   115
    }
hgs
parents:
diff changeset
   116
hgs
parents:
diff changeset
   117
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   118
//
hgs
parents:
diff changeset
   119
// Creates list box items
hgs
parents:
diff changeset
   120
//
hgs
parents:
diff changeset
   121
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   122
void CGSNetworkPluginContainer::CreateListBoxItemsL()
hgs
parents:
diff changeset
   123
    {
hgs
parents:
diff changeset
   124
    __GSLOGSTRING("[GS]--> CGSNetworkPluginContainer::CreateListBoxItemsL");
hgs
parents:
diff changeset
   125
// do not get check CSP if not using WINS
hgs
parents:
diff changeset
   126
#ifndef __WINS__
hgs
parents:
diff changeset
   127
    //Set CSP on, if it is not already
hgs
parents:
diff changeset
   128
    if ( !iModel->GetCSPStatus() )
hgs
parents:
diff changeset
   129
        {
hgs
parents:
diff changeset
   130
        iModel->SetCSPActiveL( ETrue );
hgs
parents:
diff changeset
   131
        }
hgs
parents:
diff changeset
   132
#endif
hgs
parents:
diff changeset
   133
hgs
parents:
diff changeset
   134
    if ( FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma ) )
hgs
parents:
diff changeset
   135
        {
hgs
parents:
diff changeset
   136
        if ( iModel->IsNetworkModeVisible() )
hgs
parents:
diff changeset
   137
            {
hgs
parents:
diff changeset
   138
            MakeNwModeUiItemL();
hgs
parents:
diff changeset
   139
            }
hgs
parents:
diff changeset
   140
        }
hgs
parents:
diff changeset
   141
hgs
parents:
diff changeset
   142
    MakeNwItemL();
hgs
parents:
diff changeset
   143
    MakeMcnItemL();
hgs
parents:
diff changeset
   144
    __GSLOGSTRING("[GS] <--CGSNetworkPluginContainer::CreateListBoxItemsL");
hgs
parents:
diff changeset
   145
    }
hgs
parents:
diff changeset
   146
hgs
parents:
diff changeset
   147
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   148
//
hgs
parents:
diff changeset
   149
// Updates changed list box item
hgs
parents:
diff changeset
   150
//
hgs
parents:
diff changeset
   151
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   152
void CGSNetworkPluginContainer::UpdateListBoxL( TInt aFeatureId, TInt aValue )
hgs
parents:
diff changeset
   153
    {
hgs
parents:
diff changeset
   154
    __GSLOGSTRING("[GS]--> CGSNetworkPluginContainer::UpdateListBoxL");
hgs
parents:
diff changeset
   155
    switch ( aFeatureId )
hgs
parents:
diff changeset
   156
        {
hgs
parents:
diff changeset
   157
        case EGSNetworkModeItemId:
hgs
parents:
diff changeset
   158
            if ( FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma ) )
hgs
parents:
diff changeset
   159
                {
hgs
parents:
diff changeset
   160
                if ( iModel->IsNetworkModeVisible() )
hgs
parents:
diff changeset
   161
                    {
hgs
parents:
diff changeset
   162
                    MakeNwModeUiItemL();
hgs
parents:
diff changeset
   163
                    }
hgs
parents:
diff changeset
   164
                }
hgs
parents:
diff changeset
   165
            break;
hgs
parents:
diff changeset
   166
        case EGSNetworkModeSelectionItemId:
hgs
parents:
diff changeset
   167
            MakeNwItemL( aValue );
hgs
parents:
diff changeset
   168
            break;
hgs
parents:
diff changeset
   169
        case EGSMCNItemId:
hgs
parents:
diff changeset
   170
            MakeMcnItemL();
hgs
parents:
diff changeset
   171
            break;
hgs
parents:
diff changeset
   172
        default:
hgs
parents:
diff changeset
   173
            Panic( KNameOfClass, EInvalidIndex );
hgs
parents:
diff changeset
   174
            break;
hgs
parents:
diff changeset
   175
        }
hgs
parents:
diff changeset
   176
    iListBox->HandleItemAdditionL();
hgs
parents:
diff changeset
   177
    __GSLOGSTRING("[GS] <--CGSNetworkPluginContainer::UpdateListBoxL");
hgs
parents:
diff changeset
   178
    }
hgs
parents:
diff changeset
   179
hgs
parents:
diff changeset
   180
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   181
//
hgs
parents:
diff changeset
   182
// Creates new Network list box item
hgs
parents:
diff changeset
   183
//
hgs
parents:
diff changeset
   184
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   185
void CGSNetworkPluginContainer::MakeNwItemL( TInt aValue )
hgs
parents:
diff changeset
   186
    {
hgs
parents:
diff changeset
   187
    __GSLOGSTRING("[GS]--> CGSNetworkPluginContainer::MakeNwItemL");
hgs
parents:
diff changeset
   188
    HBufC* dynamicText = NULL;
hgs
parents:
diff changeset
   189
    TInt currentValue = KErrNone;
hgs
parents:
diff changeset
   190
hgs
parents:
diff changeset
   191
    if ( aValue != KErrNotFound )
hgs
parents:
diff changeset
   192
        {
hgs
parents:
diff changeset
   193
        currentValue = aValue;
hgs
parents:
diff changeset
   194
        }
hgs
parents:
diff changeset
   195
    else
hgs
parents:
diff changeset
   196
        {
hgs
parents:
diff changeset
   197
    //use bogus values for WINS to avoid jamming the emulator
hgs
parents:
diff changeset
   198
#ifdef __WINS__
hgs
parents:
diff changeset
   199
    currentValue = EGSManualSelectMode;
hgs
parents:
diff changeset
   200
#else
hgs
parents:
diff changeset
   201
    currentValue = GetSelectionMode();
hgs
parents:
diff changeset
   202
#endif // __WINS__
hgs
parents:
diff changeset
   203
        }
hgs
parents:
diff changeset
   204
hgs
parents:
diff changeset
   205
    TUint32 resourceId = R_NETSL_NETSELECTMODE_LBX;
hgs
parents:
diff changeset
   206
    TInt featureId = EGSAutomaticSelectMode;
hgs
parents:
diff changeset
   207
hgs
parents:
diff changeset
   208
    if ( currentValue == EGSManualSelectMode )
hgs
parents:
diff changeset
   209
        {
hgs
parents:
diff changeset
   210
        featureId = EGSManualSelectMode;
hgs
parents:
diff changeset
   211
        }
hgs
parents:
diff changeset
   212
hgs
parents:
diff changeset
   213
    dynamicText = CGSItemTextArray::GetItemCaptionFromFeatureIdLC(
hgs
parents:
diff changeset
   214
                                                 resourceId,
hgs
parents:
diff changeset
   215
                                                 featureId,
hgs
parents:
diff changeset
   216
                                                 *iCoeEnv );
hgs
parents:
diff changeset
   217
hgs
parents:
diff changeset
   218
#ifndef __WINS__
hgs
parents:
diff changeset
   219
    //Create network mode setting item
hgs
parents:
diff changeset
   220
    if ( iModel->IsSettingSupported( EGSCSPManualNetworkSelection ) )
hgs
parents:
diff changeset
   221
        {
hgs
parents:
diff changeset
   222
#endif
hgs
parents:
diff changeset
   223
        // Finally, set the dynamic text
hgs
parents:
diff changeset
   224
        iListboxItemArray->SetDynamicTextL( EGSNetworkModeSelectionItemId,
hgs
parents:
diff changeset
   225
            *dynamicText );
hgs
parents:
diff changeset
   226
hgs
parents:
diff changeset
   227
        // And add to listbox
hgs
parents:
diff changeset
   228
        iListboxItemArray->SetItemVisibilityL( EGSNetworkModeSelectionItemId,
hgs
parents:
diff changeset
   229
            CGSListBoxItemTextArray::EVisible );
hgs
parents:
diff changeset
   230
hgs
parents:
diff changeset
   231
#ifndef __WINS__
hgs
parents:
diff changeset
   232
        }
hgs
parents:
diff changeset
   233
    else
hgs
parents:
diff changeset
   234
        {
hgs
parents:
diff changeset
   235
        // Set the item to invisible if manual network 
hgs
parents:
diff changeset
   236
        // selection is not supported.
hgs
parents:
diff changeset
   237
        iListboxItemArray->SetItemVisibilityL( EGSNetworkModeSelectionItemId,
hgs
parents:
diff changeset
   238
                CGSListBoxItemTextArray::EInvisible );
hgs
parents:
diff changeset
   239
        }
hgs
parents:
diff changeset
   240
#endif
hgs
parents:
diff changeset
   241
hgs
parents:
diff changeset
   242
    CleanupStack::PopAndDestroy( dynamicText );
hgs
parents:
diff changeset
   243
    __GSLOGSTRING("[GS] <--CGSNetworkPluginContainer::MakeNwItemL");
hgs
parents:
diff changeset
   244
    }
hgs
parents:
diff changeset
   245
hgs
parents:
diff changeset
   246
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   247
//
hgs
parents:
diff changeset
   248
// Gets the currently active selection mode.
hgs
parents:
diff changeset
   249
//
hgs
parents:
diff changeset
   250
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   251
TInt CGSNetworkPluginContainer::GetSelectionMode()
hgs
parents:
diff changeset
   252
    {
hgs
parents:
diff changeset
   253
    __GSLOGSTRING("[GS]--> CGSNetworkPluginContainer::GetSelectionMode");
hgs
parents:
diff changeset
   254
    MPsetNetworkSelect::TSelectMode mode =
hgs
parents:
diff changeset
   255
        iModel->GetNetworkSelectionMode();
hgs
parents:
diff changeset
   256
hgs
parents:
diff changeset
   257
    if ( mode == MPsetNetworkSelect::ENetSelectModeManual )
hgs
parents:
diff changeset
   258
        {
hgs
parents:
diff changeset
   259
        __GSLOGSTRING("[GS] <--CGSNetworkPluginContainer::GetSelectionMode");
hgs
parents:
diff changeset
   260
        return EGSManualSelectMode;
hgs
parents:
diff changeset
   261
        }
hgs
parents:
diff changeset
   262
    else
hgs
parents:
diff changeset
   263
        {
hgs
parents:
diff changeset
   264
        __GSLOGSTRING("[GS] <--CGSNetworkPluginContainer::GetSelectionMode");
hgs
parents:
diff changeset
   265
        return EGSAutomaticSelectMode;
hgs
parents:
diff changeset
   266
        }
hgs
parents:
diff changeset
   267
    }
hgs
parents:
diff changeset
   268
hgs
parents:
diff changeset
   269
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   270
//
hgs
parents:
diff changeset
   271
// Creates new MCN list box item
hgs
parents:
diff changeset
   272
//
hgs
parents:
diff changeset
   273
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   274
void CGSNetworkPluginContainer::MakeMcnItemL()
hgs
parents:
diff changeset
   275
    {
hgs
parents:
diff changeset
   276
    __GSLOGSTRING("[GS]--> CGSNetworkPluginContainer::MakeMcnItemL");
hgs
parents:
diff changeset
   277
    HBufC* dynamicText = NULL;
hgs
parents:
diff changeset
   278
    TInt readValue = 0;
hgs
parents:
diff changeset
   279
hgs
parents:
diff changeset
   280
    GetMcnValue( readValue );
hgs
parents:
diff changeset
   281
    TUint32 resourceId = R_MCN_CELL_INFO_DISP_MODE_LBX;
hgs
parents:
diff changeset
   282
    TInt featureId = EGSMcnSetOn;
hgs
parents:
diff changeset
   283
hgs
parents:
diff changeset
   284
    switch ( readValue ) //resource manipulation
hgs
parents:
diff changeset
   285
        {
hgs
parents:
diff changeset
   286
        case 0: // Off should be displayed in UI
hgs
parents:
diff changeset
   287
            featureId = EGSMcnSetOff;
hgs
parents:
diff changeset
   288
            break;
hgs
parents:
diff changeset
   289
        case 1: // On should be displayed in UI
hgs
parents:
diff changeset
   290
            featureId = EGSMcnSetOn;
hgs
parents:
diff changeset
   291
            break;
hgs
parents:
diff changeset
   292
        default:
hgs
parents:
diff changeset
   293
            break;
hgs
parents:
diff changeset
   294
        }
hgs
parents:
diff changeset
   295
hgs
parents:
diff changeset
   296
    dynamicText = CGSItemTextArray::GetItemCaptionFromFeatureIdLC(
hgs
parents:
diff changeset
   297
                                                 resourceId,
hgs
parents:
diff changeset
   298
                                                 featureId,
hgs
parents:
diff changeset
   299
                                                 *iCoeEnv );
hgs
parents:
diff changeset
   300
hgs
parents:
diff changeset
   301
    // Finally, set the dynamic text
hgs
parents:
diff changeset
   302
    iListboxItemArray->SetDynamicTextL( EGSMCNItemId, *dynamicText );
hgs
parents:
diff changeset
   303
hgs
parents:
diff changeset
   304
    // And add to listbox
hgs
parents:
diff changeset
   305
    iListboxItemArray->SetItemVisibilityL( EGSMCNItemId,
hgs
parents:
diff changeset
   306
        CGSListBoxItemTextArray::EVisible );
hgs
parents:
diff changeset
   307
hgs
parents:
diff changeset
   308
    CleanupStack::PopAndDestroy( dynamicText );
hgs
parents:
diff changeset
   309
    __GSLOGSTRING("[GS] <--CGSNetworkPluginContainer::MakeMcnItemL");
hgs
parents:
diff changeset
   310
    }
hgs
parents:
diff changeset
   311
hgs
parents:
diff changeset
   312
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   313
//
hgs
parents:
diff changeset
   314
// Gets MCN value from model.
hgs
parents:
diff changeset
   315
//
hgs
parents:
diff changeset
   316
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   317
//
hgs
parents:
diff changeset
   318
void CGSNetworkPluginContainer::GetMcnValue( TInt &aMcnValue )
hgs
parents:
diff changeset
   319
    {
hgs
parents:
diff changeset
   320
    iModel->GetMCNSettingValue( aMcnValue );
hgs
parents:
diff changeset
   321
    }
hgs
parents:
diff changeset
   322
hgs
parents:
diff changeset
   323
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   324
//
hgs
parents:
diff changeset
   325
// Sets MCN value from model.
hgs
parents:
diff changeset
   326
//
hgs
parents:
diff changeset
   327
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   328
//
hgs
parents:
diff changeset
   329
void CGSNetworkPluginContainer::SetMcnValue( TInt &aMcnValue )
hgs
parents:
diff changeset
   330
    {
hgs
parents:
diff changeset
   331
    iModel->SetMCNSettingValue( aMcnValue );
hgs
parents:
diff changeset
   332
    }
hgs
parents:
diff changeset
   333
hgs
parents:
diff changeset
   334
hgs
parents:
diff changeset
   335
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   336
//
hgs
parents:
diff changeset
   337
// Creates network mode ui list box item
hgs
parents:
diff changeset
   338
//
hgs
parents:
diff changeset
   339
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   340
void CGSNetworkPluginContainer::MakeNwModeUiItemL()
hgs
parents:
diff changeset
   341
    {
hgs
parents:
diff changeset
   342
    __GSLOGSTRING("[GS]--> CGSNetworkPluginContainer::MakeNwModeUiItemL");
hgs
parents:
diff changeset
   343
    HBufC* dynamicText = NULL;
hgs
parents:
diff changeset
   344
hgs
parents:
diff changeset
   345
    // In here KGSNetworkModeCapsNotUpdated means mode is not updated yet
hgs
parents:
diff changeset
   346
    if( iModel->GetNetworkMode() != KGSNetworkModeCapsNotUpdated )
hgs
parents:
diff changeset
   347
        {
hgs
parents:
diff changeset
   348
        // Allocate value to dynamicText from the resource item
hgs
parents:
diff changeset
   349
        TUint32 resourceId= R_NET_NETWORK_MODE_LBX;
hgs
parents:
diff changeset
   350
        dynamicText = CGSItemTextArray::GetItemCaptionFromFeatureIdLC(
hgs
parents:
diff changeset
   351
            resourceId, GetCurrentNetworkModeSelectionL(), *iCoeEnv );
hgs
parents:
diff changeset
   352
        }
hgs
parents:
diff changeset
   353
    else
hgs
parents:
diff changeset
   354
        {
hgs
parents:
diff changeset
   355
        _LIT( KEmpty, " ");
hgs
parents:
diff changeset
   356
        dynamicText = KEmpty().AllocLC ( );
hgs
parents:
diff changeset
   357
        }
hgs
parents:
diff changeset
   358
hgs
parents:
diff changeset
   359
    // Finally, set the dynamic text
hgs
parents:
diff changeset
   360
    iListboxItemArray->SetDynamicTextL( EGSNetworkModeItemId, *dynamicText );
hgs
parents:
diff changeset
   361
hgs
parents:
diff changeset
   362
    // And add to listbox
hgs
parents:
diff changeset
   363
    iListboxItemArray->SetItemVisibilityL( EGSNetworkModeItemId,
hgs
parents:
diff changeset
   364
        CGSListBoxItemTextArray::EVisible );
hgs
parents:
diff changeset
   365
hgs
parents:
diff changeset
   366
    // this variable needs to be removed from cleanup stack
hgs
parents:
diff changeset
   367
    CleanupStack::PopAndDestroy( dynamicText );
hgs
parents:
diff changeset
   368
    __GSLOGSTRING("[GS] <--CGSNetworkPluginContainer::MakeNwModeUiItemL");
hgs
parents:
diff changeset
   369
    }
hgs
parents:
diff changeset
   370
hgs
parents:
diff changeset
   371
hgs
parents:
diff changeset
   372
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   373
// CGSNetworkPluginContainer::CheckAndAlterContentsL
hgs
parents:
diff changeset
   374
//
hgs
parents:
diff changeset
   375
// Trims non-supported variable options from the array.
hgs
parents:
diff changeset
   376
// This array items are displayed as radio button setting page items
hgs
parents:
diff changeset
   377
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   378
//
hgs
parents:
diff changeset
   379
void CGSNetworkPluginContainer::CheckAndAlterContentsL(
hgs
parents:
diff changeset
   380
                         CGSRadioButtonSettingPageItemTextArray& aItemArray )
hgs
parents:
diff changeset
   381
    {
hgs
parents:
diff changeset
   382
    __GSLOGSTRING("[GS]--> CGSNetworkPluginContainer::CheckAndAlterContentsL");
hgs
parents:
diff changeset
   383
    TInt value = 0;
hgs
parents:
diff changeset
   384
    TInt supportedNetworks = iModel->GetSupportedNetworksL();
hgs
parents:
diff changeset
   385
    __GSLOGSTRING1("[GS]    CheckAndAlterContentsL: supportedNetworks: %d", supportedNetworks);
hgs
parents:
diff changeset
   386
hgs
parents:
diff changeset
   387
    // The 0th item corresponds to DualMode. This is always available in the
hgs
parents:
diff changeset
   388
    // setting page, so no actions required, just make it visible.
hgs
parents:
diff changeset
   389
    aItemArray.SetItemVisibilityL( EGSNetworkModeDualmode,
hgs
parents:
diff changeset
   390
                                   CGSListBoxItemTextArray::EVisible );
hgs
parents:
diff changeset
   391
hgs
parents:
diff changeset
   392
    // the first bit corresponds to UMTS
hgs
parents:
diff changeset
   393
    value = supportedNetworks & ENetFirstBit;
hgs
parents:
diff changeset
   394
    __GSLOGSTRING1("[GS]    CheckAndAlterContentsL: (UMTS)value: %d", value);
hgs
parents:
diff changeset
   395
hgs
parents:
diff changeset
   396
    if ( value == EGSNetworkModeUMTS )
hgs
parents:
diff changeset
   397
        {
hgs
parents:
diff changeset
   398
        aItemArray.SetItemVisibilityL( EGSNetworkModeUMTS,
hgs
parents:
diff changeset
   399
                                       CGSListBoxItemTextArray::EVisible );
hgs
parents:
diff changeset
   400
        }
hgs
parents:
diff changeset
   401
    else
hgs
parents:
diff changeset
   402
        {
hgs
parents:
diff changeset
   403
        aItemArray.SetItemVisibilityL( EGSNetworkModeUMTS,
hgs
parents:
diff changeset
   404
                                       CGSListBoxItemTextArray::EInvisible );
hgs
parents:
diff changeset
   405
        }
hgs
parents:
diff changeset
   406
hgs
parents:
diff changeset
   407
    // Get the zeroeth value (GSM) from the list
hgs
parents:
diff changeset
   408
    value = supportedNetworks & ENetSecondBit;
hgs
parents:
diff changeset
   409
    __GSLOGSTRING1("[GS]    CheckAndAlterContentsL: (GSM)value: %d", value);
hgs
parents:
diff changeset
   410
hgs
parents:
diff changeset
   411
    if ( value == EGSNetworkModeGSM )
hgs
parents:
diff changeset
   412
        {
hgs
parents:
diff changeset
   413
        aItemArray.SetItemVisibilityL( EGSNetworkModeGSM,
hgs
parents:
diff changeset
   414
                                       CGSListBoxItemTextArray::EVisible );
hgs
parents:
diff changeset
   415
        }
hgs
parents:
diff changeset
   416
    else
hgs
parents:
diff changeset
   417
        {
hgs
parents:
diff changeset
   418
        aItemArray.SetItemVisibilityL( EGSNetworkModeGSM,
hgs
parents:
diff changeset
   419
                                       CGSListBoxItemTextArray::EInvisible );
hgs
parents:
diff changeset
   420
        }
hgs
parents:
diff changeset
   421
hgs
parents:
diff changeset
   422
    __GSLOGSTRING("[GS] <--CGSNetworkPluginContainer::CheckAndAlterContentsL");
hgs
parents:
diff changeset
   423
    }
hgs
parents:
diff changeset
   424
hgs
parents:
diff changeset
   425
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   426
// CGSNetworkPluginContainer::GetHelpContext(TCoeHelpContext& aContext) const
hgs
parents:
diff changeset
   427
// Gets Help
hgs
parents:
diff changeset
   428
//
hgs
parents:
diff changeset
   429
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   430
//
hgs
parents:
diff changeset
   431
void CGSNetworkPluginContainer::GetHelpContext(TCoeHelpContext& aContext) const
hgs
parents:
diff changeset
   432
    {
hgs
parents:
diff changeset
   433
    aContext.iMajor = KUidGS;
hgs
parents:
diff changeset
   434
    aContext.iContext = KCP_HLP_NETWORK;
hgs
parents:
diff changeset
   435
    }
hgs
parents:
diff changeset
   436
hgs
parents:
diff changeset
   437
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   438
// CGSSettListCallContainer::CurrentFeatureId()
hgs
parents:
diff changeset
   439
//
hgs
parents:
diff changeset
   440
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   441
//
hgs
parents:
diff changeset
   442
TInt CGSNetworkPluginContainer::CurrentFeatureId( ) const
hgs
parents:
diff changeset
   443
    {
hgs
parents:
diff changeset
   444
    return iListboxItemArray->CurrentFeature( );
hgs
parents:
diff changeset
   445
    }
hgs
parents:
diff changeset
   446
hgs
parents:
diff changeset
   447
hgs
parents:
diff changeset
   448
void CGSNetworkPluginContainer::HandleNetworkModeChangeL()
hgs
parents:
diff changeset
   449
    {
hgs
parents:
diff changeset
   450
    UpdateListBoxL( EGSNetworkModeItemId, GetCurrentNetworkModeSelectionL() );
hgs
parents:
diff changeset
   451
hgs
parents:
diff changeset
   452
     //updating value
hgs
parents:
diff changeset
   453
     CGSRadioButtonSettingPageItemTextArray* nwModeArray =
hgs
parents:
diff changeset
   454
            CGSRadioButtonSettingPageItemTextArray::NewL(
hgs
parents:
diff changeset
   455
            R_NET_NETWORK_MODE_LBX,
hgs
parents:
diff changeset
   456
            *iCoeEnv,
hgs
parents:
diff changeset
   457
            NULL );
hgs
parents:
diff changeset
   458
     // For showing updated network mode value???
hgs
parents:
diff changeset
   459
    CleanupStack::PushL( nwModeArray );
hgs
parents:
diff changeset
   460
    CheckAndAlterContentsL( *nwModeArray );
hgs
parents:
diff changeset
   461
    TInt currentIndex = nwModeArray->IndexForFeatureIdL(
hgs
parents:
diff changeset
   462
        GetCurrentNetworkModeSelectionL() );
hgs
parents:
diff changeset
   463
    HBufC* buf = StringLoader::LoadL(
hgs
parents:
diff changeset
   464
             R_CONFIRM_NOTE_NWMODE_STRING,
hgs
parents:
diff changeset
   465
             nwModeArray->MdcaPoint( currentIndex ),
hgs
parents:
diff changeset
   466
             iEikonEnv );
hgs
parents:
diff changeset
   467
    CleanupStack::PushL( buf );
hgs
parents:
diff changeset
   468
    CAknConfirmationNote* note = new( ELeave ) CAknConfirmationNote( ETrue );
hgs
parents:
diff changeset
   469
    note->ExecuteLD( *buf );
hgs
parents:
diff changeset
   470
    CleanupStack::PopAndDestroy( buf );
hgs
parents:
diff changeset
   471
    CleanupStack::PopAndDestroy( nwModeArray );
hgs
parents:
diff changeset
   472
    }
hgs
parents:
diff changeset
   473
hgs
parents:
diff changeset
   474
hgs
parents:
diff changeset
   475
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   476
// CGSNetworkPluginContainer::TelPluginModel
hgs
parents:
diff changeset
   477
//
hgs
parents:
diff changeset
   478
// Return the model pointer for use in view class
hgs
parents:
diff changeset
   479
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   480
//
hgs
parents:
diff changeset
   481
CGSNetworkPluginModel* CGSNetworkPluginContainer::NetPluginModel()
hgs
parents:
diff changeset
   482
    {
hgs
parents:
diff changeset
   483
    return iModel;
hgs
parents:
diff changeset
   484
    }
hgs
parents:
diff changeset
   485
hgs
parents:
diff changeset
   486
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   487
// Sets observer for MSK label updations.
hgs
parents:
diff changeset
   488
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   489
//
hgs
parents:
diff changeset
   490
void CGSNetworkPluginContainer::SetMiddleSoftkeyObserver(
hgs
parents:
diff changeset
   491
    MGsFWMSKObserver* aObserver )
hgs
parents:
diff changeset
   492
    {
hgs
parents:
diff changeset
   493
    if ( !iMSKObserver && aObserver )
hgs
parents:
diff changeset
   494
        {
hgs
parents:
diff changeset
   495
        iMSKObserver = aObserver;
hgs
parents:
diff changeset
   496
        }
hgs
parents:
diff changeset
   497
    }
hgs
parents:
diff changeset
   498
hgs
parents:
diff changeset
   499
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   500
// CGSNetworkPluginContainer::OfferKeyEventL
hgs
parents:
diff changeset
   501
// Called when a key is pressed.
hgs
parents:
diff changeset
   502
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   503
TKeyResponse CGSNetworkPluginContainer::OfferKeyEventL(
hgs
parents:
diff changeset
   504
    const TKeyEvent& aKeyEvent,
hgs
parents:
diff changeset
   505
    TEventCode aType )
hgs
parents:
diff changeset
   506
    {
hgs
parents:
diff changeset
   507
    switch ( aKeyEvent.iCode )
hgs
parents:
diff changeset
   508
        {
hgs
parents:
diff changeset
   509
        case EKeyUpArrow:
hgs
parents:
diff changeset
   510
        case EKeyDownArrow:
hgs
parents:
diff changeset
   511
            {
hgs
parents:
diff changeset
   512
            TKeyResponse listboxResp =
hgs
parents:
diff changeset
   513
                iListBox->OfferKeyEventL( aKeyEvent, aType );
hgs
parents:
diff changeset
   514
            if ( iMSKObserver )
hgs
parents:
diff changeset
   515
                {
hgs
parents:
diff changeset
   516
                iMSKObserver->CheckMiddleSoftkeyLabelL();
hgs
parents:
diff changeset
   517
                }
hgs
parents:
diff changeset
   518
            return listboxResp;
hgs
parents:
diff changeset
   519
            }
hgs
parents:
diff changeset
   520
        case EKeyLeftArrow:
hgs
parents:
diff changeset
   521
        case EKeyRightArrow:
hgs
parents:
diff changeset
   522
            // Listbox takes all events even if it doesn't use them
hgs
parents:
diff changeset
   523
            return EKeyWasNotConsumed;
hgs
parents:
diff changeset
   524
        default:
hgs
parents:
diff changeset
   525
            break;
hgs
parents:
diff changeset
   526
        }
hgs
parents:
diff changeset
   527
hgs
parents:
diff changeset
   528
    return iListBox->OfferKeyEventL( aKeyEvent, aType );
hgs
parents:
diff changeset
   529
    }
hgs
parents:
diff changeset
   530
hgs
parents:
diff changeset
   531
hgs
parents:
diff changeset
   532
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   533
// CGSNetworkPluginContainer::GetCurrentNetworkModeSelectionL
hgs
parents:
diff changeset
   534
//
hgs
parents:
diff changeset
   535
// Returns the current listbox selection of network mode.
hgs
parents:
diff changeset
   536
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   537
//
hgs
parents:
diff changeset
   538
TGSNetworkModeItems CGSNetworkPluginContainer::GetCurrentNetworkModeSelectionL()
hgs
parents:
diff changeset
   539
    {
hgs
parents:
diff changeset
   540
    TGSNetworkModeItems featureId = EGSNetworkModeDualmode;
hgs
parents:
diff changeset
   541
hgs
parents:
diff changeset
   542
    switch( iModel->GetNetworkMode() )
hgs
parents:
diff changeset
   543
        {
hgs
parents:
diff changeset
   544
        case RMmCustomAPI::KCapsNetworkModeGsm:
hgs
parents:
diff changeset
   545
            featureId = EGSNetworkModeGSM;
hgs
parents:
diff changeset
   546
            break;
hgs
parents:
diff changeset
   547
hgs
parents:
diff changeset
   548
        case RMmCustomAPI::KCapsNetworkModeUmts:
hgs
parents:
diff changeset
   549
            featureId = EGSNetworkModeUMTS;
hgs
parents:
diff changeset
   550
            break;
hgs
parents:
diff changeset
   551
hgs
parents:
diff changeset
   552
        case RMmCustomAPI::KCapsNetworkModeDual:
hgs
parents:
diff changeset
   553
            featureId = EGSNetworkModeDualmode;
hgs
parents:
diff changeset
   554
            break;
hgs
parents:
diff changeset
   555
        default:
hgs
parents:
diff changeset
   556
            // Mode might not be updated yet, in which case default is dual.
hgs
parents:
diff changeset
   557
            // Not a perfect solution but have to have an item selected in 
hgs
parents:
diff changeset
   558
            // options box
hgs
parents:
diff changeset
   559
            featureId = EGSNetworkModeDualmode;
hgs
parents:
diff changeset
   560
            break;
hgs
parents:
diff changeset
   561
        }
hgs
parents:
diff changeset
   562
hgs
parents:
diff changeset
   563
#ifdef _DEBUG
hgs
parents:
diff changeset
   564
    TBuf<KGSNetworkModeDebugStrLen> selectedModeBuf;
hgs
parents:
diff changeset
   565
    GSNetworkDebugHelper::NwToDes( featureId, selectedModeBuf );
hgs
parents:
diff changeset
   566
    __GSLOGSTRING1( "[CGSNetworkPluginContainer::GetCurrentNetworkModeSelectionL] %S ",
hgs
parents:
diff changeset
   567
                    &selectedModeBuf );
hgs
parents:
diff changeset
   568
#endif // _DEBUG
hgs
parents:
diff changeset
   569
hgs
parents:
diff changeset
   570
    iModel->CheckState( featureId );
hgs
parents:
diff changeset
   571
    return featureId;
hgs
parents:
diff changeset
   572
    }
hgs
parents:
diff changeset
   573
hgs
parents:
diff changeset
   574
hgs
parents:
diff changeset
   575
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   576
// CGSNetworkPluginContainer::SetCurrentNetworkModeSelectionL
hgs
parents:
diff changeset
   577
//
hgs
parents:
diff changeset
   578
//
hgs
parents:
diff changeset
   579
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   580
//
hgs
parents:
diff changeset
   581
void CGSNetworkPluginContainer::SetCurrentNetworkModeSelectionL(
hgs
parents:
diff changeset
   582
        TGSNetworkModeItems aNetworkModeLbxItem )
hgs
parents:
diff changeset
   583
    {
hgs
parents:
diff changeset
   584
    __GSLOGSTRING1( "[CGSNetworkPluginContainer::SetCurrentNetworkModeSelectionL] Mode:%d", aNetworkModeLbxItem );
hgs
parents:
diff changeset
   585
    TUint32 networkMode;
hgs
parents:
diff changeset
   586
    switch ( aNetworkModeLbxItem )
hgs
parents:
diff changeset
   587
        {
hgs
parents:
diff changeset
   588
        case EGSNetworkModeGSM: //just using the index
hgs
parents:
diff changeset
   589
            networkMode = RMmCustomAPI::KCapsNetworkModeGsm;
hgs
parents:
diff changeset
   590
            break;
hgs
parents:
diff changeset
   591
        case EGSNetworkModeUMTS:
hgs
parents:
diff changeset
   592
            networkMode = RMmCustomAPI::KCapsNetworkModeUmts;
hgs
parents:
diff changeset
   593
            break;
hgs
parents:
diff changeset
   594
        case EGSNetworkModeDualmode:
hgs
parents:
diff changeset
   595
        default:
hgs
parents:
diff changeset
   596
            networkMode = RMmCustomAPI::KCapsNetworkModeDual;
hgs
parents:
diff changeset
   597
            break;
hgs
parents:
diff changeset
   598
        }
hgs
parents:
diff changeset
   599
    // Don't change the network mode if there is ongoing phone call
hgs
parents:
diff changeset
   600
    // since this will disconnect it
hgs
parents:
diff changeset
   601
    if ( !iModel->IsCallActive() )
hgs
parents:
diff changeset
   602
        {
hgs
parents:
diff changeset
   603
        iModel->SetNetworkModeL( networkMode );
hgs
parents:
diff changeset
   604
        iSelectedNetworkModeLbxItem = aNetworkModeLbxItem;
hgs
parents:
diff changeset
   605
        }
hgs
parents:
diff changeset
   606
    __GSLOGSTRING( "[CGSNetworkPluginContainer::SetCurrentNetworkModeSelectionL] End]" );
hgs
parents:
diff changeset
   607
    }
hgs
parents:
diff changeset
   608
hgs
parents:
diff changeset
   609
hgs
parents:
diff changeset
   610
hgs
parents:
diff changeset
   611
//End of File