#include "commonheaders.h" int __cdecl onContactSettingChanged(WPARAM wParam,LPARAM lParam) { HANDLE hContact = (HANDLE)wParam; DBCONTACTWRITESETTING *cws=(DBCONTACTWRITESETTING*)lParam; if (!hContact || strcmp(cws->szSetting,"Status")) return 0; pUinKey ptr = getUinKey(hContact); int stat = getContactStatus(hContact); if (!ptr || stat==-1) return 0; if (stat==ID_STATUS_OFFLINE) { // go offline if (ptr->mode==MODE_NATIVE && cpp_keyx(ptr->cntx)) { // have active context cpp_delete_context(ptr->cntx); ptr->cntx=0; // reset context showPopUpDC(hContact); // show popup "Disabled" ShowStatusIconNotify(hContact); // change icon in CL } else if (ptr->mode==MODE_RSAAES && exp->rsa_get_state(ptr->cntx)==7) { deleteRSAcntx(ptr); showPopUpDC(hContact); // show popup "Disabled" ShowStatusIconNotify(hContact); // change icon in CL } } else { // go not offline if (ptr->offlineKey) { cpp_reset_context(ptr->cntx); ptr->offlineKey = false; } ShowStatusIconNotify(hContact); // change icon in CL } return 0; } // wParam=(WPARAM)(HANDLE)hContact // lParam=0 int __cdecl onContactAdded(WPARAM wParam,LPARAM lParam) { addContact((HANDLE)wParam); return 0; } // wParam=(WPARAM)(HANDLE)hContact // lParam=0 int __cdecl onContactDeleted(WPARAM wParam,LPARAM lParam) { delContact((HANDLE)wParam); return 0; } int __cdecl onExtraImageListRebuilding(WPARAM, LPARAM) { RefreshContactListIcons(); return 0; } int __cdecl onExtraImageApplying(WPARAM wParam, LPARAM) { if ( isSecureProtocol((HANDLE)wParam)) ExtraIcon_SetIcon(g_hCLIcon, (HANDLE)wParam, mode2clicon( isContactSecured((HANDLE)wParam), 1)); return 0; } int __cdecl onRebuildContactMenu(WPARAM wParam,LPARAM lParam) { #if defined(_DEBUG) || defined(NETLIB_LOG) Sent_NetLog("onRebuildContactMenu"); #endif HANDLE hContact = (HANDLE)wParam; BOOL bMC = isProtoMetaContacts(hContact); if ( bMC ) hContact = getMostOnline(hContact); // возьмем тот, через который пойдет сообщение pUinKey ptr = getUinKey(hContact); int i; ShowStatusIconNotify(hContact); // check offline/online CLISTMENUITEM mi = { sizeof(mi) }; if (!ptr) { // hide menu bars mi.flags = CMIM_FLAGS | CMIF_NOTOFFLINE | CMIF_HIDDEN; for(i=0;imode==MODE_NATIVE || ptr->mode==MODE_RSAAES)) { // Native/RSAAES mi.flags = CMIM_FLAGS | CMIF_NOTOFFLINE | CMIM_ICON; if ( !isSecured ) { // create secureim connection mi.hIcon = mode2icon(ptr->mode|SECURED,2); CallService(MS_CLIST_MODIFYMENUITEM,(WPARAM)g_hMenu[0],(LPARAM)&mi); } else { // disable secureim connection mi.hIcon = mode2icon(ptr->mode,2); CallService(MS_CLIST_MODIFYMENUITEM,(WPARAM)g_hMenu[1],(LPARAM)&mi); } // set status menu if ( bSCM && !bMC && ( !isSecured || ptr->mode==MODE_PGP || ptr->mode==MODE_GPG )) { mi.flags = CMIM_FLAGS | CMIM_NAME | CMIM_ICON; mi.hIcon = g_hICO[ICO_ST_DIS+ptr->status]; mi.pszName = (LPSTR)sim312[ptr->status]; CallService(MS_CLIST_MODIFYMENUITEM,(WPARAM)g_hMenu[2],(LPARAM)&mi); mi.flags = CMIM_FLAGS | CMIM_ICON; for(i=0;i<=(ptr->mode==MODE_RSAAES?1:2);i++) { mi.hIcon = (i == ptr->status) ? g_hICO[ICO_ST_DIS+ptr->status] : NULL; CallService(MS_CLIST_MODIFYMENUITEM,(WPARAM)g_hMenu[3+i],(LPARAM)&mi); } } } else if ( isSecureProto && !isChat && (ptr->mode==MODE_PGP || ptr->mode==MODE_GPG)) { // PGP, GPG if ( ptr->mode==MODE_PGP && bPGPloaded ) { if ((bPGPkeyrings || bPGPprivkey) && !isGPG) { mi.flags = CMIM_FLAGS; CallService(MS_CLIST_MODIFYMENUITEM,(WPARAM)g_hMenu[isPGP+6],(LPARAM)&mi); } } if ( ptr->mode==MODE_GPG && bGPGloaded ) { if (bGPGkeyrings && !isPGP) { mi.flags = CMIM_FLAGS; CallService(MS_CLIST_MODIFYMENUITEM,(WPARAM)g_hMenu[isGPG+8],(LPARAM)&mi); } } } if ( isSecureProto && !isChat && isMiranda ) { // set mode menu if ( bMCM && !bMC && ( !isSecured || ptr->mode==MODE_PGP || ptr->mode==MODE_GPG )) { mi.flags = CMIM_FLAGS | CMIM_NAME | CMIM_ICON; mi.hIcon = g_hICO[ICO_OV_NAT+ptr->mode]; mi.pszName = (LPSTR)sim311[ptr->mode]; CallService(MS_CLIST_MODIFYMENUITEM,(WPARAM)g_hMenu[10],(LPARAM)&mi); mi.flags = CMIM_FLAGS | CMIM_ICON; for(i=0;imode!=MODE_PGP && !bPGP ) continue; if ( i==MODE_GPG && ptr->mode!=MODE_GPG && !bGPG ) continue; mi.hIcon = (i == ptr->mode) ? g_hICO[ICO_ST_ENA] : NULL; CallService(MS_CLIST_MODIFYMENUITEM,(WPARAM)g_hMenu[11+i],(LPARAM)&mi); } } } return 0; } // EOF