int onContactSettingChanged(WPARAM hContact, LPARAM lParam) { DBCONTACTWRITESETTING *cws = (DBCONTACTWRITESETTING*)lParam; const char *proto = GetContactProto((MCONTACT)hContact); if (!proto) return 0; if (!strcmp(cws->szModule, proto)) if (!strcmp(cws->szSetting, "Auth") || !strcmp(cws->szSetting, "Grant") || !strcmp(cws->szSetting, "ServerId") || !strcmp(cws->szSetting, "ContactType")) onExtraImageApplying(hContact, 1); return 0; }
int onModulesLoaded(WPARAM, LPARAM) { // extra icons hExtraIcon = ExtraIcon_RegisterIcolib("authstate", LPGEN("Auth state"), iconList[ICON_BOTH].szName); // Set initial value for all contacts for (MCONTACT hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) onExtraImageApplying((WPARAM)hContact, 1); HookEvent(ME_OPT_INITIALISE, onOptInitialise); HookEvent(ME_CLIST_PREBUILDCONTACTMENU, onPrebuildContactMenu); return 0; }
INT_PTR onAuthMenuSelected(WPARAM hContact, LPARAM) { db_set_b((MCONTACT)hContact, MODULENAME, "ShowIcons", 1 - db_get_b((MCONTACT)hContact, "AuthState", "ShowIcons", 1)); onExtraImageApplying(hContact, 0); return 0; }
int onDBContactAdded(WPARAM hContact, LPARAM) { db_set_b((MCONTACT)hContact, MODULENAME, "ShowIcons", 1); onExtraImageApplying(hContact, 0); return 0; }
INT_PTR CALLBACK DlgProcOptions(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { static int bInitializing = 0; switch (msg) { case WM_INITDIALOG: { TranslateDialogDefault(hwndDlg); bInitializing = 1; if (g_hExtraIcon == NULL) { SendMessage(GetDlgItem(hwndDlg, IDC_ADVICON), CB_ADDSTRING, 0, (LPARAM) TranslateT("Disabled")); for (int i = 0; i < cAdvancedIcons; i++) { SendMessage(GetDlgItem(hwndDlg, IDC_ADVICON), CB_ADDSTRING, 0, (LPARAM) TranslateTS(szAdvancedIcons[i])); } if (bEnableClistIcon) SendMessage(GetDlgItem(hwndDlg, IDC_ADVICON), CB_SETCURSEL, clistIcon, 0); else SendMessage(GetDlgItem(hwndDlg, IDC_ADVICON), CB_SETCURSEL, 0, 0); } else { ShowWindow(GetDlgItem(hwndDlg, IDC_USE_L), SW_HIDE); ShowWindow(GetDlgItem(hwndDlg, IDC_ADVICON), SW_HIDE); ShowWindow(GetDlgItem(hwndDlg, IDC_SLOT_L), SW_HIDE); ShowWindow(GetDlgItem(hwndDlg, IDC_NOTE_L), SW_HIDE); } CheckDlgButton(hwndDlg, IDC_MENUITEMS, DBGetContactSettingByte(NULL, MODULENAME, "MenuItems", 1) ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_DRAWUNDEFICON, bDrawNoGenderIcon ? BST_CHECKED : BST_UNCHECKED); bInitializing = 0; return TRUE; } case WM_COMMAND: { switch (LOWORD(wParam)) { case IDC_ADVICON: { if ((HIWORD(wParam) == EN_CHANGE) && (!bInitializing) || (HIWORD(wParam) == CBN_SELENDOK)) { SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); } } break; case IDC_MENUITEMS: case IDC_DRAWUNDEFICON: SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); break; } } break; case WM_NOTIFY: { if (((LPNMHDR)lParam)->idFrom == 0) switch (((LPNMHDR)lParam)->code) { case PSN_APPLY: { HANDLE hContact; bDrawNoGenderIcon = IsDlgButtonChecked(hwndDlg, IDC_DRAWUNDEFICON); if (g_hExtraIcon == NULL) { clistIcon = SendMessage(GetDlgItem(hwndDlg, IDC_ADVICON), CB_GETCURSEL, 0, 0); DBWriteContactSettingByte(NULL, MODULENAME, "AdvancedIcon", clistIcon); if (bEnableClistIcon) { hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); while (hContact) { CallService(MS_CLIST_EXTRA_SET_ICON, (WPARAM)hContact, (LPARAM)&g_IECClear); hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0); } } bEnableClistIcon = (clistIcon != 0); if (bEnableClistIcon) { g_IECClear.ColumnType = clistIcon; onExtraImageListRebuild(0,0); } } if (g_hExtraIcon != NULL || bEnableClistIcon) { hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); while (hContact) { onExtraImageApplying((WPARAM)hContact,0); hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0); } } DBWriteContactSettingByte(NULL, MODULENAME, "ClistIcon", bEnableClistIcon); DBWriteContactSettingByte(NULL, MODULENAME, "NoGenderIcon", bDrawNoGenderIcon); DBWriteContactSettingByte(NULL, MODULENAME, "MenuItems", IsDlgButtonChecked(hwndDlg, IDC_MENUITEMS)); } return TRUE; } } case WM_DESTROY: break; } return FALSE; }