cmmanager/cmmgr/Plugins/cmpluginvpn/inc/cmpluginvpn.h
changeset 0 5a93021fdf25
child 3 f7816ffc66ed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/Plugins/cmpluginvpn/inc/cmpluginvpn.h	Thu Dec 17 08:55:21 2009 +0200
@@ -0,0 +1,302 @@
+/*
+* 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:  VPN plugin IF implementation class.
+*
+*/
+
+#ifndef VPN_PLUGIN_INCLUDED
+#define VPN_PLUGIN_INCLUDED
+
+#include <e32base.h>
+#include <StringLoader.h>
+#include <cmpluginbaseeng.h>
+
+#include <cmpluginvpndef.h>
+
+using namespace CommsDat;
+
+class CCDVirtualIAPNextLayerRecord;
+
+/**
+ *  VPN Plugin IF implementation class
+ *  @since S60 3.2
+ */
+NONSHARABLE_CLASS(CCmPluginVpn) : public CCmPluginBaseEng
+    {
+
+    public:     // Constructors and destructor
+
+        /**
+        * Two phased constructor. Leaves on failure.
+        * @return The created object.
+        */      
+        static CCmPluginVpn* NewL( TCmPluginInitParam* aInitParam );
+
+        /**
+        * Destructor.
+        */      
+        virtual ~CCmPluginVpn();
+        
+        virtual CCmPluginBaseEng* CreateInstanceL( TCmPluginInitParam& aInitParam ) const;
+        
+    public: 
+        
+        /**
+        * Gets the value for a TInt attribute.
+        * @param aAttribute Identifies the attribute to be retrived.
+        * @param aValue On completion, contains the requested TInt attribute.
+        * @return None.
+        */
+        virtual TUint32 GetIntAttributeL( const TUint32 aAttribute ) const;
+
+        /**
+        * Gets the value for a TBool attribute.
+        * @param aAttribute Identifies the attribute to be retrived.
+        * @param aValue On completion, contains the requested TBool attribute.
+        * @return None.
+        */
+        virtual TBool GetBoolAttributeL( const TUint32 aAttribute ) const;
+
+        /**
+        * Gets the value for a String16 attribute.
+        * @param aAttribute Identifies the attribute to be retrived.
+        * @param aValue On completion, contains the requested TDes16 attribute.
+        * @return None.
+        */
+        virtual HBufC* GetStringAttributeL( const TUint32 aAttribute ) const;
+
+		/**
+		* Gets the value for a String8 attribute.
+		* @param aAttribute Identifies the attribute to be retrived.
+        * @return copy of the requested attribute. Ownership is passed.
+		*/
+		virtual HBufC8* GetString8AttributeL( const TUint32 aAttribute ) const;
+
+        /**
+        * Sets the value for a TInt attribute.
+        * @param aAttribute Identifies the attribute to be set.
+        * @param aValue The value to be set.
+        * @return None.
+        */
+        virtual void SetIntAttributeL( const TUint32 aAttribute, TUint32 aValue );
+
+        /**
+        * Sets the value for a TBool attribute.
+        * @param aAttribute Identifies the attribute to be set.
+        * @param aValue The value to be set.
+        * @return None.
+        */
+        virtual void SetBoolAttributeL( const TUint32 aAttribute, TBool aValue );
+
+        /**
+        * Sets the value for a String16 attribute.
+        * @param aAttribute Identifies the attribute to be set.
+        * @param aValue The value to be set.
+        * @return None.
+        */
+        virtual void SetStringAttributeL( const TUint32 aAttribute, 
+                                          const TDesC16& aValue );
+
+		/**
+		* Sets the value for a String8 attribute.
+		* @param aAttribute Identifies the attribute to be set.
+		* @param aValue The value to be set.
+        * @return None.
+		*/
+		virtual void SetString8AttributeL( const TUint32 aAttribute, 
+		                                   const TDesC8& aValue );
+
+
+		void UpdatePolicyNameL();
+		
+        /**
+        * Puts the currently available bindable destinations into the 
+        * passed array. The array is emptied before appending the values.
+        * It contains only real destinations, no uncategorised 
+        * or any other, created ones (Always ask, DefaultConnection, etc)
+        */
+        void BindableDestinationsL( RArray<TUint32>& aDestinationArray );
+        
+        /**
+        * Change the VPN connection method name when using 
+        * 'Search for WLAN' functionality
+        */
+        HBufC* GenerateVPNPointToWLANNetworkLC(RResourceFile& rf, HBufC*& aName);
+		
+    public: // From CCmPluginBaseEng        
+
+        /**
+        * Restore the original value of the attribute from commsdat field.
+        * Base implementation can be used only with attributes 
+        * stored directly in commsdat.
+        * @param aAttribute attribute to be restored
+        */
+        virtual void RestoreAttributeL( const TUint32 aAttribute );
+        
+        /**
+        * Override the load to be able to handle post-processing
+        *
+        */
+        virtual void LoadL( TUint32 aIapId );
+        
+        virtual TBool CanHandleIapIdL( TUint32 aIapId ) const;
+        virtual TBool CanHandleIapIdL( CCDIAPRecord *aIapRecord ) const;
+        
+        virtual TInt RunSettingsL();
+        virtual void LoadServiceSettingL();
+        virtual void LoadAdditionalRecordsL();
+        
+        virtual void UpdateAdditionalRecordsL();
+
+        virtual TBool InitializeWithUiL( TBool aManuallyConfigure  );
+        
+        virtual void ServiceRecordIdLC( HBufC* &aServiceName, 
+                                        TUint32& aRecordId );
+
+        virtual void BearerRecordIdLC( HBufC* &aBearerName, 
+                                       TUint32& aRecordId );
+                                       
+        virtual void PrepareToUpdateRecordsL();
+        
+        virtual TBool IsLinkedToIap( TUint32 aIapId );
+        virtual TBool IsLinkedToSnap( TUint32 aSnapId );
+        
+        virtual void CreateNewL();
+
+        /**
+        * From CCmPluginBaseEng
+        * Deletes additional records, in this case, the WLAN records
+        *
+        * @since S60 3.2
+        */
+        void DeleteAdditionalRecordsL();
+        
+    protected:
+    
+        virtual void AdditionalReset();
+    
+    private: // Constructors
+
+        /**
+        * Constructor.
+        */      
+        CCmPluginVpn( TCmPluginInitParam* aInitParam );
+
+        /**
+        * Second phase constructor. Leaves on failure.
+        * @param
+        */      
+        void ConstructL();
+
+    private:
+    
+        CCDVPNServiceRecord& ServiceRecord() const;
+
+        TBool ServiceRecordExists() const;
+        
+        virtual void CreateNewServiceRecordL();
+        virtual void CreateAdditionalRecordsL();
+        
+        virtual void UpdateServiceRecordL();
+        
+        /**
+        * Displays a list of installed VPN policies for user selection
+        * and updates the setting
+        *
+        * @since S60 3.2
+        * @return the soft key selection
+        */
+        TBool ShowPolicySelectionDlgL();
+        
+        /**
+        * Shows a dialog for selecting the underlying connection method
+        *
+        * @since S60 3.2
+        * @return ETrue if success
+        */
+        TBool ShowRealConnectionSelectionDlgL();
+        
+        /**
+        * Checks whether there are connection methods or destinations which
+        * the VPN connection method can bind to
+        * 
+        * @since S60 3.2
+        * @return ETrue found
+        */
+        TBool BindableRealConnectionsExistL();
+
+        void GenerateDefaultCmNameL();  
+        
+        /**
+        * Returns whether the passed destination can be used as an underlying
+        * connection method for this particular CM.
+        * It can be used if it does not points to VPN in any way, directly or
+        * indirectly, it has at least one, non-virtual CM and
+        * it does not links back to our parent destination.
+        * The returned value is a bit field defined in the src file and 
+        * it holds the following informations: 
+        * IsEmpty, ContainsVPN(in any link), LinksBackToPArentDest and
+        * HasNonVirtualCM to be able to decide if it is suitable.
+        * Used only internally.
+        */
+        TUint32 CanDestUsedAsUnderlyingConnectionL( TUint32 aDestinationId );
+
+
+        /**
+        * Checks whether the destination/CM passed to it has a VPN connection
+        * up-stream (there is a path from a VPN to this item through indirections).
+        * 
+        * @param aId The id of the destination/connmethod in question.
+        * @param aIsDestination ETrue if the passed id is to be considered 
+        *                       that of a destination, EFalse otherwise.
+        * @return ETrue if this entity is pointed to (in/directly) by a VPN.
+        */
+        TBool HasUpstreamVpnL( TUint32 aId, TBool aIsDestination );
+
+        /**
+        * Checks and converts the id of the destination if needed
+        * 
+        * @param aDestination the id of the destination
+        * @since S60 5.2
+        * @return the correct id of the destination 
+        *         or leaves with the error code KErrArgument 
+        */                    
+        TInt CheckValidityAndConvertDestinationIdL( TUint32 aDestinationId );
+
+    public:                
+        /**
+        * Scans aDests for destinations that may be valid parents 
+        * for this plugin and removes those that may not.
+        * @param aDests The array of destination IDs to be filtered.
+        */
+        virtual void FilterPossibleParentsL( RArray<TUint32>& aDests );
+
+        // finds the parent destination of the connmethod with the given ID
+        TUint32 FindParentDestinationL( TUint32 aCmId );
+        
+    private: // Data
+    
+        CCmPluginBaseEng*       iRealCM;
+        CCDVirtualIAPNextLayerRecord*   iVirtualRecord;
+        TMDBElementId           iVirtualTableId;
+        HBufC*                  iPolicyName;
+        
+        /**
+         * An array of the bindable destinations, 
+         * including (if supported) the uncategorised destation and easy wlan
+         */
+        RArray<TUint32> iBindableMethods;
+    };
+
+#endif // VPN_PLUGIN_INCLUDED