diff options
author | Rozhuk Ivan <rozhuk.im@gmail.com> | 2014-11-25 22:07:11 +0000 |
---|---|---|
committer | Rozhuk Ivan <rozhuk.im@gmail.com> | 2014-11-25 22:07:11 +0000 |
commit | 74f4ab340ebf9a3399f82ad38b53ad6fcdf8885d (patch) | |
tree | 6d7cfb24044b9ff18a561a2c4f979fa6c2cd59e5 /protocols/Yahoo/src/options.cpp | |
parent | d96bc3e80a9159d1e163c7a0046c6eed787bccc3 (diff) |
Yahoo small fixes
git-svn-id: http://svn.miranda-ng.org/main/trunk@11073 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols/Yahoo/src/options.cpp')
-rw-r--r-- | protocols/Yahoo/src/options.cpp | 760 |
1 files changed, 380 insertions, 380 deletions
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 <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:
- 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 <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: + 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; +} |