wvuing/wvuiada/Src/CCAImpsImClient.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/wvuiada/Src/CCAImpsImClient.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,240 @@
+/*
+* Copyright (c) 2005 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:  Implements instant messaging services interface.
+ *
+*/
+
+
+
+#ifndef CCAIMPSIMCLIENT_H
+#define CCAIMPSIMCLIENT_H
+
+//  INCLUDES
+#include "MCAImpsImClient.h"
+
+// FORWARD DECLARATIONS
+class RImpsEng;
+
+// CLASS DECLARATION
+
+/**
+ *  Implements MCAImpsImClient.
+ *  Forwards requests to RImpsImClient
+ *
+ *  @lib CAAdapter.dll
+ *  @since 1.2
+ */
+class CCAImpsImClient : public CBase, public MCAImpsImClient
+    {
+    public:  // Constructors and destructor
+
+        /**
+         * Two-phased constructor.
+         * @param aImpsEng Reference to RImpsEng.
+         */
+        static CCAImpsImClient* NewL( RImpsEng& aImpsEng );
+
+        /**
+         * Destructor.
+         */
+        ~CCAImpsImClient();
+
+    public: // Functions from base classes
+
+        /**
+         * @see RImpsImClient2
+         */
+        void RegisterL(
+            MImpsImHandler2* aImpsObserver,
+            MImpsBlockingHandler2* aBlockingHandler,
+            TUid aApplicationId,
+            TInt aPriority = 0 );
+
+        /**
+         * @see RImpsImClient2
+         */
+        void Unregister();
+
+        // MESSAGING
+
+        /**
+         * @see RImpsImClient2
+         */
+        // This is an adapter to IMPS Engine API, we cannot
+        // influence the const descriptor pointer parameter passing
+        // in the API.
+        TInt SendTextMessageL(  const TDesC* aSenderSn, // CSI: 17 # See description
+                                const MDesCArray* aUserIds,
+                                const TDesC* aGroupId, // CSI: 17 # See description
+                                const MDesCArray* aScreenNames,
+                                const TDesC& aContent,
+                                TBool aDeliveryReportWanted );
+
+        /**
+         * @see RImpsImClient2
+         */
+        // This is an adapter to IMPS Engine API, we cannot
+        // influence the const descriptor pointer parameter passing
+        // in the API.
+        TInt SendContentMessageL( const TDesC* aSenderSn, // CSI: 17 # See description
+                                  const MDesCArray* aUserIds,
+                                  const TDesC* aGroupId, // CSI: 17 # See description
+                                  const MDesCArray* aScreenNames,
+                                  const TDesC& aContentType,
+                                  const TDesC8& aContent,
+                                  TBool aDeliveryReportWanted );
+
+        /**
+         * @see RImpsImClient2
+         */
+        TInt BlockEntityRequestL( const CDesCArray* aBlockEntity,
+                                  const CDesCArray* aUnBlockEntity,
+                                  TBool aBlockedListInUse,
+                                  const CDesCArray* aGrantedEntityList,
+                                  const CDesCArray* aUnGrantEntity,
+                                  TBool aGrantedListInUse );
+
+        /**
+         * @see RImpsImClient2
+         */
+        TInt GetBlockedListRequestL();
+
+        /**
+         * Register an error event observer.
+         * If this is not registered then a client does not
+         * receive error events from WV engine.
+         * An application may implement only one HandleErrorL method
+         * and give pointer to it in each WV client instance.
+         * @since 1.2
+         * @param aObs error event observer
+         */
+        void RegisterErrorObserverL( MImpsErrorHandler2 &aObs );
+
+        /**
+         * Registers the service status change observer.
+         * This can be called any time
+         * @since 1.2
+         * @param aObs status observer implementation. Ownership NOT transferred.
+         */
+        void RegisterStatusObserverL( MImpsStatusHandler2* aObs );
+
+        /**
+         * Unregisters an error observer.
+         * Forwards the call to WV Engine always
+         * This method is not necessary if unregister of the particular
+         * client has been executed (Unregister).
+         * @since 1.2
+         */
+        void UnregisterErrorObserverL();
+
+        /**
+         * Get the maximum TransactionContent size that WV engine
+         * and WV server can handle, related to ParserSize.
+         * Note that if service negotiation is not finished, this
+         * method returns 0.
+         *
+         * @since 3.0
+         * @return size or zero
+         */
+        TInt MaxTransactionContentLengthL( );
+
+        /**
+         * Unregisters the service status change observer.
+         * Forwards the call to WV Engine always
+         * This method is not necessary if unregister of the particular
+         * client type has been executed (Unregister).
+         * @since 1.2
+         */
+        void UnregisterStatusObserverL();
+
+        /**
+         * Internal use only.
+         * Error observer accessor
+         * @since 1.2
+         * @return error observer pointer. Ownership NOT transferred.
+         */
+        MImpsErrorHandler2* ErrorHandler() const;
+
+        /**
+         * Internal use only.
+         * Status observer accessor. This is missing from WV Engine.
+         * Introduced for consistency.
+         * @since 1.2
+         * @return Status observer pointer. Ownership NOT transferred.
+         */
+        MImpsStatusHandler2* StatusHandler() const;
+
+        /**
+         * Available services accessor
+         * Notice that there are no services in NOT_LOGGED state, i.e.
+         * before login has been executed successfully from any client.
+         * @param aServices Service tree having all supported features
+         *        and functions.
+         * @since 1.2
+         */
+        void GetServicesL( TImpsServices& aServices );
+
+        /**
+         * Used to get the interface. Visible because we need
+         * to force lazy initialization (i.e. CCAImpsImClient
+         * needs to do non-lazy init actually).
+         * @see MCAImpsImClient.h
+         */
+        RImpsImClient2* InterfaceL();
+
+
+    private:
+
+        /**
+         * C++ default constructor.
+         * @param aImpsEng Reference to RImpsEng.
+         */
+        CCAImpsImClient( RImpsEng& aImpsEng );
+
+    private:    // Data
+
+        // WV Engine IM interface.
+        RImpsImClient2 iClient;
+
+        // Indicator if we are doing lazy initialization with WV Engine.
+        TBool iLazyInitialization;
+
+        // Indicator if we have registered WV Engine interface.
+        TBool iRegistered;
+
+        // Store priority if we are doing lazy initialization.
+        TInt iPriority;
+
+        // Store application id if we are doing lazy initialization.
+        TUid iApplicationId;
+
+        // IM observer, stored in lazy initialization. Doens't own.
+        MImpsImHandler2* iImHandler;
+
+        // Blocking observer, stored in lazy initialization. Doens't own.
+        MImpsBlockingHandler2* iBlockingHandler;
+
+        // Status observer, stored in lazy initialization. Doens't own.
+        MImpsStatusHandler2* iStatusHandler;
+
+        // Error observer, stored in lazy initialization. Doens't own.
+        MImpsErrorHandler2* iErrorHandler;
+
+        // Reference to IMPS engine server session instance.
+        RImpsEng& iImpsEng;
+    };
+
+#endif      // MCAIMPSIMCLIENT_H
+
+// End of File