INT_PTR CheckAllFeeds(WPARAM, LPARAM lParam) { for (MCONTACT hContact = db_find_first(MODULE); hContact; hContact = db_find_next(hContact, MODULE)) { if (lParam && db_get_dw(hContact, MODULE, "UpdateTime", DEFAULT_UPDATE_TIME)) UpdateListAdd(hContact); else if (!lParam) UpdateListAdd(hContact); } if (!ThreadRunning) mir_forkthread(UpdateThreadProc, 0); return 0; }
INT_PTR CheckFeed(WPARAM hContact, LPARAM) { if(IsMyContact(hContact)) UpdateListAdd(hContact); if ( !ThreadRunning) mir_forkthread(UpdateThreadProc, FALSE); return 0; }
// main auto-update timer VOID CALLBACK timerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime) { // only run if it is not current updating and the auto update option is enabled if (!ThreadRunning && !Miranda_Terminated()) { BOOL HaveUpdates = FALSE; for (MCONTACT hContact = db_find_first(MODULE); hContact; hContact = db_find_next(hContact, MODULE)) { if (db_get_dw(hContact, MODULE, "UpdateTime", DEFAULT_UPDATE_TIME)) { double diff = difftime(time(NULL), db_get_dw(hContact, MODULE, "LastCheck", 0)); if (db_get_b(NULL, MODULE, "AutoUpdate", 1) != 0 && diff >= db_get_dw(hContact, MODULE, "UpdateTime", DEFAULT_UPDATE_TIME) * 60) { UpdateListAdd(hContact); HaveUpdates = TRUE; } } } if (!ThreadRunning && HaveUpdates) mir_forkthread(UpdateThreadProc, (LPVOID)FALSE); } }
INT_PTR NewsAggrGetAvatarInfo(WPARAM wParam, LPARAM lParam) { PROTO_AVATAR_INFORMATION *pai = (PROTO_AVATAR_INFORMATION *)lParam; if (!IsMyContact(pai->hContact)) return GAIR_NOAVATAR; // if GAIF_FORCE is set, we are updating the feed // otherwise, cached avatar is used if ((wParam & GAIF_FORCE) && db_get_dw(pai->hContact, MODULE, "UpdateTime", DEFAULT_UPDATE_TIME)) UpdateListAdd(pai->hContact); if (db_get_b(NULL, MODULE, "AutoUpdate", 1) != 0 && !ThreadRunning) mir_forkthread(UpdateThreadProc, (void *)TRUE); TCHAR *ptszImageURL = db_get_tsa(pai->hContact, MODULE, "ImageURL"); if(ptszImageURL == NULL) return GAIR_NOAVATAR; mir_free(ptszImageURL); return GAIR_WAITFOR; }
INT_PTR NewsAggrGetAvatarInfo(WPARAM wParam, LPARAM lParam) { PROTO_AVATAR_INFORMATIONT *pai = (PROTO_AVATAR_INFORMATIONT *)lParam; if ( !IsMyContact(pai->hContact)) return GAIR_NOAVATAR; // if GAIF_FORCE is set, we are updating the feed // otherwise, cached avatar is used if (wParam & GAIF_FORCE && db_get_dw(pai->hContact, MODULE, "UpdateTime", DEFAULT_UPDATE_TIME)) UpdateListAdd(pai->hContact); if (db_get_b(NULL, MODULE, "AutoUpdate", 1) != 0 && !ThreadRunning) mir_forkthread(UpdateThreadProc, (LPVOID)TRUE); DBVARIANT dbv; if(db_get_ts(pai->hContact, MODULE, "ImageURL", &dbv)) return GAIR_NOAVATAR; db_free(&dbv); return GAIR_WAITFOR; }