void LoadContactTree(void) { int tick = GetTickCount(); CallService(MS_CLUI_LISTBEGINREBUILD,0,0); for (int i=1;; i++) { if ((char*)CallService(MS_CLIST_GROUPGETNAME2, i, 0) == NULL) break; CallService(MS_CLUI_GROUPADDED, i, 0); } int hideOffline = db_get_b(NULL,"CList","HideOffline",SETTING_HIDEOFFLINE_DEFAULT); for (MCONTACT hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) { ClcCacheEntry *cacheEntry = GetContactFullCacheEntry(hContact); if (cacheEntry == NULL) { MessageBoxA(0,"Fail To Get CacheEntry for hContact","!!!!!",0); break; } int status = cacheEntry->status; if ((!hideOffline || status != ID_STATUS_OFFLINE) && !cacheEntry->bIsHidden) ChangeContactIcon(hContact,ExtIconFromStatusMode(hContact,(char*)cacheEntry->szProto,status),1); } sortByStatus = db_get_b(NULL,"CList","SortByStatus",SETTING_SORTBYSTATUS_DEFAULT); sortByProto = db_get_b(NULL,"CList","SortByProto",SETTING_SORTBYPROTO_DEFAULT); sortNoOfflineBottom = db_get_b(NULL,"CList","NoOfflineBottom",SETTING_NOOFFLINEBOTTOM_DEFAULT); CallService(MS_CLUI_LISTENDREBUILD,0,0); tick = GetTickCount()-tick; char buf[255]; mir_snprintf(buf, SIZEOF(buf), "LoadContactTree %d \r\n", tick); OutputDebugStringA(buf); }
void LoadContactTree(void) { HANDLE hContact; int i,hideOffline,status,tick; pdisplayNameCacheEntry cacheEntry; tick=GetTickCount(); CallService(MS_CLUI_LISTBEGINREBUILD,0,0); for(i=1;;i++) { if((char*)CallService(MS_CLIST_GROUPGETNAME2,i,(LPARAM)(int*)NULL)==NULL) break; CallService(MS_CLUI_GROUPADDED,i,0); } hideOffline=DBGetContactSettingByte(NULL,"CList","HideOffline",SETTING_HIDEOFFLINE_DEFAULT); hContact=(HANDLE)CallService(MS_DB_CONTACT_FINDFIRST,0,0); while(hContact!=NULL) { cacheEntry=GetContactFullCacheEntry(hContact); if (cacheEntry==NULL) { MessageBoxA(0,"Fail To Get CacheEntry for hContact","!!!!!",0); break; } status=cacheEntry->status; if((!hideOffline || status!=ID_STATUS_OFFLINE) && !cacheEntry->Hidden) ChangeContactIcon(hContact,ExtIconFromStatusMode(hContact,(char*)cacheEntry->szProto,status),1); hContact=(HANDLE)CallService(MS_DB_CONTACT_FINDNEXT,(WPARAM)hContact,0); } sortBy[0]=DBGetContactSettingByte(NULL,"CList","SortBy1",SETTING_SORTBY1_DEFAULT); sortBy[1]=DBGetContactSettingByte(NULL,"CList","SortBy2",SETTING_SORTBY2_DEFAULT); sortBy[2]=DBGetContactSettingByte(NULL,"CList","SortBy3",SETTING_SORTBY3_DEFAULT); sortNoOfflineBottom=DBGetContactSettingByte(NULL,"CList","NoOfflineBottom",SETTING_NOOFFLINEBOTTOM_DEFAULT); CallService(MS_CLUI_SORTLIST,0,0); CallService(MS_CLUI_LISTENDREBUILD,0,0); tick=GetTickCount()-tick; { char buf[255]; //sprintf(buf,"%s %s took %i ms",__FILE__,__LINE__,tick); sprintf(buf,"LoadContactTree %d \r\n",tick); TRACE(buf); } }
void LoadContactTree(void) { HANDLE hContact; int i, status, hideOffline; BOOL mc_disablehgh = ServiceExists(MS_MC_DISABLEHIDDENGROUP); DBVARIANT dbv = {0}; CallService(MS_CLUI_LISTBEGINREBUILD, 0, 0); for (i = 1; ; i++) { if (GetGroupNameT(i, NULL) == NULL) break; CallService(MS_CLUI_GROUPADDED, i, 0); } hideOffline = DBGetContactSettingByte(NULL, "CList", "HideOffline", SETTING_HIDEOFFLINE_DEFAULT); hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); while (hContact != NULL) { status = GetContactStatus(hContact); if ((!hideOffline || status != ID_STATUS_OFFLINE) && !CLVM_GetContactHiddenStatus(hContact, NULL, NULL)) ChangeContactIcon(hContact, IconFromStatusMode((char*) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0), status, hContact, NULL), 1); if(mc_disablehgh && !mc_hgh_removed) { if(!DBGetContactSetting(hContact, "CList", "Group", &dbv)) { if(!strcmp(dbv.pszVal, "MetaContacts Hidden Group")) DBDeleteContactSetting(hContact, "CList", "Group"); mir_free(dbv.pszVal); } } hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM) hContact, 0); } mc_hgh_removed = TRUE; sortByStatus = DBGetContactSettingByte(NULL, "CList", "SortByStatus", SETTING_SORTBYSTATUS_DEFAULT); sortByProto = DBGetContactSettingByte(NULL, "CList", "SortByProto", SETTING_SORTBYPROTO_DEFAULT); CallService(MS_CLUI_SORTLIST, 0, 0); CallService(MS_CLUI_LISTENDREBUILD, 0, 0); }
int ContactSettingChanged(WPARAM wParam,LPARAM lParam) { DBCONTACTWRITESETTING *cws = (DBCONTACTWRITESETTING*)lParam; HANDLE hContact = (HANDLE)wParam; // Early exit if (hContact == NULL) return 0; __try { ClcCacheEntry *pdnce = (ClcCacheEntry *)pcli->pfnGetCacheEntry(hContact); if (pdnce == NULL) { OutputDebugStringA("!!! Very bad pdnce not found."); return 0; } if (pdnce && pdnce->protoNotExists == FALSE && pdnce->szProto) { if ( !strcmp(cws->szModule,pdnce->szProto)) { InvalidateDisplayNameCacheEntryByPDNE(hContact,pdnce,cws->value.type); if (cws->value.type == DBVT_WORD && !strcmp(cws->szSetting, "Status")) { if ( !(pdnce->bIsHidden == 1)) { if ( db_get_b((HANDLE)NULL,"CList","ShowStatusMsg",0)||db_get_b(hContact,"CList","StatusMsgAuto",0)) db_set_s(hContact, "CList", "StatusMsg", ""); if ( db_get_b(NULL, "CList", "HideOffline", SETTING_HIDEOFFLINE_DEFAULT)) { // User's state is changing, and we are hideOffline-ing if (cws->value.wVal == ID_STATUS_OFFLINE) { ChangeContactIcon(hContact, ExtIconFromStatusMode(hContact,cws->szModule, cws->value.wVal), 0); //by FYR return 0; } ChangeContactIcon(hContact, ExtIconFromStatusMode(hContact,cws->szModule, cws->value.wVal), 0); //by FYR } else ChangeContactIcon(hContact, ExtIconFromStatusMode(hContact,cws->szModule, cws->value.wVal), 0); //by FYR } } else if ( !strcmp(cws->szModule,"MetaContacts")) { PostMessage(pcli->hwndContactTree,CLM_AUTOREBUILD,0,0); return 0; } else return 0; SortContacts(); } } if ( !strcmp(cws->szModule,"CList")) { if (pdnce->tszName == NULL || !strcmp(cws->szSetting,"MyHandle")) InvalidateDisplayNameCacheEntryByPDNE(hContact,pdnce,cws->value.type); if ((!strcmp(cws->szSetting,"Group"))) InvalidateDisplayNameCacheEntryByPDNE(hContact,pdnce,cws->value.type); if ( !strcmp(cws->szSetting,"Hidden")) { InvalidateDisplayNameCacheEntryByPDNE(hContact,pdnce,cws->value.type); if (cws->value.type == DBVT_DELETED || cws->value.bVal == 0) { char *szProto = GetContactProto((HANDLE)wParam); ChangeContactIcon(hContact,ExtIconFromStatusMode(hContact, szProto, szProto == NULL ? ID_STATUS_OFFLINE : db_get_w(hContact, szProto, "Status", ID_STATUS_OFFLINE)), 1); //by FYR } } if ( !strcmp(cws->szSetting, "noOffline")) InvalidateDisplayNameCacheEntryByPDNE(hContact, pdnce, cws->value.type); } if ( !strcmp(cws->szModule, "Protocol")) { if ( !strcmp(cws->szSetting,"p")) { OutputDebugStringA("CHANGE: proto\r\n"); InvalidateDisplayNameCacheEntryByPDNE(hContact, pdnce, cws->value.type); char *szProto = (cws->value.type == DBVT_DELETED) ? NULL : cws->value.pszVal; ChangeContactIcon(hContact, ExtIconFromStatusMode(hContact, szProto, szProto == NULL?ID_STATUS_OFFLINE:db_get_w(hContact,szProto,"Status",ID_STATUS_OFFLINE)),0); //by FYR } } } __except (exceptFunction(GetExceptionInformation())) { } return 0; }
int ContactSettingChanged(WPARAM wParam,LPARAM lParam) { DBCONTACTWRITESETTING *cws = (DBCONTACTWRITESETTING*)lParam; pdisplayNameCacheEntry pdnce; // Early exit if ((HANDLE)wParam == NULL) return 0; __try { pdnce = (pdisplayNameCacheEntry)pcli->pfnGetCacheEntry((HANDLE)wParam); if (pdnce == NULL) { OutputDebugStringA("!!! Very bad pdnce not found."); return 0; } if (pdnce&&(pdnce->protoNotExists == FALSE)&&pdnce->szProto) { if (!strcmp(cws->szModule,pdnce->szProto)) { InvalidateDisplayNameCacheEntryByPDNE((HANDLE)wParam,pdnce,cws->value.type); if (cws->value.type == DBVT_WORD&&!strcmp(cws->szSetting, "Status")) { if (!(pdnce->Hidden == 1)) { if(DBGetContactSettingByte((HANDLE)NULL,"CList","ShowStatusMsg",0)||DBGetContactSettingByte((HANDLE)wParam,"CList","StatusMsgAuto",0)) DBWriteContactSettingString((HANDLE)wParam, "CList", "StatusMsg", ""); if (DBGetContactSettingByte(NULL, "CList", "HideOffline", SETTING_HIDEOFFLINE_DEFAULT)) { // User's state is changing, and we are hideOffline-ing if (cws->value.wVal == ID_STATUS_OFFLINE) { ChangeContactIcon((HANDLE)wParam, ExtIconFromStatusMode((HANDLE)wParam,cws->szModule, cws->value.wVal), 0); //by FYR return 0; } ChangeContactIcon((HANDLE)wParam, ExtIconFromStatusMode((HANDLE)wParam,cws->szModule, cws->value.wVal), 0); //by FYR } else { ChangeContactIcon((HANDLE)wParam, ExtIconFromStatusMode((HANDLE)wParam,cws->szModule, cws->value.wVal), 0); //by FYR } } } else if (!strcmp(cws->szModule,"MetaContacts")) { PostMessage(pcli->hwndContactTree,CLM_AUTOREBUILD,0,0); return 0; } else return 0; SortContacts(); } } if(!strcmp(cws->szModule,"CList")) { /* sprintf(buf,"CHANGE: module:CList setting:%s %s\r\n",cws->szSetting,cws->value.pszVal); OutputDebugStringA(buf); */ //name is null or (setting is myhandle) if(pdnce->name == NULL||(!strcmp(cws->szSetting,"MyHandle")) ) InvalidateDisplayNameCacheEntryByPDNE((HANDLE)wParam,pdnce,cws->value.type); if((!strcmp(cws->szSetting,"Group")) ) InvalidateDisplayNameCacheEntryByPDNE((HANDLE)wParam,pdnce,cws->value.type); if(!strcmp(cws->szSetting,"Hidden")) { InvalidateDisplayNameCacheEntryByPDNE((HANDLE)wParam,pdnce,cws->value.type); if(cws->value.type == DBVT_DELETED || cws->value.bVal == 0) { char *szProto=(char*)CallService(MS_PROTO_GETCONTACTBASEPROTO,wParam,0); ChangeContactIcon((HANDLE)wParam,ExtIconFromStatusMode((HANDLE)wParam,szProto,szProto == NULL?ID_STATUS_OFFLINE:DBGetContactSettingWord((HANDLE)wParam,szProto,"Status",ID_STATUS_OFFLINE)),1); //by FYR } } if(!strcmp(cws->szSetting,"noOffline")) InvalidateDisplayNameCacheEntryByPDNE((HANDLE)wParam,pdnce,cws->value.type); } if(!strcmp(cws->szModule,"Protocol")) { if(!strcmp(cws->szSetting,"p")) { char *szProto; OutputDebugStringA("CHANGE: proto\r\n"); InvalidateDisplayNameCacheEntryByPDNE((HANDLE)wParam,pdnce,cws->value.type); if(cws->value.type == DBVT_DELETED) szProto=NULL; else szProto=cws->value.pszVal; ChangeContactIcon((HANDLE)wParam,ExtIconFromStatusMode((HANDLE)wParam,szProto,szProto == NULL?ID_STATUS_OFFLINE:DBGetContactSettingWord((HANDLE)wParam,szProto,"Status",ID_STATUS_OFFLINE)),0); //by FYR } } } __except (exceptFunction(GetExceptionInformation()) ) { } return 0; }