convergedconnectionhandler/cchclientapi/inc/cchimpl.h
changeset 0 a4daefaec16c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/convergedconnectionhandler/cchclientapi/inc/cchimpl.h	Mon Jan 18 20:12:36 2010 +0200
@@ -0,0 +1,238 @@
+/*
+* 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:  cch client api implementation class
+*
+*/
+
+
+
+#ifndef C_CCHIMPL_H
+#define C_CCHIMPL_H
+
+#include <e32base.h>
+#include <ccherror.h>
+#include <cchtypes.h>
+#include "cch.h"
+#include "cchclient.h"
+#include "cchuiprivateapi.h"
+#include "cchuicommon.hrh"
+
+class CCchService;
+class CCchServiceImpl;
+
+// flag cchui support on. This is temporary fix until cchui is integrated into builds. 
+#define CCHAPI_USE_CCHUI
+
+#ifdef CCHAPI_USE_CCHUI
+class CCchUiPrivateApi;
+#else 
+#define CCchUiPrivateApi TInt 
+#endif
+
+// DATA TYPES
+typedef RPointerArray<CCchServiceImpl> RServiceImplArray;
+
+/**
+ *  Class for basic cch functionality, getting services
+ *
+ *  @code
+ *   ?good_class_usage_example(s)
+ *  @endcode
+ *
+ *  @lib cch
+ */
+class CCchImpl : public CActive 
+    {
+
+public:
+
+    /**
+     * Two-phased constructor.
+     */
+    static CCchImpl* NewL( CCch& aCch );
+    
+    /**
+     * Two-phased constructor.
+     */
+    static CCchImpl* NewLC( CCch& aCch );
+    
+    /**
+     * Destructor.
+     */
+    ~CCchImpl();
+    
+    /**
+     * Returns the RCCHClient
+     * 
+     * @return The used client
+     */
+    RCCHClient& CchClient();
+    
+    /**
+     * Returns one service
+     *
+     * @param aId Service id
+     * @return Cch service or NULL if service not found
+     */
+    CCchService* GetService( TInt aId );
+    
+    /**
+     * Returns service ids of all configured services
+     *
+     * @param  aIds Array of TInt to be filled with service ids
+     * @return Symbian error code
+     */
+    TInt GetServiceIds( RArray<TInt>& aIds );
+    
+    /**
+     * Returns services fulfilling the search criteria
+     *
+     * @param aType Service type
+     * @param aServices Array of CCchService to be filled 
+     * @return Symbian error code
+     */
+    TInt GetServices( TCCHSubserviceType aType, 
+                               RPointerArray<CCchService>& aServices );
+    
+    
+    /**
+     * Returns ETrue if connectivity dialogs are allowed in service enabling.
+     *
+     * @return ETrue if connectivity dialogs are allowed in service enabling
+     */
+    TBool ConnectivityDialogsAllowed() const;
+        
+    
+    /**
+     * For allowing/disallowing connectivity dialogs showing in 
+     * service enabling.
+     * 
+     * @param aConnectivityDialogsAllowed Boolean to set connectivity dialogs
+     *        allowed/disallowed
+     */ 
+    void SetConnectivityDialogsAllowed( TBool aConnectivityDialogsAllowed );
+    
+    
+    /**
+     * For getting cchui api.
+     * 
+     * @return reference to cchui api.
+     */
+    MCchUi& CchUiApi() const;
+    
+    
+    /**
+     * Finds out if corresponding Cch service exists already
+     *
+     * @param aServiceId Service Id
+     * @return Index of the service or KErrNotFound if does not exist
+     */
+    TInt FindService( TInt aServiceId ) const;
+    
+private: //from CActive
+
+	/**
+	 * @see CActive.
+	 */
+	void RunL();
+	
+	/**
+	 * @see CActive.
+	 */
+	void DoCancel();
+	
+	/**
+	 * @see CActive
+	 */
+	TInt RunError(TInt aError);
+	
+private:
+    
+    /**
+     * The constructor
+     */
+	CCchImpl();
+    
+    /**
+     * By default Symbian 2nd phase constructor is private.
+     */
+    void ConstructL( CCch& aCch );
+    
+    /**
+     * Queries the services from CCH client.
+     * 
+     * @param aType Type of the service
+     * @param aServices Array of CCchServices to be filled
+     */
+    void GetServicesL( TCCHSubserviceType aType, 
+            RPointerArray<CCchService>& aServices );
+    
+    /**
+     * Queries the services from CCH client.
+     * 
+     * @param aServiceId If of the service
+     * @param aType Type of the service
+     * @param aServices Array of CCchServices to be filled
+     * @return Symbian error
+     */
+    TInt GetCchServicesL( TInt aServiceId, TCCHSubserviceType aType, 
+			CArrayFixFlat<TCCHService>& aServices );
+    
+    /**
+     * Queries a service from CCH Client by id.
+     * @param	aId The id of the queried service
+     * @return	Pointer to the queried service
+     */
+    CCchServiceImpl* GetServiceL( TInt aId );
+    
+    
+    /**
+     * Returns service ids of all configured services, leave function
+     *
+     * @param  aIds Array of TInt to be filled with service ids
+     */
+    void GetServiceIdsL( RArray<TInt>& aIds );
+
+private: // data
+
+    /**
+     * Own: CCH Server
+     */
+    RCCHServer iCchServer;
+    
+    /**
+     * Own: CCH Client
+     */
+    RCCHClient iCchClient;
+    
+    /**
+     * array the for new cch services
+     */
+    RServiceImplArray iCchServiceImpls;
+    
+    /**
+     * Own: Cch UI handling interface
+     */    
+    CCchUiPrivateApi* iCchUi;
+    
+    /**
+     * Flag which indicates if cchui connectivity dialogs are used when
+     * enabling service.
+     */  
+    TBool iConnectivityDialogsAllowed;
+    
+    CCHUI_UNIT_TEST( UT_CchUi )
+    };
+
+#endif // C_CCHIMPL_H