gssettingsuis/Gs/GSNetworkPlugin/Src/GSNetworkPluginContainer.cpp
changeset 18 e3554c9069b6
parent 4 3f8368f032cf
child 19 30540fccecae
--- a/gssettingsuis/Gs/GSNetworkPlugin/Src/GSNetworkPluginContainer.cpp	Tue Feb 02 00:22:03 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,604 +0,0 @@
-/*
-* Copyright (c) 2003 - 2006 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:  Container for Network folder in GSTelPlugin.
-*
-*/
-
-
-// INCLUDE FILES
-#include "GSNetworkPluginModel.h"       //for CGSModel
-#include "gssettingid.h"            //for view IDs
-#include "GSNetworkPluginContainer.h" //for CGSNetworkPluginContainer
-#include "GsLogger.h"
-
-
-#include <aknlists.h>               //for CAknSettingStyleListBox
-#include <aknnotewrappers.h>        //for AknErrorNote
-#include <aknappui.h>               //for iAvkonAppUi
-#include <StringLoader.h>           //for StringLoader
-#include <GsNetworkPluginRsc.rsg>       //for resource IDs
-#include <PsetContainer.h>          //for CPsetContainer
-#include <PsetNetwork.h>            //for CPsetNetwork
-#include <gslistbox.h>              //for listbox classes
-#include <csxhelp/cp.hlp.hrh>
-#include <gsfwviewuids.h>           // for KUidGS
-#include <MPsetNetworkModeObs.h>    //for network mode values
-#include <gsmerror.h>               //for GSM-specific error messages
-#include <featmgr.h>                //Feature Manager
-#include <MPsetNetworkModeObs.h>
-#include "GSNetworkDebugHelper.h"
-
-#ifndef RD_STARTUP_CHANGE
-    #include <sysstartup.h>             //Startup reasons
-#else
-    #include <starterclient.h>          // Startup reasons
-#endif // RD_STARTUP_CHANGE
-
-
-// LOCAL CONSTANTS
-_LIT( KNameOfClass, "CGSNetworkPluginContainer" );
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------------------------
-// C++ Constructor. Needed for initializing iPlugin.
-// ---------------------------------------------------------------------------
-CGSNetworkPluginContainer::CGSNetworkPluginContainer( CGSNetworkPlugin* aPlugin )
-    :iPlugin( aPlugin )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Symbian OS two phased constructor with pointer to Network object
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPluginContainer::ConstructL( const TRect& aRect )
-    {
-    iListBox = new ( ELeave ) CAknSettingStyleListBox;
-
-    //model construction
-    iModel = CGSNetworkPluginModel::NewL( this, iPlugin );
-
-    BaseConstructL( aRect,
-                    R_GS_NET_VIEW_TITLE,
-                    R_NET_LBX );
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Destructor
-//
-// ---------------------------------------------------------------------------
-CGSNetworkPluginContainer::~CGSNetworkPluginContainer()
-    {
-    if ( iListboxItemArray )
-        {
-        delete iListboxItemArray;
-        iListboxItemArray = NULL;
-        }
-
-    if( iModel )
-        {
-        delete iModel;
-        iModel = NULL;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Creates list box
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPluginContainer::ConstructListBoxL( TInt aResLbxId )
-    {
-    __GSLOGSTRING("[GS]--> CGSNetworkPluginContainer::ConstructListBoxL");
-    iListBox->ConstructL( this, EAknListBoxSelectionList );
-    iListboxItemArray = CGSListBoxItemTextArray::NewL( aResLbxId,
-        *iListBox, *iCoeEnv );
-    iListBox->Model()->SetItemTextArray( iListboxItemArray );
-    iListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-
-    CreateListBoxItemsL();
-    __GSLOGSTRING("[GS] <--CGSNetworkPluginContainer::ConstructListBoxL");
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Creates list box items
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPluginContainer::CreateListBoxItemsL()
-    {
-    __GSLOGSTRING("[GS]--> CGSNetworkPluginContainer::CreateListBoxItemsL");
-// do not get check CSP if not using WINS
-#ifndef __WINS__
-    //Set CSP on, if it is not already
-    if ( !iModel->GetCSPStatus() )
-        {
-        iModel->SetCSPActiveL( ETrue );
-        }
-#endif
-
-    if ( FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma ) )
-        {
-        if ( iModel->IsNetworkModeVisible() )
-            {
-            MakeNwModeUiItemL();
-            }
-        }
-
-    MakeNwItemL();
-    MakeMcnItemL();
-    __GSLOGSTRING("[GS] <--CGSNetworkPluginContainer::CreateListBoxItemsL");
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Updates changed list box item
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPluginContainer::UpdateListBoxL( TInt aFeatureId, TInt aValue )
-    {
-    __GSLOGSTRING("[GS]--> CGSNetworkPluginContainer::UpdateListBoxL");
-    switch ( aFeatureId )
-        {
-        case EGSNetworkModeItemId:
-            if ( FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma ) )
-                {
-                if ( iModel->IsNetworkModeVisible() )
-                    {
-                    MakeNwModeUiItemL();
-                    }
-                }
-            break;
-        case EGSNetworkModeSelectionItemId:
-            MakeNwItemL( aValue );
-            break;
-        case EGSMCNItemId:
-            MakeMcnItemL();
-            break;
-        default:
-            Panic( KNameOfClass, EInvalidIndex );
-            break;
-        }
-    iListBox->HandleItemAdditionL();
-    __GSLOGSTRING("[GS] <--CGSNetworkPluginContainer::UpdateListBoxL");
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Creates new Network list box item
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPluginContainer::MakeNwItemL( TInt aValue )
-    {
-    __GSLOGSTRING("[GS]--> CGSNetworkPluginContainer::MakeNwItemL");
-    HBufC* dynamicText = NULL;
-    TInt currentValue = KErrNone;
-
-    if ( aValue != KErrNotFound )
-        {
-        currentValue = aValue;
-        }
-    else
-        {
-    //use bogus values for WINS to avoid jamming the emulator
-#ifdef __WINS__
-    currentValue = EGSManualSelectMode;
-#else
-    currentValue = GetSelectionMode();
-#endif // __WINS__
-        }
-
-    TUint32 resourceId = R_NETSL_NETSELECTMODE_LBX;
-    TInt featureId = EGSAutomaticSelectMode;
-
-    if ( currentValue == EGSManualSelectMode )
-        {
-        featureId = EGSManualSelectMode;
-        }
-
-    dynamicText = CGSItemTextArray::GetItemCaptionFromFeatureIdLC(
-                                                 resourceId,
-                                                 featureId,
-                                                 *iCoeEnv );
-
-#ifndef __WINS__
-    //Create network mode setting item
-    if ( iModel->IsSettingSupported( EGSCSPManualNetworkSelection ) )
-        {
-#endif
-        // Finally, set the dynamic text
-        iListboxItemArray->SetDynamicTextL( EGSNetworkModeSelectionItemId,
-            *dynamicText );
-
-        // And add to listbox
-        iListboxItemArray->SetItemVisibilityL( EGSNetworkModeSelectionItemId,
-            CGSListBoxItemTextArray::EVisible );
-
-#ifndef __WINS__
-        }
-#endif
-
-    CleanupStack::PopAndDestroy( dynamicText );
-    __GSLOGSTRING("[GS] <--CGSNetworkPluginContainer::MakeNwItemL");
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Gets the currently active selection mode.
-//
-// ---------------------------------------------------------------------------
-TInt CGSNetworkPluginContainer::GetSelectionMode()
-    {
-    __GSLOGSTRING("[GS]--> CGSNetworkPluginContainer::GetSelectionMode");
-    MPsetNetworkSelect::TSelectMode mode =
-        iModel->GetNetworkSelectionMode();
-
-    if ( mode == MPsetNetworkSelect::ENetSelectModeManual )
-        {
-        __GSLOGSTRING("[GS] <--CGSNetworkPluginContainer::GetSelectionMode");
-        return EGSManualSelectMode;
-        }
-    else
-        {
-        __GSLOGSTRING("[GS] <--CGSNetworkPluginContainer::GetSelectionMode");
-        return EGSAutomaticSelectMode;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Creates new MCN list box item
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPluginContainer::MakeMcnItemL()
-    {
-    __GSLOGSTRING("[GS]--> CGSNetworkPluginContainer::MakeMcnItemL");
-    HBufC* dynamicText = NULL;
-    TInt readValue = 0;
-
-    GetMcnValue( readValue );
-    TUint32 resourceId = R_MCN_CELL_INFO_DISP_MODE_LBX;
-    TInt featureId = EGSMcnSetOn;
-
-    switch ( readValue ) //resource manipulation
-        {
-        case 0: // Off should be displayed in UI
-            featureId = EGSMcnSetOff;
-            break;
-        case 1: // On should be displayed in UI
-            featureId = EGSMcnSetOn;
-            break;
-        default:
-            break;
-        }
-
-    dynamicText = CGSItemTextArray::GetItemCaptionFromFeatureIdLC(
-                                                 resourceId,
-                                                 featureId,
-                                                 *iCoeEnv );
-
-    // Finally, set the dynamic text
-    iListboxItemArray->SetDynamicTextL( EGSMCNItemId, *dynamicText );
-
-    // And add to listbox
-    iListboxItemArray->SetItemVisibilityL( EGSMCNItemId,
-        CGSListBoxItemTextArray::EVisible );
-
-    CleanupStack::PopAndDestroy( dynamicText );
-    __GSLOGSTRING("[GS] <--CGSNetworkPluginContainer::MakeMcnItemL");
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Gets MCN value from model.
-//
-// ---------------------------------------------------------------------------
-//
-void CGSNetworkPluginContainer::GetMcnValue( TInt &aMcnValue )
-    {
-    iModel->GetMCNSettingValue( aMcnValue );
-    }
-
-// ---------------------------------------------------------------------------
-//
-// Sets MCN value from model.
-//
-// ---------------------------------------------------------------------------
-//
-void CGSNetworkPluginContainer::SetMcnValue( TInt &aMcnValue )
-    {
-    iModel->SetMCNSettingValue( aMcnValue );
-    }
-
-
-// ---------------------------------------------------------------------------
-//
-// Creates network mode ui list box item
-//
-// ---------------------------------------------------------------------------
-void CGSNetworkPluginContainer::MakeNwModeUiItemL()
-    {
-    __GSLOGSTRING("[GS]--> CGSNetworkPluginContainer::MakeNwModeUiItemL");
-    HBufC* dynamicText = NULL;
-
-    // In here KGSNetworkModeCapsNotUpdated means mode is not updated yet
-    if( iModel->GetNetworkMode() != KGSNetworkModeCapsNotUpdated )
-        {
-        // Allocate value to dynamicText from the resource item
-        TUint32 resourceId= R_NET_NETWORK_MODE_LBX;
-        dynamicText = CGSItemTextArray::GetItemCaptionFromFeatureIdLC(
-            resourceId, GetCurrentNetworkModeSelectionL(), *iCoeEnv );
-        }
-    else
-        {
-        _LIT( KEmpty, " ");
-        dynamicText = KEmpty().AllocLC ( );
-        }
-
-    // Finally, set the dynamic text
-    iListboxItemArray->SetDynamicTextL( EGSNetworkModeItemId, *dynamicText );
-
-    // And add to listbox
-    iListboxItemArray->SetItemVisibilityL( EGSNetworkModeItemId,
-        CGSListBoxItemTextArray::EVisible );
-
-    // this variable needs to be removed from cleanup stack
-    CleanupStack::PopAndDestroy( dynamicText );
-    __GSLOGSTRING("[GS] <--CGSNetworkPluginContainer::MakeNwModeUiItemL");
-    }
-
-
-// ---------------------------------------------------------------------------
-// CGSNetworkPluginContainer::CheckAndAlterContentsL
-//
-// Trims non-supported variable options from the array.
-// This array items are displayed as radio button setting page items
-// ---------------------------------------------------------------------------
-//
-void CGSNetworkPluginContainer::CheckAndAlterContentsL(
-                         CGSRadioButtonSettingPageItemTextArray& aItemArray )
-    {
-    __GSLOGSTRING("[GS]--> CGSNetworkPluginContainer::CheckAndAlterContentsL");
-    TInt value = 0;
-    TInt supportedNetworks = iModel->GetSupportedNetworksL();
-    __GSLOGSTRING1("[GS]    CheckAndAlterContentsL: supportedNetworks: %d", supportedNetworks);
-
-    // The 0th item corresponds to DualMode. This is always available in the
-    // setting page, so no actions required, just make it visible.
-    aItemArray.SetItemVisibilityL( EGSNetworkModeDualmode,
-                                   CGSListBoxItemTextArray::EVisible );
-
-    // the first bit corresponds to UMTS
-    value = supportedNetworks & ENetFirstBit;
-    __GSLOGSTRING1("[GS]    CheckAndAlterContentsL: (UMTS)value: %d", value);
-
-    if ( value == EGSNetworkModeUMTS )
-        {
-        aItemArray.SetItemVisibilityL( EGSNetworkModeUMTS,
-                                       CGSListBoxItemTextArray::EVisible );
-        }
-    else
-        {
-        aItemArray.SetItemVisibilityL( EGSNetworkModeUMTS,
-                                       CGSListBoxItemTextArray::EInvisible );
-        }
-
-    // Get the zeroeth value (GSM) from the list
-    value = supportedNetworks & ENetSecondBit;
-    __GSLOGSTRING1("[GS]    CheckAndAlterContentsL: (GSM)value: %d", value);
-
-    if ( value == EGSNetworkModeGSM )
-        {
-        aItemArray.SetItemVisibilityL( EGSNetworkModeGSM,
-                                       CGSListBoxItemTextArray::EVisible );
-        }
-    else
-        {
-        aItemArray.SetItemVisibilityL( EGSNetworkModeGSM,
-                                       CGSListBoxItemTextArray::EInvisible );
-        }
-
-    __GSLOGSTRING("[GS] <--CGSNetworkPluginContainer::CheckAndAlterContentsL");
-    }
-
-// ---------------------------------------------------------------------------
-// CGSNetworkPluginContainer::GetHelpContext(TCoeHelpContext& aContext) const
-// Gets Help
-//
-// ---------------------------------------------------------------------------
-//
-void CGSNetworkPluginContainer::GetHelpContext(TCoeHelpContext& aContext) const
-    {
-    aContext.iMajor = KUidGS;
-    aContext.iContext = KCP_HLP_NETWORK;
-    }
-
-// ---------------------------------------------------------------------------
-// CGSSettListCallContainer::CurrentFeatureId()
-//
-// ---------------------------------------------------------------------------
-//
-TInt CGSNetworkPluginContainer::CurrentFeatureId( ) const
-    {
-    return iListboxItemArray->CurrentFeature( );
-    }
-
-
-void CGSNetworkPluginContainer::HandleNetworkModeChangeL()
-    {
-    UpdateListBoxL( EGSNetworkModeItemId, GetCurrentNetworkModeSelectionL() );
-
-     //updating value
-     CGSRadioButtonSettingPageItemTextArray* nwModeArray =
-            CGSRadioButtonSettingPageItemTextArray::NewL(
-            R_NET_NETWORK_MODE_LBX,
-            *iCoeEnv,
-            NULL );
-     // For showing updated network mode value???
-    CleanupStack::PushL( nwModeArray );
-    CheckAndAlterContentsL( *nwModeArray );
-    TInt currentIndex = nwModeArray->IndexForFeatureIdL(
-        GetCurrentNetworkModeSelectionL() );
-    HBufC* buf = StringLoader::LoadL(
-             R_CONFIRM_NOTE_NWMODE_STRING,
-             nwModeArray->MdcaPoint( currentIndex ),
-             iEikonEnv );
-    CleanupStack::PushL( buf );
-    CAknConfirmationNote* note = new( ELeave ) CAknConfirmationNote( ETrue );
-    note->ExecuteLD( *buf );
-    CleanupStack::PopAndDestroy( buf );
-    CleanupStack::PopAndDestroy( nwModeArray );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CGSNetworkPluginContainer::TelPluginModel
-//
-// Return the model pointer for use in view class
-// ---------------------------------------------------------------------------
-//
-CGSNetworkPluginModel* CGSNetworkPluginContainer::NetPluginModel()
-    {
-    return iModel;
-    }
-
-// ---------------------------------------------------------------------------
-// Sets observer for MSK label updations.
-// ---------------------------------------------------------------------------
-//
-void CGSNetworkPluginContainer::SetMiddleSoftkeyObserver(
-    MGsFWMSKObserver* aObserver )
-    {
-    if ( !iMSKObserver && aObserver )
-        {
-        iMSKObserver = aObserver;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CGSNetworkPluginContainer::OfferKeyEventL
-// Called when a key is pressed.
-// ---------------------------------------------------------------------------
-TKeyResponse CGSNetworkPluginContainer::OfferKeyEventL(
-    const TKeyEvent& aKeyEvent,
-    TEventCode aType )
-    {
-    switch ( aKeyEvent.iCode )
-        {
-        case EKeyUpArrow:
-        case EKeyDownArrow:
-            {
-            TKeyResponse listboxResp =
-                iListBox->OfferKeyEventL( aKeyEvent, aType );
-            if ( iMSKObserver )
-                {
-                iMSKObserver->CheckMiddleSoftkeyLabelL();
-                }
-            return listboxResp;
-            }
-        case EKeyLeftArrow:
-        case EKeyRightArrow:
-            // Listbox takes all events even if it doesn't use them
-            return EKeyWasNotConsumed;
-        default:
-            break;
-        }
-
-    return iListBox->OfferKeyEventL( aKeyEvent, aType );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CGSNetworkPluginContainer::GetCurrentNetworkModeSelectionL
-//
-// Returns the current listbox selection of network mode.
-// ---------------------------------------------------------------------------
-//
-TGSNetworkModeItems CGSNetworkPluginContainer::GetCurrentNetworkModeSelectionL()
-    {
-    TGSNetworkModeItems featureId = EGSNetworkModeDualmode;
-
-    switch( iModel->GetNetworkMode() )
-        {
-        case RMmCustomAPI::KCapsNetworkModeGsm:
-            featureId = EGSNetworkModeGSM;
-            break;
-
-        case RMmCustomAPI::KCapsNetworkModeUmts:
-            featureId = EGSNetworkModeUMTS;
-            break;
-
-        case RMmCustomAPI::KCapsNetworkModeDual:
-            featureId = EGSNetworkModeDualmode;
-            break;
-        default:
-            // Mode might not be updated yet, in which case default is dual.
-            // Not a perfect solution but have to have an item selected in 
-            // options box
-            featureId = EGSNetworkModeDualmode;
-            break;
-        }
-
-#ifdef _DEBUG
-    TBuf<KGSNetworkModeDebugStrLen> selectedModeBuf;
-    GSNetworkDebugHelper::NwToDes( featureId, selectedModeBuf );
-    __GSLOGSTRING1( "[CGSNetworkPluginContainer::GetCurrentNetworkModeSelectionL] %S ",
-                    &selectedModeBuf );
-#endif // _DEBUG
-
-    iModel->CheckState( featureId );
-    return featureId;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CGSNetworkPluginContainer::SetCurrentNetworkModeSelectionL
-//
-//
-// ---------------------------------------------------------------------------
-//
-void CGSNetworkPluginContainer::SetCurrentNetworkModeSelectionL(
-        TGSNetworkModeItems aNetworkModeLbxItem )
-    {
-    __GSLOGSTRING1( "[CGSNetworkPluginContainer::SetCurrentNetworkModeSelectionL] Mode:%d", aNetworkModeLbxItem );
-    TUint32 networkMode;
-    switch ( aNetworkModeLbxItem )
-        {
-        case EGSNetworkModeGSM: //just using the index
-            networkMode = RMmCustomAPI::KCapsNetworkModeGsm;
-            break;
-        case EGSNetworkModeUMTS:
-            networkMode = RMmCustomAPI::KCapsNetworkModeUmts;
-            break;
-        case EGSNetworkModeDualmode:
-        default:
-            networkMode = RMmCustomAPI::KCapsNetworkModeDual;
-            break;
-        }
-    // Don't change the network mode if there is ongoing phone call
-    // since this will disconnect it
-    if ( !iModel->IsCallActive() )
-        {
-        iModel->SetNetworkModeL( networkMode );
-        iSelectedNetworkModeLbxItem = aNetworkModeLbxItem;
-        }
-    __GSLOGSTRING( "[CGSNetworkPluginContainer::SetCurrentNetworkModeSelectionL] End]" );
-    }
-
-
-
-//End of File