convergedconnectionhandler/cchclientapi/inc/cchuiconnectionhandler.h
branchRCL_3
changeset 22 d38647835c2e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/convergedconnectionhandler/cchclientapi/inc/cchuiconnectionhandler.h	Wed Sep 01 12:29:57 2010 +0100
@@ -0,0 +1,264 @@
+/*
+* Copyright (c) 2008-2010 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:  
+*
+*/
+
+
+#ifndef C_CCCHUICONNECTIONHANDLER_H
+#define C_CCCHUICONNECTIONHANDLER_H
+
+#include <e32base.h>
+#include <e32const.h>
+#include <rconnmon.h>
+#include <cmmanagerext.h>
+#include <wlanmgmtcommon.h> // TWlanConnectionSecurityMode
+#include <cmpluginwlandef.h>
+
+#include "cchuicommon.hrh"
+#include "mcchuitimerobserver.h"
+
+class CCchUiCchHandler;
+class CCchUiSpsHandler;
+class RCmDestinationExt;
+class CmConnectionMethodExt;
+class CConnectionUiUtilities;
+
+
+/**
+ * Connection Handler.
+ * This class implements the creation and altering of connections and SNAPs.
+ *
+ * @code
+ *  // Create CCH handler and SPS handler and give them as parameters when
+ *  // you create Connection  handler.
+ *  iCCHHandler = CCchUiCchHandler::NewL();    
+ *  iSpsHandler = CCchUiSpsHandler::NewL();
+ *  iConnectionHandler = CCchUiConnectionHandler::NewL( 
+ *       *iCCHHandler, *iSpsHandler );
+ * @endcode
+ *
+ * @lib cchui.lib
+ * @since S60 5.0
+ */
+NONSHARABLE_CLASS( CCchUiConnectionHandler ): public CBase
+    {
+public:
+    
+    /**
+     * Two-phased constructor.
+     *
+     * @param aCchUiCchHandler CCH handler reference.
+     * @param aSpsHandler Service settings handler reference.
+     */
+    static CCchUiConnectionHandler* NewL(
+        CCchUiCchHandler& aCchUiCchHandler,
+        CCchUiSpsHandler& aSpsHandler );
+    
+    /**
+     * Two-phased constructor.
+     *
+     * @param aCchUiCchHandler CCH handler reference.
+     * @param aSpsHandler Service settings handler reference.
+     */
+    static CCchUiConnectionHandler* NewLC(
+        CCchUiCchHandler& aCchUiCchHandler,
+        CCchUiSpsHandler& aSpsHandler );
+
+    /**
+     * Destructor.
+     */
+    virtual ~CCchUiConnectionHandler();
+    
+    
+    /**
+     * Displays a dialog to select one wlan access point from all
+     * available and adds access point to snap (creates snap if
+     * it doesn't exist).
+     *
+     * @since S60 5.0
+     * @param aServiceId Service id.
+     * @param aSnapId Snap id of the service. Snap is verified before use.
+     * @param aServiceName Service name (used as snap name if needed)
+     */
+    void SearchAccessPointsL(
+        TUint aServiceId, 
+        TUint32 aSnapId, 
+        const TDesC& aServiceName );
+            
+    /**
+     * Copies iap from specific SNAP to another.
+     *
+     * @since S60 5.0
+     * @param aServiceId service id
+     * @param aServiceName service name
+     * @param aSourceIap source IAP
+     * @param aTargetSnap target SNAP
+     */         
+    void CopyIapToServiceSnapL( 
+        TUint aServiceId,
+        const TDesC& aServiceName,
+        TUint32 aSourceIap, 
+        TUint32 aTargetSnap );
+    
+    /**
+     * Removes connection from specific service´s SNAP.
+     *
+     * @since S60 5.0
+     * @param aServiceName service´s name
+     * @param aIapId access point id to be removed
+     */            
+    void RemoveConnectionL( const TDesC& aServiceName, TInt aIapId );
+    
+    /**
+     * Returns ETrue if wlan search (query) is ongoing.
+     *
+     * @since S60 5.0
+     * @return ETrue if wlan search ongoing.
+     */ 
+    TBool SearchWlanOngoing();
+       
+private:
+
+    CCchUiConnectionHandler(
+        CCchUiCchHandler& aCchUiCchHandler,
+        CCchUiSpsHandler& aSpsHandler );
+    
+    void ConstructL();
+    
+    /**
+     * Checks if connection method already exists.
+     *
+     * @since S60 5.0
+     * @param aDestination Target destination.
+     * @param aSsid SSID of the connection method.
+     * @param aSecurityMode Security mode of the candidate.
+     * @param aAlreadyExists If access point already exists, this is ETrue.
+     * @param aHidden Is candidate hidden or not.
+     * @return TInt Iap id of the new connection method or KErrNotFound.
+     */
+    TInt ConnectionMethodAlreadyExistsL( 
+        RCmDestinationExt& aDestination, 
+        const TDesC& aSsid, 
+        CMManager::TWlanSecMode aSecurityMode,
+        TBool& aAlreadyExists,
+        TBool aHidden );
+    
+    /**
+     * Checks if connection method already exists.
+     *
+     * @since S60 9.2
+     * @param aIapId internet accespoint ID.
+     * @param aTargetSnap target destination.
+     * @return ETrue if exists.
+     */
+    TBool ConnectionMethodAlreadyExistsL(
+        TUint32 aIapId, RCmDestinationExt& aTargetSnap ) const;
+    
+    /**
+     * Adds new connection method to snap.
+     *
+     * @since S60 5.0
+     * @param aDestination Target destination.
+     * @param aSsid SSID of the connection method.
+     * @param aSecurityMode Security mode of the connection method.
+     * @param aAlreadyExists If access point already exists, this is ETrue.
+     * @param aSetHidden Set iap hidden.
+     * @return TInt Iap id of the new connection method or old
+     *         if already existed.
+     */
+    TInt AddNewConnectionMethodL( 
+        RCmDestinationExt& aDestination,
+        const TDesC& aSsid,
+        TWlanConnectionSecurityMode aSecurityMode,
+        TBool& aAlreadyExists,
+        TBool aSetHidden );
+    
+    /**
+     * Saves security settings to created connection method.
+     *
+     * @since S60 5.0
+     * @param aSecMode Security mode.
+     * @param aKey Key.
+     * @param aHex Use hex.
+     * @param aIapId Iap id.
+     */
+    void SaveSecuritySettingsL(
+        const TWlanConnectionSecurityMode aSecMode, 
+        const HBufC* aKey, 
+        const TBool aHex, 
+        const TUint32 aIapId );
+            
+    /**
+     * Sets specific SNAP in use for specific service.
+     *
+     * @since S60 5.0
+     * @param aServiceId Service id of the service to be handled.
+     * @param aSNAPId Snap id to set.
+     */
+    void SetSnapToUseL( 
+        TUint aServiceId, 
+        TUint32 aSNAPId );    
+       
+    /**
+     * Creates SNAP for service. Ownership is passed.
+     *
+     * @since S60 5.0
+     * @param aServiceName service name
+     * @return Created destination, ownership is passed.
+     */            
+    RCmDestinationExt CreateServiceSnapL( 
+        const TDesC& aServiceName );
+                
+private: // data
+
+    /**
+     * Reference to CCH handler.
+     * Not own.
+     */
+    CCchUiCchHandler& iCCHHandler;
+    
+    /**
+     * Reference to service settings handler.
+     * Not own.
+     */
+    CCchUiSpsHandler& iSpsHandler;
+    
+    /**
+     * Pointer to connection ui utilities.
+     * Own.
+     */
+    CConnectionUiUtilities* iConnUiUtils;
+        
+    /**
+     * Handle to connection method manager.
+     * Own.
+     */
+    RCmManagerExt iCmManagerExt;
+    
+    /**
+     * Handle to connection monitor. Required to resolve hidden/public status.
+     * Own.
+     */
+    RConnectionMonitor iConnMon;
+    
+    /**
+     * Flag for determining if search wlan search (query) is ongoing
+     */
+    TBool iSearchWlanOngoing;
+    
+    CCHUI_UNIT_TEST( UT_CchUi )
+    };
+
+#endif // C_CCCHUICONNECTIONHANDLER_H