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

/*
* Copyright (c) 2007 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:  GSPDataHSDPAPlugin implementation.
*
*/

#ifndef GSPDATAHSDPAPLUGIN_H
#define GSPDATAHSDPAPLUGIN_H

// User includes

// System includes
#include <gsplugininterface.h>
#include <aknview.h>
#include <ConeResLoader.h>
#include <eikclb.h>
#include <gspubsubslistener.h>
#include <mgssettingpsobserver.h>
#include <MProfileEngine.h>
#include <MProEngProfileActivationObserver.h>
#include <MProEngNotifyHandler.h>

// Classes referenced
class CAknNavigationDecorator;
class CAknViewAppUi;
class CAknWaitDialog;
class CGSPDataHSDPAModel;

// Constants
const TUid KGSPDataHSDPAPluginUID   = { 0x10282DC8 };
_LIT( KPDataHSDPAResourceFileName, "z:GSPDataHSDPAPluginRsc.rsc" );

// CLASS DECLARATION

/**
*  CGSPDataHSDPAPlugin view class.
*
* This class handles state and application logic of PDataHSDPA settings.
* The plugin is a type of EGSItemTypeSettingDialog and therefore the GS FW will
* call HandleSelection() instead of DoActivate().
*
*/
class CGSPDataHSDPAPlugin : public CGSPluginInterface,
                            public MGSSettingPSObserver,
                            public MProEngProfileActivationObserver
    {
    public: // Constructors and destructor

        /**
        * Symbian OS two-phased constructor
        * @return
        */
        static CGSPDataHSDPAPlugin* NewL( TAny* aInitParams );

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

	public: // From CAknView

        /**
        * See base class.
        */
        TUid Id() const;

    public: // From CGSPluginInterface

        /**
        * See base class.
        */
        void GetCaptionL( TDes& aCaption ) const;

        /**
        * See base class.
        */
        TInt PluginProviderCategory() const;

        /**
        * See base class.
        */
        TGSListboxItemTypes ItemType();

        /**
        * See base class.
        */
        void GetValue( const TGSPluginValueKeys aKey,
                       TDes& aValue );

        /**
        * See base class.
        */
        void HandleSelection( const TGSSelectionTypes aSelectionType );

        /**
        * See base class.
        */
        TGSMenuActivationItems MenuActivationItem();
        
        /**
        * @see CGSPluginInterface header file.
        */
        TBool Visible() const;

    public: //From MProEngProfileActivationObserver
    
        /**
        * Callback for device profile change
        * Used for observing offline mode activation
        */
        void HandleProfileActivatedL( TInt aProfileId );

    protected: // New

        /**
        * C++ default constructor.
        */
        CGSPDataHSDPAPlugin();

        /**
        * Symbian OS default constructor.
        */
        void ConstructL();

    protected: // From CAknView

        /**
        * See base class.
        */
        void DoActivateL( const TVwsViewId& aPrevViewId,
                          TUid aCustomMessageId,
                          const TDesC8& aCustomMessage );

        /**
        * See base class.
        */
        void DoDeactivate();

    private: // New

        /**
        * Sets HSDPA state.
        * Launches a setting page with a confirmation dialog
        */
        void SetHSDPAStateL();

        /**
        * Opens localized resource file.
        */
        void OpenLocalizedResourceFileL(
            const TDesC& aResourceFileName,
            RConeResourceLoader& aResourceLoader );
            
        /**
        * Resets all Active Connections, If Any.
        */
        void ResetActiveConnectionsL();
        
       /*
        *
        * Indexes of HSDPA on/off items in a listbox are not the same as 
        * aPDataHSDPState value. Therefore matching between these two is 
        * required.
       */
        TBool ShowHSDPASettingPageL( TInt& aHsdpaState );

        /**
        * Leaving version of GetValue()
        */
        void GetValueL( TDes& aValue );
        
        /**
        *  Updating parent view
        */
        void UpdateParentViewL();
    
    private: // From MGSSettingPSObserver
        /**
        * Callback from MGSSettingPSObserver
        */
        void HandleNotifyPSL( const TUid aUid, const TInt& aKey, 
                              const TRequestStatus& aStatus );

    protected: // Data

        // PDataHSDPA model.
        CGSPDataHSDPAModel* iModel;

        // Resource loader.
        RConeResourceLoader iResources;
        
        //PubSub object for NW mode state listener
        CGSPubSubsListener* iNwModeListener;
        
        MProfileEngine* iProfileEngine;
        MProEngNotifyHandler* iNotifyHandler;
        
        TInt iNetworkMode;
        
        TBool iHSDPASettingSupport;
    };

#endif // GSPDATAHSDPAPLUGIN_H
// End of File