static ClcContact* AddContactToGroup(ClcData *dat, ClcGroup *group, ClcCacheEntry *cacheEntry) { if (cacheEntry == NULL) return NULL; if (group == NULL) return NULL; if (dat == NULL) return NULL; MCONTACT hContact = cacheEntry->hContact; dat->needsResort = 1; int i; for (i = group->cl.count - 1; i >= 0; i--) if (group->cl.items[i]->type != CLCIT_INFO || !(group->cl.items[i]->flags&CLCIIF_BELOWCONTACTS)) break; i = cli_AddItemToGroup(group, i + 1); _LoadDataToContact(group->cl.items[i], group, dat, hContact); cacheEntry = pcli->pfnGetCacheEntry(hContact); ClearRowByIndexCache(); return group->cl.items[i]; }
static struct ClcContact * AddContactToGroup(struct ClcData *dat,struct ClcGroup *group, pdisplayNameCacheEntry cacheEntry) { HANDLE hContact; int i; if (cacheEntry==NULL) return NULL; if (group==NULL) return NULL; if (dat==NULL) return NULL; hContact=cacheEntry->m_cache_hContact; dat->NeedResort=1; for(i=group->cl.count-1;i>=0;i--) if(group->cl.items[i]->type!=CLCIT_INFO || !(group->cl.items[i]->flags&CLCIIF_BELOWCONTACTS)) break; i=cli_AddItemToGroup(group,i+1); _LoadDataToContact(group->cl.items[i], group, dat, hContact); cacheEntry=(pdisplayNameCacheEntry)pcli->pfnGetCacheEntry(hContact); ClearRowByIndexCache(); return group->cl.items[i]; }
static struct ClcContact * AddContactToGroup(struct ClcData *dat,struct ClcGroup *group,pdisplayNameCacheEntry cacheEntry) { char *szProto; WORD apparentMode; DWORD idleMode; HANDLE hContact; int i; if (cacheEntry==NULL) return NULL; if (group==NULL) return NULL; if (dat==NULL) return NULL; hContact=cacheEntry->hContact; //ClearClcContactCache(hContact); dat->NeedResort=1; for(i=group->cl.count-1;i>=0;i--) if(group->cl.items[i]->type!=CLCIT_INFO || !(group->cl.items[i]->flags&CLCIIF_BELOWCONTACTS)) break; i=cli_AddItemToGroup(group,i+1); group->cl.items[i]->type=CLCIT_CONTACT; group->cl.items[i]->SubAllocated=0; group->cl.items[i]->isSubcontact=0; group->cl.items[i]->subcontacts=NULL; group->cl.items[i]->szText[0]=0; // group->cl.items[i]->szSecondLineText=NULL; // group->cl.items[i]->szThirdLineText=NULL; group->cl.items[i]->image_is_special=FALSE; // group->cl.items[i]->status=cacheEntry->status; group->cl.items[i]->iImage=CallService(MS_CLIST_GETCONTACTICON,(WPARAM)hContact,0); cacheEntry=(pdisplayNameCacheEntry)pcli->pfnGetCacheEntry(hContact); group->cl.items[i]->hContact=hContact; group->cl.items[i]->avatar_pos = AVATAR_POS_DONT_HAVE; Cache_GetAvatar(dat, group->cl.items[i]); szProto=cacheEntry->szProto; if(szProto!=NULL&&!pcli->pfnIsHiddenMode(dat,cacheEntry->status)) group->cl.items[i]->flags |= CONTACTF_ONLINE; apparentMode=szProto!=NULL?cacheEntry->ApparentMode:0; if(apparentMode==ID_STATUS_OFFLINE) group->cl.items[i]->flags|=CONTACTF_INVISTO; else if(apparentMode==ID_STATUS_ONLINE) group->cl.items[i]->flags|=CONTACTF_VISTO; else if(apparentMode) group->cl.items[i]->flags|=CONTACTF_VISTO|CONTACTF_INVISTO; if(cacheEntry->NotOnList) group->cl.items[i]->flags|=CONTACTF_NOTONLIST; idleMode=szProto!=NULL?cacheEntry->IdleTS:0; if (idleMode) group->cl.items[i]->flags|=CONTACTF_IDLE; group->cl.items[i]->proto = szProto; // group->cl.items[i]->timezone = (DWORD)DBGetContactSettingByte(hContact,"UserInfo","Timezone", DBGetContactSettingByte(hContact, szProto,"Timezone",-1)); /* if (group->cl.items[i]->timezone != -1) { int contact_gmt_diff = group->cl.items[i]->timezone; contact_gmt_diff = contact_gmt_diff > 128 ? 256 - contact_gmt_diff : 0 - contact_gmt_diff; contact_gmt_diff *= 60*60/2; if (contact_gmt_diff == dat->local_gmt_diff) group->cl.items[i]->timediff = 0; else group->cl.items[i]->timediff = (int)dat->local_gmt_diff_dst - contact_gmt_diff; } */ pcli->pfnInvalidateDisplayNameCacheEntry(hContact); Cache_GetTimezone(dat, group->cl.items[i]->hContact); Cache_GetText(dat, group->cl.items[i],1); ClearRowByIndexCache(); return group->cl.items[i]; }