diff options
Diffstat (limited to 'tools/_deprecated/Yahoo/src/options.cpp')
-rw-r--r-- | tools/_deprecated/Yahoo/src/options.cpp | 364 |
1 files changed, 364 insertions, 0 deletions
diff --git a/tools/_deprecated/Yahoo/src/options.cpp b/tools/_deprecated/Yahoo/src/options.cpp new file mode 100644 index 0000000000..f793642e52 --- /dev/null +++ b/tools/_deprecated/Yahoo/src/options.cpp @@ -0,0 +1,364 @@ +/* + * $Id: options.cpp 12038 2010-06-21 16:46:22Z gena01 $ + * + * myYahoo Miranda Plugin + * + * Authors: Gennady Feldman (aka Gena01) + * Laurent Marechal (aka Peorth) + * + * This code is under GPL and is based on AIM, MSN and Miranda source code. + * I want to thank Robert Rainwater and George Hazan for their code and support + * and for answering some of my questions during development of this plugin. + */ + +#include "stdafx.h" +#include "resource.h" + +#include <m_langpack.h> +#include <m_utils.h> +#include <m_options.h> +#include <m_popup.h> + +#include "ignore.h" + +/* + * DlgProcYahooOpts - Account Options Dialog + */ +static INT_PTR CALLBACK DlgProcYahooOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + DBVARIANT dbv; + CYahooProto* ppro = (CYahooProto*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); + + switch (msg) { + case WM_INITDIALOG: + TranslateDialogDefault(hwndDlg); + + ppro = (CYahooProto*)lParam; + SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); + + if (!ppro->getString(YAHOO_LOGINID, &dbv)) { + SetDlgItemTextA(hwndDlg, IDC_HANDLE, dbv.pszVal); + db_free(&dbv); + } + + if (!ppro->getString("Nick", &dbv)) { + SetDlgItemTextA(hwndDlg, IDC_NICK, dbv.pszVal); + db_free(&dbv); + } + + if (!ppro->getString(YAHOO_PASSWORD, &dbv)) { + //bit of a security hole here, since it's easy to extract a password from an edit box + SetDlgItemTextA(hwndDlg, IDC_PASSWORD, dbv.pszVal); + db_free(&dbv); + } + + //SetButtonCheck(hwndDlg, IDC_DISABLE_UTF8, ppro->getByte("DisableUTF8", 0)); + SetButtonCheck(hwndDlg, IDC_USE_YAB, ppro->getByte("UseYAB", 1)); + SetButtonCheck(hwndDlg, IDC_SHOW_AVATARS, ppro->getByte("ShowAvatars", 1)); + SetButtonCheck(hwndDlg, IDC_MAIL_AUTOLOGIN, ppro->getByte("MailAutoLogin", 1)); + SetButtonCheck(hwndDlg, IDC_DISABLEYAHOOMAIL, !ppro->getByte("DisableYahoomail", 0)); + SetButtonCheck(hwndDlg, IDC_SHOW_ERRORS, ppro->getByte("ShowErrors", 1)); + + return TRUE; + + case WM_COMMAND: + + switch (LOWORD(wParam)) { + case IDC_NEWYAHOOACCOUNTLINK: + Utils_OpenUrl("http://edit.yahoo.com/config/eval_register"); + return TRUE; + + //case IDC_DISABLE_UTF8: + case IDC_USE_YAB: + case IDC_SHOW_AVATARS: + case IDC_MAIL_AUTOLOGIN: + case IDC_SHOW_ERRORS: + case IDC_DISABLEYAHOOMAIL: + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + } + + if (HIWORD(wParam) == EN_CHANGE && (HWND)lParam == GetFocus()) + switch (LOWORD(wParam)) { + case IDC_HANDLE: + case IDC_PASSWORD: + case IDC_NICK: + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + } + + break; + + case WM_NOTIFY: + + if (((LPNMHDR)lParam)->code == (UINT)PSN_APPLY) { + bool reconnectRequired = false; + + char str[128]; + GetDlgItemTextA(hwndDlg, IDC_HANDLE, str, _countof(str)); + if (ppro->getString(YAHOO_LOGINID, &dbv)) { + reconnectRequired = true; + } + else { + if (mir_strcmp(str, dbv.pszVal)) + reconnectRequired = true; + db_free(&dbv); + } + ppro->setString(YAHOO_LOGINID, str); + + GetDlgItemTextA(hwndDlg, IDC_PASSWORD, str, _countof(str)); + if (ppro->getString(YAHOO_PASSWORD, &dbv)) { + reconnectRequired = true; + } + else { + if (mir_strcmp(str, dbv.pszVal)) + reconnectRequired = true; + db_free(&dbv); + } + + ppro->setString(YAHOO_PASSWORD, str); + GetDlgItemTextA(hwndDlg, IDC_NICK, str, _countof(str)); + + + if (str[0] == '\0') { + /* Check for empty Nick, if so delete the key in the DB */ + ppro->delSetting("Nick"); + } + else { + /* otherwise save the new Nick */ + ppro->setString("Nick", str); + } + + ppro->setByte("UseYAB", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_USE_YAB)); + ppro->setByte("ShowAvatars", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_SHOW_AVATARS)); + ppro->setByte("MailAutoLogin", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_MAIL_AUTOLOGIN)); + ppro->setByte("DisableYahoomail", (BYTE)BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_DISABLEYAHOOMAIL)); + ppro->setByte("ShowErrors", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_SHOW_ERRORS)); + + if (reconnectRequired) { + ppro->delSetting(YAHOO_PWTOKEN); + if (ppro->m_bLoggedIn) + MessageBox(hwndDlg, TranslateT("These changes will take effect the next time you connect to the Yahoo network."), TranslateT("Yahoo options"), MB_OK); + + } + + return TRUE; + } + + break; + } + return FALSE; +} + +/* + * DlgProcYahooOpts - Connection Options Dialog + */ +static INT_PTR CALLBACK DlgProcYahooOptsConn(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + DBVARIANT dbv; + CYahooProto* ppro = (CYahooProto*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); + + switch (msg) { + case WM_INITDIALOG: + TranslateDialogDefault(hwndDlg); + + ppro = (CYahooProto*)lParam; + SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); + + if (!ppro->getString(YAHOO_LOGINSERVER, &dbv)) { + SetDlgItemTextA(hwndDlg, IDC_LOGINSERVER, dbv.pszVal); + db_free(&dbv); + } + else SetDlgItemTextA(hwndDlg, IDC_LOGINSERVER, YAHOO_DEFAULT_LOGIN_SERVER); + + SetDlgItemInt(hwndDlg, IDC_YAHOOPORT, ppro->getWord(YAHOO_LOGINPORT, YAHOO_DEFAULT_PORT), FALSE); + return TRUE; + + case WM_COMMAND: + switch (LOWORD(wParam)) { + case IDC_RESETSERVER: + SetDlgItemTextA(hwndDlg, IDC_LOGINSERVER, YAHOO_DEFAULT_LOGIN_SERVER); + SetDlgItemInt(hwndDlg, IDC_YAHOOPORT, YAHOO_DEFAULT_PORT, FALSE); + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + } + + if (HIWORD(wParam) == EN_CHANGE && (HWND)lParam == GetFocus()) + switch (LOWORD(wParam)) { + case IDC_LOGINSERVER: + case IDC_YAHOOPORT: + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + } + + break; + + case WM_NOTIFY: + if (((LPNMHDR)lParam)->code == PSN_APPLY) { + bool reconnectRequired = false; + char str[128]; + GetDlgItemTextA(hwndDlg, IDC_LOGINSERVER, str, _countof(str)); + { + ptrA szServer(ppro->getStringA(YAHOO_LOGINSERVER)); + if (szServer == NULL) + reconnectRequired = true; + else if (mir_strcmp(str, szServer)) + reconnectRequired = true; + } + + ppro->setString(YAHOO_LOGINSERVER, str); + + int port = GetDlgItemInt(hwndDlg, IDC_YAHOOPORT, NULL, FALSE); + if (ppro->getWord(YAHOO_LOGINPORT, -1) != port) + reconnectRequired = true; + + ppro->setWord(YAHOO_LOGINPORT, port); + + if (reconnectRequired && ppro->m_bLoggedIn) + MessageBox(hwndDlg, TranslateT("These changes will take effect the next time you connect to the Yahoo network."), TranslateT("Yahoo options"), MB_OK); + + return TRUE; + } + break; + } + return FALSE; +} + +/* + * DlgProcYahooOpts - Connection Options Dialog + */ +static INT_PTR CALLBACK DlgProcYahooOptsIgnore(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + YList *l; + CYahooProto* ppro = (CYahooProto*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); + + switch (msg) { + case WM_INITDIALOG: + TranslateDialogDefault(hwndDlg); + + ppro = (CYahooProto*)lParam; + SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); + + if (ppro->getByte("IgnoreUnknown", 0)) { + CheckDlgButton(hwndDlg, IDC_OPT_IGN_UNKNOWN, BST_CHECKED); + + EnableWindow(GetDlgItem(hwndDlg, IDC_IGN_ADD), 0); + EnableWindow(GetDlgItem(hwndDlg, IDC_IGN_REMOVE), 0); + EnableWindow(GetDlgItem(hwndDlg, IDC_YIGN_EDIT), 0); + EnableWindow(GetDlgItem(hwndDlg, IDC_YIGN_LIST), 0); + } + else CheckDlgButton(hwndDlg, IDC_OPT_IGN_LIST, BST_CHECKED); + + /* show our current ignore list */ + LOG(("[DlgProcYahooOptsIgnore] Grabbing current ignore list...")) + l = (YList *)ppro->GetIgnoreList(); + while (l != NULL) { + yahoo_buddy *b = (yahoo_buddy *) l->data; + + LOG(("[DlgProcYahooOptsIgnore] Buddy: %s", b->id)) + SendDlgItemMessageA(hwndDlg, IDC_YIGN_LIST, LB_ADDSTRING, 0, (LPARAM)b->id); + l = l->next; + } + LOG(("[DlgProcYahooOptsIgnore] End of Ignore List...")) + + return TRUE; + + case WM_COMMAND: + switch (LOWORD(wParam)) { + case IDC_OPT_IGN_UNKNOWN: + case IDC_OPT_IGN_LIST: + if ((HWND)lParam != GetFocus()) return 0; + + EnableWindow(GetDlgItem(hwndDlg, IDC_IGN_ADD), LOWORD(wParam) == IDC_OPT_IGN_LIST); + EnableWindow(GetDlgItem(hwndDlg, IDC_IGN_REMOVE), LOWORD(wParam) == IDC_OPT_IGN_LIST); + EnableWindow(GetDlgItem(hwndDlg, IDC_YIGN_EDIT), LOWORD(wParam) == IDC_OPT_IGN_LIST); + EnableWindow(GetDlgItem(hwndDlg, IDC_YIGN_LIST), LOWORD(wParam) == IDC_OPT_IGN_LIST); + + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + + case IDC_IGN_ADD: + if (!ppro->m_bLoggedIn) + MessageBox(hwndDlg, TranslateT("You need to be connected to Yahoo to add to Ignore List."), TranslateT("Yahoo Ignore"), MB_OK | MB_ICONINFORMATION); + else { + char id[128]; + int i = GetDlgItemTextA(hwndDlg, IDC_YIGN_EDIT, id, _countof(id)); + + if (i < 3) { + MessageBox(hwndDlg, TranslateT("Please enter a valid buddy name to ignore."), TranslateT("Yahoo Ignore"), MB_OK | MB_ICONINFORMATION); + break; + } + + i = SendDlgItemMessageA(hwndDlg, IDC_YIGN_LIST, LB_FINDSTRINGEXACT, (WPARAM)-1, (LPARAM)id); + if (i != LB_ERR) { + MessageBox(hwndDlg, TranslateT("The buddy is already on your ignore list."), TranslateT("Yahoo Ignore"), MB_OK | MB_ICONINFORMATION); + break; + } + ppro->IgnoreBuddy(id, 0); + SendDlgItemMessageA(hwndDlg, IDC_YIGN_LIST, LB_ADDSTRING, 0, (LPARAM)id); + SetDlgItemTextA(hwndDlg, IDC_YIGN_EDIT, ""); + } + break; + + case IDC_IGN_REMOVE: + { + int i; + char id[128]; + + if (!ppro->m_bLoggedIn) { + MessageBox(hwndDlg, TranslateT("You need to be connected to Yahoo to remove from the ignore list."), TranslateT("Yahoo Ignore"), MB_OK | MB_ICONINFORMATION); + break; + } + + i = SendDlgItemMessage(hwndDlg, IDC_YIGN_LIST, LB_GETCURSEL, 0, 0); + if (i == LB_ERR) { + MessageBox(hwndDlg, TranslateT("Please select a buddy on the ignore list to remove."), TranslateT("Yahoo Ignore"), MB_OK | MB_ICONINFORMATION); + break; + } + + SendDlgItemMessageA(hwndDlg, IDC_YIGN_LIST, LB_GETTEXT, i, (LPARAM)id); + + ppro->IgnoreBuddy(id, 1); + SendDlgItemMessage(hwndDlg, IDC_YIGN_LIST, LB_DELETESTRING, i, 0); + } + } + break; + + case WM_NOTIFY: + if (((LPNMHDR)lParam)->code == PSN_APPLY) { + ppro->setByte("IgnoreUnknown", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_OPT_IGN_UNKNOWN)); + return TRUE; + } + break; + } + + return FALSE; +} + +/* + * YahooOptInit - initialize/register our Options w/ Miranda. + */ + +int __cdecl CYahooProto::OnOptionsInit(WPARAM wParam, LPARAM) +{ + OPTIONSDIALOGPAGE odp = { 0 }; + odp.position = -790000000; + odp.hInstance = hInstance; + odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_YAHOO); + odp.pwszTitle = m_tszUserName; + odp.flags = ODPF_BOLDGROUPS | ODPF_UNICODE | ODPF_DONTTRANSLATE; + odp.pwszGroup = LPGENW("Network"); + odp.pwszTab = LPGENW("Account"); + odp.pfnDlgProc = DlgProcYahooOpts; + odp.dwInitParam = LPARAM(this); + Options_AddPage(wParam, &odp); + + odp.pwszTab = LPGENW("Connection"); + odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_YAHOO_CONNECTION); + odp.pfnDlgProc = DlgProcYahooOptsConn; + Options_AddPage(wParam, &odp); + + odp.pwszTab = LPGENW("Ignore List"); + odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_YAHOO_IGNORE); + odp.pfnDlgProc = DlgProcYahooOptsIgnore; + Options_AddPage(wParam, &odp); + return 0; +} |