wvuing/wvuieng/EngInc/MCAGroupManagerInterface.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/wvuieng/EngInc/MCAGroupManagerInterface.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,193 @@
+/*
+* Copyright (c) 2003 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:  Interface for group operations
+*
+*/
+
+#ifndef MCAGROUPMANAGERINTERFACE_H
+#define MCAGROUPMANAGERINTERFACE_H
+
+// INCLUDES
+#include <badesca.h>
+
+// FORWARD DECLARATIONS
+class MCAGroupOperations;
+class MCAGroupEventObserver;
+class CImpsCommonGroupProps;
+class CImpsPrivateGroupProps;
+
+// CLASS DECLARATION
+
+/**
+ *  Group manager interface to the UI.
+ *
+ *  @lib CAEngine.lib
+ *  @since 2.1
+ */
+class MCAGroupManagerInterface
+    {
+    public:
+
+        /**
+         * Returns the number of created chats and increments the value by one.
+         * @return Is the current amount of created chats in this session.
+         */
+        virtual TInt NumberOfCreatedGroupsDuringSession() const = 0;
+
+        /**
+         * Populates given list with groups that logged user has created.
+         * @param aGroupList Group-list to be populated
+         * @return The errorcode
+         */
+        virtual TInt PopulateCreatedGroupsL( CDesCArray& aGroupList ) const = 0;
+
+    public: // new 2.1 stuff
+
+        /**
+         * @return Number of joined groups
+         */
+        virtual TInt JoinedGroups() = 0;
+
+        /**
+         * Get the class reponsible for network group operations.
+         * Ownership is not transferred.
+         * @param aId The group id
+         * @return The group operations class
+         */
+        virtual MCAGroupOperations* GroupOperationsL( const TDesC& aId ) = 0;
+
+        /**
+         * Set an observer for events of individual group (join, leave, etc.)
+         * @param aId The group id
+         * @param aObs The observer
+         */
+        virtual void SetGroupEventObserverL( const TDesC& aId, MCAGroupEventObserver* aObserver ) = 0;
+
+        /**
+         * Create a group. Creates a group to Storage Manager,
+         * and the associated group wrapper.
+         * The ownership of the common and private group properties is
+         * transferred, so be sure to CleanupStack::Pop those out
+         * immediately BEFORE calling this method!
+         * @param aProperties initial common group properties.
+         * @param aPrivProperties initial private group properties.
+         * @param aScreenName specifies the screen name if joining is made
+         * with the same call.
+         * @param aJoinGroup specifies if we want to join to this group.
+         * @param aIsWhisperingEnabled Can user receive private
+         * messages (ETrue)
+         * @param aErrorCode contains the possible error code after function
+         * returns.
+         * @return The group ID. If non-NULL, the ownership is transferred to
+         * the calling function. If NULL, no group could have been created due
+         * to an error condition.
+         */
+        virtual HBufC* CreateGroupL(
+            CImpsCommonGroupProps* aProperties,
+            CImpsPrivateGroupProps* aPrivProperties,
+            const TDesC& aScreenName,
+            TBool aJoinGroup,
+            TBool aIsWhisperingEnabled,
+            TInt& aErrorCode
+        ) = 0;
+
+        /**
+         * Join the given group. Use this method instead of calling
+         * the wrapper directly. This method makes sure
+         * the common and private properties exist. Wraps
+         * the JoinL in MCAGroupOperations.
+         * @param aGroupId The group to join
+         * @param aScreenName The screen name in this group
+         * @param aUsers ETrue if list of joined users to be told in response
+         * @param aIsFavourite The group is favourite (ETrue)
+         * @param aIsWhisperingEnabled User can receive
+         *        private messages (ETrue)
+         * @return IMPS error code from JoinL
+         */
+        virtual TInt JoinGroupL( const TDesC& aGroupId,
+                                 const TDesC& aScreenName,
+                                 TBool aUsers, TBool aIsFavourite,
+                                 TBool aIsWhisperingEnabled ) = 0;
+
+        /**
+         * Leaves every joined group.
+         * @see description in LeaveGroupL.
+         */
+        virtual void LeaveJoinedGroupsL() = 0;
+
+        /**
+         * Leave the given group. Use this method instead of
+         * calling the wrapper directly (to avoid race
+         * conditions). This method also does cleanup and
+         * removes the group wrapper, if necessary.
+         * Wraps the LeaveL in MCAGroupOperations.
+         * @param aGroupId The group to leave
+         * @return IMPS error code from LeaveL
+         */
+        virtual TInt LeaveGroupL( const TDesC& aGroupId ) = 0;
+
+        /**
+         * Generates groupId
+         * @param aResourcePart Resource-part string (group-name)
+         * @return GroupId, ownership is transferred to the caller
+         */
+        virtual HBufC* GenerateGroupIdLC( const TDesC& aResourcePart ) = 0;
+
+        /**
+         * Delete the given group
+         * @param aGroupId The group id of the group to delete
+         * @param aDeleteFromNetwork Defines whether the group should
+         *        be deleted also from network server or not
+         * @return The errorcode
+         */
+        virtual TInt DeleteGroupL( const TDesC& aGroupId, TBool aDeleteFromNetwork ) = 0;
+
+        /**
+         * Check if the list of users is allowed to access
+         * (e.g. via invite) the given group. The users which
+         * were not in the list are returned via aNotInList.
+         * @param aGroupId The group id
+         * @param aCheckUsers The users for whom to check access
+         * @param aNotInList The users which were not in the list
+         * @return ETrue if the currently logged user is an administrator
+         * in this group.
+         */
+        virtual TBool IsAllowedAccessL( const TDesC& aGroupId,
+                                        const CDesCArray& aCheckUsers,
+                                        CDesCArray& aNotInList ) = 0;
+
+        /**
+         * Check if the given group is open or closed for everyone.
+         * @param aGroupId The group id of the group to check
+         * @return ETrue if group is open, EFalse if closed
+         */
+        virtual TBool IsGroupOpenL( const TDesC& aGroupId ) = 0;
+
+        /**
+         * Get the group name for the given group id
+         * @param aGroupId
+         * @return The group name, ownership is transferred.
+         */
+        virtual HBufC* GroupNameL( const TDesC& aGroupId ) = 0;
+
+        virtual  void CancelGroupOperationL(const TDesC& aGroupId) = 0;
+    protected:
+
+        // Deletion through this class is not wanted.
+        virtual ~MCAGroupManagerInterface() { };
+    };
+
+#endif      // MCAGROUPMANAGERINTERFACE_H
+
+// End of File