--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/wvuiprocess/Inc/MCAGroupUtilsPC.h Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,383 @@
+/*
+* Copyright (c) 2006 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 MCAGROUPUTILSPC_H
+#define MCAGROUPUTILSPC_H
+
+
+// INCLUDES
+
+#include "TEnumsPC.h"
+#include "badesca.h"
+#include "ChatDefinitions.h"
+
+
+
+// FORWARD DECLARATIONS
+
+class MCAGroupChatObserverPC;
+class MCAGroupEventObserverPC;
+class MCAGroupMsgErrorObserverPC;
+class CCAChatInfoArray;
+class MCAServerContactsArrayPC;
+class MCAGroupOperations;
+class CImpsCommonGroupProps;
+class CImpsPrivateGroupProps;
+
+
+/**
+ * Group interface process component for UI and Engine.
+ *
+ * @lib wvuiprocessng.lib
+ * @since 3.2
+ */
+class MCAGroupUtilsPC
+
+ {
+ public:
+
+
+
+ /*
+ * Get the created chat room's information on joined users
+ */
+ virtual TInt GetCreatedChatRoomListL( CDesCArray& aTempArray,
+ CDesCArray& aGroupIds ) = 0;
+
+ /*
+ *
+ */
+ virtual TInt SwitchToJoinedGroupL( const TDesC& aGroupID,
+ TCADnlChatViewBuf& aViewDnl ,
+ const MCAConversationMessage* aFwdMessage,
+ TBool aInviteQuery ) = 0;
+
+
+ /*
+ *
+ */
+ virtual void CreateOrJoinGroupL( const TDesC& aGroupId,
+ TBool& aIsJoined, TBool& aIsFavourite ) = 0;
+
+
+
+
+ /*
+ * Deletes the group
+ * @param aGroupId: id of the group
+ * @param aDeleteFromNetwork: Deletes this group from network and phone if true.
+ */
+ virtual TInt DeleteGroupL( const TDesC& aGroupId,
+ TBool aDeleteFromNetwork ) = 0;
+
+ /*
+ *
+ * @param aGroupId: id of the group
+ * @param aDeleteFromNetwork: Deletes this group from network and phone if true.
+ */
+ virtual TInt DeleteChatGroupFromNetworkL( const TDesC& aGroupId,
+ TBool aDeleteFromNetwork ) = 0;
+
+ /*
+ *
+ * @param aGroupId: id of the group
+ * @param aDeleteFromNetwork: Deletes this group from network and phone if true.
+ */
+ virtual void DeleteFailedGroupL( const TDesC& aGroupId,
+ TBool aDeleteFromNetwork ) = 0;
+
+
+ /*
+ *
+ * @param aGroupId: id of the group
+ */
+ virtual TPtrC GetEngineDefaultGroupName( const TDesC& aGroupId ) const = 0;
+
+
+ /*
+ *
+ * @param aGroupId: id of the group
+ */
+ virtual TPtrC GetGroupNameForJoinedGroupL( const TDesC& aGroupId ) = 0;
+
+ /**
+ * Create a simple group
+ * @param aScreenName: screen name of the user creating to the group
+ * @param aJoinGroup: Join to the group after creating
+ * @param aIsWhisperingEnabled: is provate messages allowed
+ * @param aErrorCode: returnt he error code during creating groups
+ */
+ virtual HBufC* CreateGroupSimpleL( const TDesC& aScreenName,
+ TBool aJoinGroup,
+ TBool aIsWhisperingEnabled,
+ TInt& aErrorCode ) = 0;
+
+
+ /**
+ * To show the screen name query with given group name
+ * @param aScreenName: display name
+ */
+ virtual void ScreenNameQueryL( TDes& aScreenName ) = 0;
+
+ /**
+ * Helper function for EditChatGroupPropertiesL and CreateNewChat.
+ * Moves own user id to first in list.
+ * @param aList Reference to a list where own user id is removed and moved to
+ * the first position.
+ */
+ virtual void MoveOwnIdToFirstL( CDesCArray& aList ) = 0;
+
+ /**
+ * Updates the group member status. Leaves on errors.
+ * This method will calculate delta lists based on previous and new
+ * lists
+ * @param aGroupId GroupID
+ * @param aOldAdmins List of previous admins
+ * @param aAdmins List of new admins
+ * @param aOldUserList List of previous users
+ * @param aUserList List of new users
+ * @param aOldRejected List of previous rejected users
+ * @param aRejected List of new rejected users.
+ */
+
+ virtual void UpdateGroupMembersL( const TDesC& aGroupId,
+ const CDesCArray& aOldAdmins, const CDesCArray& aAdmins,
+ const CDesCArray& aOldUserList, const CDesCArray& aUserList,
+ const CDesCArray& aOldRejected, const CDesCArray& aRejected ) = 0;
+
+
+ /**
+ * Adds members to the group. Leaves on errors
+ * @param aGroupId GroupID
+ * @param aAdmins Admins
+ * @param aUserList Users
+ * @param aRejected Rejected users
+ */
+ virtual void AddGroupMembersL( const TDesC& aGroupId, CDesCArray& aAdmins,
+ const CDesCArray& aUserList, const CDesCArray& aRejected ) = 0;
+
+
+ /**
+ * Gets the banned users of group
+ * @param aRejectList List of rejected users
+ * @return CSP error code
+ */
+ virtual TInt GetRejectListL( CDesCArray& aRejectList , const TDesC& aGroup ) = 0;
+
+ /**
+ * Gets the members of group
+ * @param aUserList List of users
+ * @param aScreenNames List of screen names
+ * @param aModers List of moderators
+ * @param aAdmins List of administrators
+ * @return CSP error code
+ */
+ virtual TInt GetMembersL( CDesCArray& aUserList,
+ CDesCArray& aScreenNames,
+ CDesCArray& aModers,
+ CDesCArray& aAdmins, const TDesC& aGroup ) = 0;
+
+
+ /**
+ * Identification of contact. This is resolved from known
+ * identifications.
+ * Alias, nickname and contactId.
+ * Nickname is shown if set.
+ * @param aContactId Id of contact which identification needed.
+ * @return Identification of contact.
+ * Alias if nickname is not set and alias is enabled.
+ * Wvid without domain and prefix if nickname does not
+ exists and alias is not enabled or not exists.
+ */
+ virtual const TPtrC GetIdentificationL( const TDesC& aContactId ) = 0;
+
+ /**
+ * Creates new group to server
+ * @param aScreenName screen name
+ * @param aJoinGroup Should the group be joined after creation
+ * @return CSP error code
+ */
+ virtual HBufC* CreateGroupL( const TDesC& aScreenName,
+ const TDesC& aGroupName,
+ TInt& aError ) = 0;
+
+ /**
+ * Join a group.
+ * Leaves if out of memory before sending a message to the Symbian OS server.
+ * @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 aIsFavourite : if the group is saved as favourite
+ * @return operation-id (positive)
+ */
+ virtual TInt JoinGroupL( const TDesC& aGroupId,
+ const TDesC& aScreenName,
+ TBool aUsers, TBool aIsFavourite ) = 0;
+
+
+ /**
+ * To fetch the data of a group
+ * @param aGroupId: id of the group whose data has to be fetched
+ * @param aUserList: list of users allowed access to the group
+ * @param aScreenNames: screen names of all the users joined to the group
+ * @param aModerators: the users given moderator privileges to the group
+ * @param aAdmins: the users who have been given admin privileges to the list
+ * @param aRejected: list of users banned from entering the group
+ * @return errorcode
+ */
+ virtual TInt GetGroupDataL( const TDesC& aGroupId,
+ CDesCArray& aUserList, CDesCArray& aScreenNames,
+ CDesCArray& aModerators, CDesCArray& aAdmins,
+ CDesCArray& aRejected ) = 0;
+
+ /**
+ * Helper function for EditChatGroupPropertiesL.
+ * Processes edited group properties.
+ * @param aGroupId Reference to group ID.
+ * @param aGroupOps Reference to group operations interface.
+ * @param aOldAdmins Reference to list of old administrators.
+ * @param aNewAdmins Reference to list of new administrators.
+ * @param aOldUsers Reference to list of old users.
+ * @param aNewUsers Reference to list of new users.
+ * @param aOldRejected Reference to list of old rejected users.
+ * @param aNewRejected Reference to list of new users.
+ * @param aNewCommonProps Reference to new group properties.
+ * @param aNewPrivateProps Reference to new group private properties.
+ * @return Error code
+ */
+ virtual TInt ProcessEditedGroupPropertiesL( const TDesC& aGroupId,
+ CDesCArray& aOldAdmins,
+ CDesCArray& aNewAdmins,
+ CDesCArray& aOldUsers,
+ CDesCArray& aNewUsers,
+ CDesCArray& aOldRejected,
+ CDesCArray& aNewRejected ) = 0;
+
+ /*
+ * Get the alias of user
+ */
+ virtual HBufC* GetAliasL() = 0;
+
+ /**
+ * Saves the specified group as favourite
+ * @param aGroupId: group id of the group to be saved as persistent type
+ */
+ virtual void SaveAsFavouriteL( const TDesC& aGroupId ) = 0;
+
+ virtual void GetDefaultGroupNameL( TPtr& aChatGroupName,
+ TEnumsPC::TListSelectionType aSelType ) = 0;
+
+ /*
+ * Get the information to be shown in show chat info options in signlelist view
+ * and group view.
+ * @param aGroupId: Id of group whose information has to be returned
+ * @return chatinfor array instance
+ */
+ virtual CCAChatInfoArray* GetChatInfoArrayL(
+ const TDesC& aGroupId ) = 0;
+
+
+
+ /**
+ * Set the group name property of the specified group
+ * @param aGroupId: group id of the group whose name has to be changed
+ */
+ virtual void SetGroupNameL( const TDesC& aGroupId ) = 0;
+
+ /**
+ * To send invitations from the group view to selected contacts
+ * @param aUserIDs: list of users to whom the invites have to be sent
+ * @param aGroupId: id of the group from which the invite is being sent
+ * @param aMessage: the message that has to be sent to the invitees
+ * @return int: error code
+ */
+ virtual TInt SendInvitationsL( const CDesCArray& aUserIDs,
+ const TDesC& aGroupID, const TDesC& aMessage ) = 0;
+
+
+ /**
+ * Find a group from the store
+ * @param aId the ID of the group to find
+ * @return The group
+ */
+ virtual TBool FindGroup( const TDesC& aId ) = 0;
+
+ /**
+ * Get the User Ids of participants of the group (joined users)
+ * Makes copies of the descriptors.
+ * @param aParticipantList
+ */
+ virtual void GetParticipantsL( CDesCArray& aParticipantList,
+ const TDesC& aGroupId ) const = 0;
+
+ /**
+ * Check if the user has joined this group
+ * @param aGroupId the groupid for which to know if user has joined
+ * @return ETrue if user is joined to the group with group id aGroupId
+ */
+ virtual TBool IsJoined( const TDesC& aGroupId ) const = 0;
+
+ /**
+ * See if this is the user's group
+ * @param aGroupId the groupid for which to know if user is owner
+ * @return ETrue if this group is the user's group
+ */
+ virtual TBool IsOwnGroup( const TDesC& aGroupId ) const = 0;
+
+ /**
+ * Check if the user is administrator in this group
+ * @param aGroupId the groupid for which to know if user is administrator
+ * @return ETrue if the user is administrator
+ */
+ virtual TBool IsAdmin( const TDesC& aGroupId ) const = 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;
+
+ /**
+ * Checks if chat group is favourite or not
+ * @param aGroupId The group for which to know if user has saved has favorite
+ * @return ETrue if favourite EFalse if not
+ */
+ virtual TBool IsFavouriteChatGroup(
+ const TDesC& aGroupId ) const = 0;
+
+ public:
+
+ /**
+ * Destructor.
+ */
+ virtual ~MCAGroupUtilsPC()
+ {
+
+ };
+
+
+ };
+
+#endif // MCAGROUPUTILSPC_H
+
+// End of File