/*************************************************************************** * contactsselection.cpp * * Tue Jun 7 02:30:18 2005 * Copyright 2005 User * Email ****************************************************************************/ #include "contactsselection.h" contactsSelection::contactsSelection(IMUserDaemon *selectedUser, contactViewType viewType) { GList *search, *searchOwners, *searchGroups, *owners; GList **curShadowsList; contactListGroup *groupEntry; contactListUser *userEntry; IMUserDaemon *user; groupInfo *currentGroup; GdkColor col; owners = IO_getOwnerList(); contacts = new contactList(); contacts->setCheckSelectionMode(TRUE); contacts->setViewMode(viewType); settings_getSettings()->getProperties("contactlist", "selectionColor", &col, NULL); // get all groups if (viewType & CVIEW_GROUPS) { search = IO_getGroupManager()->groups; while(search) { currentGroup = (groupInfo*)search->data; groupEntry = new contactListGroup(currentGroup->name, currentGroup->icqndID, currentGroup); groupEntry->openGroup(TRUE); contacts->addChild(groupEntry); search = search->next; } } searchOwners = owners; while(searchOwners) { // get all users search = ((IMOwnerDaemon*)searchOwners->data)->users; while(search) { curShadowsList = NULL; user = (IMUserDaemon*)search->data; searchGroups = user->groups; while(searchGroups) { groupEntry = (contactListGroup*)contacts->findChildByID(((groupInfo*)searchGroups->data)->icqndID, CE_GROUP); if (groupEntry) { userEntry = new contactListUser(user, NULL); if (!curShadowsList) curShadowsList = &userEntry->shadows; userEntry->shadows = *curShadowsList; *curShadowsList = g_list_append(*curShadowsList, userEntry); userEntry->setStatus(user->info->status, i_getIcons()->getUserStatusPixbuf(user)); userEntry->updateColors(); userEntry->setBackgroundColor(col); if (user == selectedUser) userEntry->setSelected(TRUE); groupEntry->addChild(userEntry); } searchGroups = searchGroups->next; } search = search->next; } searchOwners = searchOwners->next; } contacts->realizeEntry(TRUE); selectedEntries = NULL; widget = contacts->frame; } contactsSelection::~contactsSelection() { if (selectedEntries) g_list_free(selectedEntries); delete contacts; } GList* contactsSelection::getSelectedEntries() { selectedEntries = contacts->getSelectedChildren(CE_USER); return selectedEntries; }