Contacts can be categorized into groups. A group object implements the IMessengerGroup interface. A collection of groups is represented by an object implementing the IMessengerGroups interface. Managing a contact group amounts to manipulating these objects and interfaces as well as the appropriate methods and properties defined on the IMessenger2 interface. For example, an application calls the IMessenger2::MyGroups method to retrieve the collection of groups in Communicator.
Creating a Contact Group
An application creates a contact group by calling the IMessenger2::CreateGroup method. The following C# code snippet shows how to create a contact group.
Copy Code | |
---|---|
CommunicatorAPI.Messenger communicator = ... IMessengerGroup CreateGroup(string groupName) { IMessengerGroup group = GetGroup(groupName); if (group == null) group = communicator.CreateGroup(groupName, communicator.MyServiceId) as IMessengerGroup; return group; } |
Finding a Contact Group
Finding a group involves enumerating the group collection to determine if any group matches some group attributes. The following C# code snippet shows how to find a group by name.
Copy Code | |
---|---|
IMessengerGroup GetGroup(string groupName) { IMessengerGroup group = null; foreach (IMessengerGroup g in communicator.MyGroups as IMessengerGroups) { if (g.Name == groupName) { group = g; break; } } return group; } |
Deleting a Contact Group
Deleting a contact group involves getting the specified group object and removing it from the group collection in Communicator, as illustrated in the following C# code snippet.
Copy Code | |
---|---|
void RemoveGroup(string groupName) { if (groupName == null || groupName == string.Empty) return; IMessengerGroup group = GetGroup(groupName); if (group == null) return; try { IMessengerGroups groups = communicator.MyGroups as IMessengerGroups; groups.Remove(group); } catch (Exception e) { if (e.Message.Contains("0x81000354")) MessageBox.Show("The specified group cannot be deleted."); else throw new Exception("Cannot delete group", e); } } |
Renaming a Contact Group
Renaming a group involves getting the specified group object and setting the IMessengerGroup::Name property of the group object with a new value.
Copy Code | |
---|---|
void RenameGroup(string oldName, string newName) { if (oldName == string.Empty || newName == string.Empty) return; IMessengerGroup group = GetGroup(oldName); if (group == null) return; group.Name = newName; } |
Adding a Contact to a Contact Group
Adding a contact to a contact group involves specifying the contact to be added to a group and the Contact Group itself. With the object implementing the IMessengerContact interface, you call IMessengerGroup::AddContact to associate the contact to the group. The concept is illustrated with the following code snippet.
Copy Code | |
---|---|
object contactToAdd = null; contactToAdd = communicator.GetContact( "jaya@contoso.com", communicator.MyServiceId ); if (contactToAdd != null) { IMessengerGroups theseGroups = (IMessengerGroups)communicator.MyGroups; foreach (IMessengerGroup thisGroup in theseGroups) { if (thisGroup.Name == "My Personal Contacts") { thisGroup.AddContact(contactToAdd); break; } } } |