--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/convergedconnectionhandler/cchclientapi/inc/cchuiapiimpl.h Wed Sep 01 12:29:57 2010 +0100
@@ -0,0 +1,400 @@
+/*
+* Copyright (c) 2008-2009 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_CCHUIAPIIMPL_H
+#define C_CCHUIAPIIMPL_H
+
+#include <cch.h>
+#include <e32base.h>
+#include <cchuiobserver.h>
+
+#include "mcchuinoteresultobserver.h"
+
+class CCchUiSpsHandler;
+class CCchUiCchHandler;
+class CCCHUiNoteHandler;
+class CCchUiClientObserver;
+class CCchUiConnectionHandler;
+
+/**
+ * CchUiApiImpl class
+ * Implementation class for CchUiApi.
+ * Do the actual things of CchUiApi
+ *
+ * @since @since S60 5.0
+ */
+NONSHARABLE_CLASS( CCchUiApiImpl ) : public CBase,
+ public MCchUiNoteResultObserver,
+ public MCchServiceStatusObserver
+ {
+public:
+
+ /**
+ * Two-phased constructor.
+ * @param aObserver reference to observer insterested in CCH UI events
+ */
+ static CCchUiApiImpl* NewL( CCch& aCch );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CCchUiApiImpl();
+
+ /**
+ * Adds observer for listening cchui events.
+ *
+ * @since S60 5.0
+ * @param aObserver Event observing class
+ */
+ void AddObserverL( MCchUiObserver& aObserver );
+
+ /**
+ * Removes the observer of cchui events.
+ *
+ * @since S60 5.0
+ * @param aObserver Event observing class
+ */
+ void RemoveObserver( MCchUiObserver& aObserver );
+
+ /**
+ * Shows specific dialog or note.
+ *
+ * @since S60 5.0
+ * @param aServiceId service id of the service that the
+ * note is shown for. Service id is used to fetch
+ * service specific data.
+ * @param aDialog specifies dialog to be shown
+ */
+ void ShowDialogL(
+ TUint32 aServiceId,
+ MCchUiObserver::TCchUiDialogType aDialog );
+
+ /**
+ * Configures visualization params.
+ *
+ * @since S60 5.0
+ * @param aAllowedNotes array of allowed notes
+ * @param aAllowedSubServices allowed sub services
+ * @return None
+ */
+ void ConfigureVisualizationL(
+ RArray<MCchUiObserver::TCchUiDialogType>& aAllowedNotes,
+ RArray<TCCHSubserviceType>& aAllowedSubServices );
+
+ /**
+ * Cancels all notes. Same behaviour can be achieved by deleting
+ * this instance. Client can use this method to dismiss note and keep this
+ * API instance in order to show some other notes in the future.
+ * If there is nothing to dismiss, call to this method does nothing.
+ *
+ * @since S60 5.0
+ */
+ void CancelNotes();
+
+ /**
+ * Starts observing events for specific service defined by aServiceId
+ *
+ * @since S60 5.0
+ * @param aService, service identifier
+ * @param aEnableResult, enable result error code
+ */
+ void ManualEnableResultL( TUint aServiceId, TInt aEnableResult );
+
+
+// from base class MCchUiNoteResultObserver
+
+ /**
+ * From MCchUiNoteResultObserver.
+ * Called when certain dialog has completed without errors.
+ *
+ * @since S60 5.0
+ * @param aCompleteCode Complete code.
+ * @param aResultParams Result params of the dialog.
+ */
+ void DialogCompletedL(
+ TInt aCompleteCode,
+ TCCHUiNotifierParams aResultParams );
+
+// from base class MCchServiceStatusObserver
+
+ /**
+ * Observer implementation for service specific events.
+ * by aServiceId.
+ *
+ * @since S60 5.0
+ * @param aServiceId service id
+ * @param aType sub service type
+ * @param aServiceStatus service status
+ */
+ void ServiceStatusChanged(
+ TInt aServiceId,
+ TCCHSubserviceType aType,
+ const TCchServiceStatus& aServiceStatus );
+
+protected: // constructor
+
+ CCchUiApiImpl();
+
+ void ConstructL( CCch& aCch );
+
+protected: // functions
+ /**
+ * Handles authentication failed dialog result.
+ *
+ * @since S60 5.0
+ * @param aCompleteCode Complete code of the dialog.
+ * @param aResultParams Result parameters from the dialog.
+ */
+ void DoHandleAuthenticationFailedCompleteL(
+ TInt aCompleteCode,
+ TCCHUiNotifierParams aResultParams );
+
+ /**
+ * Handles no connections dialog result.
+ *
+ * @since S60 5.0
+ * @param aCompleteCode Complete code of the dialog.
+ * @param aResultParams Result parameters from the dialog.
+ */
+ void DoHandleNoConnectionsCompleteL(
+ TInt aCompleteCode,
+ TCCHUiNotifierParams aResultParams );
+
+ /**
+ * Handles change connection confirmation note result.
+ *
+ * @since S60 5.0
+ * @param aCompleteCode Complete code of the dialog.
+ * @param aResultParams Result parameters from the dialog.
+ */
+ void DoHandleConfirmChangeConnectionCompleteL(
+ TInt aCompleteCode,
+ TCCHUiNotifierParams aResultParams );
+
+ /**
+ * Handles change connection query result.
+ *
+ * @since S60 5.0
+ * @param aCompleteCode Complete code of the dialog.
+ * @param aResultParams Result parameters from the dialog.
+ */
+ void DoHandleChangeConnectionCompleteL(
+ TInt aCompleteCode,
+ TCCHUiNotifierParams aResultParams );
+
+ /**
+ * Handles service specific error.
+ *
+ * @since S60 5.0
+ * @param aServiceId service id
+ * @param aType subservice type
+ * @param aServiceStatus service status
+ */
+ void DoHandleServiceErrorL(
+ TInt aServiceId,
+ TCCHSubserviceType aType,
+ const TCchServiceStatus& aServiceStatus );
+
+ /**
+ * Handles service specific status event.
+ *
+ * @since S60 5.0
+ * @param aServiceId service id
+ * @param aType subservice type
+ * @param aServiceStatus service status
+ */
+ void DoHandleServiceEventL(
+ TInt aServiceId,
+ TCCHSubserviceType aType,
+ const TCchServiceStatus& aServiceStatus );
+
+ /**
+ * Handles search wlan dialog result.
+ *
+ * @since S60 5.0
+ * @param aCompleteCode Complete code of the dialog.
+ * @param aResultParams Result parameters from the dialog.
+ */
+ void HandleSearchWlanCompleteL(
+ TInt& aCompleteCode,
+ TCCHUiNotifierParams& aResultParams );
+
+ /**
+ * Handles search access points error code.
+ *
+ * @since S60 5.0
+ * @param aErr error code to handle.
+ * @param aCompleteCode Complete code of the dialog.
+ * @param aResultParams Result parameters from the dialog.
+ */
+ void HandleSearchAccessPointsErrorL(
+ TInt aErr,
+ TInt& aCompleteCode,
+ TCCHUiNotifierParams& aResultParams );
+
+ /**
+ * Handles search wlan dialog result when use gprs selected.
+ *
+ * @since S60 5.0
+ * @param aCompleteCode Complete code of the dialog.
+ * @param aResultParams Result parameters from the dialog.
+ */
+ void HandleCopyGprsCompleteL(
+ TInt& aCompleteCode,
+ TCCHUiNotifierParams& aResultParams );
+
+ /**
+ * Handle changing to new connection.
+ *
+ * @since S60 5.0
+ * @param aCompleteCode Complete code of the dialog.
+ * @param aResultParams Result parameters from the dialog.
+ */
+ void HandleChangeConnectionL(
+ TInt& aCompleteCode,
+ TCCHUiNotifierParams& aResultParams );
+
+ /**
+ * Informs event to all observers.
+ *
+ * @since S60 5.0
+ * @param aServiceId service id.
+ */
+ void InformObserversL( TInt aServiceId );
+
+ /**
+ * Checks if specific dialog is allowed. If client has not configured,
+ * all dialogs are allowed.
+ *
+ * @since S60 5.0
+ * @param aDialog dialog to be checked.
+ * @return TBool, ETrue if aDialog is allowed
+ */
+ TBool DialogIsAllowed( MCchUiObserver::TCchUiDialogType aDialog );
+
+ /**
+ * Checks if specific sub service is allowed. If client has not configured,
+ * only voip sub service is allowed.
+ *
+ * @since S60 5.0
+ * @param aSubService sub service to be checked.
+ * @return TBool, ETrue if aSubService is allowed
+ */
+ TBool SubServiceIsAllowed( TCCHSubserviceType aSubService );
+
+ /**
+ * Checks subservice state is allowed for showing dialogs.
+ *
+ * @since S60 5.0
+ * @param aState sub service state
+ * @return TBool, ETrue if state is allowed for showing dialogs
+ */
+ TBool StateIsAllowed( const TCCHSubserviceState aState );
+
+ /**
+ * Handles re-enabling of service.
+ *
+ * @since S60 5.0
+ * @param aServiceId service id
+ */
+ void HandleServiceReEnablingL( TUint aServiceId );
+
+ /**
+ * Handles manual enable errors.
+ *
+ * @since S60 5.0
+ * @param aService, service identifier
+ * @param aEnableResult, enable result error code
+ */
+ void HandleManualEnableErrorL( TUint aServiceId, TInt aEnableResult );
+
+private: // data
+
+ /**
+ * Array of encapsulated observers (clients)
+ * Own.
+ */
+ RPointerArray<CCchUiClientObserver> iObservers;
+
+ /**
+ * CCH handler.
+ * Own.
+ */
+ CCchUiCchHandler* iCCHHandler;
+
+ /**
+ * Controller class for dialogs.
+ * Own.
+ */
+ CCCHUiNoteHandler* iNoteController;
+
+ /**
+ * Service settings handler.
+ * Own.
+ */
+ CCchUiSpsHandler* iSpsHandler;
+
+ /**
+ * Connection handler. Handles iaps & snaps.
+ * Own.
+ */
+ CCchUiConnectionHandler* iConnectionHandler;
+
+ /**
+ * Own. Stores service ids of the monitored services
+ */
+ RArray<TUint> iObservervedServices;
+
+ /**
+ * Own. Stores allowed notes (client provided)
+ */
+ RArray<MCchUiObserver::TCchUiDialogType> iAllowedNotes;
+
+ /**
+ * Own. Stores allowed sub services (client provided)
+ */
+ RArray<TCCHSubserviceType> iAllowedSubServices;
+
+ /**
+ * Flag for indicating if re-enabling of service needs
+ * after service disabled event.
+ */
+ TBool iReEnableService;
+
+ /**
+ * For iap id which can be removed when change connection
+ * performed succesfully.
+ */
+ TInt iRemovableConnection;
+
+ /**
+ * Service which we have added cch observer.
+ */
+ TInt iObservedService;
+
+ /**
+ * Stores last cchui operation result.
+ */
+ MCchUiObserver::TCchUiOperationResult iLastOperationResult;
+
+ CCHUI_UNIT_TEST( UT_CchUi )
+ };
+
+#endif // C_CCHUIAPIIMPL_H
+
+