From a9580df150d799246eaecbf3c1fb5cecf9f8ab49 Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Mon, 23 Jul 2012 13:49:28 +0000 Subject: SecureIM, SeenPlugin, SendSS, Sessions: changed folder structure git-svn-id: http://svn.miranda-ng.org/main/trunk@1122 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/SecureIM/src/crypt_icons.cpp | 151 +++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 plugins/SecureIM/src/crypt_icons.cpp (limited to 'plugins/SecureIM/src/crypt_icons.cpp') diff --git a/plugins/SecureIM/src/crypt_icons.cpp b/plugins/SecureIM/src/crypt_icons.cpp new file mode 100644 index 0000000000..6c5984c345 --- /dev/null +++ b/plugins/SecureIM/src/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