gssettingsuis/Gs/GSNetworkPlugin/Inc/GSNetworkPluginContainer.h
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:20:44 +0100
branchRCL_3
changeset 25 7e0eff37aedb
parent 0 8c5d936e5675
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* Copyright (c) 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 the Network sub-folder
*
*/


#ifndef GSNETWORKPLUGINCONTAINER_H
#define GSNETWORKPLUGINCONTAINER_H

// INCLUDES
#include "GSNetworkPluginModel.h"
#include "GsNetworkPlugin.hrh"
#include "GSPhoneSettingConstants.h"  //for GS & PS constants
#include <bldvariant.hrh>
#include <gsbasecontainer.h>
#include <MPsetNetworkModeObs.h>
#include "MGsFWMSKLabelObserver.h"

// CONSTANTS

// MACROS

// DATA TYPES

// FUNCTION PROTOTYPES

// FORWARD DECLARATIONS
class CPsetNetwork;
class MEikListBoxObserver;
class CGSListBoxItemTextArray;
class CGSRadioButtonSettingPageItemTextArray;
class CPsetContainer;
class CGSNetworkPluginModel;
class CGSNetworkPlugin;

// CLASS DECLARATION

/**
*  GSNetworkPluginContainer container class
*
*  container class for Device settings view
*  @lib GSNetworkPlugin.lib
*  @since Series 60_3.1
*/
class CGSNetworkPluginContainer : public CGSBaseContainer
    {
    public:
        enum {
            ENetFirstBit = 1,
            ENetSecondBit = 2
            };

    public: // Constructors and destructor


        /** C++ Constructor */
        CGSNetworkPluginContainer( CGSNetworkPlugin* aPlugin );

        /**
        * Symbian OS constructor.
        * @param aRect Listbox's rect.
        *
        */
        void ConstructL( const TRect& aRect );

        /**
        * Destructor.
        */
        ~CGSNetworkPluginContainer();

    public: //new

        /**
        * Updates listbox's item's value.
        * @since Series 60_3.1
        * @param aItemId An item which is updated.
        */
        void UpdateListBoxL( TInt aItemId, TInt aValue );

        /**
        * Retrieves the currently selected listbox feature id
        * @since Series 60_3.1
        * @return feature id.
        */

        TInt CurrentFeatureId() const;
       /**
        * Gets currently active network selection mode.
        * @return currently active network selection mode
        */
        TInt GetSelectionMode();

        /**
        *  Gets Mcn value from model.
        *  @param aMcnValue MCN value read from shared data.
        */
        void GetMcnValue( TInt &aMcnValue );

        /**
        *  Sets MCN value to model.
        *  @param aMcnValue MCN value written to shared data.
        */
        void SetMcnValue( TInt &aMcnValue );

        /**
        * Trims non-supported variable options from the array
        * This array items are displayed as radio button setting page items
        *
        * @param aItemArray array contents to trim from
        */
        void CheckAndAlterContentsL( CGSRadioButtonSettingPageItemTextArray&
                                    aItemArray );

        /**
        * return the model pointer
        */
        CGSNetworkPluginModel* NetPluginModel();

        /**
        * Defines observer for the middle softkey label changes.
        * Can only be set once. Further attempts are ignored.
        * @since S60 v3.1
        */
        void SetMiddleSoftkeyObserver( MGsFWMSKObserver* aObserver );

        /**
        * OfferKeyEvent to this Call Container class for updating the label
        * Up and Down rocker keys are handled
        * @since S60 v3.1
        */
        TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent,
                                     TEventCode aType );

        /**
        * Callback from model.
        */
        void HandleNetworkModeChangeL();

        /**
        * Returns the current selection of network mode. Note! network
        * selection can be unknow in case network is slow and actual data
        * has not yet been received...
        * @return current network selection.
        */
        TGSNetworkModeItems GetCurrentNetworkModeSelectionL();

        /**
        * Sets the current selection of network mode
        * @param aNetworkMode current selection
        */
        void SetCurrentNetworkModeSelectionL(
                TGSNetworkModeItems aNetworkModeLbxItem );

    protected: // from CGSBaseContainer
        /**
        * Creates list box.
        *
        * @param aResLbxId is resource number to create
        */
        void ConstructListBoxL( TInt aResLbxId );

        /**
        * Required for help.
        *
        */
        void GetHelpContext(TCoeHelpContext& aContext) const;

    private: //new

        /**
        * Creates list box items.
        */
        void CreateListBoxItemsL();

        /**
        * Creates Network list box item.
        * @param aValue value of setting item.
        */
        void MakeNwItemL( TInt aValue = -1 );

        /**
        * Creates MCN list box item.
        */
        void MakeMcnItemL();

        /**
        * Creates Network mode UI list box item.
        */
        void MakeNwModeUiItemL();

    private: // Member variables

        // Resource based features
        CGSListBoxItemTextArray* iListboxItemArray;

        // CGSNetworkPluginModel is the model class of Network plugin.
        CGSNetworkPluginModel*   iModel;

        // Currently active network item in listbox.
        TGSNetworkModeItems iSelectedNetworkModeLbxItem;

        /**
        * Middle softkey label observer.
        * Own.
        */
        MGsFWMSKObserver* iMSKObserver;

        /**
        * Reference to container's owner. Not owned.
        */
        CGSNetworkPlugin* iPlugin;

    };

#endif //GSNETWORKPLUGINCONTAINER_H

//End of File