int CreateCLC(HWND parent) { Sleep(0); { // create contact list frame CLISTFrame Frame; memset(&Frame,0,sizeof(Frame)); Frame.cbSize=sizeof(CLISTFrame); Frame.hWnd=pcli->hwndContactTree; Frame.align=alClient; Frame.hIcon=LoadSkinnedIcon(SKINICON_OTHER_MIRANDA); //LoadIcon(hInst,MAKEINTRESOURCE(IDI_MIRANDA)); Frame.Flags=F_VISIBLE|F_SHOWTB|F_SHOWTBTIP|F_TCHAR; Frame.tname=_T("My Contacts"); Frame.TBtname=TranslateT("My Contacts"); hFrameContactTree=(HWND)CallService(MS_CLIST_FRAMES_ADDFRAME,(WPARAM)&Frame,(LPARAM)0); //free(Frame.name); CallService(MS_CLIST_FRAMES_SETFRAMEOPTIONS,MAKEWPARAM(FO_TBTIPNAME,hFrameContactTree),(LPARAM)TranslateT("My Contacts")); } ReloadExtraIcons(); { lastreqh=0; { CallService(MS_CLIST_SETHIDEOFFLINE,(WPARAM)oldhideoffline,0); } { int state=DBGetContactSettingByte(NULL,"CList","State",SETTING_STATE_NORMAL); if(state==SETTING_STATE_NORMAL) ShowWindow(pcli->hwndContactList, SW_SHOW); else if(state==SETTING_STATE_MINIMIZED) ShowWindow(pcli->hwndContactList, SW_SHOWMINIMIZED); } lastreqh=0; disableautoupd=0; } hSettingChangedHook=HookEvent(ME_DB_CONTACT_SETTINGCHANGED,OnSettingChanging); return(0); }
void SetAllExtraIcons(HWND hwndList,HANDLE hContact) { HANDLE hItem; boolean 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; BOOL hasExtraIconsService; hcontgiven=(hContact!=0); if (pcli->hwndContactTree==0){return;}; tick=GetTickCount(); if (ImageCreated==FALSE) ReloadExtraIcons(); SetNewExtraColumnCount(); hasExtraIconsService = HasExtraIconsService(); if (!hasExtraIconsService) { em=ExtraToColumnNum(EXTRA_ICON_EMAIL); pr=ExtraToColumnNum(EXTRA_ICON_PROTO); sms=ExtraToColumnNum(EXTRA_ICON_SMS); a1=ExtraToColumnNum(EXTRA_ICON_ADV1); a2=ExtraToColumnNum(EXTRA_ICON_ADV2); w1=ExtraToColumnNum(EXTRA_ICON_WEB); c1=ExtraToColumnNum(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->szProto; if (!hasExtraIconsService) { if (ExtraToColumnNum(EXTRA_ICON_WEB)!=-1) { boolean showweb=FALSE; if (szProto != NULL) { char *homepage; homepage=DBGetStringA(pdnce->hContact,"UserInfo", "Homepage"); if (!homepage) homepage=DBGetStringA(pdnce->hContact,pdnce->szProto, "Homepage"); if (homepage!=NULL) { showweb=TRUE; mir_free(homepage); } } SendMessage(hwndList,CLM_SETEXTRAIMAGE,(WPARAM)hItem,MAKELPARAM(ExtraToColumnNum(EXTRA_ICON_WEB),(showweb)?2:0xFF)); } if (ExtraToColumnNum(EXTRA_ICON_EMAIL)!=-1) { DBVARIANT dbv={0}; boolean showemail=TRUE; if (szProto == NULL || DBGetContactSettingString(hContact, szProto, "e-mail",&dbv)) { DBFreeVariant(&dbv); if (DBGetContactSettingString(hContact, "UserInfo", "Mye-mail0", &dbv)) showemail=FALSE; } DBFreeVariant(&dbv); SendMessage(hwndList,CLM_SETEXTRAIMAGE,(WPARAM)hItem,MAKELPARAM(ExtraToColumnNum(EXTRA_ICON_EMAIL),(showemail)?0:0xFF)); } if (ExtraToColumnNum(EXTRA_ICON_SMS)!=-1) { DBVARIANT dbv={0}; boolean showsms=TRUE; if (szProto == NULL || DBGetContactSettingString(hContact, szProto, "Cellular",&dbv)) { DBFreeVariant(&dbv); if (DBGetContactSettingString(hContact, "UserInfo", "MyPhone0", &dbv)) showsms=FALSE; } SendMessage(hwndList,CLM_SETEXTRAIMAGE,(WPARAM)hItem,MAKELPARAM(ExtraToColumnNum(EXTRA_ICON_SMS),(showsms)?1:0xFF)); DBFreeVariant(&dbv); } if(ExtraToColumnNum(EXTRA_ICON_PROTO)!=-1) { for (i=0;i<maxpr;i++) { if(!MyStrCmp(ImgIndex[i],szProto)) { SendMessage(hwndList,CLM_SETEXTRAIMAGE,(WPARAM)hItem,MAKELPARAM(ExtraToColumnNum(EXTRA_ICON_PROTO),i+3)); break; } } } } NotifyEventHooks(hExtraImageApplying,(WPARAM)hContact,0); if (hcontgiven) break; Sleep(0); } while(hContact=(HANDLE)CallService(MS_DB_CONTACT_FINDNEXT,(WPARAM)hContact,0)); tick=GetTickCount()-tick; InvalidateRect(hwndList,NULL,FALSE); Sleep(0); }
void SetAllExtraIcons(HWND hwndList,HANDLE hContact) { HANDLE hItem; boolean hcontgiven=FALSE; char *szProto; char *(ImgIndex[64]); int maxpr,count,i; PROTOCOLDESCRIPTOR **protos; pdisplayNameCacheEntry pdnce; int em,pr,sms,a1,a2,w1,c1; int tick=0; int inphcont=(int)hContact; ON_SETALLEXTRAICON_CYCLE=1; hcontgiven=(hContact!=0); if (hwndContactTree==0){return;}; tick=GetTickCount(); if (ImageCreated==FALSE) ReloadExtraIcons(); SetNewExtraColumnCount(); { em=ExtraToColumnNum(EXTRA_ICON_EMAIL); pr=ExtraToColumnNum(EXTRA_ICON_PROTO); sms=ExtraToColumnNum(EXTRA_ICON_SMS); a1=ExtraToColumnNum(EXTRA_ICON_ADV1); a2=ExtraToColumnNum(EXTRA_ICON_ADV2); w1=ExtraToColumnNum(EXTRA_ICON_WEB); c1=ExtraToColumnNum(EXTRA_ICON_CLIENT); }; memset(&ImgIndex,0,sizeof(&ImgIndex)); CallService(MS_PROTO_ENUMPROTOCOLS,(WPARAM)&count,(LPARAM)&protos); maxpr=0; //calc only needed protocols for(i=0;i<count;i++) { if(protos[i]->type!=PROTOTYPE_PROTOCOL || CallProtoService(protos[i]->szName,PS_GETCAPS,PFLAGNUM_2,0)==0) continue; ImgIndex[maxpr]=protos[i]->szName; maxpr++; } if (hContact==NULL) { hContact=(HANDLE)CallService(MS_DB_CONTACT_FINDFIRST,0,0); } do { szProto=NULL; hItem=hContact; if (hItem==0){continue;}; pdnce=GetDisplayNameCacheEntry(hItem); if (pdnce==NULL) {continue;}; // szProto=(char*)CallService(MS_PROTO_GETCONTACTBASEPROTO,(WPARAM)hContact,0); szProto=pdnce->szProto; { DBVARIANT dbv={0}; boolean showweb; showweb=FALSE; if (ExtraToColumnNum(EXTRA_ICON_WEB)!=-1) { if (szProto != NULL) { char *homepage; homepage=DBGetStringA(pdnce->hContact,"UserInfo", "Homepage"); if (!homepage) homepage=DBGetStringA(pdnce->hContact,pdnce->szProto, "Homepage"); if (homepage!=NULL) { showweb=TRUE; mir_free(homepage); } } PostMessage(hwndList,CLM_SETEXTRAIMAGE,(WPARAM)hItem,MAKELPARAM(ExtraToColumnNum(EXTRA_ICON_WEB),(showweb)?2:0xFF)); if (dbv.pszVal!=NULL) mir_free(dbv.pszVal); } } { DBVARIANT dbv={0}; boolean showemail; showemail=TRUE; if (ExtraToColumnNum(EXTRA_ICON_EMAIL)!=-1) { if (szProto == NULL || DBGetContactSetting(hContact, szProto, "e-mail",&dbv)) { if (dbv.pszVal) mir_free(dbv.pszVal); if (DBGetContactSetting(hContact, "UserInfo", "Mye-mail0", &dbv)) { showemail=FALSE; if (dbv.pszVal) mir_free(dbv.pszVal); DBFreeVariant(&dbv); } } SendMessage(hwndList,CLM_SETEXTRAIMAGE,(WPARAM)hItem,MAKELPARAM(ExtraToColumnNum(EXTRA_ICON_EMAIL),(showemail)?0:0xFF)); if (dbv.pszVal!=NULL) mir_free(dbv.pszVal); DBFreeVariant(&dbv); } } { DBVARIANT dbv={0}; boolean showsms; showsms=TRUE; if (ExtraToColumnNum(EXTRA_ICON_SMS)!=-1) { if (szProto == NULL || DBGetContactSetting(hContact, szProto, "Cellular",&dbv)) { if (dbv.pszVal) mir_free(dbv.pszVal); if (DBGetContactSetting(hContact, "UserInfo", "MyPhone0", &dbv)) { showsms=FALSE; if (dbv.pszVal) mir_free(dbv.pszVal); DBFreeVariant(&dbv); } } SendMessage(hwndList,CLM_SETEXTRAIMAGE,(WPARAM)hItem,MAKELPARAM(ExtraToColumnNum(EXTRA_ICON_SMS),(showsms)?1:0xFF)); if (dbv.pszVal!=NULL) mir_free(dbv.pszVal); DBFreeVariant(&dbv); } } if(ExtraToColumnNum(EXTRA_ICON_CLIENT)!=-1) { if(szProto==NULL) {continue;}; if (pdnce->ci.idxClientIcon!=0&&pdnce->ci.idxClientIcon!=-1) { SendMessage(hwndList,CLM_SETEXTRAIMAGE,(WPARAM)hItem,MAKELPARAM(ExtraToColumnNum(EXTRA_ICON_CLIENT),pdnce->ci.idxClientIcon)); } if(ExtraToColumnNum(EXTRA_ICON_PROTO)!=-1) { for (i=0;i<maxpr;i++) { if(!MyStrCmp(ImgIndex[i],szProto)) { SendMessage(hwndList,CLM_SETEXTRAIMAGE,(WPARAM)hItem,MAKELPARAM(ExtraToColumnNum(EXTRA_ICON_PROTO),i+3)); break; }; }; }; }; NotifyEventHooks(hExtraImageApplying,(WPARAM)hContact,0); if (hcontgiven) break; Sleep(0); } while(hContact=(HANDLE)CallService(MS_DB_CONTACT_FINDNEXT,(WPARAM)hContact,0)); tick=GetTickCount()-tick; if (tick>0) { char buf[256]; mir_snprintf(buf,sizeof(buf),"SetAllExtraIcons %d ms, for %x\r\n",tick,inphcont); TRACE(buf); DBWriteContactSettingDword((HANDLE)0,"CLUI","PF:Last SetAllExtraIcons Time:",tick); } ON_SETALLEXTRAICON_CYCLE=0; //InvalidateRectZ(hwndList,NULL,FALSE); Sleep(0); }