// обновляет иконки в clist и в messagew void ShowStatusIcon(HANDLE hContact, int mode) { HANDLE hMC = getMetaContact(hContact); // обновить иконки в clist if (mode != -1) { HANDLE hIcon = mode2clicon(mode, 1); ExtraIcon_SetIcon(g_hCLIcon, hContact, hIcon); if (hMC) ExtraIcon_SetIcon(g_hCLIcon, hMC, hIcon); } else { ExtraIcon_Clear(g_hCLIcon, hContact); if (hMC) ExtraIcon_Clear(g_hCLIcon, hMC); } StatusIconData sid = { sizeof(sid) }; sid.szModule = (char*)MODULENAME; for (int i = MODE_NATIVE; i < MODE_CNT; i++) { sid.dwId = i; sid.flags = (mode & SECURED) ? 0 : MBF_DISABLED; if (mode == -1 || (mode & 0x0f) != i || isChatRoom(hContact)) sid.flags |= MBF_HIDDEN; // отключаем все ненужные иконки Srmm_ModifyIcon(hContact, &sid); if (hMC) Srmm_ModifyIcon(hMC, &sid); } }
// remove all secureim connections on subcontacts void DeinitMetaContact(HANDLE hContact) { HANDLE hMetaContact = isProtoMetaContacts(hContact) ? hContact : getMetaContact(hContact); if( hMetaContact ) { for(int i=0;i<CallService(MS_MC_GETNUMCONTACTS,(WPARAM)hMetaContact,0);i++) { HANDLE hSubContact = (HANDLE)CallService(MS_MC_GETSUBCONTACT,(WPARAM)hMetaContact,(LPARAM)i); if( hSubContact && isContactSecured(hSubContact)&SECURED ) { CallContactService(hSubContact,PSS_MESSAGE,(WPARAM)PREF_METANODB,(LPARAM)SIG_DEIN); } } } }