int CJabberProto::LoadAdvancedIcons(int iID) { char *proto = TransportProtoTable[iID].proto; char defFile[MAX_PATH] = {0}; TCHAR Group[255]; char Uname[255]; int first=-1; HICON empty=LoadSmallIcon(NULL,MAKEINTRESOURCE(102)); mir_sntprintf(Group, SIZEOF(Group), _T("Status Icons/%s/%S %s"), m_tszUserName, proto, TranslateT("transport")); mir_snprintf(defFile, SIZEOF(defFile), "proto_%s.dll",proto); if (!hAdvancedStatusIcon) hAdvancedStatusIcon=(HIMAGELIST)CallService(MS_CLIST_GETICONSIMAGELIST,0,0); mir_cslock lck(m_csModeMsgMutex); for (int i=0; i < ID_STATUS_ONTHEPHONE-ID_STATUS_OFFLINE; i++) { BOOL needFree; int n = skinStatusToJabberStatus[i]; TCHAR *descr = pcli->pfnGetStatusModeDescription(n+ID_STATUS_OFFLINE, 0); mir_snprintf(Uname, SIZEOF(Uname), "%s_Transport_%s_%d", m_szModuleName, proto, n); HICON hicon = LoadTransportIcon(defFile,-skinIconStatusToResourceId[i],Uname,Group,descr,-(n+ID_STATUS_OFFLINE),&needFree); int index = (m_transportProtoTableStartIndex[iID] == -1)?-1:m_transportProtoTableStartIndex[iID]+n; int added = ImageList_ReplaceIcon(hAdvancedStatusIcon,index,hicon?hicon:empty); if (first == -1) first = added; if (hicon && needFree) DestroyIcon(hicon); } if (m_transportProtoTableStartIndex[iID] == -1) m_transportProtoTableStartIndex[iID] = first; return 0; }
static int LoadAdvancedIcons(int iID) { int i; char * proto=TransportProtoTable[iID].proto; char * defFile[MAX_PATH]={0}; char * Group[255]; char * Uname[255]; int first=-1; HICON empty=LoadSmallIcon(NULL,MAKEINTRESOURCE(102)); _snprintf((char *)Group, sizeof(Group),"%s/%s/%s %s",Translate("Status Icons"), jabberModuleName, proto, Translate("transport")); _snprintf((char *)defFile, sizeof(defFile),"proto_%s.dll",proto); if (!hAdvancedStatusIcon) hAdvancedStatusIcon=(HIMAGELIST)CallService(MS_CLIST_GETICONSIMAGELIST,0,0); EnterCriticalSection( &modeMsgMutex ); for (i=0; i<ID_STATUS_ONTHEPHONE-ID_STATUS_OFFLINE; i++) { HICON hicon; BOOL needFree; int n=skinStatusToJabberStatus[i]; char * descr=(char*)CallService(MS_CLIST_GETSTATUSMODEDESCRIPTION,n+ID_STATUS_OFFLINE,0); _snprintf((char *)Uname, sizeof(Uname),"%s_Transport_%s_%d",jabberProtoName,proto,n); hicon=(HICON)LoadTransportIcon((char*)defFile,-skinIconStatusToResourceId[i],(char*)Uname,(char*)Group,(char*)descr,-(n+ID_STATUS_OFFLINE),&needFree); int index=(TransportProtoTable[iID].startIndex==-1)?-1:TransportProtoTable[iID].startIndex+n; int added=ImageList_ReplaceIcon(hAdvancedStatusIcon,index,hicon?hicon:empty); if (first==-1) first=added; if (hicon && needFree) DestroyIcon(hicon); } if (TransportProtoTable[iID].startIndex == -1) TransportProtoTable[iID].startIndex = first; LeaveCriticalSection( &modeMsgMutex ); return 0; }