gssettingsuis/Gs/GSNetworkPlugin/Inc/GSNetworkPluginModel.h
changeset 68 13e71d907dc3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gssettingsuis/Gs/GSNetworkPlugin/Inc/GSNetworkPluginModel.h	Thu Nov 04 13:38:47 2010 +0800
@@ -0,0 +1,289 @@
+/*
+* 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:  Network Settings model.
+*
+*/
+
+
+#ifndef GSNETWORKPLUGINMODEL_H
+#define GSNETWORKPLUGINMODEL_H
+
+#include <e32base.h>
+#include <e32property.h>
+#include <centralrepository.h>
+#include <PsetCSP.h>
+#include <MPsetNetworkModeObs.h>
+#include <PsetNetwork.h>
+
+#include "GSNetworkPluginContainer.h"
+#include "GsNetworkPlugin.hrh"
+
+// CONSTANTS
+
+const TUint32 KGSNetworkModeCapsNotUpdated = KMaxTUint32;
+
+// Used only for debugging. Init value for network mode debug strings.
+const TInt KGSNetworkModeDebugStrLen = 50;
+
+
+// Panic codes for used in this compilation unit
+enum TGSTelPluginModelPanicCodes
+    {
+    EGSTelPluinModelPanicNullPtr = 1
+    };
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class MPsetNetworkModeObserver;
+class CPsetContainer;
+class CGSNetworkPluginContainer;
+class CGSNetworkPlugin;
+
+// CLASS DEFINITION
+/**
+*  CGSNetworkPluginModel is the model class of GS network plugin.
+*  It provides functions to get and set setting values.
+*  @lib GSNetworkPlugin.lib
+*  @since Series 60_3.1
+
+*/
+class CGSNetworkPluginModel : public CBase,
+                              private MPsetNetworkModeObserver
+    {
+    public:  // Constructor and destructor
+
+        /**
+         * Overloaded constructor meant to be used from container
+         */
+        static CGSNetworkPluginModel* NewL(
+                CGSNetworkPluginContainer* aContainer,
+                CGSNetworkPlugin* aPlugin );
+
+        /**
+        * Destructor
+        */
+        ~CGSNetworkPluginModel();
+
+    public: // new ones
+        /**
+        * Gets CSP status
+        *
+        * @return ETrue: CSP is set
+        *         EFalse: CSP is not set
+        */
+        TBool GetCSPStatus();
+
+        /**
+        * Sets CSP Active
+        * @param aValue TBool
+        * @return ETrue: CSP is set
+        *         EFalse: CSP is not set
+        */
+        void SetCSPActiveL( TBool aValue );
+
+         /**
+        * Get the network mode status from Shared data. This value is used
+        * to display/hide the "network mode UI" list item under network
+        * folder. Currently, this value is ONLY read and not written.
+        * @return ETrue if the value is 1 in SD.
+        */
+        TBool IsNetworkModeVisible();
+
+        /**
+        * Returns if CSP setting is supported
+        * @param aSettingNumber TInt
+        * @return ETrue: CSP is supported
+        *         EFalse: CSP is not supported
+        */
+        TBool IsSettingSupported( TInt aSettingNumber );
+
+                /*
+        * Returns MCN value from shared data.
+        * @param aId value of shared data key
+        * @return ETrue: no errors
+        *         EFalse: an error has occurred
+        */
+        TBool GetMCNSettingValue( TInt& aId );
+
+        /*
+        * Sets MCN value to shared data.
+        * @param aId value of shared data key
+        * @return ETrue: no errors
+        *         EFalse: an error has occurred
+        */
+        TBool SetMCNSettingValue( TInt& aId );
+
+        /*
+        * Gets the supported network mode list from shared data.
+        * @return the bit-masked value from shared data
+        */
+        TInt GetSupportedNetworksL();
+
+        /**
+        * Check if graphical network list is supported.
+        * This is handled using GS local variation
+        * @return ETrue if supported.
+        */
+        TBool GraphicalNetworkListSupportedL();
+
+        /**
+        * Return local variation value for automatic network search
+        * support. Local key = EGSConfigNoAutoToAutoNetworkSearch
+        * See GeneralSettingsVariant.hrh for details
+        * @return local variation value
+        */
+        TBool AutomaticNetworkSearchSupportedL();
+
+
+        /**
+        *  Creates phone settings engine.
+        *  @param aContainer Container object as reference
+        */
+        void CreatePhoneSettingsEngineL();
+
+        /**
+        * StartAsynGetCurrentNetworkModeSelectionL 
+        */
+        void StartAsynGetCurrentNetworkModeSelectionL();     
+        
+        /**
+         * StartSynGetCurrentNetworkModeSelectionL
+         */
+        void StartSynGetCurrentNetworkModeSelectionL();
+        
+        /**
+        * GetNetworkSelectionMode
+        */
+        MPsetNetworkSelect::TSelectMode GetNetworkSelectionMode();
+
+        /**
+        * See iNetworkMode.
+        * @return TUint32 Current network mode value,  RMmCustomAPI::KCapsNetworkModeUmts etc...
+        */
+        TUint32 GetNetworkMode();
+        
+        /**
+        * SetNetworkModeL 
+        */
+        void SetNetworkModeL( TUint32 aNetworkMode );
+
+        /**
+        * Prints model state to debug output in case of debug build.
+        */
+        void PrintState();
+
+        /**
+        * Used only in debug mode: verifies network state with the UI selection.
+        * For debugging purposes only.
+        */
+        void CheckState( TGSNetworkModeItems aMode );
+        
+        /**
+        * Get net work mode change key value.
+        * @return the net work mode change key value
+        */
+        TInt GetPsmNetworkModeChangeL();
+
+
+        TBool IsCallActive();
+
+    private: // Private constructors
+
+        /**
+        * Default C++ contructor
+        */
+        CGSNetworkPluginModel( CGSNetworkPluginContainer* aContainer,
+                               CGSNetworkPlugin* aPlugin );
+
+        /**
+        * Symbian OS default constructor
+        * @return void
+        */
+        void ConstructL();
+
+        void ConstructBaseItemsL();
+
+        /**
+        * Initialize CenRep keys used in this class
+        */
+        void InitializeCentralRepositoryL();
+
+        /**
+        * Un-initialize CenRep keys used in this class
+        */
+        void UninitializeCentralRepository();
+
+    private: // from base class MPsetNetworkModeObserver
+
+        /**
+        * @@see MPsetNetworkModeObserver::HandleNetworkSystemModeEventsL.
+        * @since 2.6
+        */
+        void HandleNetworkSystemModeEventsL(
+            const MPsetNetworkModeObserver::TServiceRequest aRequest,
+            const TUint32 aNetworkModeCaps );
+
+
+        /**
+        * @@see MPsetNetworkModeObserver::HandleNetworkErrorL.
+        * @since 2.6
+        */
+        void HandleNetworkErrorL(
+            const MPsetNetworkModeObserver::TServiceRequest aRequest,
+            const TInt aError );
+
+    private:
+        // Central repository objects
+        CRepository* iNetworkRepository;
+        CRepository* iGSVariationRepository;
+  		CPsetCustomerServiceProfile* iCSP; //check if CSP is active
+  		TInt iLocalVariationValues; //local variated constants
+
+        // PhoneSettings engine object for network mode
+        CPsetNetwork* iPhoneSettingsEngine;
+        CPsetContainer* iSettingsContainer;
+
+        // Current network mode value from RMmCustomAPI::TNetworkModeCaps.
+        // enum RMmCustomAPI::TNetworkModeCaps
+        //    {
+        //    KkNetworkModeGsm = 0x01,
+        //    KCapsNetworkModeUmts = 0x02,
+        //    KCapsNetworkModeDual = 0x04
+        //    };
+        // and in addition: KGSNetworkModeCapsNotUpdated
+        //
+        // Stores value aNetworkModeCaps from:
+        // MPsetNetworkModeObserver::HandleNetworkSystemModeEventsL(..., TUint32 aNetworkModeCaps )
+        //
+        TUint32 iNetworkMode;
+        
+        // Temporarily value of the requested network mode. Stores requested 
+        // mode which is updated to iNetworkMode in case request succeeds and 
+        // HandleNetworkSystemModeEventsL is called.  
+        TUint32 iRequestedNetworkMode;
+
+        // Pointer for communicating with container. Not owned.
+        CGSNetworkPluginContainer* iContainer;
+
+        // Reference to network plugin. Not owned.
+        CGSNetworkPlugin* iPlugin;
+    };
+
+#endif //GSNETWORKPLUGINMODEL_H
+
+// End of File