/** 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 DECLARATIONSclass 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