From 74f4ab340ebf9a3399f82ad38b53ad6fcdf8885d Mon Sep 17 00:00:00 2001 From: Rozhuk Ivan Date: Tue, 25 Nov 2014 22:07:11 +0000 Subject: Yahoo small fixes git-svn-id: http://svn.miranda-ng.org/main/trunk@11073 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/Yahoo/src/options.cpp | 760 ++++++++++++++++++++-------------------- 1 file changed, 380 insertions(+), 380 deletions(-) (limited to 'protocols/Yahoo/src/options.cpp') diff --git a/protocols/Yahoo/src/options.cpp b/protocols/Yahoo/src/options.cpp index f0fdfe9611..9ca0b249ba 100644 --- a/protocols/Yahoo/src/options.cpp +++ b/protocols/Yahoo/src/options.cpp @@ -1,380 +1,380 @@ -/* - * $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 "yahoo.h" -#include "resource.h" - -#include -#include -#include -#include - -#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: - CallService(MS_UTILS_OPENURL, 1, - ppro->getByte("YahooJapan", 0) ? - (LPARAM)"http://edit.yahoo.co.jp/config/eval_register" : - (LPARAM)"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, sizeof( str )); - dbv.pszVal = NULL; - - if ( ppro->getString( YAHOO_LOGINID, &dbv) || lstrcmpA( str, dbv.pszVal )) - reconnectRequired = true; - - if ( dbv.pszVal != NULL) - db_free(&dbv); - - ppro->setString( YAHOO_LOGINID, str ); - - GetDlgItemTextA(hwndDlg, IDC_PASSWORD, str, sizeof( str )); - dbv.pszVal = NULL; - if ( ppro->getString( YAHOO_PASSWORD, &dbv) || lstrcmpA( str, dbv.pszVal )) - reconnectRequired = true; - if ( dbv.pszVal != NULL) - db_free(&dbv); - - ppro->setString( YAHOO_PASSWORD, str ); - GetDlgItemTextA(hwndDlg, IDC_NICK, str, sizeof( 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)!IsDlgButtonChecked(hwndDlg, IDC_DISABLEYAHOOMAIL)); - ppro->setByte("ShowErrors", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_SHOW_ERRORS)); - - if (reconnectRequired) - ppro->delSetting(YAHOO_PWTOKEN); - - if ( reconnectRequired && ppro->m_bLoggedIn ) - MessageBoxA(hwndDlg, Translate("The changes you have made require you to reconnect to the Yahoo network before they take effect"), Translate("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, - ppro->getByte("YahooJapan", 0) - ? YAHOO_DEFAULT_JAPAN_LOGIN_SERVER - : YAHOO_DEFAULT_LOGIN_SERVER ); - - SetDlgItemInt(hwndDlg, IDC_YAHOOPORT, ppro->getWord(YAHOO_LOGINPORT, YAHOO_DEFAULT_PORT), FALSE); - - SetButtonCheck(hwndDlg, IDC_YAHOO_JAPAN, ppro->getByte("YahooJapan", 0)); - 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; - - case IDC_YAHOO_JAPAN: - SetDlgItemTextA(hwndDlg, IDC_LOGINSERVER, - (IsDlgButtonChecked(hwndDlg,IDC_YAHOO_JAPAN)==BST_CHECKED) ? - YAHOO_DEFAULT_JAPAN_LOGIN_SERVER : - YAHOO_DEFAULT_LOGIN_SERVER ); - // fall through and enable apply button - - 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, sizeof( str )); - - DBVARIANT dbv; - if ( ppro->getString( YAHOO_LOGINSERVER, &dbv) || lstrcmpA( str, dbv.pszVal )) - reconnectRequired = TRUE; - - if ( dbv.pszVal != NULL) - db_free(&dbv); - - 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); - - ppro->setByte("YahooJapan", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_YAHOO_JAPAN )); - - if ( reconnectRequired && ppro->m_bLoggedIn ) - MessageBoxA(hwndDlg, Translate("The changes you have made require you to reconnect to the Yahoo network before they take effect"), Translate("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, 1); - - 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, 1); - - /* show our current ignore list */ - LOG(("[DlgProcYahooOptsIgnore] Grabbing current ignore list...")) - l = (YList *)ppro->GetIgnoreList(); - while (l != NULL) { - struct yahoo_buddy *b = (struct yahoo_buddy *) l->data; - - LOG(("[DlgProcYahooOptsIgnore] Buddy: %s", b->id )) - SendMessageA(GetDlgItem(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, sizeof( 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); - SendMessageA(GetDlgItem(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 = SendMessage(GetDlgItem(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; - } - - SendMessageA(GetDlgItem(hwndDlg,IDC_YIGN_LIST), LB_GETTEXT, i, (LPARAM)id); - - ppro->IgnoreBuddy(id, 1); - SendMessage(GetDlgItem(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 lParam) -{ - OPTIONSDIALOGPAGE odp = { sizeof(odp) }; - odp.position = -790000000; - odp.hInstance = hInstance; - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_YAHOO); - odp.ptszTitle = m_tszUserName; - odp.flags = ODPF_BOLDGROUPS | ODPF_TCHAR | ODPF_DONTTRANSLATE; - odp.ptszGroup = LPGENT("Network"); - odp.ptszTab = LPGENT("Account"); - odp.pfnDlgProc = DlgProcYahooOpts; - odp.dwInitParam = LPARAM(this); - Options_AddPage(wParam, &odp); - - odp.ptszTab = LPGENT("Connection"); - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_YAHOO_CONNECTION); - odp.pfnDlgProc = DlgProcYahooOptsConn; - Options_AddPage(wParam, &odp); - - odp.ptszTab = LPGENT("Ignore List"); - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_YAHOO_IGNORE); - odp.pfnDlgProc = DlgProcYahooOptsIgnore; - Options_AddPage(wParam, &odp); - return 0; -} +/* + * $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 "yahoo.h" +#include "resource.h" + +#include +#include +#include +#include + +#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: + CallService(MS_UTILS_OPENURL, 1, + ppro->getByte("YahooJapan", 0) ? + (LPARAM)"http://edit.yahoo.co.jp/config/eval_register" : + (LPARAM)"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, sizeof( str )); + dbv.pszVal = NULL; + + if ( ppro->getString( YAHOO_LOGINID, &dbv) || lstrcmpA( str, dbv.pszVal )) + reconnectRequired = true; + + if ( dbv.pszVal != NULL) + db_free(&dbv); + + ppro->setString( YAHOO_LOGINID, str ); + + GetDlgItemTextA(hwndDlg, IDC_PASSWORD, str, sizeof( str )); + dbv.pszVal = NULL; + if ( ppro->getString( YAHOO_PASSWORD, &dbv) || lstrcmpA( str, dbv.pszVal )) + reconnectRequired = true; + if ( dbv.pszVal != NULL) + db_free(&dbv); + + ppro->setString( YAHOO_PASSWORD, str ); + GetDlgItemTextA(hwndDlg, IDC_NICK, str, sizeof( 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)!IsDlgButtonChecked(hwndDlg, IDC_DISABLEYAHOOMAIL)); + ppro->setByte("ShowErrors", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_SHOW_ERRORS)); + + if (reconnectRequired) + ppro->delSetting(YAHOO_PWTOKEN); + + if ( reconnectRequired && ppro->m_bLoggedIn ) + MessageBoxA(hwndDlg, Translate("The changes you have made require you to reconnect to the Yahoo network before they take effect"), Translate("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, + ppro->getByte("YahooJapan", 0) + ? YAHOO_DEFAULT_JAPAN_LOGIN_SERVER + : YAHOO_DEFAULT_LOGIN_SERVER ); + + SetDlgItemInt(hwndDlg, IDC_YAHOOPORT, ppro->getWord(YAHOO_LOGINPORT, YAHOO_DEFAULT_PORT), FALSE); + + SetButtonCheck(hwndDlg, IDC_YAHOO_JAPAN, ppro->getByte("YahooJapan", 0)); + 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; + + case IDC_YAHOO_JAPAN: + SetDlgItemTextA(hwndDlg, IDC_LOGINSERVER, + (IsDlgButtonChecked(hwndDlg,IDC_YAHOO_JAPAN)==BST_CHECKED) ? + YAHOO_DEFAULT_JAPAN_LOGIN_SERVER : + YAHOO_DEFAULT_LOGIN_SERVER ); + // fall through and enable apply button + + 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, sizeof( str )); + + DBVARIANT dbv; + dbv.pszVal = NULL; + if ( ppro->getString( YAHOO_LOGINSERVER, &dbv) || lstrcmpA( str, dbv.pszVal )) + reconnectRequired = TRUE; + if ( dbv.pszVal != NULL) + db_free(&dbv); + + 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); + + ppro->setByte("YahooJapan", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_YAHOO_JAPAN )); + + if ( reconnectRequired && ppro->m_bLoggedIn ) + MessageBoxA(hwndDlg, Translate("The changes you have made require you to reconnect to the Yahoo network before they take effect"), Translate("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, 1); + + 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, 1); + + /* show our current ignore list */ + LOG(("[DlgProcYahooOptsIgnore] Grabbing current ignore list...")) + l = (YList *)ppro->GetIgnoreList(); + while (l != NULL) { + struct yahoo_buddy *b = (struct yahoo_buddy *) l->data; + + LOG(("[DlgProcYahooOptsIgnore] Buddy: %s", b->id )) + SendMessageA(GetDlgItem(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, sizeof( 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); + SendMessageA(GetDlgItem(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 = SendMessage(GetDlgItem(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; + } + + SendMessageA(GetDlgItem(hwndDlg,IDC_YIGN_LIST), LB_GETTEXT, i, (LPARAM)id); + + ppro->IgnoreBuddy(id, 1); + SendMessage(GetDlgItem(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 lParam) +{ + OPTIONSDIALOGPAGE odp = { sizeof(odp) }; + odp.position = -790000000; + odp.hInstance = hInstance; + odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_YAHOO); + odp.ptszTitle = m_tszUserName; + odp.flags = ODPF_BOLDGROUPS | ODPF_TCHAR | ODPF_DONTTRANSLATE; + odp.ptszGroup = LPGENT("Network"); + odp.ptszTab = LPGENT("Account"); + odp.pfnDlgProc = DlgProcYahooOpts; + odp.dwInitParam = LPARAM(this); + Options_AddPage(wParam, &odp); + + odp.ptszTab = LPGENT("Connection"); + odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_YAHOO_CONNECTION); + odp.pfnDlgProc = DlgProcYahooOptsConn; + Options_AddPage(wParam, &odp); + + odp.ptszTab = LPGENT("Ignore List"); + odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_YAHOO_IGNORE); + odp.pfnDlgProc = DlgProcYahooOptsIgnore; + Options_AddPage(wParam, &odp); + return 0; +} -- cgit v1.2.3