cmmanager/cmmgr/Framework/Inc/cmmanagerimpl.h
changeset 20 9c97ad6591ae
parent 18 fcbbe021d614
child 21 b8e8e15e80f2
child 23 7ec726f93df1
child 28 860702281757
--- a/cmmanager/cmmgr/Framework/Inc/cmmanagerimpl.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1018 +0,0 @@
-/*
-* 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:  Implementation of connection method manager
-*
-*/
-
-#ifndef CMMANAGERIMPL_H
-#define CMMANAGERIMPL_H
-
-// User Includes
-#include "cmmanager.hrh"
-#include "cmobjectpool.h"
-#include "cmconnectionmethodinfo.h"
-#include <datamobilitycommsdattypes.h>
-#include <cmmanagerdef.h>
-#include <cmdefconnvalues.h>
-#include <cmgenconnsettings.h>
-
-// System Includes
-#include <e32std.h>
-#include <e32base.h>
-#include <e32cmn.h>
-#include <f32file.h>    // RFs
-#include <barsc.h>      // RResourceFile
-#include <metadatabase.h>
-#include <commsdattypesv1_1.h>
-
-// Forward Declarations
-class CCmTransactionHandler;
-class CCmDestination;
-class CCmDestinationExt;
-class CCmDestinationImpl;
-class CCmPluginBaseEng;
-class CCmPluginBase;
-class CImplementationInformation;
-class TBearerPriority;
-class RConeResourceLoader;
-class CCmConnectionMethodInfo;
-class CGulIcon;
-class CCDGlobalBearerTypePriorizationRecord;
-class CCDDataMobilitySelectionPolicyRecord;
-class TCmPluginInitParam;
-class CCmDestinationData;
-class RCmManagerExt;
-class MCmCommsDatWatcher;
-class CCmCommsDatNotifier;
-
-// DATA TYPES
-typedef RPointerArray<CImplementationInformation>   RImplInfoPtrArray;
-typedef CCDGlobalBearerTypePriorizationRecord       CCmBearerPriRec;
-typedef CCDDataMobilitySelectionPolicyRecord        CCDSnapRecord;
-
-typedef struct
-    {
-    RResourceFile       iFile;  // resource file handler
-    TFileName           iFName; // resource filename
-    TInt                iRefs;  // number of references to this res file
-    }TResourceFiles;
-    
-/*#ifdef _DEBUG
-void DumIapTableL( CommsDat::CMDBSession& aSession );
-#define DUMP_IAP_TBL( session )  DumIapTableL( (session) );
-#else   // _DEBUG
-#define DUMP_IAP_TBL( session )
-#endif  // _DEBUG*/
-
-/**
- *  Implementation of connection method manager
- *
- *  @lib cmmanager.lib
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CCmManagerImpl ) : public CBase
-      {          
-    // Construction/Destruction
-    public:
-    
-        /** Epoc constructor */
-        static CCmManagerImpl* NewL( TBool aCreateTables = ETrue );
-        
-        /** Destructor */
-        virtual ~CCmManagerImpl();
-        
-    protected:
-    
-        /** First stage constructor */
-        CCmManagerImpl();
-    
-        /** Epoc constructor */
-        void ConstructL(); // second-phase constructor
-        
-    public: // Transaction handling API
-    
-        void OpenTransactionLC( TBool aSetAttribs = ETrue );
-        void CommitTransactionL( TInt aError );
-        void RollbackTransaction();
-        
-        // This will be called when the first UI view is on
-        void StartCommsDatNotifierL();
-        
-    public: // Basic CM attribute query API
-    
-        /**
-        * GetBearerInfoXXX function can be used to query
-        * bearer informantion that doesn't belong
-        * to a specific connection method, such as 
-        * ECmCoverage or ECmDefaultPriority etc.
-        * HBuf ownership is passed to the caller
-        */
-        IMPORT_C TUint32 GetBearerInfoIntL( TUint32 aBearerType,
-                                            TUint32 aAttribute ) const;
-        IMPORT_C TBool GetBearerInfoBoolL( TUint32 aBearerType,
-                                           TUint32 aAttribute ) const;
-        IMPORT_C HBufC* GetBearerInfoStringL( TUint32 aBearerType,
-                                              TUint32 aAttribute ) const;
-        IMPORT_C HBufC8* GetBearerInfoString8L( TUint32 aBearerType,
-                                                TUint32 aAttribute ) const;
-                    
-        /**
-        * GetConnectionMethodInfoXXX function can be used to 
-        * query any, non-bearer specific information about
-        * a given connection method. This can be e.g. ECmBearerType,
-        * ECmName, ECmStartPage etc.
-        * HBuf ownership is passed to the caller
-        */
-        IMPORT_C TUint32 GetConnectionMethodInfoIntL( 
-                                                TUint32 aCmId,
-                                                TUint32 aAttribute ) const;
-        IMPORT_C TBool GetConnectionMethodInfoBoolL( 
-                                                TUint32 aCmId,
-                                                TUint32 aAttribute ) const;
-        IMPORT_C HBufC* GetConnectionMethodInfoStringL( 
-                                                TUint32 aCmId,
-                                                TUint32 aAttribute ) const;
-        IMPORT_C HBufC8* GetConnectionMethodInfoString8L( 
-                                                TUint32 aCmId,
-                                                TUint32 aAttribute ) const;
-                
-                    
-    //=========================================================================
-    // Creation/Destruction API
-    //
-    public:
-              
-        /**
-        * Creates a Destination by the given name
-        *
-        * @since 3.2
-        * @param aName the name of the new destination
-        * @return CCmDestination*, ownership is passed to the caller
-        */
-        CCmDestinationImpl* CreateDestinationL( const TDesC& aName );
-
-        /**
-        * Creates a Destination by the given name
-        *
-        * @since 3.2
-        * @param aName the name of the new destination
-        * @param aDestId Predefined id for the destination
-        * @return CCmDestination*, ownership is passed to the caller
-        */
-        CCmDestinationImpl* CreateDestinationL( const TDesC& aName,
-                                                TUint32      aDestId );
-
-        
-        /**
-        * Creates a connection method does not belong to any destination
-        *
-        * @since 3.2
-        * @param aImplementationUid - implementation uid of the connection 
-        * method
-        * @param aParentDestination - the destination which holds the 
-        *                             connection method, NULL means there is
-        *                             no parent
-        * @return CCmPluginBase*
-        */
-        CCmPluginBase* CreateConnectionMethodL( TUint32 aBearerType,
-                            CCmDestinationImpl* aParentDestination = NULL );
-
-        /**
-        * Creates a connection method does not belong to any destination
-        *
-        * @since 3.2
-        * @param aImplementationUid - implementation uid of the connection 
-        * method
-        * @param aConnMethodId Predefined id for the connection method
-        * @param aParentDestination - the destination which holds the 
-        *                             connection method, NULL means there is
-        *                             no parent
-        * @return CCmPluginBase*
-        */
-        CCmPluginBase* CreateConnectionMethodL( TUint32 aBearerType,
-        		            TUint32 aConnMethodId,             
-                            CCmDestinationImpl* aParentDestination = NULL );
-        
-        /**
-        * Creates a connection method does not belong to any destination
-        *
-        * @since 3.2
-        * @param pluginBaseEng - Object to put in the pool
-        * @return CCmPluginBase*
-        */
-        CCmPluginBase* CreateConnectionMethodL( 
-                            CCmPluginBaseEng* pluginBaseEng );
-
-        /**
-        * Insert a connection method does not belong to any destination
-        * API doesn't use CCmPluginBase. So, nothing returns
-        *
-        * @param pluginBaseEng - Object to put in the pool
-        */
-        void InsertConnectionMethodL( 
-                            CCmPluginBaseEng* pluginBaseEng );
-        
-        /**
-        * Creates a connection method does not belong to any destination
-        *
-        * @since 3.2
-        * @param aBearerType - implementation uid of the connection 
-        * method
-        * @param aParams - the destination which holds the 
-        *                             connection method, NULL means there is
-        *                             no parent
-        * @return CCmPluginBaseEng*
-        */
-        CCmPluginBaseEng* DoCreateConnectionMethodL( TUint32 aBearerType,
-                                       TCmPluginInitParam& aParams );
-
-        /**
-        * Creates a connection method does not belong to any destination
-        *
-        * @since 3.2
-        * @param aBearerType Implementation uid of the connection 
-        * method
-        * @param aParams Initialization params for the plugin.
-        * @param aConnMethodId Predefined id for the connection method.
-        * @return CCmPluginBaseEng*
-        */
-        CCmPluginBaseEng* DoCreateConnectionMethodL( TUint32 aBearerType,
-            TCmPluginInitParam& aParams, TUint32 aConnMethodId );
-
-    //=========================================================================
-    // Getter-Setter API
-    //
-    public:    
-            
-        /**
-        * Calls FeatureManager::FeatureSupported directly.
-        *
-        * @since 3.2
-        * @param aFeature feature ID
-        * @return feature support status
-        * @since 3.2
-        */
-        static TBool FeatureSupported( TInt aFeature );
-        
-        /**
-        * Obsolete
-        */
-        IMPORT_C CCmPluginBaseEng* ConnectionMethodL( TUint32 aCmId );
-
-        /**
-        * Return the connection method queried by it's ID
-        *
-        * @since 3.2
-        * @param aCmId
-        * @return CCmPluginBase*
-        */
-        IMPORT_C CCmPluginBase* GetConnectionMethodL( TUint32 aCmId );
-        
-        /**
-        * Return the list of connection methods do not belongs to any 
-        * destination
-        *
-        * @since 3.2
-        * @param aCMArray on return it is the array of IAP ids.
-        * @param aCheckBearerType If ETrue only connection methods with 
-        *                         supported bearer types are returned
-        * @param aLegacyOnly when set to ETrue only Legacy IAP ids will
-        *                         be returned
-        * @param aEasyWlan when set to ETrue EasyWlan id is returned, too
-        * @param aSortByBearer if ETrue the CMs will be ordered according
-        *                      to global bearer priority
-        */        
-        IMPORT_C void ConnectionMethodL( RArray<TUint32>& aCMArray,
-                                         TBool aCheckBearerType = ETrue,
-                                         TBool aLegacyOnly = ETrue,
-                                         TBool aEasyWlan = EFalse,
-                                         TBool aSortByBearer = EFalse );
-        /**
-        * Return an array of all destinations
-        *
-        * @since 3.2
-        * @param aDestArray on return it returns an array of destination ids
-        */
-        IMPORT_C void AllDestinationsL( RArray<TUint32>& aDestArray );
-
-        /**
-        * Return the number of destinations
-        *
-        * @since 3.2
-        * @return the number of destinations
-        */
-        inline TUint DestinationCountL() { return iDestinationCount; }
-
-        /**
-        * Return the destination implementation to which a specified 
-        * connection method belongs, search is by destination ID ( the
-        * id which is made by RECORD_FROM_ELEMENT_ID from the elementID)
-        * If the  destination implementation is allready in the  object
-        * pool returns it. If it is not in the pool than puts it in the
-        * pool using the GetDestinationL funciton.
-        *
-        * @since 3.2
-        * @param aId
-        * @return a pointer to a destination
-        */
-        IMPORT_C CCmDestinationImpl* DestinationL( TUint32 aId );
-        
-        /**
-        * Removes the destination implementation 
-        * from the object pool
-        *
-        * @since 3.2
-        * @param aId
-        */
-        IMPORT_C void RemoveDestFromPool( CCmDestinationImpl* aDestination );
-        
-        /**
-        * Removes the destination implementation 
-        * from the object pool
-        *
-        * @since 3.2
-        * @param aId
-        */
-        void RemoveDestFromPool( CCmDestinationData* aDestination );
-        
-        /**
-        * Removes the cm 
-        * from the object pool
-        *
-        * @since 3.2
-        */
-        void RemoveCMFromPoolL( CCmPluginBaseEng* aCM );
-        
-        /**
-        * Removes the cm 
-        * from the object pool
-        *
-        * @since 3.2
-        */
-        void RemoveCMFromPoolL( CCmPluginBase* aCM );
-
-        /**
-        * The destination have been updated if it was a new destination
-        * than the zero id must be changed to the new one 
-        *
-        * @param aDestination - the destination to change
-        */         
-        void DestinationUpdated( CCmDestinationImpl* aDestination );
-              
-        /**
-        * Copie a connection method belonging to one destination to 
-        * another. The connection method becomes shared.
-        *
-        * @since 3.2
-        * @param aTargetDestination target destination
-        * @param aConnectionMethodId connection method to be copied
-        * @return index in the Connection Method list
-        */
-        TInt CopyConnectionMethodL( CCmDestinationImpl& aTargetDestination,
-                                    CCmPluginBase& aConnectionMethod );
-        
-        /**
-        * Move a connection method belonging to one destination to 
-        * another. The connection method is removed from the source destination
-        *
-        * @since 3.2
-        * @param aSourceDestination source destination
-        * @param aTargetDestination target destination
-        * @param aConnectionMethod connection method to be moved
-        * @return index in the Connection Method list which the connection 
-        *         method has been moved to
-        */
-        TInt MoveConnectionMethodL( CCmDestinationImpl& aSourceDestination,
-                                    CCmDestinationImpl& aTargetDestination,
-                                    CCmPluginBase& aConnectionMethod );
-        
-        /**
-        * Remove connection method from the destination
-        *
-        * @since 3.2
-        * @param aDestination destination the connection method is attached to
-        * @param aConnectionMethod connection method to be removed
-        */
-        void RemoveConnectionMethodL( CCmDestinationImpl& aDestination,
-                                      CCmPluginBase& aConnectionMethod );
-
-        /**
-        * Return the copy of the bearer priority array. Ownership is passed.
-        *
-        * @since 3.2
-        * @param aArray bearer priority array
-        */          
-        void BearerPriorityArrayL( RArray<TBearerPriority>& aArray ) const;
-        
-        /*
-        * Update bearer priority array
-        *
-        * @since 3.2
-        * @param aArray array with new global bearer priority
-        */          
-        void UpdateBearerPriorityArrayL( const RArray<TBearerPriority>& aArray );
-        
-        /**
-        * Clean up passed global bearer priority array. Delete
-        * the elements and calls Reset and Close on the array.
-        *
-        * @since 3.2
-        * @param aArray array to be cleaned up
-        */
-        void CleanupGlobalPriorityArray( RArray<TBearerPriority>& aArray ) const;
-        
-        /**
-        * Search service type in the global priority table and
-        * Return its priority.
-        *
-        * @since 3.2
-        * @param aUiPriority ETrue if UI priority is requested
-        * @param aServiceType serched service type 
-        * @return priority of the service type or KErrNotFound
-        */
-        TInt GlobalBearerPriority( TBool aUiPriority, 
-                                   const TDesC& aServiceType ) const;
-                                   
-        /*
-        * Query all of the supported bearer types.
-        *
-        * @since 3.2
-        * @param aArray list of all supported bearer types.
-        */          
-        void SupportedBearersL( RArray<TUint32>& aArray ) const;
-        
-        /*
-        * Return "Uncategorized" icon.
-        * This fucton leaves if the client does not have a valid UI context
-        *
-        * @since 3.2
-        * @return CGulIcon icon of uncategorized connection methods.
-        */          
-        CGulIcon* UncategorizedIconL() const;
-
-        /**
-        * Returns the id of the EasyWlan connection method.
-        *
-        * @since S60 3.2
-        * @return id of the EasyWLan connection method. 0 if not found
-        */
-        IMPORT_C TUint32 EasyWlanIdL();
-
-        /**
-        * Create a SNAP record object and load it if record id not 0.
-        * @param aRecordId record Id. 0 means create only
-        * @return created/loaded SNAP record
-        */
-        CCDSnapRecord* SNAPRecordL( TUint32 aRecordId ) const;
-
-        CCDSnapRecord* CreateSNAPRecordL( TUint32 aRecordId ) const;
-    
-        /**
-        * Tells the CmManager that the given default connection is deleted,
-        * and it sets Default Connection to Always Ask (default value).
-        *
-        * @since S60 3.2
-        */
-        void HandleDefConnDeletedL( TCmDefConnValue& aDCSetting );
-        /**
-        * Returns the default connection method/SNAP.
-        *
-        * @since S60 3.2
-        */
-        void ReadDefConnL( TCmDefConnValue& aDCSetting );   
-        /**
-        * Stores the default connection method/SNAP.
-        *
-        * @since S60 3.2
-        */
-        void WriteDefConnL( const TCmDefConnValue& aDCSetting );  
-        /**
-        * Returns the default connection method/SNAP.
-        *
-        * @since S60 3.2
-        */
-        void ReadDefConnWoTransL( TCmDefConnValue& aDCSetting );   
-        /**
-        * Stores the default connection method/SNAP.
-        *
-        * @since S60 3.2
-        */
-        void WriteDefConnWoTransL( const TCmDefConnValue& aDCSetting );  
-        /**
-        * Returs ETrue if Default Connection feature is supported.
-        *
-        * @since S60 3.2
-        */        
-        TBool IsDefConnSupported();
-        /**
-        * Check if memory low so that process can continue
-        */
-        TBool IsMemoryLow(); 
-        /**
-        * Returns the general connection settings.
-        */
-        void ReadGenConnSettingsL( TCmGenConnSettings& aGenConnSettings );
-        /**
-        * Replaces the general connection settings.
-        */
-        void ReplaceGenConnSettingsL( const TCmGenConnSettings& aGenConnSettings );
-        /**
-        * Writes the general connection settings.
-        */
-        void WriteGenConnSettingsL( const TCmGenConnSettings& aGenConnSettings );
-        
-                
-    //=========================================================================
-    // Resource handling
-    //
-    public:
-        
-        /** add resource file */
-        void AddResourceFileL( TFileName& aName );
-        
-        /** 
-        * Remove resource file from array only if
-        * the reference count is zero.
-        * @param aName name of the resource file to be removed
-        */
-        void RemoveResourceFile( TFileName& aName );
-
-        /**
-        * Read string from resource
-        *
-        * @since 3.2
-        * @param aResourceId resource id of the localized string
-        * @return localized string
-        */
-        HBufC* AllocReadL( TInt aResourceId ) const;    
-    
-    //=========================================================================
-    // CM related functions
-    //
-    public:
-        
-        /**
-        * Return the number of references to the given connection method id
-        * in the DN_IAP table
-        *
-        * @since 3.2
-        * @param aId ID of the connection method        
-        * @param aRecSet entire record set of the detination table
-        * @return number of references to the connection method in DN_IAP table
-        */
-        TUint32 NumOfConnMethodReferencesL( 
-            TUint32 aId,
-            CommsDat::CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>* aRecSet = NULL 
-            );
-        
-        /**
-        * Indicates is at least one non-"level 1 protected" destinations
-        *
-        * @since S60 3.2
-        * @return ETrue if at least one level 1 protected destination
-        */
-        TBool HasUnprotectedDestinationsL();
-        
-        /**
-        * Walks through every connection methods to find out
-        * if the passed connection method is linked to any of them.
-        * @param aPlugin connection method to be checked
-        * @return ETrue if linked
-        */
-        TBool IsIapLinkedL( const CCmPluginBaseEng& aPlugin );
-        
-        /**
-        * Removes all references to this CM from SNAP table.
-        */
-        void RemoveAllReferencesL( const CCmPluginBaseEng& aPlugin );
-
-        /**
-        * Removes all references to this CM from SNAP table without
-        * transaction to commsdat.
-        */
-        void RemoveAllReferencesWoTransL( const CCmPluginBaseEng& aPlugin );
-
-        /**
-        * Return the bearer type of connection method.
-        *
-        * @since 3.2
-        * @param aId id of the connection method
-        * @return bearer type of the connection method
-        */
-        TUint32 BearerTypeFromCmIdL( TUint32 aCmId );
-                
-        /**
-        * Return the bearer type of connection method.
-        *
-        * @since 3.2
-        * @param aIapRecord CommsDat record of the connection method
-        * @return bearer type of the connection method
-        */
-        TUint32 BearerTypeFromIapRecordL( CommsDat::CCDIAPRecord* aIapRecord ) const;
-
-    private:
-    
-        /**
-        * Find and create a connection method.
-        *
-        * @since 3.2
-        * @param aCmId id of the connection method
-        * @aParentDest parent destination of the connection method. Can be NULL.
-        */
-        CCmPluginBase* DoFindConnMethodL( TUint32 aCmId, 
-                              CCmDestinationImpl* aParentDest );
-    
-        /**
-        * Find and create a connection method.
-        *
-        * @since 3.2
-        * @param aCmId id of the connection method
-        * @aParentDest parent destination of the connection method. Can be NULL.
-        */
-        CCmPluginBaseEng* DoFindConnMethL( TUint32 aCmId, 
-                               CCmDestinationImpl* aParentDest );
-
-        /**
-        * Check the existence of tables we need.
-        * Creates if it is not exist, get the table id otherwise
-        */
-        void CheckTablesL();
-
-    public:
-    
-        /**
-        * Return the destination network table ID
-        *
-        * @since 3.2
-        * @return iDestinationTableId element id of the destination table
-        */        
-        inline CommsDat::TMDBElementId DestinationTableId() const { return iDestinationTableId; };
-        
-        /**
-        * Return Global Bearer Type Priorization Table ID
-        *
-        * @since 3.2
-        * @return element id of the bearer type priority.
-        */        
-        inline CommsDat::TMDBElementId BearerTypePriorizationTableId() const { return iBearerTypePriorizationTableId; };
-        
-        /**
-        * Return the Destination network - Icon table ID
-        *
-        * @since 3.2
-        * @return element id of the icon table.
-        */        
-        inline CommsDat::TMDBElementId IconTableId() const { return iIconTableId; };
-        
-        /**
-        * Return true if help is on in the FeatureManager
-        *
-        * @since 3.2
-        * @return TBool.
-        */        
-        inline TBool IsHelpOn() const { return iHelp; };
-
-        /**
-        * Return the Seamlessness table ID
-        *
-        * @since 3.2
-        * @return element id of the seamlessness table.
-        */        
-        inline CommsDat::TMDBElementId SeamlessnessTableId() const { return iSeamlessnessTableId; };
-        
-        /**
-        * Checks if the current environment has the given capability.
-        * Leaves with KErrPermissionDenied if capability is missing. 
-        *
-        * @since 3.2
-        * @param aCapability capability to be checked
-        */
-        static void HasCapabilityL( TCapability aCapability );
-        
-        /**
-        * Return an array of all IAP records.
-        * @return array of all IAP records
-        */
-        CommsDat::CMDBRecordSet<CommsDat::CCDIAPRecord>* AllIapsL();
-        
-        /**
-        * Return all the SNAP record. Filtering can be made on 
-        * passed SNAP elemented id.
-        * @return array of SNAP records
-        */
-        CommsDat::CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>* 
-                    CCmManagerImpl::AllSNAPRecordsL( TUint32 aSnapElementId );
-        
-    public:
-    
-        CommsDat::CMDBSession& Session() const;
-
-        /**
-        * Wraps this implementation to an RCmManagerExt. OWNERSHIP IS NOT PASSED
-        * , SO NEVER CLOSE aCmManagerExt!!!
-        *
-        * @since 3.2
-        * @param aCmManagerExt class to wrap implementation into
-        */
-        
-        IMPORT_C void WrapCmManager( RCmManagerExt& aCmManagerExt );
-     
-        /** Remove the virtual methods from the passed list
-        *
-        * @since 3.2
-        * @param aCmDataArray array that contains the connection methods to be filtered
-        */
-        IMPORT_C void FilterOutVirtualsL( RPointerArray<CCmPluginBase>& aCmDataArray );
-
-        /** Create a 'flat list' of connection methods of a given destination
-        * ( connection methods inside embedded destinations which are in the destination,
-        * are also present in the list ) and
-        * order them according to the bearer type prioritisation rules
-        * and return the result in aCmArray.        
-        *
-        * @since 3.2
-        * @param aDestination destination that contains the connection methods
-        * for uncategorised connection methods, use KDestItemUncategorized
-        * @param aCmArray array to return the result
-        */
-
-        IMPORT_C void CreateFlatCMListL( TUint32 aDestination ,
-                                        RPointerArray<CCmPluginBase>& aCmArray );        
-                                        
-        /** Create a 'flat list' of connection methods of a given destination
-        * ( connection methods inside embedded destinations which are in the destination,
-        * are also present in the list ) and
-        * order them according to the bearer type prioritisation rules
-        * and return the result in aCmArray.        
-        * LC version        
-        *
-        * @since 3.2
-        * @param aDestination destination that contains the connection methods
-        * for uncategorised connection methods, use KDestItemUncategorized
-        * @param aCmArray array to return the result
-        */
-        IMPORT_C void CreateFlatCMListLC( TUint32 aDestination ,
-                                        RPointerArray<CCmPluginBase>& aCmArray );        
-      
-        
-        /** Get a list of uncategorised connection methods in an RPointerArray 
-        * contains the parameters passed to ConnectionMethodL
-        *
-        * @since 3.2
-        * @param aCmArray the returned list of uncategorised connection methods
-        * @param aCheckBearerType see ConnectionMethodL
-        * @param aLegacyOnly see ConnectionMethodL
-        * @param aEasyWlan see ConnectionMethodL
-        * @param aSortByBearer see ConnectionMethodL
-        */
-        void AppendUncatCmListL(RPointerArray<CCmPluginBase>& aCmArray,
-                                         TBool aCheckBearerType = ETrue,
-                                         TBool aLegacyOnly = ETrue,
-                                         TBool aEasyWlan = EFalse,
-                                         TBool aSortByBearer = EFalse );
-        
-        /** Get a list of uncategorised connection methods in an RPointerArray 
-        * contains the parameters passed to ConnectionMethodL
-        * LC version
-        *
-        * @since 3.2
-        * @param aCmArray the returned list of uncategorised connection methods
-        * @param aCheckBearerType see ConnectionMethodL
-        * @param aLegacyOnly see ConnectionMethodL
-        * @param aEasyWlan see ConnectionMethodL
-        * @param aSortByBearer see ConnectionMethodL
-        */
-        void AppendUncatCmListLC(RPointerArray<CCmPluginBase>& aCmArray,
-                                         TBool aCheckBearerType = ETrue,
-                                         TBool aLegacyOnly = ETrue,
-                                         TBool aEasyWlan = EFalse,
-                                         TBool aSortByBearer = EFalse );
-        
-        /**
-        * Returns a list of references to the connection methods in the destination. 
-        *
-        * @since 3.2
-        * @param aPluginArray A pointer array to hold the values
-        * ownership is passed
-        */
-        void AppendCmListL( TUint32 aDestintaionId, RPointerArray<CCmPluginBase>& aCmArray);
-        
-        /**
-        * Returns a list of references to the connection methods in the destination. 
-        *
-        * @since 3.2
-        * @param aPluginArray A pointer array to hold the values
-        * ownership is passed
-        */
-        // and puts it on the CleanupStack
-        void AppendCmListLC( TUint32 aDestintaionId, RPointerArray<CCmPluginBase>& aCmArray);
-
-        /**
-        * Returns a list of references to the connection methods in the supported uid list . 
-        *
-        * @since 3.2
-        * @param aPluginArray A pointer array to hold the values
-        * ownership is passed
-        */
-        void AppendCmListFromUidsL( RArray<TUint32>& cmIdList, RPointerArray<CCmPluginBase>& aCMArray );        
-
-        /**
-        * Returns internet destination id. If internety destination is not found then -1 is returned.
-        *
-        * @since 5.0
-        * @return Internet destination id
-        */
-        TUint32 GetInternetDestinationIdL();
-        
-        /**
-        * Register aWatcher as watcher for change of CommsDat
-        */
-        IMPORT_C void WatcherRegisterL( MCmCommsDatWatcher* aWatcher );
-        
-        /**
-         * UnRegister current watcher
-         */
-        IMPORT_C void WatcherUnRegister();
-        
-        /*
-         * Find if aDest is still existed if some change is watched
-         */
-        IMPORT_C TBool DestinationStillExistedL( CCmDestinationImpl* aDest );
-        
-        /*
-         * Find if an Iap is still existed if some change is watched
-         * 
-         * The Iap, as parameter, is contained in the instance aPlugin
-         */        
-        IMPORT_C TBool IapStillExistedL( const CCmPluginBaseEng& aPlugin );
-        
-        /*
-         * Find if an Iap is still in aDest if some change is watched
-         * 
-         * The Iap, as parameter, is contained in the instance aPlugin
-         */
-        IMPORT_C TBool IsIapStillInDestL( CCmDestinationImpl* aDest, const CCmPluginBaseEng& aPlugin );
-
-    private:
-            
-        /**
-        * Creates bearer priority array
-        *
-        * @since 3.2
-        */          
-        void CreateBearerPriorityArrayL();   
-        
-        /**
-        * Look for the given resource file in the resource
-        * file array and return the index value of it.
-        *
-        * @since 3.2
-        * @param aName resource file name, not localized
-        * @return index of the resource file in the array
-        */
-        TInt FindResourceFile( TFileName& aName ) const;
-        
-        /**
-        * Build an array of all bearer specific plugins.
-        *
-        * @since 3.2
-        */
-        void BuildPluginArrayL();
-    
-        /**
-        * Return the copy of the bearer priority array. Ownership is passed.
-        *
-        * @since 3.2
-        * @param aArray bearer priority array
-        */          
-        void CopyBearerPriorityArrayL( RArray<TBearerPriority>& aArray ) const;
-        
-        /**
-        * Return if the IAP record points to an EasyWLan service record.
-        *
-        * @since 3.2
-        * @param aIapRecord IAP record to be checked
-        * @return ETrue if AP is EasyWLan
-        */
-        TBool IsEasyWLanL( CommsDat::CCDIAPRecord* aIapRecord ) const;
-        
-        /**
-        * Replaces the Default Connection record with the new one.
-        *
-        * @since 3.2
-        * @param aDCSetting Default Connection value to set
-        */
-        void ReplaceDefConnRecordL( const TCmDefConnValue aDCSetting );
-        
-        /**
-        * Combines two lists of CCmPluginBase pointers into one, according to default
-        * priority order
-        *
-        * @since 3.2
-        * @param aCmArray first list of connection methods to combine
-        * @param aCmLinkedArray second list of connection methods to combine
-        */
-        void CombineArraysForPriorityOrderL( 
-                                        RPointerArray<CCmPluginBase>& aCmArray , 
-                                        RPointerArray<CCmPluginBase>& aCmLinkedArray );        
-
-
-        /**
-        * Gets the destination for the given element ID
-        *
-        * @since 3.2
-        * @param aCmId The element ID of the destination
-        * @return Id of the parent
-        */
-        TUint32 ParentDestinationL( TUint32 aCmId );
-                
-        /**
-        * Returns the default general connection values.
-        *
-        * @since 9.2
-        * @param aGenConnSettings The general connection settings structure
-        */
-        void SetGenConnSettingsToDefault( TCmGenConnSettings& aGenConnSettings );
-        
-        /** 
-         * Leaves if no sufficient is available for creation operations
-         * 
-         * @since 9.2
-         */
-        void CheckAvailableSpaceL();
-        
-	    /**
-         * Get Snap Table ID from CommsDat
-         */
-        TUint32 GetSnapTableIdL();
-
-        /**
-         * Check if the attribute is bearerspecific
-         *
-         * @since 9.2
-         * @param aAttribute  attribute-id to be checked
-         * @return ETrue if aAttribute is bearerspecific, otherwise EFalse
-         */
-        TBool IsBearerSpecific( TUint32 aAttribute ) const;
-        
-#include "cmmanagerimpl.inl"               
-    //=========================================================================
-    // Member data
-        
-    private:
-    
-        CCmTransactionHandler*          iTrans;
-        
-        RFs                             iFs;
-        CArrayPtrFlat<TResourceFiles>*  iResourceFiles;
-        
-        // Destination network table ID
-        CommsDat::TMDBElementId iDestinationTableId;
-        //Global Bearer Type Priorization Table
-        CommsDat::TMDBElementId iBearerTypePriorizationTableId;
-        // Destination network - Icon table
-        CommsDat::TMDBElementId iIconTableId;
-        // Destination network - Icon table
-        CommsDat::TMDBElementId iSeamlessnessTableId;        
-        // Default Connection table
-        CommsDat::TMDBElementId iDefConnTableId;        
-        // Bearer priorities
-        RArray<TBearerPriority>* iBearerPriorityArray;
-        
-        CArrayPtrFlat<const CCmPluginBaseEng>* iPlugins;
-        
-        CCmConnectionMethodInfo* iPluginImpl;
-        
-        TUint iDestinationCount;
-        
-        CCMObjectPool* iObjectPool;
-              
-        // for the FeatureManager
-        TBool iIsFeatureManagerInitialised;
-        TBool iHelp;
-        TBool iDefConnSupported;
-        TBool iCreateTables;
-        TBool iWLan;
-               
-        // For CommsDat watcher
-        CCmCommsDatNotifier* iCommsDatIapNotifier;
-        CCmCommsDatNotifier* iCommsDatSnapNotifier;
-    private:
-    
-        friend class CCmDestinationImpl;
-        friend class CCMObjectPool;
-        friend class CCmConnectionMethodInfo;
-    };
-
-#endif // CMMANAGERIMPL_H