diff options
Diffstat (limited to 'plugins/Clist_modern/src/modern_extraimage.cpp')
-rw-r--r-- | plugins/Clist_modern/src/modern_extraimage.cpp | 509 |
1 files changed, 509 insertions, 0 deletions
diff --git a/plugins/Clist_modern/src/modern_extraimage.cpp b/plugins/Clist_modern/src/modern_extraimage.cpp new file mode 100644 index 0000000000..3a306081fe --- /dev/null +++ b/plugins/Clist_modern/src/modern_extraimage.cpp @@ -0,0 +1,509 @@ +#include "hdr/modern_commonheaders.h"
+#include "hdr/modern_commonprototypes.h"
+
+
+
+#define ExtraImageIconsIndexCount 6
+
+bool visar[EXTRACOLUMNCOUNT];
+int ExtraImageIconsIndex[ExtraImageIconsIndexCount];
+int EnabledColumnCount = 0;
+BOOL g_mutex_bSetAllExtraIconsCycle = 0;
+
+static HIMAGELIST hExtraImageList = NULL;
+static HIMAGELIST hWideExtraImageList = NULL;
+
+void ExtraImage_SetAllExtraIcons(HWND hwndList,HANDLE hContact);
+
+void ClearExtraIcons();
+
+bool ImageCreated = FALSE;
+BYTE ExtraOrder[] =
+{
+ 1, // EXTRA_ICON_EMAIL
+ 2, // EXTRA_ICON_PROTO
+ 3, // EXTRA_ICON_SMS
+ 4, // EXTRA_ICON_ADV1
+ 5, // EXTRA_ICON_ADV2
+ 6, // EXTRA_ICON_WEB
+ 7, // EXTRA_ICON_CLIENT
+ 0, // EXTRA_ICON_VISMODE
+ 8, // EXTRA_ICON_ADV3
+ 9, // EXTRA_ICON_ADV4
+};
+
+BOOL HasExtraIconsService()
+{
+ return ServiceExists("ExtraIcon/Register");
+}
+
+bool isColumnVisible(int extra)
+{
+ if (HasExtraIconsService())
+ return true;
+
+ int i=0;
+ for (i=0; i < sizeof(ExtraOrder)/sizeof(ExtraOrder[0]); i++)
+ if (ExtraOrder[i] == extra)
+ {
+ switch(i+1)
+ {
+ case EXTRA_ICON_EMAIL: return db_get_b(NULL,CLUIFrameModule,"EXTRA_ICON_EMAIL",SETTING_EXTRA_ICON_EMAIL_DEFAULT) != 0;
+ case EXTRA_ICON_PROTO: return db_get_b(NULL,CLUIFrameModule,"EXTRA_ICON_PROTO",SETTING_EXTRA_ICON_PROTO_DEFAULT) != 0;
+ case EXTRA_ICON_SMS: return db_get_b(NULL,CLUIFrameModule,"EXTRA_ICON_SMS",SETTING_EXTRA_ICON_SMS_DEFAULT) != 0;
+ case EXTRA_ICON_ADV1: return db_get_b(NULL,CLUIFrameModule,"EXTRA_ICON_ADV1",SETTING_EXTRA_ICON_ADV1_DEFAULT) != 0;
+ case EXTRA_ICON_ADV2: return db_get_b(NULL,CLUIFrameModule,"EXTRA_ICON_ADV2",SETTING_EXTRA_ICON_ADV2_DEFAULT) != 0;
+ case EXTRA_ICON_WEB: return db_get_b(NULL,CLUIFrameModule,"EXTRA_ICON_WEB",SETTING_EXTRA_ICON_WEB_DEFAULT) != 0;
+ case EXTRA_ICON_CLIENT: return db_get_b(NULL,CLUIFrameModule,"EXTRA_ICON_CLIENT",SETTING_EXTRA_ICON_CLIENT_DEFAULT) != 0;
+ case EXTRA_ICON_VISMODE: return db_get_b(NULL,CLUIFrameModule,"EXTRA_ICON_VISMODE",SETTING_EXTRA_ICON_VISMODE_DEFAULT) != 0;
+ case EXTRA_ICON_ADV3: return db_get_b(NULL,CLUIFrameModule,"EXTRA_ICON_ADV3",SETTING_EXTRA_ICON_ADV3_DEFAULT) != 0;
+ case EXTRA_ICON_ADV4: return db_get_b(NULL,CLUIFrameModule,"EXTRA_ICON_ADV4",SETTING_EXTRA_ICON_ADV4_DEFAULT) != 0;
+ }
+ break;
+ }
+ return(FALSE);
+}
+
+void GetVisColumns()
+{
+ visar[0] = isColumnVisible(0);
+ visar[1] = isColumnVisible(1);
+ visar[2] = isColumnVisible(2);
+ visar[3] = isColumnVisible(3);
+ visar[4] = isColumnVisible(4);
+ visar[5] = isColumnVisible(5);
+ visar[6] = isColumnVisible(6);
+ visar[7] = isColumnVisible(7);
+ visar[8] = isColumnVisible(8);
+ visar[9] = isColumnVisible(9);
+};
+
+__inline int bti(bool b)
+{
+ return(b?1:0);
+};
+int colsum(int from,int to)
+{
+ int i,sum;
+ if (from < 0 || from >= EXTRACOLUMNCOUNT){return(-1);};
+ if (to < 0 || to >= EXTRACOLUMNCOUNT){return(-1);};
+ if (to < from){return(-1);};
+
+ sum = 0;
+ for (i = from;i <= to;i++)
+ {
+ sum += bti(visar[i]);
+ };
+ return(sum);
+};
+
+
+
+
+int ExtraImage_ExtraIDToColumnNum(int extra)
+{
+ if (HasExtraIconsService())
+ {
+ if (extra < 1 || extra > EXTRACOLUMNCOUNT)
+ return -1;
+ else
+ return extra-1;
+ }
+
+ int ord = ExtraOrder[extra-1];
+ if ( !visar[ord]) return -1;
+ return (colsum(0,ord)-1);
+};
+
+int ExtraImage_ColumnNumToExtraID(int column)
+{
+ if (HasExtraIconsService())
+ return column+1;
+
+ for (int i=0; i < EXTRA_ICON_COUNT; i++)
+ if (ExtraImage_ExtraIDToColumnNum(i) == column)
+ return i;
+
+ return -1;
+}
+
+INT_PTR SetIconForExtraColumn(WPARAM wParam,LPARAM lParam)
+{
+ pIconExtraColumn piec;
+ int icol;
+ HANDLE hItem;
+
+ if (pcli->hwndContactTree == 0){return(-1);};
+ if (wParam == 0 || lParam == 0){return(-1);};
+ piec = (pIconExtraColumn)lParam;
+
+ if (piec->cbSize != sizeof(IconExtraColumn)){return(-1);};
+ icol = ExtraImage_ExtraIDToColumnNum(piec->ColumnType);
+ if (icol == -1){return(-1);};
+ hItem = (HANDLE)SendMessage(pcli->hwndContactTree,CLM_FINDCONTACT,(WPARAM)wParam,0);
+ if (hItem == 0){return(-1);};
+
+ SendMessage(pcli->hwndContactTree,CLM_SETEXTRAIMAGE,(WPARAM)hItem,MAKELPARAM(icol,piec->hImage));
+ return(0);
+}
+
+//wparam = hIcon
+//return hImage on success,-1 on failure
+INT_PTR AddIconToExtraImageList(WPARAM wParam,LPARAM lParam)
+{
+ if (hExtraImageList == 0 || wParam == 0)
+ return -1;
+
+ int res = ((int)ImageList_AddIcon(hExtraImageList,(HICON)wParam));
+ return (res > 254) ? -1 : res;
+}
+
+void SetNewExtraColumnCount()
+{
+ LoadPositionsFromDB(ExtraOrder);
+ GetVisColumns();
+
+ int newcount = colsum(0,EXTRACOLUMNCOUNT-1);
+ db_set_b(NULL,CLUIFrameModule,"EnabledColumnCount",(BYTE)newcount);
+ EnabledColumnCount = newcount;
+ SendMessage(pcli->hwndContactTree,CLM_SETEXTRACOLUMNS,EnabledColumnCount,0);
+}
+
+void ExtraImage_ReloadExtraIcons()
+{
+ int count,i;
+ PROTOACCOUNT **accs;
+ HICON hicon;
+ BOOL needFree;
+
+ SendMessage(pcli->hwndContactTree,CLM_SETEXTRACOLUMNSSPACE,db_get_b(NULL,"CLUI","ExtraColumnSpace",18),0);
+ SendMessage(pcli->hwndContactTree,CLM_SETEXTRAIMAGELIST,0,(LPARAM)NULL);
+ if (hExtraImageList){ImageList_Destroy(hExtraImageList);};
+ if (hWideExtraImageList){ImageList_Destroy(hWideExtraImageList);};
+
+ hExtraImageList = ImageList_Create(GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON),ILC_COLOR32|ILC_MASK,1,256);
+ hWideExtraImageList = ImageList_Create(GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON),ILC_COLOR32|ILC_MASK,1,256);
+
+ if ( !HasExtraIconsService()) {
+ //loading icons
+ HICON hIcon = LoadSkinnedIcon(SKINICON_OTHER_SENDEMAIL);
+ ExtraImageIconsIndex[0] = ImageList_AddIcon(hExtraImageList, hIcon);
+ CallService(MS_SKIN2_RELEASEICON, (WPARAM)hIcon, 0);
+ hIcon = LoadSkinnedIcon(SKINICON_OTHER_SMS);
+ ExtraImageIconsIndex[1] = ImageList_AddIcon(hExtraImageList, hIcon);
+ CallService(MS_SKIN2_RELEASEICON, (WPARAM)hIcon, 0);
+ hIcon = LoadSkinnedIcon(SKINICON_EVENT_URL);
+ ExtraImageIconsIndex[2] = ImageList_AddIcon(hExtraImageList, hIcon);
+ CallService(MS_SKIN2_RELEASEICON, (WPARAM)hIcon, 0);
+
+ //calc only needed protocols
+ //adding protocol icons
+ ProtoEnumAccounts( &count, &accs );
+ for (i=0;i < count;i++) {
+ if ( !IsAccountEnabled(accs[i]) || CallProtoService(accs[i]->szModuleName, PS_GETCAPS,PFLAGNUM_2, 0 ) == 0)
+ continue;
+
+ hIcon = LoadSkinnedProtoIcon(accs[i]->szModuleName,ID_STATUS_ONLINE);
+ ImageList_AddIcon(hExtraImageList, hIcon);
+ CallService(MS_SKIN2_RELEASEICON, (WPARAM)hIcon, 0);
+ }
+
+ hicon = CLUI_LoadIconFromExternalFile("clisticons.dll",5,TRUE,TRUE,"AlwaysVis","Contact List",Translate("Always Visible"),-IDI_ALWAYSVIS,&needFree);
+ if ( !hicon) {hicon = LoadSmallIcon(g_hInst, MAKEINTRESOURCE(IDI_ALWAYSVIS));needFree = TRUE;}
+ ExtraImageIconsIndex[3] = ImageList_AddIcon(hExtraImageList,hicon );
+ if (needFree) DestroyIcon_protect(hicon);
+
+ hicon = CLUI_LoadIconFromExternalFile("clisticons.dll",6,TRUE,TRUE,"NeverVis","Contact List",Translate("Never Visible"),-IDI_NEVERVIS,&needFree);
+ if ( !hicon) {hicon = LoadSmallIcon(g_hInst, MAKEINTRESOURCE(IDI_NEVERVIS));needFree = TRUE;}
+ ExtraImageIconsIndex[4] = ImageList_AddIcon(hExtraImageList,hicon );
+ if (needFree) DestroyIcon_protect(hicon);
+
+ hicon = CLUI_LoadIconFromExternalFile("clisticons.dll",7,TRUE,TRUE,"ChatActivity","Contact List",Translate("Chat Activity"),-IDI_CHAT,&needFree);
+ if ( !hicon) {hicon = LoadSmallIcon(g_hInst, MAKEINTRESOURCE(IDI_CHAT));needFree = TRUE;}
+ ExtraImageIconsIndex[5] = ImageList_AddIcon(hExtraImageList,hicon );
+ if (needFree) DestroyIcon_protect(hicon);
+ }
+
+ SendMessage(pcli->hwndContactTree,CLM_SETEXTRAIMAGELIST,(WPARAM)hWideExtraImageList,(LPARAM)hExtraImageList);
+ //ExtraImage_SetAllExtraIcons(hImgList);
+ SetNewExtraColumnCount();
+ NotifyEventHooks(g_CluiData.hEventExtraImageListRebuilding,0,0);
+ ImageCreated = TRUE;
+}
+
+void ReAssignExtraIcons()
+{
+ ClearExtraIcons();
+ SetNewExtraColumnCount();
+ ExtraImage_SetAllExtraIcons(pcli->hwndContactTree,0);
+ SendMessage(pcli->hwndContactTree,CLM_AUTOREBUILD,0,0);
+}
+
+void ClearExtraIcons()
+{
+ SetNewExtraColumnCount();
+
+ HANDLE hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST,0,0);
+ do {
+ HANDLE hItem = (HANDLE)SendMessage(pcli->hwndContactTree,CLM_FINDCONTACT,(WPARAM)hContact,0);
+ if (hItem == 0)
+ continue;
+
+ for (int i=0;i < EnabledColumnCount;i++)
+ SendMessage(pcli->hwndContactTree,CLM_SETEXTRAIMAGE,(WPARAM)hItem,MAKELPARAM(i,0xFF));
+ }
+ while(hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT,(WPARAM)hContact,0));
+};
+
+void ExtraImage_SetAllExtraIcons(HWND hwndList,HANDLE hContact)
+{
+ HANDLE hItem;
+ int locApparentMode = 0;
+ char * locApparentModeProto = NULL;
+ bool hcontgiven = FALSE;
+ char *szProto;
+ char *(ImgIndex[64]);
+ int maxpr,count,i;
+ PROTOACCOUNT **accs;
+ pdisplayNameCacheEntry pdnce;
+ int em,pr,sms,a1,a2,w1,c1;
+ int tick = 0;
+ g_mutex_bSetAllExtraIconsCycle = 1;
+ hcontgiven = (hContact != 0);
+
+ if (pcli->hwndContactTree == 0){return;};
+ tick = GetTickCount();
+ if (ImageCreated == FALSE) ExtraImage_ReloadExtraIcons();
+
+ SetNewExtraColumnCount();
+
+ BOOL hasExtraIconsService = HasExtraIconsService();
+ if ( !hasExtraIconsService)
+ {
+ em = ExtraImage_ExtraIDToColumnNum(EXTRA_ICON_EMAIL);
+ pr = ExtraImage_ExtraIDToColumnNum(EXTRA_ICON_PROTO);
+ sms = ExtraImage_ExtraIDToColumnNum(EXTRA_ICON_SMS);
+ a1 = ExtraImage_ExtraIDToColumnNum(EXTRA_ICON_ADV1);
+ a2 = ExtraImage_ExtraIDToColumnNum(EXTRA_ICON_ADV2);
+ w1 = ExtraImage_ExtraIDToColumnNum(EXTRA_ICON_WEB);
+ c1 = ExtraImage_ExtraIDToColumnNum(EXTRA_ICON_CLIENT);
+
+ memset( ImgIndex, 0, sizeof( ImgIndex ));
+ ProtoEnumAccounts( &count, &accs );
+ maxpr = 0;
+ //calc only needed protocols
+ for (i=0;i < count;i++) {
+ if ( !IsAccountEnabled( accs[i] ) || CallProtoService(accs[i]->szModuleName,PS_GETCAPS,PFLAGNUM_2,0) == 0) continue;
+ ImgIndex[maxpr] = accs[i]->szModuleName;
+ maxpr++;
+ }
+ }
+
+ if (hContact == NULL)
+ {
+ hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST,0,0);
+ }
+
+ do {
+
+ szProto = NULL;
+ hItem = hContact;
+ if (hItem == 0){continue;};
+ pdnce = (pdisplayNameCacheEntry)pcli->pfnGetCacheEntry(hItem);
+ if (pdnce == NULL) {continue;};
+
+ // szProto = (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO,(WPARAM)hContact,0);
+ szProto = pdnce->m_cache_cszProto;
+
+ if ( !hasExtraIconsService)
+ {
+ {
+ bool showweb;
+ showweb = FALSE;
+ if (ExtraImage_ExtraIDToColumnNum(EXTRA_ICON_WEB) != -1)
+ {
+
+ if (szProto != NULL)
+ {
+ char *homepage;
+ homepage = db_get_sa(pdnce->hContact,"UserInfo", "Homepage");
+ if ( !homepage)
+ homepage = db_get_sa(pdnce->hContact,pdnce->m_cache_cszProto, "Homepage");
+ if (homepage != NULL)
+ {
+ showweb = TRUE;
+ mir_free(homepage);
+ }
+ }
+ SendMessage(hwndList,CLM_SETEXTRAIMAGE,(WPARAM)hItem,MAKELPARAM(ExtraImage_ExtraIDToColumnNum(EXTRA_ICON_WEB),(showweb)?2:0xFF));
+ }
+ }
+ {
+ DBVARIANT dbv = {0};
+ bool showemail;
+ showemail = TRUE;
+ if (ExtraImage_ExtraIDToColumnNum(EXTRA_ICON_EMAIL) != -1)
+ {
+
+ if (szProto == NULL || DBGetContactSettingString(hContact, szProto, "e-mail",&dbv))
+ {
+ db_free(&dbv);
+ if (DBGetContactSettingString(hContact, "UserInfo", "Mye-mail0", &dbv))
+ showemail = FALSE;
+ }
+ SendMessage(hwndList,CLM_SETEXTRAIMAGE,(WPARAM)hItem,MAKELPARAM(ExtraImage_ExtraIDToColumnNum(EXTRA_ICON_EMAIL),(showemail)?0:0xFF));
+ db_free(&dbv);
+ }
+ }
+
+ {
+ DBVARIANT dbv = {0};
+ bool showsms;
+ showsms = TRUE;
+ if (ExtraImage_ExtraIDToColumnNum(EXTRA_ICON_SMS) != -1)
+ {
+ if (szProto == NULL || DBGetContactSettingString(hContact, szProto, "Cellular",&dbv))
+ {
+ db_free(&dbv);
+ if (DBGetContactSettingString(hContact, "UserInfo", "MyPhone0", &dbv))
+ showsms = FALSE;
+ }
+ SendMessage(hwndList,CLM_SETEXTRAIMAGE,(WPARAM)hItem,MAKELPARAM(ExtraImage_ExtraIDToColumnNum(EXTRA_ICON_SMS),(showsms)?1:0xFF));
+ db_free(&dbv);
+ }
+ }
+
+ if (ExtraImage_ExtraIDToColumnNum(EXTRA_ICON_PROTO) != -1)
+ {
+ for (i=0;i < maxpr;i++)
+ {
+ if ( !mir_strcmp(ImgIndex[i],szProto))
+ {
+ SendMessage(hwndList,CLM_SETEXTRAIMAGE,(WPARAM)hItem,MAKELPARAM(ExtraImage_ExtraIDToColumnNum(EXTRA_ICON_PROTO),i+3));
+ break;
+ };
+ };
+ };
+ if (ExtraImage_ExtraIDToColumnNum(EXTRA_ICON_VISMODE) != -1)
+ {
+ BYTE iconIndex = 0xFF;
+ if (szProto != NULL)
+ {
+ if ( !db_get_b(hContact, szProto, "ChatRoom", 0))
+ {
+ if (pdnce->ApparentMode == ID_STATUS_OFFLINE)
+ iconIndex = ExtraImageIconsIndex[4];
+ else if (pdnce->ApparentMode == ID_STATUS_ONLINE)
+ {
+ if (szProto != locApparentModeProto)
+ {
+ locApparentModeProto = szProto;
+ locApparentMode = CallProtoService(locApparentModeProto,PS_GETSTATUS,0,0);
+ }
+ if (locApparentMode == ID_STATUS_INVISIBLE || db_get_b(NULL,"CList","AlwaysShowAlwaysVisIcon",SETTING_ALWAYSVISICON_DEFAULT) == 1)
+ iconIndex = ExtraImageIconsIndex[3]; }
+ }
+ else
+ {
+ if (pdnce->ApparentMode == ID_STATUS_OFFLINE)
+ iconIndex = ExtraImageIconsIndex[5];
+ else iconIndex = 255;
+ }
+ }
+ SendMessage(hwndList,CLM_SETEXTRAIMAGE,(WPARAM)hItem,MAKELPARAM(ExtraImage_ExtraIDToColumnNum(EXTRA_ICON_VISMODE),iconIndex));
+ }
+ }
+ NotifyEventHooks(g_CluiData.hEventExtraImageApplying,(WPARAM)hContact,0);
+ if (hcontgiven) break;
+ Sleep(0);
+ } while(hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT,(WPARAM)hContact,0));
+
+ tick = GetTickCount()-tick;
+ g_mutex_bSetAllExtraIconsCycle = 0;
+ CLUI__cliInvalidateRect(hwndList,NULL,FALSE);
+ Sleep(0);
+}
+
+HWND SetToolTip(HWND hwnd, TCHAR * tip);
+
+HWND tipHWND = NULL;
+
+static int ehhShowExtraInfoTip(WPARAM wParam, LPARAM lParam)
+{
+ CLCEXTRAINFOTIP * eit = (CLCEXTRAINFOTIP *)lParam;
+ //tipHWND = SetToolTip(eit->hwnd,_T("TEST"));
+ //SendMessage(tipHWND,TTM_ACTIVATE,1,0);
+ //SendMessage(tipHWND,TTM_POPUP,0,0);
+ return 1;
+
+}
+
+int ehhHideExtraInfoTip(WPARAM wParam, LPARAM lParam)
+{
+
+ //SendMessage(tipHWND,TTM_ACTIVATE,0,0);
+ return 0;
+
+}
+
+INT_PTR WideSetIconForExtraColumn(WPARAM wParam,LPARAM lParam)
+{
+ pIconExtraColumn piec;
+ int icol;
+ HANDLE hItem;
+
+ if (pcli->hwndContactTree == 0){return(-1);};
+ if (wParam == 0 || lParam == 0){return(-1);};
+ piec = (pIconExtraColumn)lParam;
+
+ if (piec->cbSize != sizeof(IconExtraColumn)){return(-1);};
+ icol = ExtraImage_ExtraIDToColumnNum(piec->ColumnType);
+ if (icol == -1){return(-1);};
+
+ hItem = (HANDLE)SendMessage(pcli->hwndContactTree,CLM_FINDCONTACT,(WPARAM)wParam,0);
+ if (hItem == 0){return(-1);};
+ if (piec->hImage == (HANDLE)0xFF) piec->hImage = (HANDLE)0xFFFF;
+
+ SendMessage(pcli->hwndContactTree,CLM_SETWIDEEXTRAIMAGE,(WPARAM)hItem,MAKELPARAM(icol,piec->hImage));
+ return(0);
+};
+
+//wparam = hIcon
+//return hImage on success,-1 on failure
+INT_PTR WideAddIconToExtraImageList(WPARAM wParam,LPARAM lParam)
+{
+ int res = -1;
+ if (hWideExtraImageList == 0 || wParam == 0){return(-1);};
+ res = ((int)ImageList_AddIcon(hWideExtraImageList,(HICON)wParam));
+ if (res == 0xFF) res = ((int)ImageList_AddIcon(hWideExtraImageList,(HICON)wParam));
+ if (res>0xFFFE) return -1;
+ return res;
+};
+static int ehhExtraImage_UnloadModule(WPARAM wParam,LPARAM lParam)
+{
+ if (hExtraImageList) { ImageList_Destroy(hExtraImageList); };
+ if (hWideExtraImageList) { ImageList_Destroy(hWideExtraImageList); };
+ return 0;
+
+}
+void ExtraImage_LoadModule()
+{
+ CreateServiceFunction(MS_CLIST_EXTRA_SET_ICON,WideSetIconForExtraColumn);
+ CreateServiceFunction(MS_CLIST_EXTRA_ADD_ICON,WideAddIconToExtraImageList);
+
+ //CreateServiceFunction(MS_CLIST_EXTRA2_SET_ICON,WideSetIconForExtraColumn);
+ //CreateServiceFunction(MS_CLIST_EXTRA2_ADD_ICON,WideAddIconToExtraImageList);
+
+
+
+ //HookEvent(ME_SKIN2_ICONSCHANGED,OnIconLibIconChanged);
+
+ HookEvent(ME_CLC_SHOWEXTRAINFOTIP, ehhShowExtraInfoTip );
+ HookEvent(ME_CLC_HIDEINFOTIP, ehhHideExtraInfoTip );
+ HookEvent(ME_SYSTEM_SHUTDOWN, ehhExtraImage_UnloadModule );
+};
+
+
+
+
+
|