void LoadContactTree(void) { int i, status, hideOffline; BYTE bMsgFrequency = cfg::getByte("CList", "fhistdata", 0); CallService(MS_CLUI_LISTBEGINREBUILD, 0, 0); for (i = 1;; i++) { if (pcli->pfnGetGroupName(i, NULL) == NULL) break; CallService(MS_CLUI_GROUPADDED, i, 0); } hideOffline = cfg::getByte("CList", "HideOffline", SETTING_HIDEOFFLINE_DEFAULT); for (MCONTACT hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) { status = GetContactStatus(hContact); if ((!hideOffline || status != ID_STATUS_OFFLINE) && !CLVM_GetContactHiddenStatus(hContact, NULL, NULL)) pcli->pfnChangeContactIcon(hContact, IconFromStatusMode(GetContactProto(hContact), status, hContact, NULL), 1); // build initial data for message frequency if (!bMsgFrequency) MF_CalcFrequency(hContact, 100, 0); } cfg::writeByte("CList", "fhistdata", 1); CallService(MS_CLUI_LISTENDREBUILD, 0, 0); }
void MF_UpdateThread(LPVOID) { HANDLE hEvent = OpenEvent(EVENT_ALL_ACCESS, FALSE, g_ptszEventName); WaitForSingleObject(hEvent, 20000); ResetEvent(hEvent); while (mf_updatethread_running) { for (MCONTACT hContact = db_find_first(); hContact && mf_updatethread_running; hContact = db_find_next(hContact)) { MF_CalcFrequency(hContact, 50, 1); if (mf_updatethread_running) WaitForSingleObject(hEvent, 5000); ResetEvent(hEvent); } if (mf_updatethread_running) WaitForSingleObject(hEvent, 1000000); ResetEvent(hEvent); } CloseHandle(hEvent); }
void LoadContactTree(void) { HANDLE hContact; int i, status, hideOffline; BOOL mc_disablehgh = ServiceExists(MS_MC_DISABLEHIDDENGROUP); DBVARIANT dbv = {0}; BYTE bMsgFrequency = cfg::getByte("CList", "fhistdata", 0); CallService(MS_CLUI_LISTBEGINREBUILD, 0, 0); for (i = 1; ; i++) { if (pcli->pfnGetGroupName(i, NULL) == NULL) break; CallService(MS_CLUI_GROUPADDED, i, 0); } hideOffline = cfg::getByte("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)) pcli->pfnChangeContactIcon(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); } } // build initial data for message frequency if(!bMsgFrequency) MF_CalcFrequency(hContact, 100, 0); hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM) hContact, 0); } cfg::writeByte("CList", "fhistdata", 1); mc_hgh_removed = TRUE; CallService(MS_CLUI_SORTLIST, 0, 0); CallService(MS_CLUI_LISTENDREBUILD, 0, 0); }
DWORD WINAPI MF_UpdateThread(LPVOID p) { HANDLE hContact; HANDLE hEvent = OpenEvent(EVENT_ALL_ACCESS, FALSE, g_ptszEventName); WaitForSingleObject(hEvent, 20000); ResetEvent(hEvent); while(mf_updatethread_running) { hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); while (hContact != NULL && mf_updatethread_running) { MF_CalcFrequency(hContact, 50, 1); if(mf_updatethread_running) WaitForSingleObject(hEvent, 5000); ResetEvent(hEvent); hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0); } if(mf_updatethread_running) WaitForSingleObject(hEvent, 1000000); ResetEvent(hEvent); } CloseHandle(hEvent); return 0; }