BOOL SM_GiveStatus(char *pszID, char * pszModule, char * pszUID, char * pszStatus) { SESSION_INFO *pTemp = m_WndList, *pLast = NULL; if(!pszID || !pszModule ) return FALSE; while (pTemp != NULL) { if (!lstrcmpiA(pTemp->pszID,pszID) && !lstrcmpiA(pTemp->pszModule,pszModule)) { USERINFO * ui = UM_GiveStatus(pTemp->pUsers, pszUID, TM_StringToWord(pTemp->pStatuses, pszStatus)); if (ui) { SM_MoveUser(pTemp->pszID, pTemp->pszModule, ui->pszUID); if(pTemp->hWnd) SendMessage(pTemp->hWnd, GC_UPDATENICKLIST, (WPARAM)0, (LPARAM)0); } return TRUE; } pLast = pTemp; pTemp = pTemp->next; } return FALSE; }
static void AddUser(GCEVENT * gce) { SESSION_INFO* si = SM_FindSession( gce->pDest->ptszID, gce->pDest->pszModule); if ( si ) { WORD status = TM_StringToWord( si->pStatuses, gce->ptszStatus ); USERINFO * ui = SM_AddUser( si, gce->ptszUID, gce->ptszNick, status); if (ui) { ui->pszNick = mir_tstrdup( gce->ptszNick ); if (gce->bIsMe) si->pMe = ui; ui->Status = status; ui->Status |= si->pStatuses->Status; if (si->hWnd) { SendMessage(si->hWnd, GC_UPDATENICKLIST, (WPARAM)0, (LPARAM)0); } } } }