INT_PTR CALLBACK FBOptionsStatusesProc(HWND hwnd, UINT message, WPARAM, LPARAM lparam) { FacebookProto *proto = reinterpret_cast<FacebookProto*>(GetWindowLongPtr(hwnd, GWLP_USERDATA)); switch (message) { case WM_INITDIALOG: { TranslateDialogDefault(hwnd); proto = reinterpret_cast<FacebookProto*>(lparam); SetWindowLongPtr(hwnd, GWLP_USERDATA, lparam); LoadDBCheckState(proto, hwnd, IDC_DISCONNECT_CHAT, FACEBOOK_KEY_DISCONNECT_CHAT, DEFAULT_DISCONNECT_CHAT); LoadDBCheckState(proto, hwnd, IDC_SET_STATUS, FACEBOOK_KEY_SET_MIRANDA_STATUS, DEFAULT_SET_MIRANDA_STATUS); LoadDBCheckState(proto, hwnd, IDC_MAP_STATUSES, FACEBOOK_KEY_MAP_STATUSES, DEFAULT_MAP_STATUSES); LoadDBCheckState(proto, hwnd, IDC_LOAD_PAGES, FACEBOOK_KEY_LOAD_PAGES, DEFAULT_LOAD_PAGES); return TRUE; } case WM_COMMAND: { //switch (LOWORD(wparam)) { //default: SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); break; //} //break; } case WM_NOTIFY: if (reinterpret_cast<NMHDR*>(lparam)->code == PSN_APPLY) { StoreDBCheckState(proto, hwnd, IDC_DISCONNECT_CHAT, FACEBOOK_KEY_DISCONNECT_CHAT); StoreDBCheckState(proto, hwnd, IDC_MAP_STATUSES, FACEBOOK_KEY_MAP_STATUSES); StoreDBCheckState(proto, hwnd, IDC_LOAD_PAGES, FACEBOOK_KEY_LOAD_PAGES); BOOL setStatus = IsDlgButtonChecked(hwnd, IDC_SET_STATUS); BOOL setStatusOld = proto->getByte(FACEBOOK_KEY_SET_MIRANDA_STATUS, DEFAULT_SET_MIRANDA_STATUS); if (setStatus != setStatusOld) { proto->setByte(FACEBOOK_KEY_SET_MIRANDA_STATUS, setStatus); if (setStatus && proto->isOnline()) proto->ForkThread(&FacebookProto::SetAwayMsgWorker, NULL); } return TRUE; } break; } return FALSE; }
static INT_PTR CALLBACK DlgProcOptions(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_INITDIALOG: TranslateDialogDefault(hwndDlg); for (auto &it : settings) LoadDBCheckState(hwndDlg, it.idCtrl, it.szSetName, it.defValue); break; case WM_COMMAND: if (HIWORD(wParam) == BN_CLICKED) for (auto &it : settings) if (it.idCtrl == LOWORD(wParam)) { SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); break; } break; case WM_NOTIFY: NMHDR * hdr = (NMHDR *)lParam; if (hdr && hdr->code == PSN_APPLY) { for (auto &it : settings) StoreDBCheckState(hwndDlg, it.idCtrl, it.szSetName); ClearFI(); RegisterIcons(); for (auto &hContact : Contacts()) OnExtraImageApply(hContact, 0); } break; } return FALSE; }
INT_PTR CALLBACK FBOptionsMessagingProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { FacebookProto *proto = reinterpret_cast<FacebookProto*>(GetWindowLongPtr(hwnd, GWLP_USERDATA)); switch (message) { case WM_INITDIALOG: { TranslateDialogDefault(hwnd); proto = reinterpret_cast<FacebookProto*>(lparam); SetWindowLongPtr(hwnd, GWLP_USERDATA, lparam); LoadDBCheckState(proto, hwnd, IDC_CUSTOM_SMILEYS, FACEBOOK_KEY_CUSTOM_SMILEYS, DEFAULT_CUSTOM_SMILEYS); LoadDBCheckState(proto, hwnd, IDC_INBOX_ONLY, FACEBOOK_KEY_INBOX_ONLY, DEFAULT_INBOX_ONLY); LoadDBCheckState(proto, hwnd, IDC_KEEP_UNREAD, FACEBOOK_KEY_KEEP_UNREAD, DEFAULT_KEEP_UNREAD); LoadDBCheckState(proto, hwnd, IDC_MESSAGES_ON_OPEN, FACEBOOK_KEY_MESSAGES_ON_OPEN, DEFAULT_MESSAGES_ON_OPEN); LoadDBCheckState(proto, hwnd, IDC_LOGIN_SYNC, FACEBOOK_KEY_LOGIN_SYNC, DEFAULT_LOGIN_SYNC); LoadDBCheckState(proto, hwnd, IDC_ENABLE_CHATS, FACEBOOK_KEY_ENABLE_CHATS, DEFAULT_ENABLE_CHATS); LoadDBCheckState(proto, hwnd, IDC_HIDE_CHATS, FACEBOOK_KEY_HIDE_CHATS, DEFAULT_HIDE_CHATS); int count = proto->getByte(FACEBOOK_KEY_MESSAGES_ON_OPEN_COUNT, 10); count = min(count, FACEBOOK_MESSAGES_ON_OPEN_LIMIT); SetDlgItemInt(hwnd, IDC_MESSAGES_COUNT, count, TRUE); SendDlgItemMessage(hwnd, IDC_MESSAGES_COUNT, EM_LIMITTEXT, 2, 0); SendDlgItemMessage(hwnd, IDC_MESSAGES_COUNT_SPIN, UDM_SETRANGE32, 1, 99); } return TRUE; case WM_COMMAND: switch (LOWORD(wparam)) { case IDC_MESSAGES_COUNT: if (HIWORD(wparam) == EN_CHANGE && (HWND)lparam == GetFocus()) SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); break; default: SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); } return TRUE; case WM_NOTIFY: { if (reinterpret_cast<NMHDR*>(lparam)->code == PSN_APPLY) { StoreDBCheckState(proto, hwnd, IDC_CUSTOM_SMILEYS, FACEBOOK_KEY_CUSTOM_SMILEYS); StoreDBCheckState(proto, hwnd, IDC_INBOX_ONLY, FACEBOOK_KEY_INBOX_ONLY); StoreDBCheckState(proto, hwnd, IDC_KEEP_UNREAD, FACEBOOK_KEY_KEEP_UNREAD); StoreDBCheckState(proto, hwnd, IDC_LOGIN_SYNC, FACEBOOK_KEY_LOGIN_SYNC); StoreDBCheckState(proto, hwnd, IDC_MESSAGES_ON_OPEN, FACEBOOK_KEY_MESSAGES_ON_OPEN); StoreDBCheckState(proto, hwnd, IDC_ENABLE_CHATS, FACEBOOK_KEY_ENABLE_CHATS); StoreDBCheckState(proto, hwnd, IDC_HIDE_CHATS, FACEBOOK_KEY_HIDE_CHATS); int count = GetDlgItemInt(hwnd, IDC_MESSAGES_COUNT, NULL, TRUE); count = min(count, FACEBOOK_MESSAGES_ON_OPEN_LIMIT); proto->setByte(FACEBOOK_KEY_MESSAGES_ON_OPEN_COUNT, count); } } return TRUE; } return FALSE; }
INT_PTR CALLBACK FBOptionsEventsProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { FacebookProto *proto = reinterpret_cast<FacebookProto*>(GetWindowLongPtr(hwnd, GWLP_USERDATA)); switch (message) { case WM_INITDIALOG: { TranslateDialogDefault(hwnd); proto = reinterpret_cast<FacebookProto*>(lparam); SetWindowLongPtr(hwnd, GWLP_USERDATA, lparam); for (size_t i = 0; i < _countof(feed_types); i++) SendDlgItemMessageA(hwnd, IDC_FEED_TYPE, CB_INSERTSTRING, i, reinterpret_cast<LPARAM>(Translate(feed_types[i].name))); SendDlgItemMessage(hwnd, IDC_FEED_TYPE, CB_SETCURSEL, proto->getByte(FACEBOOK_KEY_FEED_TYPE, 0), 0); for (size_t i = 0; i < _countof(server_types); i++) SendDlgItemMessageA(hwnd, IDC_URL_SERVER, CB_INSERTSTRING, i, reinterpret_cast<LPARAM>(Translate(server_types[i].name))); SendDlgItemMessage(hwnd, IDC_URL_SERVER, CB_SETCURSEL, proto->getByte(FACEBOOK_KEY_SERVER_TYPE, 0), 0); LoadDBCheckState(proto, hwnd, IDC_SYSTRAY_NOTIFY, FACEBOOK_KEY_SYSTRAY_NOTIFY, DEFAULT_SYSTRAY_NOTIFY); LoadDBCheckState(proto, hwnd, IDC_NOTIFICATIONS_CHATROOM, FACEBOOK_KEY_NOTIFICATIONS_CHATROOM, DEFAULT_NOTIFICATIONS_CHATROOM); LoadDBCheckState(proto, hwnd, IDC_NOTIFICATIONS_ENABLE, FACEBOOK_KEY_EVENT_NOTIFICATIONS_ENABLE, DEFAULT_EVENT_NOTIFICATIONS_ENABLE); LoadDBCheckState(proto, hwnd, IDC_FEEDS_ENABLE, FACEBOOK_KEY_EVENT_FEEDS_ENABLE, DEFAULT_EVENT_FEEDS_ENABLE); LoadDBCheckState(proto, hwnd, IDC_CLIENT_ENABLE, FACEBOOK_KEY_EVENT_CLIENT_ENABLE, DEFAULT_EVENT_CLIENT_ENABLE); LoadDBCheckState(proto, hwnd, IDC_OTHER_ENABLE, FACEBOOK_KEY_EVENT_OTHER_ENABLE, DEFAULT_EVENT_OTHER_ENABLE); LoadDBCheckState(proto, hwnd, IDC_FRIENDSHIP_ENABLE, FACEBOOK_KEY_EVENT_FRIENDSHIP_ENABLE, DEFAULT_EVENT_FRIENDSHIP_ENABLE); LoadDBCheckState(proto, hwnd, IDC_TICKER_ENABLE, FACEBOOK_KEY_EVENT_TICKER_ENABLE, DEFAULT_EVENT_TICKER_ENABLE); LoadDBCheckState(proto, hwnd, IDC_ON_THIS_DAY_ENABLE, FACEBOOK_KEY_EVENT_ON_THIS_DAY_ENABLE, DEFAULT_EVENT_ON_THIS_DAY_ENABLE); LoadDBCheckState(proto, hwnd, IDC_FILTER_ADS, FACEBOOK_KEY_FILTER_ADS, DEFAULT_FILTER_ADS); } return TRUE; case WM_COMMAND: switch (LOWORD(wparam)) { case IDC_PREVIEW: proto->NotifyEvent(proto->m_tszUserName, TranslateT("Sample event"), NULL, FACEBOOK_EVENT_CLIENT); proto->NotifyEvent(proto->m_tszUserName, TranslateT("Sample request"), NULL, FACEBOOK_EVENT_OTHER); proto->NotifyEvent(proto->m_tszUserName, TranslateT("Sample newsfeed"), NULL, FACEBOOK_EVENT_NEWSFEED); proto->NotifyEvent(proto->m_tszUserName, TranslateT("Sample notification"), NULL, FACEBOOK_EVENT_NOTIFICATION); proto->NotifyEvent(proto->m_tszUserName, TranslateT("Sample friendship"), NULL, FACEBOOK_EVENT_FRIENDSHIP); proto->NotifyEvent(proto->m_tszUserName, TranslateT("Sample ticker"), NULL, FACEBOOK_EVENT_TICKER); proto->NotifyEvent(proto->m_tszUserName, TranslateT("Sample on this day"), NULL, FACEBOOK_EVENT_ON_THIS_DAY); break; case IDC_FEED_TYPE: case IDC_URL_SERVER: if (HIWORD(wparam) == CBN_SELCHANGE) SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); break; default: SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); } return TRUE; case WM_NOTIFY: { if (reinterpret_cast<NMHDR*>(lparam)->code == PSN_APPLY) { proto->setByte(FACEBOOK_KEY_FEED_TYPE, SendDlgItemMessage(hwnd, IDC_FEED_TYPE, CB_GETCURSEL, 0, 0)); proto->setByte(FACEBOOK_KEY_SERVER_TYPE, SendDlgItemMessage(hwnd, IDC_URL_SERVER, CB_GETCURSEL, 0, 0)); StoreDBCheckState(proto, hwnd, IDC_SYSTRAY_NOTIFY, FACEBOOK_KEY_SYSTRAY_NOTIFY); StoreDBCheckState(proto, hwnd, IDC_NOTIFICATIONS_CHATROOM, FACEBOOK_KEY_NOTIFICATIONS_CHATROOM); StoreDBCheckState(proto, hwnd, IDC_NOTIFICATIONS_ENABLE, FACEBOOK_KEY_EVENT_NOTIFICATIONS_ENABLE); StoreDBCheckState(proto, hwnd, IDC_FEEDS_ENABLE, FACEBOOK_KEY_EVENT_FEEDS_ENABLE); StoreDBCheckState(proto, hwnd, IDC_OTHER_ENABLE, FACEBOOK_KEY_EVENT_OTHER_ENABLE); StoreDBCheckState(proto, hwnd, IDC_FRIENDSHIP_ENABLE, FACEBOOK_KEY_EVENT_FRIENDSHIP_ENABLE); StoreDBCheckState(proto, hwnd, IDC_CLIENT_ENABLE, FACEBOOK_KEY_EVENT_CLIENT_ENABLE); StoreDBCheckState(proto, hwnd, IDC_TICKER_ENABLE, FACEBOOK_KEY_EVENT_TICKER_ENABLE); StoreDBCheckState(proto, hwnd, IDC_ON_THIS_DAY_ENABLE, FACEBOOK_KEY_EVENT_ON_THIS_DAY_ENABLE); StoreDBCheckState(proto, hwnd, IDC_FILTER_ADS, FACEBOOK_KEY_FILTER_ADS); } } return TRUE; } return FALSE; }
INT_PTR CALLBACK FBOptionsProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { FacebookProto *proto = reinterpret_cast<FacebookProto*>(GetWindowLongPtr(hwnd, GWLP_USERDATA)); switch (message) { case WM_INITDIALOG: { TranslateDialogDefault(hwnd); proto = reinterpret_cast<FacebookProto*>(lparam); SetWindowLongPtr(hwnd, GWLP_USERDATA, lparam); ptrA login(db_get_sa(NULL, proto->ModuleName(), FACEBOOK_KEY_LOGIN)); if (login != NULL) SetDlgItemTextA(hwnd, IDC_UN, login); ptrA password(db_get_sa(NULL, proto->ModuleName(), FACEBOOK_KEY_PASS)); if (password != NULL) SetDlgItemTextA(hwnd, IDC_PW, password); if (!proto->isOffline()) { SendDlgItemMessage(hwnd, IDC_UN, EM_SETREADONLY, TRUE, 0); SendDlgItemMessage(hwnd, IDC_PW, EM_SETREADONLY, TRUE, 0); } SendDlgItemMessage(hwnd, IDC_GROUP, EM_LIMITTEXT, FACEBOOK_GROUP_NAME_LIMIT, 0); if (proto->m_tszDefaultGroup != NULL) SetDlgItemText(hwnd, IDC_GROUP, proto->m_tszDefaultGroup); LoadDBCheckState(proto, hwnd, IDC_SET_IGNORE_STATUS, FACEBOOK_KEY_DISABLE_STATUS_NOTIFY, DEFAULT_DISABLE_STATUS_NOTIFY); LoadDBCheckState(proto, hwnd, IDC_BIGGER_AVATARS, FACEBOOK_KEY_BIG_AVATARS, DEFAULT_BIG_AVATARS); LoadDBCheckState(proto, hwnd, IDC_NAME_AS_NICK, FACEBOOK_KEY_NAME_AS_NICK, DEFAULT_NAME_AS_NICK); } return TRUE; case WM_COMMAND: { switch (LOWORD(wparam)) { case IDC_NEWACCOUNTLINK: proto->OpenUrl(std::string(FACEBOOK_URL_HOMEPAGE)); return TRUE; case IDC_UN: case IDC_PW: case IDC_GROUP: if (HIWORD(wparam) == EN_CHANGE && (HWND)lparam == GetFocus()) SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); break; default: SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); } } break; case WM_NOTIFY: if (reinterpret_cast<NMHDR*>(lparam)->code == PSN_APPLY) { char str[128]; TCHAR tstr[128]; GetDlgItemTextA(hwnd, IDC_UN, str, _countof(str)); db_set_s(0, proto->ModuleName(), FACEBOOK_KEY_LOGIN, str); GetDlgItemTextA(hwnd, IDC_PW, str, _countof(str)); proto->setString(FACEBOOK_KEY_PASS, str); GetDlgItemText(hwnd, IDC_GROUP, tstr, _countof(tstr)); if (tstr[0] != '\0') { proto->m_tszDefaultGroup = mir_tstrdup(tstr); proto->setTString(FACEBOOK_KEY_DEF_GROUP, tstr); Clist_CreateGroup(0, tstr); } else { proto->delSetting(FACEBOOK_KEY_DEF_GROUP); proto->m_tszDefaultGroup = NULL; } StoreDBCheckState(proto, hwnd, IDC_SET_IGNORE_STATUS, FACEBOOK_KEY_DISABLE_STATUS_NOTIFY); StoreDBCheckState(proto, hwnd, IDC_BIGGER_AVATARS, FACEBOOK_KEY_BIG_AVATARS); StoreDBCheckState(proto, hwnd, IDC_NAME_AS_NICK, FACEBOOK_KEY_NAME_AS_NICK); return TRUE; } break; } return FALSE; }
static INT_PTR CALLBACK DlgProcIcqOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { CIcqProto *ppro = (CIcqProto*)GetWindowLongPtr( hwndDlg, GWLP_USERDATA ); switch (msg) { case WM_INITDIALOG: TranslateDialogDefault(hwndDlg); ppro = (CIcqProto*)lParam; SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); { DWORD dwUin = ppro->getContactUin(NULL); if (dwUin) SetDlgItemInt(hwndDlg, IDC_ICQNUM, dwUin, FALSE); else // keep it empty when no UIN entered SetDlgItemTextA(hwndDlg, IDC_ICQNUM, ""); SendDlgItemMessage(hwndDlg, IDC_PASSWORD, EM_LIMITTEXT, PASSWORDMAXLEN - 1, 0); // bit of a security hole here, since it's easy to extract a password from an edit box char pszPwd[PASSWORDMAXLEN]; if (ppro->GetUserStoredPassword(pszPwd, sizeof(pszPwd))) SetDlgItemTextA(hwndDlg, IDC_PASSWORD, pszPwd); LoadDBCheckState(ppro, hwndDlg, IDC_SSL, "SecureConnection", DEFAULT_SECURE_CONNECTION); LoadDBCheckState(ppro, hwndDlg, IDC_MD5LOGIN, "SecureLogin", DEFAULT_SECURE_LOGIN); LoadDBCheckState(ppro, hwndDlg, IDC_LEGACY, "LegacyFix", DEFAULT_LEGACY_FIX); char szServer[MAX_PATH]; if (!ppro->getSettingStringStatic(NULL, "OscarServer", szServer, MAX_PATH)) SetDlgItemTextA(hwndDlg, IDC_ICQSERVER, szServer); else SetDlgItemTextA(hwndDlg, IDC_ICQSERVER, IsDlgButtonChecked(hwndDlg, IDC_SSL) ? DEFAULT_SERVER_HOST_SSL : DEFAULT_SERVER_HOST); SetDlgItemInt(hwndDlg, IDC_ICQPORT, ppro->getWord("OscarPort", IsDlgButtonChecked(hwndDlg, IDC_SSL) ? DEFAULT_SERVER_PORT_SSL : DEFAULT_SERVER_PORT), FALSE); LoadDBCheckState(ppro, hwndDlg, IDC_KEEPALIVE, "KeepAlive", DEFAULT_KEEPALIVE_ENABLED); SendDlgItemMessage(hwndDlg, IDC_LOGLEVEL, TBM_SETRANGE, FALSE, MAKELONG(0, 4)); SendDlgItemMessage(hwndDlg, IDC_LOGLEVEL, TBM_SETPOS, TRUE, 4 - ppro->getByte("ShowLogLevel", LOG_WARNING)); SetDlgItemText(hwndDlg, IDC_LEVELDESCR, TranslateTS(szLogLevelDescr[4 - SendDlgItemMessage(hwndDlg, IDC_LOGLEVEL, TBM_GETPOS, 0, 0)])); ShowDlgItem(hwndDlg, IDC_RECONNECTREQD, SW_HIDE); LoadDBCheckState(ppro, hwndDlg, IDC_NOERRMULTI, "IgnoreMultiErrorBox", 0); } return TRUE; case WM_HSCROLL: SetDlgItemText(hwndDlg, IDC_LEVELDESCR, TranslateTS(szLogLevelDescr[4 - SendDlgItemMessage(hwndDlg, IDC_LOGLEVEL, TBM_GETPOS, 0, 0)])); OptDlgChanged(hwndDlg); break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_LOOKUPLINK: Utils_OpenUrl(URL_FORGOT_PASSWORD); return TRUE; case IDC_NEWUINLINK: Utils_OpenUrl(URL_REGISTER); return TRUE; case IDC_RESETSERVER: SetDlgItemInt(hwndDlg, IDC_ICQPORT, IsDlgButtonChecked(hwndDlg, IDC_SSL) ? DEFAULT_SERVER_PORT_SSL : DEFAULT_SERVER_PORT, FALSE); case IDC_SSL: SetDlgItemTextA(hwndDlg, IDC_ICQSERVER, IsDlgButtonChecked(hwndDlg, IDC_SSL) ? DEFAULT_SERVER_HOST_SSL : DEFAULT_SERVER_HOST); SetDlgItemInt(hwndDlg, IDC_ICQPORT, IsDlgButtonChecked(hwndDlg, IDC_SSL) ? DEFAULT_SERVER_PORT_SSL : DEFAULT_SERVER_PORT, FALSE); OptDlgChanged(hwndDlg); return TRUE; } if (ppro->icqOnline() && LOWORD(wParam) != IDC_NOERRMULTI) { char szClass[80]; GetClassNameA((HWND)lParam, szClass, sizeof(szClass)); if (mir_strcmpi(szClass, "EDIT") || HIWORD(wParam) == EN_CHANGE) ShowDlgItem(hwndDlg, IDC_RECONNECTREQD, SW_SHOW); } if ((LOWORD(wParam) == IDC_ICQNUM || LOWORD(wParam) == IDC_PASSWORD || LOWORD(wParam) == IDC_ICQSERVER || LOWORD(wParam) == IDC_ICQPORT) && (HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus())) { return 0; } OptDlgChanged(hwndDlg); break; case WM_NOTIFY: switch (((LPNMHDR)lParam)->code) { case PSN_APPLY: char str[128]; ppro->setDword(UNIQUEIDSETTING, GetDlgItemInt(hwndDlg, IDC_ICQNUM, NULL, FALSE)); GetDlgItemTextA(hwndDlg, IDC_PASSWORD, str, _countof(ppro->m_szPassword)); if (mir_strlen(str)) { mir_strcpy(ppro->m_szPassword, str); ppro->m_bRememberPwd = true; } else ppro->m_bRememberPwd = ppro->getByte("RememberPass", 0); ppro->setString("Password", str); GetDlgItemTextA(hwndDlg, IDC_ICQSERVER, str, _countof(str)); ppro->setString("OscarServer", str); ppro->setWord("OscarPort", (WORD)GetDlgItemInt(hwndDlg, IDC_ICQPORT, NULL, FALSE)); StoreDBCheckState(ppro, hwndDlg, IDC_KEEPALIVE, "KeepAlive"); StoreDBCheckState(ppro, hwndDlg, IDC_SSL, "SecureConnection"); StoreDBCheckState(ppro, hwndDlg, IDC_MD5LOGIN, "SecureLogin"); StoreDBCheckState(ppro, hwndDlg, IDC_LEGACY, "LegacyFix"); StoreDBCheckState(ppro, hwndDlg, IDC_NOERRMULTI, "IgnoreMultiErrorBox"); ppro->setByte("ShowLogLevel", (BYTE)(4 - SendDlgItemMessage(hwndDlg, IDC_LOGLEVEL, TBM_GETPOS, 0, 0))); return true; } break; } return FALSE; }
static INT_PTR CALLBACK DlgProcIcqContactsOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { CIcqProto* ppro = (CIcqProto*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); switch (msg) { case WM_INITDIALOG: TranslateDialogDefault(hwndDlg); ppro = (CIcqProto*)lParam; SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); LoadDBCheckState(ppro, hwndDlg, IDC_ENABLE, "UseServerCList", DEFAULT_SS_ENABLED); LoadDBCheckState(ppro, hwndDlg, IDC_ADDSERVER, "ServerAddRemove", DEFAULT_SS_ADDSERVER); LoadDBCheckState(ppro, hwndDlg, IDC_LOADFROMSERVER, "LoadServerDetails", DEFAULT_SS_LOAD); LoadDBCheckState(ppro, hwndDlg, IDC_SAVETOSERVER, "StoreServerDetails", DEFAULT_SS_STORE); LoadDBCheckState(ppro, hwndDlg, IDC_ENABLEAVATARS, "AvatarsEnabled", DEFAULT_AVATARS_ENABLED); LoadDBCheckState(ppro, hwndDlg, IDC_AUTOLOADAVATARS, "AvatarsAutoLoad", DEFAULT_LOAD_AVATARS); LoadDBCheckState(ppro, hwndDlg, IDC_STRICTAVATARCHECK, "StrictAvatarCheck", DEFAULT_AVATARS_CHECK); icq_EnableMultipleControls(hwndDlg, icqContactsControls, _countof(icqContactsControls), ppro->getByte("UseServerCList", DEFAULT_SS_ENABLED) ? TRUE : FALSE); icq_EnableMultipleControls(hwndDlg, icqAvatarControls, _countof(icqAvatarControls), ppro->getByte("AvatarsEnabled", DEFAULT_AVATARS_ENABLED) ? TRUE : FALSE); if (ppro->icqOnline()) { ShowDlgItem(hwndDlg, IDC_OFFLINETOENABLE, SW_SHOW); EnableDlgItem(hwndDlg, IDC_ENABLE, FALSE); EnableDlgItem(hwndDlg, IDC_ENABLEAVATARS, FALSE); } else EnableDlgItem(hwndDlg, IDC_UPLOADNOW, FALSE); return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_UPLOADNOW: ppro->ShowUploadContactsDialog(); return TRUE; case IDC_ENABLE: icq_EnableMultipleControls(hwndDlg, icqContactsControls, _countof(icqContactsControls), IsDlgButtonChecked(hwndDlg, IDC_ENABLE)); if (ppro->icqOnline()) ShowDlgItem(hwndDlg, IDC_RECONNECTREQD, SW_SHOW); else EnableDlgItem(hwndDlg, IDC_UPLOADNOW, FALSE); break; case IDC_ENABLEAVATARS: icq_EnableMultipleControls(hwndDlg, icqAvatarControls, _countof(icqAvatarControls), IsDlgButtonChecked(hwndDlg, IDC_ENABLEAVATARS)); break; } OptDlgChanged(hwndDlg); break; case WM_NOTIFY: if (((LPNMHDR)lParam)->code == PSN_APPLY) { StoreDBCheckState(ppro, hwndDlg, IDC_ENABLE, "UseServerCList"); StoreDBCheckState(ppro, hwndDlg, IDC_ADDSERVER, "ServerAddRemove"); StoreDBCheckState(ppro, hwndDlg, IDC_LOADFROMSERVER, "LoadServerDetails"); StoreDBCheckState(ppro, hwndDlg, IDC_SAVETOSERVER, "StoreServerDetails"); StoreDBCheckState(ppro, hwndDlg, IDC_ENABLEAVATARS, "AvatarsEnabled"); StoreDBCheckState(ppro, hwndDlg, IDC_AUTOLOADAVATARS, "AvatarsAutoLoad"); StoreDBCheckState(ppro, hwndDlg, IDC_STRICTAVATARCHECK, "StrictAvatarCheck"); return TRUE; } break; } return FALSE; }
static INT_PTR CALLBACK DlgProcIcqFeaturesOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { CIcqProto* ppro = (CIcqProto*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); switch (msg) { case WM_INITDIALOG: TranslateDialogDefault(hwndDlg); ppro = (CIcqProto*)lParam; SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); { LoadDBCheckState(ppro, hwndDlg, IDC_TEMPVISIBLE, "TempVisListEnabled", DEFAULT_TEMPVIS_ENABLED); LoadDBCheckState(ppro, hwndDlg, IDC_SLOWSEND, "SlowSend", DEFAULT_SLOWSEND); BOOL byData = ppro->getByte("DirectMessaging", DEFAULT_DCMSG_ENABLED); CheckDlgButton(hwndDlg, IDC_DCENABLE, byData ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_DCPASSIVE, byData == 1 ? BST_CHECKED : BST_UNCHECKED); icq_EnableMultipleControls(hwndDlg, icqDCMsgControls, _countof(icqDCMsgControls), byData ? TRUE : FALSE); BYTE byXStatusEnabled = ppro->getByte("XStatusEnabled", DEFAULT_XSTATUS_ENABLED); CheckDlgButton(hwndDlg, IDC_XSTATUSENABLE, byXStatusEnabled ? BST_CHECKED : BST_UNCHECKED); BYTE byMoodsEnabled = ppro->getByte("MoodsEnabled", DEFAULT_MOODS_ENABLED); CheckDlgButton(hwndDlg, IDC_MOODSENABLE, byMoodsEnabled ? BST_CHECKED : BST_UNCHECKED); icq_EnableMultipleControls(hwndDlg, icqXStatusControls, _countof(icqXStatusControls), byXStatusEnabled); icq_EnableMultipleControls(hwndDlg, icqCustomStatusControls, _countof(icqCustomStatusControls), byXStatusEnabled || byMoodsEnabled); LoadDBCheckState(ppro, hwndDlg, IDC_XSTATUSAUTO, "XStatusAuto", DEFAULT_XSTATUS_AUTO); LoadDBCheckState(ppro, hwndDlg, IDC_XSTATUSRESET, "XStatusReset", DEFAULT_XSTATUS_RESET); LoadDBCheckState(ppro, hwndDlg, IDC_KILLSPAMBOTS, "KillSpambots", DEFAULT_KILLSPAM_ENABLED); LoadDBCheckState(ppro, hwndDlg, IDC_AIMENABLE, "AimEnabled", DEFAULT_AIM_ENABLED); icq_EnableMultipleControls(hwndDlg, icqAimControls, _countof(icqAimControls), ppro->icqOnline() ? FALSE : TRUE); hCpCombo = GetDlgItem(hwndDlg, IDC_UTFCODEPAGE); int sCodePage = ppro->getWord("AnsiCodePage", CP_ACP); ComboBoxAddStringUtf(GetDlgItem(hwndDlg, IDC_UTFCODEPAGE), LPGEN("System default codepage"), 0); EnumSystemCodePagesA(FillCpCombo, CP_INSTALLED); if (sCodePage == 0) SendDlgItemMessage(hwndDlg, IDC_UTFCODEPAGE, CB_SETCURSEL, 0, 0); else { for (int i = 0; i < SendDlgItemMessage(hwndDlg, IDC_UTFCODEPAGE, CB_GETCOUNT, 0, 0); i++) { if (SendDlgItemMessage(hwndDlg, IDC_UTFCODEPAGE, CB_GETITEMDATA, (WPARAM)i, 0) == sCodePage) { SendDlgItemMessage(hwndDlg, IDC_UTFCODEPAGE, CB_SETCURSEL, (WPARAM)i, 0); break; } } } } return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_UTFCODEPAGE: if (HIWORD(wParam) == CBN_SELCHANGE) OptDlgChanged(hwndDlg); break; case IDC_DCENABLE: icq_EnableMultipleControls(hwndDlg, icqDCMsgControls, _countof(icqDCMsgControls), IsDlgButtonChecked(hwndDlg, IDC_DCENABLE)); OptDlgChanged(hwndDlg); break; case IDC_XSTATUSENABLE: icq_EnableMultipleControls(hwndDlg, icqXStatusControls, _countof(icqXStatusControls), IsDlgButtonChecked(hwndDlg, IDC_XSTATUSENABLE)); case IDC_MOODSENABLE: icq_EnableMultipleControls(hwndDlg, icqCustomStatusControls, _countof(icqCustomStatusControls), IsDlgButtonChecked(hwndDlg, IDC_XSTATUSENABLE) || IsDlgButtonChecked(hwndDlg, IDC_MOODSENABLE)); default: OptDlgChanged(hwndDlg); break; } break; case WM_NOTIFY: switch (((LPNMHDR)lParam)->code) { case PSN_APPLY: int i = SendDlgItemMessage(hwndDlg, IDC_UTFCODEPAGE, CB_GETCURSEL, 0, 0); ppro->m_wAnsiCodepage = (WORD)SendDlgItemMessage(hwndDlg, IDC_UTFCODEPAGE, CB_GETITEMDATA, (WPARAM)i, 0); ppro->setWord("AnsiCodePage", ppro->m_wAnsiCodepage); ppro->m_bTempVisListEnabled = (BYTE)IsDlgButtonChecked(hwndDlg, IDC_TEMPVISIBLE); ppro->setByte("TempVisListEnabled", ppro->m_bTempVisListEnabled); StoreDBCheckState(ppro, hwndDlg, IDC_SLOWSEND, "SlowSend"); if (IsDlgButtonChecked(hwndDlg, IDC_DCENABLE)) ppro->m_bDCMsgEnabled = IsDlgButtonChecked(hwndDlg, IDC_DCPASSIVE) ? 1 : 2; else ppro->m_bDCMsgEnabled = 0; ppro->setByte("DirectMessaging", ppro->m_bDCMsgEnabled); ppro->m_bXStatusEnabled = (BYTE)IsDlgButtonChecked(hwndDlg, IDC_XSTATUSENABLE); ppro->setByte("XStatusEnabled", ppro->m_bXStatusEnabled); ppro->m_bMoodsEnabled = (BYTE)IsDlgButtonChecked(hwndDlg, IDC_MOODSENABLE); ppro->setByte("MoodsEnabled", ppro->m_bMoodsEnabled); StoreDBCheckState(ppro, hwndDlg, IDC_XSTATUSAUTO, "XStatusAuto"); StoreDBCheckState(ppro, hwndDlg, IDC_XSTATUSRESET, "XStatusReset"); StoreDBCheckState(ppro, hwndDlg, IDC_KILLSPAMBOTS, "KillSpambots"); StoreDBCheckState(ppro, hwndDlg, IDC_AIMENABLE, "AimEnabled"); return TRUE; } break; } return FALSE; }
static INT_PTR CALLBACK DlgProcIcqPrivacyOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { CIcqProto* ppro = (CIcqProto*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); switch (msg) { case WM_INITDIALOG: TranslateDialogDefault(hwndDlg); ppro = (CIcqProto*)lParam; SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); { int nDcType = ppro->getByte("DCType", 0); int nAddAuth = ppro->getByte("Auth", 1); if (!ppro->icqOnline()) { icq_EnableMultipleControls(hwndDlg, icqPrivacyControls, _countof(icqPrivacyControls), FALSE); ShowDlgItem(hwndDlg, IDC_STATIC_NOTONLINE, SW_SHOW); } else ShowDlgItem(hwndDlg, IDC_STATIC_NOTONLINE, SW_HIDE); CheckDlgButton(hwndDlg, IDC_DCALLOW_ANY, (nDcType == 0) ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_DCALLOW_CLIST, (nDcType == 1) ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_DCALLOW_AUTH, (nDcType == 2) ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_ADD_ANY, (nAddAuth == 0) ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_ADD_AUTH, (nAddAuth == 1) ? BST_CHECKED : BST_UNCHECKED); LoadDBCheckState(ppro, hwndDlg, IDC_WEBAWARE, "WebAware", 0); LoadDBCheckState(ppro, hwndDlg, IDC_PUBLISHPRIMARY, "PublishPrimaryEmail", 0); LoadDBCheckState(ppro, hwndDlg, IDC_STATUSMSG_CLIST, "StatusMsgReplyCList", 0); LoadDBCheckState(ppro, hwndDlg, IDC_STATUSMSG_VISIBLE, "StatusMsgReplyVisible", 0); if (!ppro->getByte("StatusMsgReplyCList", 0)) EnableDlgItem(hwndDlg, IDC_STATUSMSG_VISIBLE, FALSE); } return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_DCALLOW_ANY: case IDC_DCALLOW_CLIST: case IDC_DCALLOW_AUTH: case IDC_ADD_ANY: case IDC_ADD_AUTH: case IDC_WEBAWARE: case IDC_PUBLISHPRIMARY: case IDC_STATUSMSG_VISIBLE: if ((HWND)lParam != GetFocus()) return 0; break; case IDC_STATUSMSG_CLIST: if (IsDlgButtonChecked(hwndDlg, IDC_STATUSMSG_CLIST)) { EnableDlgItem(hwndDlg, IDC_STATUSMSG_VISIBLE, TRUE); LoadDBCheckState(ppro, hwndDlg, IDC_STATUSMSG_VISIBLE, "StatusMsgReplyVisible", 0); } else { EnableDlgItem(hwndDlg, IDC_STATUSMSG_VISIBLE, FALSE); CheckDlgButton(hwndDlg, IDC_STATUSMSG_VISIBLE, BST_UNCHECKED); } break; default: return 0; } OptDlgChanged(hwndDlg); break; case WM_NOTIFY: switch (((LPNMHDR)lParam)->code) { case PSN_APPLY: StoreDBCheckState(ppro, hwndDlg, IDC_WEBAWARE, "WebAware"); StoreDBCheckState(ppro, hwndDlg, IDC_PUBLISHPRIMARY, "PublishPrimaryEmail"); StoreDBCheckState(ppro, hwndDlg, IDC_STATUSMSG_CLIST, "StatusMsgReplyCList"); StoreDBCheckState(ppro, hwndDlg, IDC_STATUSMSG_VISIBLE, "StatusMsgReplyVisible"); if (IsDlgButtonChecked(hwndDlg, IDC_DCALLOW_AUTH)) ppro->setByte("DCType", 2); else if (IsDlgButtonChecked(hwndDlg, IDC_DCALLOW_CLIST)) ppro->setByte("DCType", 1); else ppro->setByte("DCType", 0); StoreDBCheckState(ppro, hwndDlg, IDC_ADD_AUTH, "Auth"); if (ppro->icqOnline()) { PBYTE buf = NULL; size_t buflen = 0; ppackTLVWord(&buf, &buflen, 0x19A, !ppro->getByte("Auth", 1)); ppackTLVByte(&buf, &buflen, 0x212, ppro->getByte("WebAware", 0)); ppackTLVWord(&buf, &buflen, 0x1F9, ppro->getByte("PrivacyLevel", 1)); ppro->icq_changeUserDirectoryInfoServ(buf, buflen, DIRECTORYREQUEST_UPDATEPRIVACY); SAFE_FREE((void**)&buf); // Send a status packet to notify the server about the webaware setting WORD wStatus = MirandaStatusToIcq(ppro->m_iStatus); if (ppro->m_iStatus == ID_STATUS_INVISIBLE) { if (ppro->m_bSsiEnabled) ppro->updateServVisibilityCode(3); ppro->icq_setstatus(wStatus, NULL); } else { ppro->icq_setstatus(wStatus, NULL); if (ppro->m_bSsiEnabled) ppro->updateServVisibilityCode(4); } } return TRUE; } break; } return FALSE; }