static int OnModulesLoded(WPARAM, LPARAM) { HookEvent(ME_CLIST_CONTACTICONCHANGED, OnContactIconChanged); HookEvent(ME_SKIN_ICONSCHANGED, OnSkinIconsChanged); HookEvent(ME_CLUI_CONTACTDRAGGING, OnContactDrag); HookEvent(ME_CLUI_CONTACTDROPPED, OnContactDrop); HookEvent(ME_CLUI_CONTACTDRAGSTOP, OnContactDragStop); HookEvent(ME_DB_CONTACT_SETTINGCHANGED, OnContactSettingChanged); HookEvent(ME_DB_CONTACT_DELETED, OnContactDeleted); HookEvent(ME_OPT_INITIALISE, OnOptionsInitialize); HookEvent(ME_CLIST_STATUSMODECHANGE, OnStatusModeChange); HookEvent(ME_CLIST_PREBUILDCONTACTMENU, OnPrebuildContactMenu); hwndMiranda = pcli->hwndContactList; mir_subclassWindow(hwndMiranda, newMirandaWndProc); // No thumbs yet bEnableTip = ServiceExists("mToolTip/ShowTip"); RegisterWindowClass(); GetScreenRect(); LoadDBSettings(); CreateBackgroundBrush(); CreateThumbsFont(); LoadContacts(); LoadMenus(); if (fcOpt.bToTop) { fcOpt.ToTopTime = (fcOpt.ToTopTime < 1) ? 1 : fcOpt.ToTopTime; fcOpt.ToTopTime = (fcOpt.ToTopTime > TOTOPTIME_MAX) ? TOTOPTIME_MAX : fcOpt.ToTopTime; ToTopTimerID = SetTimer(NULL, 0, fcOpt.ToTopTime*TOTOPTIME_P, ToTopTimerProc); } return 0; }
static int OnContactSettingChanged(WPARAM wParam, LPARAM lParam) { HANDLE hContact = (HANDLE)wParam; ThumbInfo *pThumb = thumbList.FindThumbByContact(hContact); int idStatus = ID_STATUS_OFFLINE; BOOL bRefresh = TRUE; DBCONTACTWRITESETTING* pdbcws = (DBCONTACTWRITESETTING*)lParam; if (hContact == NULL) { if (( 0 == _stricmp( pdbcws->szModule, "CLC" )) || ( 0 == _stricmp( pdbcws->szModule, MODULE )) ) { LoadDBSettings(); ApplyOptionsChanges(); } return 0; } if ( pThumb == NULL ) return 0; // Only on these 2 events we need to refresh if (0 == _stricmp(pdbcws->szSetting, "Status")) { idStatus = pdbcws->value.wVal; } else if (0 == _stricmp(pdbcws->szSetting, "Nick")) { idStatus = GetContactStatus(hContact); } else if (0 == _stricmp(pdbcws->szSetting, "MyHandle")) { idStatus = GetContactStatus(hContact); } else if (fcOpt.bShowIdle && 0 == _stricmp( pdbcws->szSetting, "IdleTS")) { idStatus = GetContactStatus(hContact); } else { bRefresh = FALSE; } // Detach call if (bRefresh) PostMessage(pThumb->hwnd, WM_REFRESH_CONTACT, 0, idStatus); return 0; }