--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/wvuiada/Src/CCAImpsGroupClient.h Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,385 @@
+/*
+* 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 group services interface.
+*
+*/
+
+
+
+#ifndef CCAIMPSGROUPCLIENT_H
+#define CCAIMPSGROUPCLIENT_H
+
+// INCLUDES
+#include "MCAImpsGroupClient.h"
+
+// FORWARD DECLARATIONS
+class RImpsEng;
+
+// CLASS DECLARATION
+
+/**
+* Implements MCAImpsGroupClient.
+* Forwards requests to RImpsGroupClient
+*
+* @lib CAAdapter.dll
+* @since 1.2
+*/
+class CCAImpsGroupClient : public CBase, public MCAImpsGroupClient
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ * @param aImpsEng Reference to RImpsEng
+ */
+ static CCAImpsGroupClient* NewL( RImpsEng& aImpsEng );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CCAImpsGroupClient();
+
+ private:
+
+ /**
+ * C++ default constructor.
+ * @param Reference to RImpsEng.
+ */
+ CCAImpsGroupClient( RImpsEng& aImpsEng );
+
+ public: // Functions from base classes
+
+ // INITILIZATION AND CONNECT
+
+ /**
+ * From MCAImpsGroupClient Registers the listener object for
+ * Group events.
+ * @since 1.2
+ * @param aObserver The observer instance.
+ * @param aApplicationId application UID or
+ * another unique id for your application.
+ * @param aPriority observer priority. Refer to CActive priority.
+ */
+ virtual void RegisterL(
+ MImpsGroupHandler2* aObserver,
+ TUid aApplicationId,
+ TInt aPriority );
+
+ /**
+ * Unregisters the listener object and disconnects from the server.
+ * @since 1.2
+ */
+ virtual void Unregister();
+
+
+ // WV PROTOCOL REQUESTS
+
+ /**
+ * From MCAImpsGroupClient Creates a group.
+ * MImpsGroupHandler::HandleCompleteL handles the server response.
+ * Leaves if out of memory before sending a message to the
+ * Symbian OS server.
+ * @since 1.2
+ * @param aGroupId group id
+ * @param aProperties initial group properties
+ * @param aScreenName ScreenName of the user
+ * @param aJoinGroup indicates that the newly created group is joined
+ * (or not) at creation time.
+ * @param aSubscribeNotification indicates if we sucscribe notification.
+ * @return oparation-id (positive)
+ */
+ virtual TInt CreateGroupL( const TDesC& aGroupId,
+ const CImpsCommonGroupProps* aProperties,
+ const TDesC& aScreenName, TBool aJoinGroup,
+ TBool aSubscribeNotification = EFalse );
+
+ /**
+ * From MCAImpsGroupClient Deletes a group.
+ * MImpsGroupHandler::HandleCompleteL handles the server response.
+ * Leaves if out of memory before sending a message to the Symbian OS server.
+ * @since 1.2
+ * @param aGroupId group id
+ * @return oparation-id (positive)
+ */
+ virtual TInt DeleteGroupL( const TDesC& aGroupId );
+
+ /**
+ * From MCAImpsGroupClient Join a group.
+ * MImpsGroupHandler::HandleJoinL handles the server response.
+ * Leaves if out of memory before sending a message to the
+ * Symbian OS server.
+ * @since 1.2
+ * @param aGroupId group id
+ * @param aScreenName screen name for the user, optional (may be zero
+ * length)
+ * @param aUsers ETrue if a user wants to get list of joined users in a
+ * reponse,
+ * @param aSubscribeNotification indicates if we sucscribe notification.
+ * @return oparation-id (positive)
+ */
+ virtual TInt JoinGroupL( const TDesC& aGroupId,
+ const TDesC& aScreenName, TBool aUsers,
+ TBool aSubscribeNotification = EFalse );
+
+ /**
+ * From MCAImpsGroupClient Leave a group.
+ * MImpsGroupHandler::HandleLeaveL handles the server response.
+ * Leaves if out of memory before sending a message to the
+ * Symbian OS server.
+ * @since 1.2
+ * @param aGroupId group id
+ * @return oparation-id (positive)
+ */
+ virtual TInt LeaveGroupL( const TDesC& aGroupId );
+
+ /**
+ * From MCAImpsGroupClient Get group members.
+ * MImpsGroupHandler::HandleGroupMembersL handles the server response.
+ * Leaves if out of memory before sending a message to the
+ * Symbian OS server.
+ * @since 1.2
+ * @param aGroupId group id
+ * @return oparation-id (positive)
+ */
+ virtual TInt GroupMembersL( const TDesC& aGroupId );
+
+ /**
+ * From MCAImpsGroupClient Add group members.
+ * The new users' type is ordinary initially.
+ * MImpsGroupHandler::HandleCompleteL handles the server response.
+ * Leaves if out of memory before sending a message to the
+ * Symbian OS server.
+ * @since 1.2
+ * @param aGroupId target group id
+ * @param aUserList list of users to be added (user-ids)
+ * @param aScreenNameList Screennames of the users
+ * @return oparation-id (positive)
+ */
+ virtual TInt AddMembersL( const TDesC& aGroupId,
+ const MDesCArray& aUserList, const MDesCArray& aScreenNameList );
+
+ /**
+ * From MCAImpsGroupClient Remove group members.
+ * MImpsGroupHandler::HandleCompleteL handles the server response.
+ * Leaves if out of memory before sending a message to the
+ * Symbian OS server.
+ * @since 1.2
+ * @param aGroupId target group id
+ * @param aUserList list of users to be removed
+ * @return oparation-id (positive)
+ */
+ virtual TInt RemoveMembersL( const TDesC& aGroupId,
+ const MDesCArray& aUserList );
+
+ /**
+ * From MCAImpsGroupClient Modify members' access rights.
+ * MImpsGroupHandler::HandleCompleteL handles the server response.
+ * Leaves if out of memory before sending a message to the
+ * Symbian OS server.
+ * @since 1.2
+ * @param aGroupId target group id
+ * @param aAdminList list of new administrators user-ids
+ * @param aModerList list of new moderators user-ids
+ * @param aOrdinaryList list of new ordinary users user-ids
+ * @return oparation-id (positive)
+ */
+ virtual TInt ModifyMembersAccessL( const TDesC& aGroupId,
+ const MDesCArray* aAdminList, const MDesCArray* aModerList,
+ const MDesCArray* aOrdinaryList );
+
+ /**
+ * From MCAImpsGroupClient Get group properties.
+ * MImpsGroupHandler::HandleGroupPropertiesL handles the server response.
+ * Leaves if out of memory before sending a message to the
+ * Symbian OS server.
+ * @since 1.2
+ * @param aGroupId target group id
+ * @return oparation-id (positive)
+ */
+ virtual TInt GroupPropertiesL( const TDesC& aGroupId );
+
+ /**
+ * From MCAImpsGroupClient Set group properties.
+ * MImpsGroupHandler::HandlecompleteL handles the server response.
+ * Leaves if out of memory before sending a message to the
+ * Symbian OS server.
+ * @since 1.2
+ * @param aGroupId target group id
+ * @param aGroupProps common properties
+ * @param aOwnProps user's own properties
+ * @return oparation-id (positive)
+ */
+ virtual TInt SetGroupPropertiesL( const TDesC& aGroupId,
+ const CImpsCommonGroupProps* aGroupProps,
+ const CImpsPrivateGroupProps* aOwnProps );
+
+ /**
+ * From MCAImpsGroupClient Update or get list of rejected users.
+ * MImpsGroupHandler::HandleRejectListL handles the server response.
+ * If you want to get the current reject list only, then
+ * give aGroupId parameter only.
+ * Leaves if out of memory before sending a message to the
+ * Symbian OS server.
+ * @since 1.2
+ * @param aGroupId target group id
+ * @param aRejectedList users to be added to the reject list
+ * (user-ids) May be NULL.
+ * @param aEnabledList users to be removed from the reject list
+ * (user-ids) May be NULL.
+ * @return oparation-id (positive)
+ */
+ virtual TInt SetRejectListL( const TDesC& aGroupId,
+ const MDesCArray* aRejectedList, const MDesCArray* aEnabledList );
+
+ /**
+ * From MCAImpsGroupClient Subscribe group change notice.
+ * MImpsGroupHandler::HandleCompleteL handles the server response.
+ * After successfull subscription HandleGroupPropertiesL,
+ * HandleNewUsersL and HandleLeftUsersL methods are called
+ * whenever remote service sends notifications.
+ * Leaves if out of memory before sending a message to the
+ * Symbian OS server.
+ * @since 1.2
+ * @param aGroupId group id
+ * @return oparation-id (positive)
+ */
+ virtual TInt SubscribeL( const TDesC& aGroupId );
+
+ /**
+ * From MCAImpsGroupClient Unsubscribe group change notice.
+ * MImpsGroupHandler::HandleCompleteL handles the server response.
+ * Leaves if out of memory before sending a message to the
+ * Symbian OS server.
+ * @since 1.2
+ * @param aGroupId group id
+ * @return oparation-id (positive)
+ */
+ virtual TInt UnsubscribeL( const TDesC& aGroupId );
+
+ /**
+ * From MCAImpsGroupClient Check the group change subscription status.
+ * MImpsGroupHandler::HandleSubscriptionL handles the server response.
+ * Leaves if out of memory before sending a message to the
+ * Symbian OS server.
+ * @since 1.2
+ * @param aGroupId group id
+ * @return oparation-id (positive)
+ */
+ virtual TInt CheckSubscriptionL( const TDesC& aGroupId );
+
+ /**
+ * 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
+ */
+ virtual 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.
+ */
+ virtual 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
+ */
+ virtual void UnregisterErrorObserverL();
+
+ /**
+ * 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
+ */
+ virtual void UnregisterStatusObserverL();
+
+ /**
+ * Internal use only.
+ * Error observer accessor
+ * @since 1.2
+ * @return error observer pointer. Ownership NOT transferred.
+ */
+ virtual 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.
+ */
+ virtual MImpsStatusHandler2* StatusHandler() const;
+
+ /**
+ * Returns actual WV Engine interface class pointer which is registered.
+ * @since 1.2
+ * @return RImpsGroupClient pointer which is registered and can be used.
+ * Ownership NOT transferred.
+ */
+ RImpsGroupClient2* InterfaceL();
+
+ /**
+ * 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
+ */
+ virtual void GetServicesL( TImpsServices& aServices );
+
+ private: // Data
+
+ // WV Engine group interface.
+ RImpsGroupClient2 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;
+
+ // Group observer, stored in lazy initialization. Doens't own.
+ MImpsGroupHandler2* iGroupHandler;
+
+ // 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 // MCAIMPSGROUPCLIENT_H
+
+// End of File