From cb4a46e7fbe62d788e66ed6121c717a2d22a4d7c Mon Sep 17 00:00:00 2001 From: watcherhd Date: Thu, 21 Apr 2011 14:14:52 +0000 Subject: svn.miranda.im is moving to a new home! git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@7 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb --- secureim/crypt_icons.cpp | 151 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 secureim/crypt_icons.cpp (limited to 'secureim/crypt_icons.cpp') diff --git a/secureim/crypt_icons.cpp b/secureim/crypt_icons.cpp new file mode 100644 index 0000000..97f86b4 --- /dev/null +++ b/secureim/crypt_icons.cpp @@ -0,0 +1,151 @@ +#include "commonheaders.h" + + +typedef struct { + HICON icon; + SHORT mode; +} ICON_CACHE; + + +ICON_CACHE *ICONS_CACHE = NULL; +int icons_cache = 0; + + +// преобразует mode в HICON который НЕ НУЖНО разрушать в конце +HICON mode2icon(int mode,int type) { + + int m=mode&0x0f,s=(mode&SECURED)>>4,i; // разобрали на части - режим и состояние + HICON icon; + + if( icons_cache ) { + for(i=0;i>4; // разобрали на части - режим и состояние + + if( mode==-1 || (!s && !bASI && m!=MODE_PGP && m!=MODE_GPG) ) { + return g_IEC[0]; // вернем пустое место + } + + int i=1+m*IEC_CNT+IEC_CL_DIS+s; + if( g_IEC[i].hImage==(HANDLE)-1 ) { +/* g_hIEC[i] = mode2icon(mode,1); + g_IEC[i].hImage = (HANDLE) CallService(MS_CLIST_EXTRA_ADD_ICON, (WPARAM)g_hIEC[i], (LPARAM)0);*/ + HICON icon = mode2icon(mode,1); + g_IEC[i].hImage = (HANDLE) CallService(MS_CLIST_EXTRA_ADD_ICON, (WPARAM)icon, (LPARAM)0); + } + return g_IEC[i]; +} + + +// обновляет иконки в clist и в messagew +void ShowStatusIcon(HANDLE hContact,int mode) { + + HANDLE hMC = getMetaContact(hContact); + if( bADV || g_hCLIcon ) { // обновить иконки в clist + if( mode!= -1 ) { + IconExtraColumn iec=mode2iec(mode); + if( g_hCLIcon ) { + ExtraIcon_SetIcon(g_hCLIcon, hContact, iec.hImage); + if( hMC ) + ExtraIcon_SetIcon(g_hCLIcon, hMC, iec.hImage); + } + else { + CallService(MS_CLIST_EXTRA_SET_ICON, (WPARAM)hContact, (LPARAM)&iec); + if( hMC ) + CallService(MS_CLIST_EXTRA_SET_ICON, (WPARAM)hMC, (LPARAM)&iec); + } + } + } + if( ServiceExists(MS_MSG_MODIFYICON) ) { // обновить иконки в srmm + StatusIconData sid; + memset(&sid,0,sizeof(sid)); + sid.cbSize = sizeof(sid); + sid.szModule = (char*)szModuleName; + for(int i=MODE_NATIVE; i