gssettingsuis/Gs/GSNetworkPlugin/Src/GSNetworkPlugin.cpp
branchRCL_3
changeset 53 8ee96d21d9bf
parent 51 8bda91a87a00
child 54 7e0eff37aedb
--- a/gssettingsuis/Gs/GSNetworkPlugin/Src/GSNetworkPlugin.cpp	Thu Aug 19 10:12:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1949 +0,0 @@
-/*
-* Copyright (c) 2006-2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Call submenu in General Settings.
-*
-*/
-
-
-// INCLUDE FILES
-#include "GSNetworkPlugin.h"         //for CGSCallPlugin
-#include "GSNetworkPluginContainer.h"    //for CGSCallPluginContainer
-#include "GsLogger.h"
-#include "GSNetworkPlugin.h"             //for pluginUID
-
-#include <coeaui.h>
-#include <hlplch.h>                     // For HlpLauncher
-
-//AVKON headers
-#include <aknnotewrappers.h>            //for Note Wrappers
-#include <aknPopup.h>                   //for Popup menus
-#include <aknradiobuttonsettingpage.h>  //for Radio Button Setting Pages
-#include <aknViewAppUi.h>               //for viewappui
-#include <AknWaitDialog.h>              //for CAknWaitDialog
-#include <AknIconArray.h>               //for AknIconArray
-#include <StringLoader.h>               //for StringLoader
-#include <apparc.h>
-
-#include <gscommon.hrh>
-
-//Phonesettings and TSY headers
-#include <PsetContainer.h>              //for CPsetContainer
-#include <PsetNetwork.h>                //for CPsetNetwork
-#include <PsetSAObserver.h>             //for CPsetSAObserver
-#include <gsmerror.h>                   //for GSM-specific error messages
-#include <exterror.h>
-#include <featmgr.h>
-#include <MSSSettingsRefreshObserver.h> //for SAT refresh
-#include <gslistbox.h>                  //for radiobutton class
-
-#include <e32property.h>
-#include <PSVariables.h>
-
-#include <gsnetworkpluginrsc.rsg>           //for resource IDs
-#include <gsfwviewuids.h>
-#include <gslistbox.h>                  //for CGSListBoxItemTextArray
-
-#include <e32property.h>
-#include <PSVariables.h>
-#include <gsprivatepluginproviderids.h>
-#include <gsnetworkplugin.mbg>
-#include <BTSapInternalPSKeys.h>
-#include <CoreApplicationUIsSDKCRKeys.h> // KCRUidCoreApplicationUIs, TCoreAppUIsNetworkConnectionAllowed
-#include <activeidle2domainpskeys.h>
-
-#include <CNWSession.h>
-#include <NetworkHandlingProxy.h>
-#include <gsparentplugin.h>
-#include "GSNetworkDebugHelper.h"
-
-#ifdef FF_POWER_SAVE
-    #include "GSNetworkPluginAO.h"
-#endif // FF_POWER_SAVE
-
-// LOCAL CONSTANTS
-_LIT( KGSNetWCDMAIcon, "0\t" );
-_LIT( KGSNetGSMIcon, "1\t" );
-_LIT( KEmptyStr, "" );
-/* Implementation of forbidden operator icon begins */
-_LIT( KGSNetNoIcon, "\t");
-_LIT( KGSNetForbiddenIcon, "2\t" );
-/* Implementation of forbidden operator icon ends */
-// Warning disabled as this constant is used inside __ASSERT_DEBUG
-#pragma diag_suppress 177
-_LIT( KGSNetworkPluginAssertName, "CGSNetworkPlugin" );
-
-
-// Middle Softkey control ID.
-const TInt KGSMSKControlID = 3;
-
-const TInt KGSNetIconAdditionalChars = 5;
-
-
-// ========================= MEMBER FUNCTIONS ================================
-// ---------------------------------------------------------------------------
-//
-// Constructor.
-//
-// ---------------------------------------------------------------------------
-CGSNetworkPlugin::CGSNetworkPlugin()
-    :iMskCommandFlag( ETrue ) , iPsmActive( NULL )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Symbian OS two-phased constructor (second phase)
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPlugin::ConstructL()
-    {
-    __GSLOGSTRING("[CGSNetworkPlugin]--> CGSNetworkPlugin::ConstructL");
-    FeatureManager::InitializeLibL();
-    OpenLocalizedResourceFileL( KGSNetworkPluginResourceFileName,
-                                iResourceLoader );
-
-    //PS listener initialization
-    iBtSapListener = CGSPubSubsListener::NewL(
-                     KPSUidBluetoothSapConnectionState,
-                     KBTSapConnectionState, this );
-
-    BaseConstructL( R_GS_NET_VIEW );
-
-    iSettingsContainer = CPsetContainer::NewL();
-    iPSRefreshHandler = iSettingsContainer->CreateRefreshHandlerL();
-    iPSRefreshHandler->NotifyFileChangeL(
-            *this,
-            KCspEf,
-            EFileChangeNotification );
-    iPhoneSettingsEngine = iSettingsContainer->CreateNetworkObjectL( *this );
-    iApprovedNetwork = EFalse;
-    CheckAndCreateDlgL( EFalse );
-    iSearchForNetworksActive = EFalse;
-
-    iNetworkText = HBufC::NewL( KNWShortNameLength );
-    UpdateNetworkTextL();
-    
-#ifdef FF_POWER_SAVE    
-    iPsmActive = CGSNetworkPluginAO::NewL();
-    iPsmActive->SetView( this );
-#endif // FF_POWER_SAVE   
-
-    __GSLOGSTRING("[CGSNetworkPlugin] <--CGSNetworkPlugin::ConstructL");
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Symbian OS two-phased constructor (first phase)
-//
-// ---------------------------------------------------------------------------
-CGSNetworkPlugin* CGSNetworkPlugin::NewLC()
-    {
-    CGSNetworkPlugin* self = new ( ELeave ) CGSNetworkPlugin;
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CGSNetworkPlugin::NewL()
-// Static constructor
-//
-// ---------------------------------------------------------------------------
-//
-CGSNetworkPlugin* CGSNetworkPlugin::NewL( TAny* /*aInitParams*/ )
-    {
-    CGSNetworkPlugin* self = new ( ELeave ) CGSNetworkPlugin();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Destructor
-//
-// ---------------------------------------------------------------------------
-CGSNetworkPlugin::~CGSNetworkPlugin()
-    {
-    __GSLOGSTRING("[CGSNetworkPlugin] ~CGSNetworkPlugin()|->");
-    FeatureManager::UnInitializeLib();
-
-    if( iNWSession )
-        {
-        delete iNWSession;
-        iNWSession = NULL;
-        }
-    if ( iBtSapListener )
-        {
-        delete iBtSapListener;
-        iBtSapListener = NULL;
-        }
-
-    if ( iPhoneSettingsEngine )
-        {
-        if( iSearchForNetworksActive )
-            {
-            //Reset back to previously used network
-            iPhoneSettingsEngine->ResetNetworkSearch();
-            }
-        delete iPhoneSettingsEngine;
-        iPhoneSettingsEngine = NULL;
-        }
-
-    if ( iNetworkArray )
-        {
-        iNetworkArray->Reset();
-        delete iNetworkArray;
-        iNetworkArray = NULL;
-        }
-
-    if ( iDlg )
-        {
-        delete iDlg;
-        iDlg = NULL;
-        }
-    if ( iNetworkPopupList )
-        {
-        iNetworkPopupList->CancelPopup();
-        }
-
-    CloseDialog();
-    
-    //Cancel any outstanding SAT notifications
-    if ( iPSRefreshHandler )
-        {
-        iPSRefreshHandler->CancelNotify();
-        delete iPSRefreshHandler;
-        iPSRefreshHandler = NULL;
-        }
-
-    if( iSettingsContainer )
-        {
-        delete iSettingsContainer;
-        iSettingsContainer = NULL;
-        }
-
-    delete iNetworkText;
-    iNetworkText = NULL;
-    
-#ifdef FF_POWER_SAVE
-    delete iPsmActive;
-    iPsmActive = NULL;
-#endif // FF_POWER_SAVE
-
-    __GSLOGSTRING("[CGSNetworkPlugin] ~CGSNetworkPlugin()-|");
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Returns Id of the Network submenu
-//
-// ---------------------------------------------------------------------------
-TUid CGSNetworkPlugin::Id() const
-    {
-    return KGSNetworkPluginUid;
-    }
-
-// ----------------------------------------------------------------------------
-// CGSNetworkPlugin::Visible
-//
-// Provides the visibility status of self to framework.
-// ----------------------------------------------------------------------------
-//
-TBool CGSNetworkPlugin::Visible() const
-    {
-    TBool result( EFalse );
-    TInt value = 0;
-    iBtSapListener->Get( value );
-    if ( value == EBTSapNotConnected || value == EBTSapConnecting )
-        {
-        result = ETrue;
-        }
-    else
-        {
-        result = EFalse;
-        }
-    return result;
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Handles network info
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPlugin::HandleNetworkInfoReceivedL(
-        const CNetworkInfoArray* aInfoArray, const TInt /* aResult */ )
-    {
-    __GSLOGSTRING("[GS]--> CGSNetworkPlugin::HandleNetworkInfoReceivedL");
-    const TInt itemsCount = aInfoArray->Count();
-
-    //first delete old ones
-    iNetworkArray->Delete( 0, iNetworkArray->Count() );
-
-    //then insert found networks
-    for ( TInt i = 0; i < itemsCount; i++ )
-        {
-        MPsetNetworkSelect::TNetworkInfo info = aInfoArray->At( i );
-        iNetworkArray->InsertL( i, info );
-        }
-    NetworkListL(); //after search complete, show results
-    __GSLOGSTRING("[GS] <--CGSNetworkPlugin::HandleNetworkInfoReceivedL");
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Creates list of Network providers
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPlugin::NetworkListL()
-    {
-    __GSLOGSTRING("[GS]--> CGSNetworkPlugin::NetworkListL");
-
-    //check if the graphical list is needed... set in local variation
-    TBool showGraphicalList =
-        Container()->NetPluginModel()->GraphicalNetworkListSupportedL();
-    __GSLOGSTRING1("[GS]    NetworkListL: showGraphicalList: %d", showGraphicalList);
-   
-    //if no net items were found, do not show list
-    if ( iNetworkArray->Count() > 0 )
-        {
-        /** Implementation of forbidden operator icon begins */
-        // check if forbidden operator icon is supported
-        TBool forbiddenOperator = 
-                FeatureManager::FeatureSupported( KFeatureIdFfTdScdmaForbiddenoperatoricondisplay );
-        /** Implementation of forbidden operator icon ends */
-        while ( !iApprovedNetwork )
-            {
-            AknPopupListEmpty<CEikFormattedCellListBox>* list;
-            /** Implementation of forbidden operator icon begins */
-            if (forbiddenOperator || showGraphicalList
-                    && FeatureManager::FeatureSupported(KFeatureIdProtocolWcdma))
-                {
-                list = new (ELeave) CAknSingleGraphicPopupMenuStyleListBox;
-                }
-            else
-                {
-                list = new (ELeave) CAknSinglePopupMenuStyleListBox;
-                }
-            /** Implementation of forbidden operator icon ends */
-            
-            CleanupStack::PushL( list );
-            if ( iNetworkPopupList )
-                {
-                iNetworkPopupList->CancelPopup();
-                iNetworkPopupList = NULL;
-                }
-            iNetworkPopupList =
-                CAknPopupList::NewL( list, R_AVKON_SOFTKEYS_OK_CANCEL );
-
-            list->ConstructL( iNetworkPopupList,
-                              CEikListBox::ELeftDownInViewRect );
-            list->CreateScrollBarFrameL( ETrue );
-            list->ScrollBarFrame()->SetScrollBarVisibilityL(
-                CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );
-
-            //Fill in the list texts
-            CDesCArrayFlat* items =
-                new ( ELeave ) CDesCArrayFlat( KGSNetPopupMenuItems );
-            CleanupStack::PushL( items );
-            const TInt itemsCount = iNetworkArray->Count();
-            __GSLOGSTRING1("[GS]    NetworkListL: itemsCount: %d", itemsCount);
-
-            for ( TInt loop = 0; loop < itemsCount; loop++ )
-                {
-                HBufC* insertString =
-                    HBufC::NewLC(
-                        KGSNwLongNameLength + KGSNetIconAdditionalChars );
-                MPsetNetworkSelect::TNetworkInfo info =
-                    iNetworkArray->At( loop );
-
-                if ( info.iLongName.Length() <= 0 ||
-                     info.iLongName.Length() > KGSNwLongNameLength )
-                    {
-                    //no names received, use IDs
-                    if ( info.iShortName.Length() <= 0 ||
-                        info.iShortName.Length() > KGSNwShortNameLength )
-                        {
-                        TNetworkID ids;
-                        TNetworkID networkCode;
-                        ids = info.iId.iCountryCode;
-                        ids.Append( KGSEmptySpace );
-                        networkCode = info.iId.iNetworkCode;
-                        ids.Append( networkCode );
-                        insertString->Des().Append( ids );
-                        __GSLOGSTRING1("[GS]    NetworkListL: Network ID: %S", insertString);
-                        }
-                    //short name received
-                    else
-                        {
-                        insertString->Des().Append( info.iShortName );
-                        __GSLOGSTRING1("[GS]    NetworkListL: Network Shortname: %S", insertString);
-                        }
-                    }
-                //long name received
-                else
-                    {
-                    insertString->Des().Append( info.iLongName );
-                    __GSLOGSTRING1("[GS]    NetworkListL: Network Longname: %S", insertString);
-                    }
-
-                /** Implementation of forbidden operator icon begins */
-                //set icon for network
-                if ( forbiddenOperator )
-                    {
-                    if ( info.iStatus == MPsetNetworkSelect::ENetStatForbidden )
-                        {
-                        insertString->Des().Insert( 0, KGSNetForbiddenIcon );
-                        }
-                    else 
-                        {
-                        insertString->Des().Insert( 0, KGSNetNoIcon );
-                        }
-                    }
-                else if ( showGraphicalList )
-                    {
-                    if ( FeatureManager::FeatureSupported(
-                                                  KFeatureIdProtocolWcdma ) )
-                        {
-                        if ( info.iAccess !=
-                             MPsetNetworkSelect::ENetNetworkGSM )
-                            {
-                            insertString->Des().Insert( 0, KGSNetWCDMAIcon );
-                            }
-                        else
-                            {
-                            insertString->Des().Insert( 0, KGSNetGSMIcon );
-                            }
-                        }
-                    }
-                /** Implementation of forbidden operator icon ends */
-                items->AppendL( *insertString );
-                CleanupStack::PopAndDestroy();
-                }
-
-            // For Testing purpuses ONLY
-            for ( TInt k=0; k<items->Count(); k++ )
-                {
-                TPtrC itemText( (*items)[k] );
-                __GSLOGSTRING2("[GS]    NetworkListL: POS: %d, VALUE: %S", k, &itemText);
-                }
-
-            CTextListBoxModel* model = list->Model();
-            model->SetItemTextArray( items );
-            model->SetOwnershipType( ELbmOwnsItemArray );
-            CleanupStack::Pop( items ); //listbox model now owns this
-
-            //Set title for list
-            SetTitleToPopupL( *iNetworkPopupList, R_NETSL_FOUNDOPERATORS );
-
-            // Setup graphic items list for dual mode nw selection listbox
-            // based on the local variation
-            /** Implementation of forbidden operator icon begins */
-            if ( forbiddenOperator || showGraphicalList )
-                {
-                CAknIconArray* iconList = new (ELeave) CAknIconArray( 10 );
-                CleanupStack::PushL( iconList );
-                iconList->ConstructFromResourceL( R_NET_DUALMODE_ICONS );
-                list->ItemDrawer()->ColumnData()->SetIconArray( iconList );
-                CleanupStack::Pop( iconList ); //listbox model now owns this
-                }
-            /** Implementation of forbidden operator icon ends */
-            TInt res = 0;
-            if( items->Count() )
-                {
-                res = iNetworkPopupList->ExecuteLD();
-                }
-            iNetworkPopupList = NULL;
-
-            iApprovedNetwork = ETrue; //not perhaps, but user might want to quit
-            TInt selection = list->CurrentItemIndex();
-            __GSLOGSTRING1("[GS]    NetworkListL: selection: %d", selection);
-
-            CleanupStack::PopAndDestroy( list );
-
-            if ( res )
-                {
-                MPsetNetworkSelect::TNetworkInfo info =
-                    iNetworkArray->At( selection );
-                info.iMode = MPsetNetworkSelect::ENetSelectModeManual;
-                iPhoneSettingsEngine->SelectNetworkL( info );
-                }
-            else // user selected "Cancel"
-                {
-                //Reset back to previously used network
-                iPhoneSettingsEngine->ResetNetworkSearch();
-                //After list has been used, clear it.
-                PurgeNetworkList();
-                if ( iPhoneSettingsEngine->IsCallActive() !=
-                     CPsetSAObserver::EPSetCallActive )
-                    {
-                    ShowSettingPageL( EGSNetworkModeSelectionItemId );
-                    }
-                }
-            }
-        }
-    iApprovedNetwork = EFalse; //initialize before new search
-    __GSLOGSTRING("[GS] <--CGSNetworkPlugin::NetworkListL");
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Handles requests to change network
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPlugin::HandleNetworkChangedL(
-    const MPsetNetworkSelect::TNetworkInfo& /*aCurrentInfo*/,
-    const MPsetNetworkSelect::TCurrentNetworkStatus /*aStatus*/,
-    const TInt /*aResult*/ )
-    {
-    //DEPRECATED
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Handles requests to change network
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPlugin::HandleNetworkChangedL(
-    const MPsetNetworkSelect::TNetworkInfo& aCurrentInfo,
-    const RMobilePhone::TMobilePhoneRegistrationStatus& aStatus,
-    const TInt /* aResult */ )
-    {
-    __GSLOGSTRING("[GS]--> CGSNetworkPlugin::HandleNetworkChangedL");
-    switch ( aStatus )
-        {
-        case RMobilePhone::ERegisteredOnHomeNetwork:
-            ShowNoteL( R_HOME_NETWORK_SELECTED, KGSConfirmationNote );
-            PurgeNetworkList();
-            break;
-        case RMobilePhone::ERegisteredRoaming:
-            {
-            HBufC* stringholder;
-            if ( aCurrentInfo.iLongName.Length() > 0 &&
-                aCurrentInfo.iLongName.Length() <=
-                MPsetNetworkSelect::ENetLongNameSize )
-                {
-                stringholder = StringLoader::LoadLC( R_NETSL_NETWORKSELECTED,
-                                                     aCurrentInfo.iLongName );
-                }
-            else if (aCurrentInfo.iShortName.Length() > 0 &&
-                aCurrentInfo.iShortName.Length() <=
-                MPsetNetworkSelect::ENetShortNameSize )
-                {
-                stringholder = StringLoader::LoadLC( R_NETSL_NETWORKSELECTED,
-                                                     aCurrentInfo.iShortName );
-                }
-            else //network returned only ids
-                {
-                // construct whole "id-string"
-                // e.g. for Finland Nokia's test network "244 7"
-                TNetworkID ids;
-                TNetworkID networkCode;
-                ids = aCurrentInfo.iId.iCountryCode;
-                __GSLOGSTRING1("[GS]    HandleNetworkChangedL: iCountryCode: %S", &aCurrentInfo.iId.iCountryCode);
-
-                ids.Append( KGSEmptySpace );
-                networkCode = aCurrentInfo.iId.iNetworkCode;
-                __GSLOGSTRING1("[GS]    HandleNetworkChangedL: iNetworkCode: %S", &aCurrentInfo.iId.iNetworkCode);
-
-                ids.Append( networkCode );
-                stringholder =
-                    StringLoader::LoadLC( R_NETSL_NETWORKSELECTED, ids );
-                }
-            CAknConfirmationNote* note = new ( ELeave ) CAknConfirmationNote( ETrue );
-            note->ExecuteLD( *stringholder );
-            CleanupStack::PopAndDestroy( stringholder );
-            //After list has been used, clear it.
-            PurgeNetworkList();
-            break;
-            }
-        case RMobilePhone::ERegistrationUnknown:
-        case RMobilePhone::ENotRegisteredNoService:
-        case RMobilePhone::ENotRegisteredEmergencyOnly:
-        case RMobilePhone::ENotRegisteredSearching:
-        case RMobilePhone::ERegisteredBusy:
-        case RMobilePhone::ERegistrationDenied:
-        default:
-            break;
-        }
-    PhoneIdle();
-    __GSLOGSTRING("[GS] <--CGSNetworkPlugin::HandleNetworkChangedL");
-    }
-
-
-// ---------------------------------------------------------------------------
-//
-// Handles user inputs in Options menu
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPlugin::HandleCommandL( TInt aCommand )
-    {
-    __GSLOGSTRING1("[CGSNetworkPlugin] HandleCommandL(%d)|->", aCommand );
-    switch ( aCommand )
-        {
-        case EGSMSKCmdAppChange:
-             HandleListBoxSelectionL();
-             break;
-        case EGSCmdAppChange:
-            {
-            const TInt currentFeatureId = Container()->CurrentFeatureId();
-
-            if ( currentFeatureId == EGSMCNItemId )
-                {
-                ShowSettingPageL( EGSMCNItemId );
-                }
-            else if ( currentFeatureId == EGSNetworkModeItemId )
-                {
-                CheckCallActiveL( EGSNetworkModeItemId );
-                }
-            else
-                {
-                HandleListBoxEventL( NULL, EEventEnterKeyPressed );
-                }
-            }
-            break;
-        case EAknSoftkeyBack:
-            {
-            if (!iPhoneSettingsEngine->IsActive())
-                {
-                iAppUi->ActivateLocalViewL( KGSConPluginUid /*KGSTelPluginUid*/ );                
-                }
-            break;
-            }
-        case EAknCmdHelp:
-            {
-            if( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
-                {
-                HlpLauncher::LaunchHelpApplicationL(
-                    iEikonEnv->WsSession(), iAppUi->AppHelpContextL() );
-                }
-            break;
-            }
-        default:
-            iAppUi->HandleCommandL( aCommand );
-            break;
-        }
-    __GSLOGSTRING("[CGSNetworkPlugin] HandleCommandL()-|");
-    }
-
-
-// ---------------------------------------------------------------------------
-//
-// Handles user inputs in Options menu
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPlugin::ProcessCommandL( TInt aCommand )
-    {
-    // Network base class
-    CAknView::ProcessCommandL( aCommand );
-    }
-
-// ---------------------------------------------------------------------------
-//
-// While request to find networks is processed
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPlugin::HandleSearchingNetworksL(
-                         MPsetNetworkInfoObserver::TServiceRequest aRequest )
-    {
-    __GSLOGSTRING("[GS]--> CGSNetworkPlugin::HandleSearchingNetworksL");
-    if ( !iNetworkArray )
-        {
-        iNetworkArray = new ( ELeave )
-            CNetworkInfoArray( KGSNetworkInfoArrayGranularity );
-        }
-
-    if ( aRequest != MPsetNetworkInfoObserver::EServiceRequestNone )
-        {
-        CheckAndCreateDlgL( EFalse );
-        if ( aRequest ==
-             MPsetNetworkInfoObserver::EServiceRequestSetNetworkAutomatic )
-            {
-            UpdateListBoxL( EGSNetworkModeSelectionItemId,
-                            EGSAutomaticSelectMode );
-            }
-        else
-            {
-            UpdateListBoxL( EGSNetworkModeSelectionItemId,
-                            EGSManualSelectMode );
-            }
-
-        iSearchForNetworksActive = ETrue;
-        TInt res = iDlg->ExecuteLD( R_SEARCHING_NOTE );
-
-        if ( res == EGSSoftkeyQuit )
-            {
-            iPhoneSettingsEngine->CancelProcess();
-            
-            ShowSettingPageL( EGSNetworkModeSelectionItemId );
-            }
-        else
-            {
-            if ( aRequest ==
-                 MPsetNetworkInfoObserver::EServiceRequestSetNetworkAutomatic )
-                {
-                PhoneIdle();
-                iAppUi->HandleCommandL( EEikCmdExit );
-                }
-            }
-        }
-    else
-        {
-        delete iDlg;
-        iDlg = NULL;
-        }
-
-    __GSLOGSTRING("[GS] <--CGSNetworkPlugin::HandleSearchingNetworksL");
-    }
-
-// ---------------------------------------------------------------------------
-//
-// While request to change network is processed, a note is shown
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPlugin::HandleRequestingSelectedNetworkL( TBool aOngoing )
-    {
-    __GSLOGSTRING("[GS]--> CGSNetworkPlugin::HandleRequestingSelectedNetworkL");
-    if ( aOngoing )
-        {
-        CheckAndCreateDlgL( ETrue );
-
-        if ( iDlg->ExecuteLD( R_REQUESTING_NOTE ) == EGSSoftkeyQuit )
-            {
-            iPhoneSettingsEngine->CancelProcess();
-
-            CAknNoteDialog* dlg = new ( ELeave ) CAknNoteDialog(
-                CAknNoteDialog::EConfirmationTone,
-                CAknNoteDialog::EShortTimeout );
-            dlg->ExecuteLD( R_REGISTRATION_INTERRUPTED );
-            iApprovedNetwork = EFalse;
-            }
-        }
-    else
-        {
-        delete iDlg;
-        iDlg = NULL;
-        }
-
-    __GSLOGSTRING("[GS] <--CGSNetworkPlugin::HandleRequestingSelectedNetworkL");
-    }
-
-
-// ---------------------------------------------------------------------------
-//
-// Activates the view
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPlugin::DoActivateL( const TVwsViewId&  aPrevViewId ,
-                                       TUid  aCustomMessageId,
-                                       const TDesC8&  aCustomMessage  )
-    {
-    __GSLOGSTRING( "[CGSNetworkPlugin] DoActivateL()|->" );
-    CGSBaseView::DoActivateL( aPrevViewId, aCustomMessageId, aCustomMessage );
-    Container()->SetMiddleSoftkeyObserver( this );
-    SetMiddleSoftKeyLabelL( R_CALL_MSK_CHANGE, EGSMSKCmdAppChange );
-    // This way we set which command is set for MSK
-    iMskCommandFlag = ETrue;
-    iContainer->iListBox->SetTopItemIndex( iTopItemIndex );
-
-    if ( iCurrentItem >= 0 &&
-         iCurrentItem < iContainer->iListBox->Model()->NumberOfItems() )
-        {
-        iContainer->iListBox->SetCurrentItemIndexAndDraw( iCurrentItem );
-        }
-    if ( aCustomMessageId == TUid::Uid( KGSCustomActivateNetView ) )
-       {
-       UpdateListBoxL( EGSNetworkModeSelectionItemId, EGSManualSelectMode );
-       iSearchForNetworksActive = ETrue;
-       iPhoneSettingsEngine->GetAvailableNetworksL();
-       }
-    CheckMiddleSoftkeyLabelL();
-    __GSLOGSTRING( "[CGSNetworkPlugin] DoActivateL()-|" );
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Deactivates the view
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPlugin::DoDeactivate()
-    {
-    __GSLOGSTRING("[CGSNetworkPlugin]--> DoDeactivate");
-    if ( Container() )
-        {
-        if ( Container()->iListBox && iContainer->iListBox->View() )
-            {
-            iTopItemIndex = iContainer->iListBox->TopItemIndex();
-            iCurrentItem = iContainer->iListBox->CurrentItemIndex();
-            }
-        iAppUi->RemoveFromViewStack( *this, Container() );
-        delete iContainer;
-        iContainer = NULL;
-        }
-    __GSLOGSTRING("[CGSNetworkPlugin] <--DoDeactivate");
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Shows setting page - for ON/OFF setting items
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPlugin::ShowSettingPageL( TGSNetworkItemIds aPage )
-    {
-    __GSLOGSTRING( "[CGSNetworkPlugin::ShowSettingPageL]" );
-    TInt resourceId = 0;
-    TInt currentItem = KGSSettingOff;
-    HBufC* settingPageTitle = NULL;
-
-    switch( aPage )
-        {
-        case EGSNetworkModeSelectionItemId:
-            resourceId = R_NETSL_NETSELECTMODE_LBX;
-            settingPageTitle = StringLoader::LoadLC( R_NETSL_NETSELECTMODE );
-            currentItem = Container()->GetSelectionMode();
-            break;
-        case EGSMCNItemId:
-            resourceId = R_MCN_CELL_INFO_DISP_MODE_LBX;
-            settingPageTitle = StringLoader::LoadLC( R_MCN_CELL_INFO_DISP_MODE );
-            Container()->GetMcnValue( iMCN );
-            //for MCN, values need to be switched since Off = 0 in shared data, 1 on screen
-            SwitchOnOffValue( iMCN );
-            currentItem = iMCN;
-            break;
-        case EGSNetworkModeItemId:
-            resourceId = R_NET_NETWORK_MODE_LBX;
-            settingPageTitle = StringLoader::LoadLC( R_NET_NETWORK_MODE );
-            currentItem = Container()->GetCurrentNetworkModeSelectionL();
-            break;
-        default:
-            break;
-        }
-
-    
-
-    //Checking if the phone is in offline mode
-    const TBool iOfflineMode = IsPhoneOfflineL();
-
-    // If it is in offline mode, then we dont launch the NW mode setting page at all
-    if (  iOfflineMode /*&& aPage == EGSNetworkModeItemId*/ )
-        {
-        HBufC* string = StringLoader::LoadLC( R_OFFLINE_MODE );
-        CAknErrorNote* note = new ( ELeave ) CAknErrorNote ( ETrue );
-        note->ExecuteLD( *string );
-        CleanupStack::PopAndDestroy( string );
-        }
-    else // if not offline mode we show the setting page
-        {
-        
-        CGSRadioButtonSettingPageItemTextArray* itemArray =
-                CGSRadioButtonSettingPageItemTextArray::NewL( resourceId, *iCoeEnv, NULL );
-
-        // network mode requires special handling as items in the settings page
-        // are variated. The method below checks which items to display & hide.
-        if ( aPage == EGSNetworkModeItemId )
-            {
-            Container()->CheckAndAlterContentsL( *itemArray );
-            }
-
-        CleanupStack::PushL( itemArray );
-
-        TInt currentIndex = itemArray->IndexForFeatureIdL( currentItem );
-
-        // no editor resource given
-        iSettingDlg = new ( ELeave ) CAknRadioButtonSettingPage(
-                settingPageTitle, EAknSettingPageNoOrdinalDisplayed, 0, 0,
-                R_SETTING_PAGE, currentIndex, itemArray );
-        itemArray->SetRadioButtonSettingPage( *iSettingDlg );
-
-        const TInt prevSelection = currentIndex;
-        if ( settingPageTitle )
-        	{
-        	iSettingDlg->SetSettingTextL( *settingPageTitle );	
-        	}
-
-        //Start listening if call occurs
-        iPhoneSettingsEngine->SetNetSAObserver( *this );
-        
-        __GSLOGSTRING( "[CGSNetworkPlugin::ShowSettingPageL] Executing dialog" );
-        const TInt res =
-            iSettingDlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged );
-        __GSLOGSTRING( "[CGSNetworkPlugin::ShowSettingPageL] Dialog closed" );
-        iSettingDlg = NULL;
-        // Get the feature id corresponding to array index
-        const TGSNetworkModeItems currentFeature = IntToEnum( currentIndex );
-
-        if ( res )
-            {
-            //not required for network mode UI item.
-            //other items require calling this method.
-            if (aPage != EGSNetworkModeItemId)
-				{
-				CreateNetworkSsCallL(currentFeature, aPage);
-				}
-			else if (prevSelection != currentIndex)
-				{
-				if ( iPsmActive->Mode() == EPsmsrvModePowerSave )
-					{
-					// If PSM is on, block setting:
-					DisplayBlockNoteL();
-					}
-				else
-					{
-					// Show the confirmation query. Uses TGSNetworkModeItems.
-					Container()->SetCurrentNetworkModeSelectionL(currentFeature);
-					}
-				}
-			}
-		CleanupStack::PopAndDestroy(itemArray);
-		}
-	//We'll update listbox for Network Mode when we're sure that phone is not
-    //in Offline mode
-    if ( aPage != EGSNetworkModeItemId )
-        {
-        UpdateListBoxL( aPage );
-        }
-
-    CleanupStack::PopAndDestroy( settingPageTitle );
-
-    __GSLOGSTRING( "[CGSNetworkPlugin::ShowSettingPageL] End" );
-    }
-
-// ---------------------------------------------------------------------------
-//
-// utility for converting TInt to TGSNetworkModes enum.
-//
-// ---------------------------------------------------------------------------
-TGSNetworkModeItems CGSNetworkPlugin::IntToEnum( TInt aFeatureId )
-    {
-    TGSNetworkModeItems mode = EGSNetworkModeDualmode;
-    TInt supportedNetworks = Container()->NetPluginModel()->GetSupportedNetworksL();
-    TInt value = 0;
-    
-    switch( aFeatureId )
-        {
-        case EGSNetworkModeDualmode:
-            mode = EGSNetworkModeDualmode;
-            break;
-        case EGSNetworkModeUMTS:
-            value = supportedNetworks & CGSNetworkPluginContainer::ENetFirstBit;           
-            if ( value ) 
-                 {
-                 mode = EGSNetworkModeUMTS;
-                 }
-             else
-            //assume that only dual mode and gsm are possible.
-                 {
-                 mode = EGSNetworkModeGSM;
-                 }
-            break;
-        case EGSNetworkModeGSM:
-            mode = EGSNetworkModeGSM;
-            break;
-        default:
-            // This should not happen as items should always have matching id.
-            __ASSERT_DEBUG( EFalse, User::Panic( KGSNetworkPluginAssertName, KErrArgument ) );
-        }
-    return mode;
-    }
-
-
-// ---------------------------------------------------------------------------
-//
-// If calls are started when in Network Setting Page, it is closed.
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPlugin::HandleCallActivatedL()
-    {
-    __GSLOGSTRING("[GS]--> CGSNetworkPlugin::HandleCallActivatedL");
-
-    CGSNetworkPluginContainer* container = Container();
-    if ( container )
-        {
-        const TInt currentFeatureId = container->CurrentFeatureId();
-
-		    if ( currentFeatureId != EGSNetworkModeSelectionItemId )
-		        {
-		        iPhoneSettingsEngine->CancelProcess();
-		        return;
-		        }
-		    iPhoneSettingsEngine->CancelProcess();
-		    //Close requesting notes
-		    if ( iDlg )
-		        {
-		        HandleSearchingNetworksL( MPsetNetworkInfoObserver::EServiceRequestNone );
-		        HandleRequestingSelectedNetworkL( EFalse );
-		        }
-
-		    //Close available network's list
-		    if ( iNetworkPopupList )
-		        {
-		        iNetworkPopupList->CancelPopup();
-		        iNetworkPopupList = NULL;
-		        }
-		    
-		    CloseDialog();
-		    
-        }
-    __GSLOGSTRING("[GS] <--CGSNetworkPlugin::HandleCallActivatedL");
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Handles errors.
-// From MPsetNetworkInfoObserver.
-// ---------------------------------------------------------------------------
-void CGSNetworkPlugin::HandleNetworkErrorL(
-    const MPsetNetworkInfoObserver::TServiceRequest aRequest,
-    const TInt aError )
-    {
-
-#ifdef _DEBUG
-    TBuf<KGSNetworkModeDebugStrLen> requestBuf;
-    GSNetworkDebugHelper::NetworkInfoRequestToDes( aRequest, requestBuf );
-    __GSLOGSTRING2( "[CGSNetworkPlugin::HandleNetworkErrorL] %S error:%d",
-                    &requestBuf, aError );
-#endif // _DEBUG
-
-    TInt resourceTxt = KErrNone;
-    switch ( aRequest )
-        {
-        case MPsetNetworkInfoObserver::EServiceRequestGetNetworkInfo:
-            iPhoneSettingsEngine->CancelProcess();
-            iApprovedNetwork = EFalse;
-            break;
-        case MPsetNetworkInfoObserver::EServiceRequestSetNetworkAutomatic:
-        case MPsetNetworkInfoObserver::EServiceRequestSetNetwork:
-        default:
-            break;
-        }
-
-    TBool ignore = EFalse;
-
-    switch ( aError )
-        {
-        case KErrGsmNetCauseCallActive:
-            ignore = ETrue; //do not show an error
-            break;
-        case KErrGsm0707NoNetworkService:
-            resourceTxt = R_NO_NETWORK_FOUND;
-            break;
-        case KErrGsmOfflineOpNotAllowed:
-            resourceTxt = R_OFFLINE_MODE;
-            break;
-        default:
-            resourceTxt = R_NO_NETWORK_ACCESS;
-            break;
-        }
-    if ( !ignore )
-        {
-        ShowNoteL( resourceTxt, KGSErrorNote );
-        iApprovedNetwork = EFalse;
-        }
-    __GSLOGSTRING("[GS] <--CGSNetworkPlugin::HandleNetworkErrorL");
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Check if calls are active and show note if Nw-menu is tried to be opened
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPlugin::CheckCallActiveL( TGSNetworkItemIds aItemId )
-    {
-    __GSLOGSTRING("[GS]--> CGSNetworkPlugin::CheckCallActiveL");
-    if ( iPhoneSettingsEngine->IsCallActive() == CPsetSAObserver::EPSetCallActive )
-        {
-        ShowNoteL( R_ONGOING_CALL, KGSErrorNote );
-        return;
-        }
-
-    // Show network mode selection only if the mode value is already available!
-    if ( aItemId == EGSNetworkModeItemId && !iSettingDlg
-         && Container()->NetPluginModel()->GetNetworkMode()
-         != KGSNetworkModeCapsNotUpdated
-         )
-        {
-#ifdef FF_POWER_SAVE            
-            if ( iPsmActive->Mode() == EPsmsrvModePowerSave )
-                {
-                // If PSM is on, block setting:
-                DisplayBlockNoteL();
-                }
-            else
-                {
-#endif // FF_POWER_SAVE                    
-                ShowSettingPageL( EGSNetworkModeItemId );
-#ifdef FF_POWER_SAVE
-                }
-#endif // FF_POWER_SAVE 
-        }
-    else if( !iSettingDlg         
-    	    //&& Container()->NetPluginModel()->GetNetworkMode()
-            /*!= KGSNetworkModeCapsNotUpdated*/ )
-        {
-        ShowSettingPageL( EGSNetworkModeSelectionItemId );
-        }
-    __GSLOGSTRING("[GS] <--CGSNetworkPlugin::CheckCallActiveL");
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Sets a title to a given popup list.
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPlugin::SetTitleToPopupL( CAknPopupList& aList, TInt aTitleID )
-    {
-    HBufC* text = StringLoader::LoadLC( aTitleID );
-    aList.SetTitleL( *text );
-    CleanupStack::PopAndDestroy( text );
-    text = NULL;
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Sets a title to a settings page.
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPlugin::SetTitleToSettingsL( CAknRadioButtonSettingPage& aDlg,
-                                              TInt aTitleID )
-    {
-    HBufC* title = StringLoader::LoadLC( aTitleID );
-    aDlg.SetSettingTextL( *title );
-    CleanupStack::PopAndDestroy( title );
-    title = NULL;
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Appends given item to given list
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPlugin::AppendItemL( CDesCArrayFlat& aList, TInt aItem )
-    {
-    HBufC* string = StringLoader::LoadLC( aItem );
-    aList.AppendL( *string );
-    CleanupStack::PopAndDestroy( string );
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Shows a note if GPRS is active, when MCN is turned on.
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPlugin::CheckGPRSConnectionL( TInt aCurrentItem )
-    {
-    if ( ( iPhoneSettingsEngine->IsGPRSConnected() ==
-                     CPsetSAObserver::EPSetGPRSConnectionActive )
-        && ( aCurrentItem == KGSSettingOff ) ) //if trying to set On...
-        {
-        ShowNoteL( R_ACTIVE_GPRS_CONN_NOTE, KGSInformationNote );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Set MCN value: off => on, on => off.
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPlugin::SwitchOnOffValue( TInt& aValue )
-    {
-    if ( aValue == EGSMcnSetOn )
-        {
-        aValue = EGSMcnSetOff;
-        }
-    else
-        {
-        aValue = EGSMcnSetOn;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Create new Net container.
-//
-// ---------------------------------------------------------------------------
-//
-void CGSNetworkPlugin::NewContainerL()
-    {
-    iContainer = new ( ELeave ) CGSNetworkPluginContainer( this );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CGSNetworkPlugin::HandleListBoxSelectionL
-//
-// Handle user selection in the listbox to perform an associated action
-// ---------------------------------------------------------------------------
-void CGSNetworkPlugin::HandleListBoxSelectionL()
-    {
-    CEikMenuBar* menuBar = this->MenuBar();
-
-    const TInt currentFeatureId = Container()->CurrentFeatureId();
-
-    switch ( currentFeatureId )
-        {
-         case EGSNetworkModeSelectionItemId:
-            CheckCallActiveL( EGSNetworkModeSelectionItemId );
-            return;
-        case EGSMCNItemId:
-            if ( IsPhoneOfflineL() )
-                {
-                HBufC* string = StringLoader::LoadLC( R_OFFLINE_MODE );
-                CAknErrorNote* note = new ( ELeave ) CAknErrorNote ( ETrue );
-                note->ExecuteLD( *string );
-                CleanupStack::PopAndDestroy( string );
-                }
-            else
-                {
-                Container()->GetMcnValue( iMCN );
-                CheckGPRSConnectionL( iMCN );
-                SwitchOnOffValue( iMCN );
-                Container()->SetMcnValue( iMCN );
-                }
-            break;
-        case EGSNetworkModeItemId:
-            CheckCallActiveL( EGSNetworkModeItemId );
-            return;
-        default:
-            break;
-        }
-
-    UpdateListBoxL( currentFeatureId );
-    }
-
-
-// ---------------------------------------------------------------------------
-//
-// Makes a Network/MCN Ss operation.
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPlugin::CreateNetworkSsCallL( TInt aIndex,
-                                             TGSNetworkItemIds aPage  )
-    {
-    __GSLOGSTRING("[GS]--> CGSNetworkPlugin::CreateNetworkSsCallL");
-    if ( aPage == EGSNetworkModeSelectionItemId )
-        {
-        if ( aIndex == CGSNetworkPlugin::EAutomaticMode )
-            {
-            MPsetNetworkSelect::TNetworkInfo info;
-            MPsetNetworkSelect::TSelectMode mode =
-                MPsetNetworkSelect::ENetSelectModeAutomatic;
-            iSearchForNetworksActive = ETrue;
-            iPhoneSettingsEngine->GetNetworkSelectMode( mode );
-            if ( mode == MPsetNetworkSelect::ENetSelectModeAutomatic )
-                {
-                iPreviousState = ETrue;
-                }
-
-            //get the local variation status for auto-auto net search support
-            //the flag is negative... so 1 means "no search allowed".
-            TBool autoNetSearchOff =
-             Container()->NetPluginModel()->AutomaticNetworkSearchSupportedL();
-
-            //autoNetSearch is defaulted to 0
-            if ( iPreviousState && autoNetSearchOff )
-                {
-                PhoneIdle();
-                }
-            else
-                {
-                info.iMode = MPsetNetworkSelect::ENetSelectModeAutomatic;
-                iSearchForNetworksActive = ETrue;
-                iPhoneSettingsEngine->SelectNetworkL( info );
-                }
-            }
-        else //manual mode
-            {
-            iSearchForNetworksActive = ETrue;
-            iPhoneSettingsEngine->GetAvailableNetworksL();
-            }
-        }
-    else // MCN Setting page
-        {
-        iMCN = aIndex;
-        CheckGPRSConnectionL( iMCN );
-        SwitchOnOffValue( iMCN );
-        Container()->SetMcnValue( iMCN );
-        }
-    __GSLOGSTRING("[GS] <--CGSNetworkPlugin::CreateNetworkSsCallL");
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Shows note.
-//
-// ---------------------------------------------------------------------------
-//
-void CGSNetworkPlugin::ShowNoteL( TInt aResourceId, TInt aType )
-    {
-    HBufC* string = StringLoader::LoadLC( aResourceId );
-    switch ( aType )
-        {
-        case KGSErrorNote:
-            {
-            CAknErrorNote* note = new ( ELeave ) CAknErrorNote ( ETrue );
-            note->ExecuteLD( *string );
-            break;
-            }
-        case KGSConfirmationNote:
-            {
-            CAknConfirmationNote* note =
-                new ( ELeave ) CAknConfirmationNote( ETrue );
-            note->ExecuteLD( *string );
-            break;
-            }
-        case KGSInformationNote:
-            {
-            CAknInformationNote* note =
-                new ( ELeave ) CAknInformationNote( ETrue );
-            note->ExecuteLD( *string );
-            break;
-            }
-        default:
-            break;
-        }
-    CleanupStack::PopAndDestroy( string );
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Creates dialog, if it is does not exist yet.
-//
-// ---------------------------------------------------------------------------
-//
-void CGSNetworkPlugin::CheckAndCreateDlgL( TBool aDelayOff )
-    {
-    if ( !iDlg )
-        {
-        iDlg = new ( ELeave ) CAknWaitDialog(
-            reinterpret_cast<CEikDialog**> ( &iDlg ), aDelayOff );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Empties fetched network provider's list
-//
-// ---------------------------------------------------------------------------
-//
-void CGSNetworkPlugin::PurgeNetworkList()
-    {
-    __GSLOGSTRING("[GS]--> CGSNetworkPlugin::PurgeNetworkList");
-    if ( iNetworkArray )
-        {
-        iNetworkArray->Reset();
-        delete iNetworkArray;
-        iNetworkArray = NULL;
-        }
-    __GSLOGSTRING("[GS] <--CGSNetworkPlugin::PurgeNetworkList");
-    }
-
-
-// ---------------------------------------------------------------------------
-// CGSNetworkPlugin::Container
-//
-// Returns Network container item
-// ---------------------------------------------------------------------------
-//
-CGSNetworkPluginContainer* CGSNetworkPlugin::Container()
-    {
-    return static_cast <CGSNetworkPluginContainer*> ( iContainer );
-    }
-
-// ---------------------------------------------------------------------------
-// @@see MSSSettingsRefreshObserver::AllowRefresh
-//
-// Notification to allow refresh from SAT
-// ---------------------------------------------------------------------------
-//
-TBool CGSNetworkPlugin::AllowRefresh(
-                const TSatRefreshType aType,
-                const TSatElementaryFiles aFiles )
-    {
-    __GSLOGSTRING("[GS]--> CGSNetworkPlugin::AllowRefresh");
-    TBool allowRefresh = ETrue;
-    if ( iPhoneSettingsEngine->IsCallActive() == CPsetSAObserver::EPSetCallActive )
-        {
-        allowRefresh = EFalse;
-        }
-
-    //check that aFiles has a value before issuing a refresh command
-    //no need to check for a specific file...
-    if ( ( aType != EFileChangeNotification ) ||
-         ( aType == EFileChangeNotification ) &&
-         ( aFiles & KCsp1Ef ||  aFiles & KCsp2Ef ) )
-        {
-        if ( iNetworkPopupList )
-            {
-            allowRefresh = EFalse;
-            }
-        }
-
-    __GSLOGSTRING1("[GS]    AllowRefresh: allowRefresh: %d", allowRefresh);
-    __GSLOGSTRING("[GS] <--CGSNetworkPlugin::AllowRefresh");
-    return allowRefresh;
-    }
-
-
-
-// ---------------------------------------------------------------------------
-// @@see MSSSettingsRefreshObserver::Refresh
-//
-// Do the actual refresh of the UI for CSP file updation
-// ---------------------------------------------------------------------------
-//
-void CGSNetworkPlugin::Refresh(
-                const TSatRefreshType aType,
-                const TSatElementaryFiles aFiles )
-    {
-    __GSLOGSTRING("[GS]--> CGSNetworkPlugin::Refresh");
-    // for a file change notification to be handled, aFiles must always
-    // contain a value
-    if ( ( aType != EFileChangeNotification ) ||
-         ( aType == EFileChangeNotification ) &&
-         ( aFiles & KCsp1Ef ||  aFiles & KCsp2Ef  ) )
-        {
-        //check if this check is required, as it is visible in the UI
-        if ( iNetworkPopupList )
-            {
-            iNetworkPopupList->CancelPopup();
-            iNetworkPopupList = NULL;
-            }
-
-        //Change the network mode to Automatic.
-        MPsetNetworkSelect::TNetworkInfo info;
-        info.iMode = MPsetNetworkSelect::ENetSelectModeAutomatic;
-        iSearchForNetworksActive = ETrue;
-        TRAP_IGNORE( iPhoneSettingsEngine->SelectNetworkL( info ) );
-        __GSLOGSTRING("[GS]    Refresh: before Updating the listbox");
-        TRAP_IGNORE( UpdateListBoxL( EGSNetworkModeSelectionItemId ) );
-        __GSLOGSTRING("[GS]    Refresh: after Updating the listbox");
-        }
-
-    __GSLOGSTRING("[GS] <--CGSNetworkPlugin::Refresh");
-    }
-
-
-// ---------------------------------------------------------------------------
-// CGSNetworkPlugin::PhoneIdle
-//
-// Switch to Phone Idle view. GS is running at the background.
-// ---------------------------------------------------------------------------
-//
-void CGSNetworkPlugin::PhoneIdle()
-    {
-    // Fetching the current Idle id
-    TInt idleApp;
-    RProperty::Get( KPSUidAiInformation, KActiveIdleUid, idleApp );
-    TUid idleAppUid = { idleApp } ;
-    TApaTaskList taskList( iEikonEnv->WsSession() );
-    TApaTask task = taskList.FindApp( idleAppUid );
-
-    // Expecting that idle application is open always
-    // if not we dont do anything
-    if( task.Exists() )  // App open
-    	{
-        task.BringToForeground();
-        }
-
-    //No need to reset network search on exit
-    iSearchForNetworksActive = EFalse;
-    }
-
-
-// -----------------------------------------------------------------------------
-// When this method is called, view checks based on highlight focus, if the MSK
-// label is correct.
-// -----------------------------------------------------------------------------
-//
-void CGSNetworkPlugin::CheckMiddleSoftkeyLabelL()
-    {
-    }
-
-
-// -----------------------------------------------------------------------------
-// Remove unnecessary commands from Middle softkey.
-// @flag = ETrue means presently MSK value is "Change" so we remove that
-// @flag = EFalse means presently MSK value is "Context Options" so we remove that
-// -----------------------------------------------------------------------------
-//
-void CGSNetworkPlugin::RemoveCommandFromMSK(const TBool flag )
-    {
-    CEikButtonGroupContainer* cbaGroup = Cba();
-    if ( cbaGroup )
-        {
-        if ( flag )
-            {
-            cbaGroup->RemoveCommandFromStack(
-                                KGSMSKControlID, EGSMSKCmdAppChange );
-            }
-        else
-            {
-            cbaGroup->RemoveCommandFromStack(
-                                KGSMSKControlID, EAknSoftkeyContextOptions );
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Sets middle softkey label.
-// ---------------------------------------------------------------------------
-//
-void CGSNetworkPlugin::SetMiddleSoftKeyLabelL(
-    const TInt aResourceId, const TInt aCommandId )
-    {
-    CEikButtonGroupContainer* cbaGroup = Cba();
-    if ( cbaGroup )
-        {
-        HBufC* middleSKText = StringLoader::LoadLC( aResourceId );
-        TPtr mskPtr = middleSKText->Des();
-        cbaGroup->AddCommandToStackL(
-            KGSMSKControlID,
-            aCommandId,
-            mskPtr );
-        CleanupStack::PopAndDestroy( middleSKText );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CGSNetworkPlugin::HandleClientRectChange
-//
-//
-// -----------------------------------------------------------------------------
-//
-void CGSNetworkPlugin::HandleClientRectChange()
-    {
-    if ( iContainer )
-        {
-        iContainer->SetRect( ClientRect() );
-        }
-    }
-
-// ========================= From CGSPluginInterface ==================
-
-// -----------------------------------------------------------------------------
-// CGSNetworkPlugin::GetCaptionL
-//
-//
-// -----------------------------------------------------------------------------
-//
-void CGSNetworkPlugin::GetCaptionL( TDes& aCaption ) const
-    {
-    HBufC* result = StringLoader::LoadL( R_GS_NET_VIEW_CAPTION );
-    aCaption.Copy( *result );
-    delete result;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CGSNetworkPlugin::PluginProviderCategory
-//
-//
-// -----------------------------------------------------------------------------
-//
-TInt CGSNetworkPlugin::PluginProviderCategory() const
-    {
-    //This plugin is created by 3rd party.
-    return KGSPluginProviderInternal;
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Updates specific value to container.
-//
-// ---------------------------------------------------------------------------
-//
-void CGSNetworkPlugin::UpdateListBoxL( const TInt& aListItem,
-                                       const TInt aNewValue )
-    {
-    if ( iContainer && iContainer->iListBox )
-        {
-        Container()->UpdateListBoxL( aListItem, aNewValue );
-        }
-    CheckMiddleSoftkeyLabelL();
-    }
-
-// -----------------------------------------------------------------------------
-// CGSNetworkPlugin::CreateIconL()
-//
-//
-// -----------------------------------------------------------------------------
-//
-CGulIcon* CGSNetworkPlugin::CreateIconL( const TUid aIconType )
-    {
-    //EMbm<Mbm_file_name><Bitmap_name>
-    CGulIcon* icon;
-    TParse* fp = new( ELeave ) TParse();
-    CleanupStack::PushL( fp );
-    fp->Set( KGSNetworkPluginIconDirAndName, &KDC_BITMAP_DIR, NULL );
-
-    if( aIconType == KGSIconTypeLbxItem && PhoneOnline() )
-        {
-        icon = AknsUtils::CreateGulIconL(
-            AknsUtils::SkinInstance(),
-            KAknsIIDQgnPropSetNetworkSub,
-            fp->FullName(),
-            EMbmGsnetworkpluginQgn_prop_set_network_sub,
-            EMbmGsnetworkpluginQgn_prop_set_network_sub_mask );
-        }
-    else if( aIconType == KGSIconTypeLbxItem /*->phone offline*/ )
-        {
-        icon = AknsUtils::CreateGulIconL(
-            AknsUtils::SkinInstance(),
-            KAknsIIDQgnPropSetNetworkSub,
-            fp->FullName(),
-            EMbmGsnetworkpluginQgn_prop_set_network_sub_offline,
-            EMbmGsnetworkpluginQgn_prop_set_network_sub_offline_mask );
-        }
-    else
-        {
-        icon = CGSPluginInterface::CreateIconL( aIconType );
-        }
-    CleanupStack::PopAndDestroy( fp );
-    return icon;
-    }
-
-// ---------------------------------------------------------------------------
-// CGSNetworkPlugin::HandleNotifyPSL
-//
-// Handling PS keys change
-// ---------------------------------------------------------------------------
-//
-void CGSNetworkPlugin::HandleNotifyPSL( const TUid aUid, const TInt& aKey,
-                                        const TRequestStatus& /* aStatus */ )
-    {
-    if ( aUid == KPSUidBluetoothSapConnectionState &&
-         aKey == KBTSapConnectionState )
-        {
-        Visible();
-        }
-    }
-
-// ---------------------------------------------------------
-// CGSNetworkPlugin::IsPhoneOfflineL
-//
-// Checks if phone is in offline mode or not.
-// Return ETrue if phone is in offline mode.
-// Return EFalse if phone is not in offline mode.
-// ---------------------------------------------------------
-//
-TBool CGSNetworkPlugin::IsPhoneOfflineL() const
-    {
-    if ( FeatureManager::FeatureSupported( KFeatureIdOfflineMode ) )
-        {
-        CRepository* repository = CRepository::NewLC( KCRUidCoreApplicationUIs );
-        TInt connAllowed = 1;
-        repository->Get( KCoreAppUIsNetworkConnectionAllowed, connAllowed );
-        CleanupStack::PopAndDestroy();  // repository
-        if ( !connAllowed )
-            {
-            return ETrue;
-            }
-        }
-    return EFalse;
-    }
-
-
-// ----------------------------------------------------------------------------
-// CGSNetworkPlugin::DynInitMenuPaneL()
-//
-// Display the dynamic menu
-// ----------------------------------------------------------------------------
-void CGSNetworkPlugin::DynInitMenuPaneL( TInt aResourceId,
-                                         CEikMenuPane* aMenuPane )
-    {
-    // show or hide the 'help' menu item when supported
-    if( aResourceId == R_GS_MENU_ITEM_HELP )
-        {
-        User::LeaveIfNull( aMenuPane );
-
-        if ( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
-            {
-            aMenuPane->SetItemDimmed( EAknCmdHelp, EFalse );
-            }
-        else
-            {
-            aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue );
-            }
-        }
-    }
-
-
-//Disabling warning caused by err variable used inside macros
-#pragma diag_suppress 550
-// -----------------------------------------------------------------------------
-// CGSNetworkPlugin::GetValue()
-//
-// -----------------------------------------------------------------------------
-//
-void CGSNetworkPlugin::GetValue( const TGSPluginValueKeys aKey,
-                                 TDes& aValue )
-    {
-    switch( aKey )
-        {
-        case EGSPluginKeySettingsItemValueString:
-            // Operator name is async function but GetValue is synchronous.
-            // As a result the first GetValue call might not contain updated
-            // operator name. A callback will however ask to update parent plugin
-            // which will then call GetValue a second time and the operator name
-            // will then be updated.
-            if( !iNWSession )
-                {
-                __GSLOGSTRING(" [CGSNetworkPlugin::GetValue] Opening iNWSession..." );
-
-                // Create network handling engine session.
-                // Question: is this callback one-shot or constant observer?
-                TRAPD( err, iNWSession = CreateL( *this, iNWInfo ) );
-                __GSLOGSTRING1(" [CGSNetworkPlugin::GetValue] Done. Err:%d", err );
-                }
-            aValue.Copy( iNetworkText->Des() );
-            break;
-        default:
-            aValue.Append( KEmptyStr );
-            break;
-        }
-    }
-
-//Enabling warnings
-#pragma diag_default 550
-// -----------------------------------------------------------------------------
-// CGSNetworkPlugin::GetNetworkValues()
-// Get network status
-// qtn.cp.detail.cellular.operational / qtn.cp.detail.cellular.offline
-// qtn_cp_detail_cellular_operational / qtn_cp_detail_cellular_offline
-// and operator name.
-// -----------------------------------------------------------------------------
-//
-void CGSNetworkPlugin::UpdateNetworkTextL()
-    {
-    // On default text is 'off-line', if online status is received use,
-    // 'operational'.
-    TInt networkStatusRscId = R_CELLULAR_OFFLINE;
-
-    if( iNetworkText )
-        {
-        delete iNetworkText;
-        iNetworkText = NULL;
-        }
-
-    if( PhoneOnline() )
-        {
-        __GSLOGSTRING(" [CGSNetworkPlugin::UpdateNetworkTextL] Loading operational-text" );
-        // The service provider name may missed in SIM card, so display the operator name
-        // which returned by NTSY here.
-        iNetworkText = iNWInfo.iOperatorNameInfo.iName.AllocL();
-        }
-    else
-        {
-        __GSLOGSTRING(" [CGSNetworkPlugin::UpdateNetworkTextL] Loading offline-text" );
-        networkStatusRscId = R_CELLULAR_OFFLINE;
-        iNetworkText = StringLoader::LoadL( networkStatusRscId );
-        }
-    __GSLOGSTRING1( "[CGSNetworkPlugin::UpdateNetworkTextL] iNetworkText:%S ", iNetworkText );
-    }
-
-
-//Disabling warning caused by err variable used inside macros
-#pragma diag_suppress 550
-// -----------------------------------------------------------------------------
-// CGSNetworkPlugin::HandleNetworkMessage
-// From MNWMessageObserver.
-//
-// -----------------------------------------------------------------------------
-//
-void CGSNetworkPlugin::HandleNetworkMessage( const TNWMessages aMessage )
-    {
-#ifdef _DEBUG
-    TBuf<KGSNetworkModeDebugStrLen> messageBuf;
-    GSNetworkDebugHelper::NetworkMessageToDes( aMessage, messageBuf );
-    __GSLOGSTRING1( "[CGSNetworkPlugin::HandleNetworkMessage] %S",
-                    &messageBuf );
-#endif // _DEBUG
-
-    switch( aMessage )
-        {
-        case ENWMessageNetworkInfoChange:
-            TRAPD
-                (
-                err,
-                UpdateNetworkTextL();
-                )
-            __GSLOGSTRING1(
-                    "[CGSNetworkPlugin::HandleNetworkMessage] Update network text error:%d.",
-                    err );
-            TRAPD
-                (
-                err2,
-                UpdateNetworkSettingPageL();
-                )
-            __GSLOGSTRING1(
-                    "[CGSNetworkPlugin::HandleNetworkMessage] Update network setting page error:%d.",
-                    err2 );
-            Parent()->UpdateView();
-            break;
-        default:
-            break;
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CGSNetworkPlugin::UpdateNetworkSettingPageL
-//
-//
-// -----------------------------------------------------------------------------
-//
-void CGSNetworkPlugin::UpdateNetworkSettingPageL()
-    {
-    // If network mode setting page is open, close it and open
-    // again so it will update the selected value correctly.
-    // Whoopee! Who said setting dialogs are dumb?
-    if( iSettingDlg && Container()->CurrentFeatureId() ==  EGSNetworkModeItemId )
-        {
-        __GSLOGSTRING( "[CGSNetworkPlugin::UpdateNetworkSettingPageL] Closing and reopening dialog..." );
-        CloseDialog();
-        ShowSettingPageL( EGSNetworkModeItemId );
-        }
-    }
-
-//Enabling warnings
-#pragma diag_default 550
-
-// -----------------------------------------------------------------------------
-// CGSNetworkPlugin::HandleNetworkError
-// From MNWMessageObserver.
-//
-// -----------------------------------------------------------------------------
-//
-void CGSNetworkPlugin::HandleNetworkError( const TNWOperation aOperation,
-                                           TInt aErrorCode )
-    {
-    // Probably no need to do anything as default assumption is off-line unless
-    // iNWInfo.iRegistrationStatus defines otherwise. Question is, does
-    // iNWSession update iNWInfo values to anything sensible in case of error.
-#ifdef _DEBUG
-    TBuf<KGSNetworkModeDebugStrLen> operationBuf;
-    GSNetworkDebugHelper::NetworkOperationToDes( aOperation, operationBuf );
-    __GSLOGSTRING2( "[CGSNetworkPlugin::HandleNetworkError] %S error:%d",
-                    &operationBuf, aErrorCode );
-#endif // _DEBUG
-
-    // Later network operator name seems to be updated after HandleNetworkError
-    // so we probably want to update the name also in UI as soon as possible.
-    TRAP_IGNORE( UpdateNetworkTextL(); );
-
-    // CGSParentPlugin::DoDeactivate() will delete it's container so calling
-    // CGSParentPlugin::UpdateView() should not cause unnecessary container
-    // updates.
-    Parent()->UpdateView();
-    }
-
-
-// -----------------------------------------------------------------------------
-// CGSNetworkPlugin::Parent
-//
-//
-// -----------------------------------------------------------------------------
-//
-CGSParentPlugin* CGSNetworkPlugin::Parent()
-    {
-    CGSParentPlugin* parent = static_cast<CGSParentPlugin*>(
-            AppUi()->View( KGSConPluginUid ) );
-    return parent;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CGSNetworkPlugin::PhoneOnline
-//
-//
-// -----------------------------------------------------------------------------
-//
-TBool CGSNetworkPlugin::PhoneOnline()
-    {
-#ifdef _DEBUG
-    TBuf<KGSNetworkModeDebugStrLen> statusBuf;
-    GSNetworkDebugHelper::NetworkStatusToDes( iNWInfo.iRegistrationStatus, statusBuf );
-    __GSLOGSTRING1( "[CGSNetworkPlugin::PhoneOnline] %S", &statusBuf );
-#endif // _DEBUG
-
-    TBool online = EFalse;
-    switch( iNWInfo.iRegistrationStatus )
-        {
-        case ENWRegisteredOnHomeNetwork: // Same functionality as below
-        case ENWRegisteredRoaming:
-            {
-            online = ETrue;
-            break;
-            }
-        default:
-            {
-            online = EFalse;
-            break;
-            }
-        }
-    return online;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CGSNetworkPlugin::CloseDialog
-//
-//
-// -----------------------------------------------------------------------------
-//
-void CGSNetworkPlugin::CloseDialog()
-    {
-    //Send ESC key sequence to setting dialog, so that it closes itself.
-    if ( iSettingDlg )
-        {
-        TKeyEvent event;
-        event.iCode = EKeyEscape;
-        event.iScanCode = EStdKeyEscape;
-        event.iRepeats = 0;
-        TRAP_IGNORE( iCoeEnv->SimulateKeyEventL( event, EEventKeyDown );
-                     iCoeEnv->SimulateKeyEventL( event, EEventKey );
-                     iCoeEnv->SimulateKeyEventL( event, EEventKeyUp ); );
-        }
-    }
-
-#ifdef FF_POWER_SAVE
-// ----------------------------------------------------------------------------------
-// CGSDisplayPlugin::DisplayBlockNoteL()
-// ----------------------------------------------------------------------------------
-void CGSNetworkPlugin::DisplayBlockNoteL()
-    {
-    HBufC* prompt = iCoeEnv->AllocReadResourceLC(
-            R_GS_POWER_SAVING_PROTECTED_SETTINGS_INFONOTE );
-    CAknInformationNote* note = new ( ELeave ) CAknInformationNote( ETrue );
-    note->ExecuteLD( *prompt );
-    CleanupStack::PopAndDestroy( prompt );
-    }
-
-// ----------------------------------------------------------------------------------
-// CGSDisplayPlugin::UpdateOnPsmChanged()
-// ----------------------------------------------------------------------------------
-void CGSNetworkPlugin::UpdateOnPsmChanged() 
-    {
-    __GSLOGSTRING( "[CGSNetworkPlugin::UpdateOnPsmChanged]" );
-    
-    if ( Container() && Container()->NetPluginModel() )
-        {
-        Container()->NetPluginModel()->StartAsynGetCurrentNetworkModeSelectionL();
-        }
-    }
-
-#endif // FF_POWER_SAVE
-
-//End of File