// ---------------------------------------------------------------------------80 // ICQ plugin for Miranda Instant Messenger // ________________________________________ // // Copyright © 2000,2001 Richard Hughes, Roland Rabien, Tristan Van de Vreede // Copyright © 2001,2002 Jon Keating, Richard Hughes // Copyright © 2002,2003,2004 Martin Öberg, Sam Kothari, Robert Rainwater // Copyright © 2004,2005,2006,2007 Joe Kucera // Copyright © 2006,2007,2008 [sss], chaos.persei, [sin], Faith Healer, Thief, nullbie // Copyright © 2008 [sss], chaos.persei, nullbie, baloo, jarvis // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // // ----------------------------------------------------------------------------- // // File name : $Source$ // Revision : $Revision: 64 $ // Last change on : $Date: 2007-10-16 17:39:11 +0300 (Ð’Ñ‚, 16 окт 2007) $ // Last change by : $Author: chaos.persei $ // // DESCRIPTION: // // Describe me here please... // // ----------------------------------------------------------------------------- #include "icqoscar.h" #include #include static BOOL CALLBACK DlgProcIcqOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); static BOOL CALLBACK DlgProcIcqContactsOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); static BOOL CALLBACK DlgProcIcqFeaturesOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); static BOOL CALLBACK DlgProcIcqFeatures2Opts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); static BOOL CALLBACK DlgProcIcqPrivacyOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); static BOOL CALLBACK DlgProcIcqEventLogOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); static BOOL CALLBACK DlgProcIcqClientIDOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); static BOOL CALLBACK DlgProcIcqNewUINOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); static BOOL CALLBACK DlgProcIcqPopupOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); static BOOL CALLBACK DlgProcIcqPopupOpts2(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); static BOOL CALLBACK DlgProcIcqASDOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); extern BOOL bXstatusIconShow; extern void ShowSrvListDialog(HWND hwndCaller); extern void ShowCapsListDialog( HWND hwndCaller ); extern void setUserInfo(); static const char* szLogLevelDescr[] = {"Display all problems", "Display problems causing possible loss of data", "Display explanations for disconnection", "Display problems requiring user intervention", "Do not display problems"}; static BOOL (WINAPI *pfnEnableThemeDialogTexture)(HANDLE, DWORD) = 0; static HWND hwndRegUin = NULL; static HWND hwndPopUpsOpts = NULL; static HWND hwndASDOpts = NULL; extern char szHttpUserAgent[255]; int IcqOptInit(WPARAM wParam,LPARAM lParam) { OPTIONSDIALOGPAGE odp = { 0 }; odp.cbSize = sizeof(odp); // odp.position = 100000000; odp.hInstance = hInst; odp.pszTemplate = MAKEINTRESOURCE(IDD_OPT_ICQ); odp.pszTitle = gpszICQProtoName; odp.pszGroup = LPGEN("Network"); odp.pszTab = LPGEN("Account"); // odp.groupPosition = 910000000; odp.flags=ODPF_BOLDGROUPS; odp.pfnDlgProc = DlgProcIcqOpts; CallService(MS_OPT_ADDPAGE,wParam,(LPARAM)&odp); ZeroMemory(&odp,sizeof(odp)); odp.cbSize = sizeof(odp); odp.hInstance = hInst; odp.pszTemplate = MAKEINTRESOURCE(IDD_OPT_ICQCONTACTS); odp.pszTitle = gpszICQProtoName; odp.pszGroup = LPGEN("Network"); odp.pszTab = LPGEN("Contacts"); odp.flags=ODPF_BOLDGROUPS; odp.pfnDlgProc = DlgProcIcqContactsOpts; CallService(MS_OPT_ADDPAGE,wParam,(LPARAM)&odp); ZeroMemory(&odp,sizeof(odp)); odp.cbSize = sizeof(odp); // odp.position = 100000000; odp.hInstance = hInst; odp.pszTemplate = MAKEINTRESOURCE(IDD_OPT_ICQFEATURES); odp.pszTitle = gpszICQProtoName; odp.pszGroup = LPGEN("Network"); odp.pszTab = LPGEN("Main Features"); // odp.groupPosition = 910000000; odp.flags=ODPF_BOLDGROUPS | ODPF_EXPERTONLY; odp.pfnDlgProc = DlgProcIcqFeaturesOpts; CallService(MS_OPT_ADDPAGE,wParam,(LPARAM)&odp); ZeroMemory(&odp,sizeof(odp)); odp.cbSize = sizeof(odp); // odp.position = 100000000; odp.hInstance = hInst; odp.pszTemplate = MAKEINTRESOURCE(IDD_OPT_ICQFEATURES2); odp.pszTitle = gpszICQProtoName; odp.pszGroup = LPGEN("Network"); odp.pszTab = LPGEN("Advanced Features"); // odp.groupPosition = 910000000; odp.flags=ODPF_BOLDGROUPS | ODPF_EXPERTONLY; odp.pfnDlgProc = DlgProcIcqFeatures2Opts; CallService(MS_OPT_ADDPAGE,wParam,(LPARAM)&odp); ZeroMemory(&odp,sizeof(odp)); odp.cbSize = sizeof(odp); odp.hInstance = hInst; odp.pszTemplate = MAKEINTRESOURCE(IDD_OPT_ICQPRIVACY); odp.pszTitle = gpszICQProtoName; odp.pszGroup = LPGEN("Network"); odp.pszTab = LPGEN("Privacy"); odp.flags=ODPF_BOLDGROUPS; odp.pfnDlgProc = DlgProcIcqPrivacyOpts; CallService(MS_OPT_ADDPAGE,wParam,(LPARAM)&odp); ZeroMemory(&odp,sizeof(odp)); odp.cbSize = sizeof(odp); odp.hInstance = hInst; odp.pszTemplate = MAKEINTRESOURCE(IDD_OPT_ICQ_EVENTS); odp.pszTitle = gpszICQProtoName; odp.pszGroup = LPGEN("Network"); odp.pszTab = LPGEN("Log"); odp.flags=ODPF_BOLDGROUPS; odp.pfnDlgProc = DlgProcIcqEventLogOpts; CallService(MS_OPT_ADDPAGE,wParam,(LPARAM)&odp); ZeroMemory(&odp,sizeof(odp)); odp.cbSize = sizeof(odp); odp.hInstance = hInst; odp.pszTemplate = MAKEINTRESOURCE(IDD_OPT_ICQ_CLIENT_ID); odp.pszTitle = gpszICQProtoName; odp.pszGroup = LPGEN("Network"); odp.pszTab = LPGEN("Client ID"); odp.flags=ODPF_BOLDGROUPS | ODPF_EXPERTONLY; odp.pfnDlgProc = DlgProcIcqClientIDOpts; CallService(MS_OPT_ADDPAGE,wParam,(LPARAM)&odp); if (bPopUpService) { ZeroMemory(&odp,sizeof(odp)); odp.cbSize = sizeof(odp); odp.hInstance = hInst; odp.pszTemplate = MAKEINTRESOURCE(IDD_OPT_POPUPS); odp.pszTitle = gpszICQProtoName; odp.pszGroup = LPGEN("PopUps"); odp.flags=ODPF_BOLDGROUPS; odp.pfnDlgProc = DlgProcIcqPopupOpts; CallService(MS_OPT_ADDPAGE,wParam,(LPARAM)&odp); } return 0; } static void LoadDBCheckState(HWND hwndDlg, int idCtrl, const char* szSetting, BYTE bDef) { CheckDlgButton(hwndDlg, idCtrl, ICQGetContactSettingByte(NULL, szSetting, bDef)); } static void StoreDBCheckState(HWND hwndDlg, int idCtrl, const char* szSetting) { ICQWriteContactSettingByte(NULL, szSetting, (BYTE)IsDlgButtonChecked(hwndDlg, idCtrl)); } static void OptDlgChanged(HWND hwndDlg) { SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); } // standalone option pages static void IcqPasswordBox_Init(HWND hwndDlg, int idCtrl); char HttpUserAgents [][255] = { "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)", "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9", "Opera/9.23 (Windows NT 5.1; U; ru)", "Opera/8.01 (J2ME/MIDP; Opera Mini/3.0.6306/1528; nb; U; ssr)", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20070221 SeaMonkey/1.1.1", "Mozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.21-rc1; x86_64; cs, en_US) KHTML/3.5.6 (like Gecko)", "Lynx/2.8.4rel.1 libwww-FM/2.14", "Mozilla/4.08 [en] (WinNT; U ;Nav)" }; static BOOL CALLBACK DlgProcIcqOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { static char DBModule[64], buf[64]; WORD SrvCount; int i, iIndex; switch (msg) { case WM_INITDIALOG: { static char pszPwd[16]; static char szServer[MAX_PATH]; ICQTranslateDialog(hwndDlg); SetDlgItemInt(hwndDlg, IDC_ICQNUM, ICQGetContactSettingUIN(NULL), FALSE); if (!ICQGetContactStaticString(NULL, "Password", pszPwd, sizeof(pszPwd))) { CallService(MS_DB_CRYPT_DECODESTRING, strlennull(pszPwd) + 1, (LPARAM)pszPwd); //bit of a security hole here, since it's easy to extract a password from an edit box SetDlgItemText(hwndDlg, IDC_PASSWORD, pszPwd); } SendDlgItemMessage(hwndDlg, IDC_ICQSERVER, CB_RESETCONTENT, 0, 0); mir_snprintf(DBModule, 64, "%sSrvs", gpszICQProtoName); SrvCount = DBGetContactSettingWord(0, DBModule, "SrvCount", 0); for(i = 1; i <= SrvCount; i++){ mir_snprintf(buf, 64, "server%luhost", i); SendDlgItemMessage(hwndDlg, IDC_ICQSERVER, CB_ADDSTRING, 0, (LPARAM)UniGetContactSettingUtf(NULL, DBModule, buf, 0)); } SendDlgItemMessage(hwndDlg, IDC_HTTPUSERAGENT, CB_RESETCONTENT, 0, 0); for(i = 0; i < SIZEOF(HttpUserAgents); i++) { SendDlgItemMessage(hwndDlg, IDC_HTTPUSERAGENT, CB_ADDSTRING, 0, (LPARAM)HttpUserAgents[i]); } if (!ICQGetContactStaticString(NULL, "OscarServer", szServer, MAX_PATH)) { SetDlgItemText(hwndDlg, IDC_ICQSERVER, szServer); } else { SetDlgItemText(hwndDlg, IDC_ICQSERVER, DEFAULT_SERVER_HOST); } SetDlgItemText(hwndDlg, IDC_HTTPUSERAGENT, szHttpUserAgent); SetDlgItemInt(hwndDlg, IDC_ICQPORT, ICQGetContactSettingWord(NULL, "OscarPort", DEFAULT_SERVER_PORT), FALSE); LoadDBCheckState(hwndDlg, IDC_KEEPALIVE, "KeepAlive", 1); LoadDBCheckState(hwndDlg, IDC_SECURE, "SecureLogin", DEFAULT_SECURE_LOGIN); SendDlgItemMessage(hwndDlg, IDC_LOGLEVEL, TBM_SETRANGE, FALSE, MAKELONG(0, 4)); SendDlgItemMessage(hwndDlg, IDC_LOGLEVEL, TBM_SETPOS, TRUE, 4-ICQGetContactSettingByte(NULL, "ShowLogLevel", LOG_WARNING)); SetDlgItemTextUtf(hwndDlg, IDC_LEVELDESCR, ICQTranslateUtfStatic(szLogLevelDescr[4-SendDlgItemMessage(hwndDlg, IDC_LOGLEVEL, TBM_GETPOS, 0, 0)], szServer, MAX_PATH)); ShowWindow(GetDlgItem(hwndDlg, IDC_RECONNECTREQD), SW_HIDE); LoadDBCheckState(hwndDlg, IDC_NOERRMULTI, "IgnoreMultiErrorBox", 0); LoadDBCheckState(hwndDlg, IDC_AUTOCHANGE, "ServerAutoChange", 1); IcqPasswordBox_Init(hwndDlg, IDC_PASSWORD); return TRUE; } case WM_HSCROLL: { char str[MAX_PATH]; SetDlgItemTextUtf(hwndDlg, IDC_LEVELDESCR, ICQTranslateUtfStatic(szLogLevelDescr[4-SendDlgItemMessage(hwndDlg, IDC_LOGLEVEL,TBM_GETPOS, 0, 0)], str, MAX_PATH)); OptDlgChanged(hwndDlg); } break; case WM_COMMAND: { switch (LOWORD(wParam)) { case IDC_PASSWORD: if ((HIWORD(wParam) == EN_CHANGE)) { if (GetWindowTextLength(GetDlgItem(hwndDlg, IDC_PASSWORD)) > 8) SendDlgItemMessage(hwndDlg, IDC_PASSWORD, WM_APP, (WPARAM)Translate("Warning"), (LPARAM)Translate("ICQ servers do not accept passwords longer than 8 characters.")); else SendDlgItemMessage(hwndDlg, IDC_PASSWORD, WM_APP, 0, 0); } break; case IDC_REGUIN: ShowRegUinDialog(); return TRUE; case IDC_SERVERBOX: ShowSrvListDialog(hwndDlg); return TRUE; case IDC_ICQSERVER: switch(HIWORD(wParam)) { case CBN_SELCHANGE: iIndex = (int)SendDlgItemMessage(hwndDlg, IDC_ICQSERVER, CB_GETCURSEL, 0, 0); if(iIndex < 0) return FALSE; mir_snprintf(DBModule, 64, "%sSrvs", gpszICQProtoName); mir_snprintf(buf, 64, "server%luport", iIndex + 1); DBWriteContactSettingWord(0, DBModule, "CurrServ", (WORD)(iIndex + 1)); SetDlgItemInt(hwndDlg, IDC_ICQPORT, DBGetContactSettingWord(0, DBModule, buf, DEFAULT_SERVER_PORT), 0); OptDlgChanged(hwndDlg); break; } break; } if (icqOnline && LOWORD(wParam) != IDC_NOERRMULTI) { char szClass[80]; GetClassName((HWND)lParam, szClass, sizeof(szClass)); if (stricmp(szClass, "EDIT") || HIWORD(wParam) == EN_CHANGE) ShowWindow(GetDlgItem(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]; ICQWriteContactSettingDword(NULL, UNIQUEIDSETTING, (DWORD)GetDlgItemInt(hwndDlg, IDC_ICQNUM, NULL, FALSE)); GetDlgItemText(hwndDlg, IDC_PASSWORD, str, sizeof(gpszPassword)); if (strlennull(str)) { strcpy(gpszPassword, str); gbRememberPwd = TRUE; } else { gbRememberPwd = ICQGetContactSettingByte(NULL, "RememberPass", 0); } CallService(MS_DB_CRYPT_ENCODESTRING, sizeof(gpszPassword), (LPARAM)str); ICQWriteContactSettingString(NULL, "Password", str); GetDlgItemText(hwndDlg,IDC_ICQSERVER, str, sizeof(str)); ICQWriteContactSettingString(NULL, "OscarServer", str); ICQWriteContactSettingWord(NULL, "OscarPort", (WORD)GetDlgItemInt(hwndDlg, IDC_ICQPORT, NULL, FALSE)); StoreDBCheckState(hwndDlg, IDC_KEEPALIVE, "KeepAlive"); StoreDBCheckState(hwndDlg, IDC_SECURE, "SecureLogin"); StoreDBCheckState(hwndDlg, IDC_NOERRMULTI, "IgnoreMultiErrorBox"); StoreDBCheckState(hwndDlg, IDC_AUTOCHANGE, "ServerAutoChange"); bServerAutoChange = ICQGetContactSettingByte(NULL,"ServerAutoChange",1); ICQWriteContactSettingByte(NULL, "ShowLogLevel", (BYTE)(4-SendDlgItemMessage(hwndDlg, IDC_LOGLEVEL, TBM_GETPOS, 0, 0))); GetDlgItemText(hwndDlg, IDC_HTTPUSERAGENT, szHttpUserAgent, sizeof(szHttpUserAgent)); ICQWriteContactSettingString(NULL, "HttpUserAgent", szHttpUserAgent); return TRUE; } } } break; } return FALSE; } static const UINT icqPrivacyControls[]={IDC_DCALLOW_ANY, IDC_DCALLOW_CLIST, IDC_DCALLOW_AUTH, IDC_ADD_ANY, IDC_ADD_AUTH, IDC_WEBAWARE, IDC_PUBLISHPRIMARY, IDC_STATIC_DC1, IDC_STATIC_DC2, IDC_STATIC_CLIST}; static BOOL CALLBACK DlgProcIcqPrivacyOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_INITDIALOG: { int nDcType; int nAddAuth; BYTE bData; nDcType = ICQGetContactSettingByte(NULL, "DCType", 0); nAddAuth = ICQGetContactSettingByte(NULL, "Auth", 1); ICQTranslateDialog(hwndDlg); if (!icqOnline) { icq_EnableMultipleControls(hwndDlg, icqPrivacyControls, sizeof(icqPrivacyControls)/sizeof(icqPrivacyControls[0]), FALSE); ShowWindow(GetDlgItem(hwndDlg, IDC_STATIC_NOTONLINE), SW_SHOW); } else { ShowWindow(GetDlgItem(hwndDlg, IDC_STATIC_NOTONLINE), SW_HIDE); } CheckDlgButton(hwndDlg, IDC_DCALLOW_ANY, (nDcType == 0)); CheckDlgButton(hwndDlg, IDC_DCALLOW_CLIST, (nDcType == 1)); CheckDlgButton(hwndDlg, IDC_DCALLOW_AUTH, (nDcType == 2)); CheckDlgButton(hwndDlg, IDC_ADD_ANY, (nAddAuth == 0)); CheckDlgButton(hwndDlg, IDC_ADD_AUTH, (nAddAuth == 1)); LoadDBCheckState(hwndDlg, IDC_WEBAWARE, "WebAware", 0); LoadDBCheckState(hwndDlg, IDC_PUBLISHPRIMARY, "PublishPrimaryEmail", 0); LoadDBCheckState(hwndDlg, IDC_NOSTATUSREPLY, "NoStatusReply", 0); LoadDBCheckState(hwndDlg, IDC_STATUSMSG_CLIST, "StatusMsgReplyCList", 0); LoadDBCheckState(hwndDlg, IDC_STATUSMSG_VISIBLE, "StatusMsgReplyVisible", 0); if (!ICQGetContactSettingByte(NULL, "StatusMsgReplyCList", 0)) EnableDlgItem(hwndDlg, IDC_STATUSMSG_VISIBLE, FALSE); bData = DBGetContactSettingByte(NULL,gpszICQProtoName,"NoStatusReply", 0); CheckDlgButton(hwndDlg, IDC_NOSTATUSREPLY, bData); 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_NOSTATUSREPLY: if (IsDlgButtonChecked(hwndDlg, IDC_NOSTATUSREPLY)) icq_sendSetAimAwayMsgServ("");//set aim message to nothing 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(hwndDlg, IDC_STATUSMSG_VISIBLE, "StatusMsgReplyVisible", 0); } else { EnableDlgItem(hwndDlg, IDC_STATUSMSG_VISIBLE, FALSE); CheckDlgButton(hwndDlg, IDC_STATUSMSG_VISIBLE, FALSE); } break; default: return 0; } OptDlgChanged(hwndDlg); break; case WM_NOTIFY: switch (((LPNMHDR)lParam)->code) { case PSN_APPLY: StoreDBCheckState(hwndDlg, IDC_WEBAWARE, "WebAware"); StoreDBCheckState(hwndDlg, IDC_PUBLISHPRIMARY, "PublishPrimaryEmail"); StoreDBCheckState(hwndDlg, IDC_NOSTATUSREPLY, "NoStatusReply"); StoreDBCheckState(hwndDlg, IDC_STATUSMSG_CLIST, "StatusMsgReplyCList"); StoreDBCheckState(hwndDlg, IDC_STATUSMSG_VISIBLE, "StatusMsgReplyVisible"); if (IsDlgButtonChecked(hwndDlg, IDC_DCALLOW_AUTH)) ICQWriteContactSettingByte(NULL, "DCType", 2); else if (IsDlgButtonChecked(hwndDlg, IDC_DCALLOW_CLIST)) ICQWriteContactSettingByte(NULL, "DCType", 1); else ICQWriteContactSettingByte(NULL, "DCType", 0); StoreDBCheckState(hwndDlg, IDC_ADD_AUTH, "Auth"); bNoStatusReply = ICQGetContactSettingByte(NULL, "NoStatusReply", 0); if (icqOnline) { PBYTE buf=NULL; int buflen=0; ppackTLVLNTSBytefromDB(&buf, &buflen, "e-mail", (BYTE)!ICQGetContactSettingByte(NULL, "PublishPrimaryEmail", 0), TLV_EMAIL); ppackTLVLNTSBytefromDB(&buf, &buflen, "e-mail0", 0, TLV_EMAIL); ppackTLVLNTSBytefromDB(&buf, &buflen, "e-mail1", 0, TLV_EMAIL); ppackTLVByte(&buf, &buflen, (BYTE)!ICQGetContactSettingByte(NULL, "Auth", 1), TLV_AUTH, 1); ppackTLVByte(&buf, &buflen, (BYTE)ICQGetContactSettingByte(NULL, "WebAware", 0), TLV_WEBAWARE, 1); icq_changeUserDetailsServ(META_SET_FULLINFO_REQ, buf, (WORD)buflen); SAFE_FREE(&buf); // Send a status packet to notify the server about the webaware setting { WORD wStatus; wStatus = MirandaStatusToIcq(gnCurrentStatus); if (gnCurrentStatus == ID_STATUS_INVISIBLE) { if (gbSsiEnabled) updateServVisibilityCode(3); icq_setstatus(wStatus, FALSE); // Tell who is on our visible list icq_sendEntireVisInvisList(0); } else { icq_setstatus(wStatus, FALSE); if (gbSsiEnabled) updateServVisibilityCode(4); // Tell who is on our invisible list icq_sendEntireVisInvisList(1); } } } return TRUE; } break; } return FALSE; } static const UINT icqPopupsControls[] = {IDC_POPUPS_LOG_ENABLED,IDC_PREVIEW,IDC_USEWINCOLORS,IDC_USESYSICONS,IDC_POPUP_LOG0_TIMEOUT,IDC_POPUP_LOG1_TIMEOUT,IDC_POPUP_LOG2_TIMEOUT,IDC_POPUP_LOG3_TIMEOUT,IDC_POPUP_LOG4_TIMEOUT,IDC_POPUP_LOG5_TIMEOUT,IDC_POPUP_SPAM_TIMEOUT,IDC_POPUP_UNKNOWN_TIMEOUT,IDC_POPUP_LOG6_TIMEOUT,IDC_POPUP_FOR_NOTONLIST,IDC_UINPOPUP}; static const UINT icqPopupColorControls[] = { IDC_POPUP_LOG0_TEXTCOLOR,IDC_POPUP_LOG1_TEXTCOLOR,IDC_POPUP_LOG2_TEXTCOLOR,IDC_POPUP_LOG3_TEXTCOLOR,IDC_POPUP_LOG4_TEXTCOLOR,IDC_POPUP_LOG5_TEXTCOLOR,IDC_POPUP_SPAM_TEXTCOLOR,IDC_POPUP_UNKNOWN_TEXTCOLOR,IDC_POPUP_LOG6_TEXTCOLOR,IDC_POPUP_CLIENT_CHANGE_TEXTCOLOR,IDC_POPUP_REMOVE_HIMSELF_TEXTCOLOR,IDC_POPUP_INFO_REQUEST_TEXTCOLOR,IDC_POPUP_IGNORECHECK_TEXTCOLOR,IDC_POPUP_AUTH_TEXTCOLOR, IDC_POPUP_LOG0_BACKCOLOR,IDC_POPUP_LOG1_BACKCOLOR,IDC_POPUP_LOG2_BACKCOLOR,IDC_POPUP_LOG3_BACKCOLOR,IDC_POPUP_LOG4_BACKCOLOR,IDC_POPUP_LOG5_BACKCOLOR,IDC_POPUP_SPAM_BACKCOLOR,IDC_POPUP_UNKNOWN_BACKCOLOR,IDC_POPUP_LOG6_BACKCOLOR,IDC_POPUP_CLIENT_CHANGE_BACKCOLOR,IDC_POPUP_REMOVE_HIMSELF_BACKCOLOR,IDC_POPUP_INFO_REQUEST_BACKCOLOR,IDC_POPUP_IGNORECHECK_BACKCOLOR,IDC_POPUP_AUTH_BACKCOLOR }; void ShowPopUpsOpts(void); static BOOL CALLBACK DlgProcIcqPopupOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { BYTE bEnabled; switch (msg) { case WM_INITDIALOG: ICQTranslateDialog(hwndDlg); LoadDBCheckState(hwndDlg, IDC_POPUP_FOR_NOTONLIST, "PopUpForNotOnList", 0); LoadDBCheckState(hwndDlg, IDC_UINPOPUP, "UinPopup", 0); CheckDlgButton(hwndDlg, IDC_POPUPS_LOG_ENABLED, ICQGetContactSettingByte(NULL,"PopupsLogEnabled",1)); bEnabled = ICQGetContactSettingByte(NULL,"PopupsWinColors",0); CheckDlgButton(hwndDlg, IDC_USEWINCOLORS, bEnabled); CheckDlgButton(hwndDlg, IDC_USESYSICONS, ICQGetContactSettingByte(NULL,"PopupsSysIcons",0)); bEnabled = ICQGetContactSettingByte(NULL,"PopupsEnabled",1); CheckDlgButton(hwndDlg, IDC_POPUPS_ENABLED, bEnabled); icq_EnableMultipleControls(hwndDlg, icqPopupsControls, SIZEOF(icqPopupsControls), bEnabled); return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_PREVIEW: { extern BOOL bXUpdaterPopUp; if (ICQGetContactSettingByte(NULL,"PopupsLogEnabled",1)) { ShowPopUpMsg(NULL, 0, "Popup Title", "Sample Note", LOG_NOTE); ShowPopUpMsg(NULL, 0, "Popup Title", "Sample Warning", LOG_WARNING); ShowPopUpMsg(NULL, 0, "Popup Title", "Sample Error", LOG_ERROR); ShowPopUpMsg(NULL, 0, "Popup Title", "Sample Fatal", LOG_FATAL); } if(bFoundPopUp) ShowPopUpMsg(NULL, 0, "Contact", "Sample ...was found!", POPTYPE_FOUND); if(bScanPopUp) { gbScan = TRUE; ShowPopUpMsg(NULL, 0, "Entire List Check", "Sample Users Status Scan Started", POPTYPE_SCAN); gbScan = FALSE; ShowPopUpMsg(NULL, 0, "Active Status Scan", "Sample Users Status Scan Complete", POPTYPE_SCAN); } if(bSpamPopUp) ShowPopUpMsg(NULL, 0, "Popup Title", "Sample Spambot Found", POPTYPE_SPAM); if(bUnknownPopUp) ShowPopUpMsg(NULL, 0, "Popup Title", "Sample Unknown Found", POPTYPE_UNKNOWN); if(bVisPopUp) ShowPopUpMsg(NULL, 0, "Popup Title", "Sample Visibility event", POPTYPE_VIS); if(bClientChangePopUp) ShowPopUpMsg(NULL, 0, "Popup Title", "Sample ClientChange event", POPTYPE_CLIENT_CHANGE); if(bInfoRequestPopUp) ShowPopUpMsg(NULL, 0, "Popup Title", "Sample InfoRequest event", POPTYPE_INFO_REQUEST); if(bIgnoreCheckPop) ShowPopUpMsg(NULL, 0, "Popup Title", "Check Your Ignore State", POPTYPE_IGNORE_CHECK); if(bPopSelfRem) ShowPopUpMsg(NULL, 0, "Popup Title", "Removed Himself", POPTYPE_SELFREMOVE); if(bAuthPopUp) ShowPopUpMsg(NULL, 0, "Popup Title", "Sample Auth PopUp", POPTYPE_AUTH); if(bXUpdaterPopUp) ShowPopUpMsg(NULL, 0, "Popup Title", "Sample XStatus Updater PopUp", POPTYPE_XUPDATER); } return FALSE; case IDC_POPUPS_ENABLED: bEnabled = IsDlgButtonChecked(hwndDlg,IDC_POPUPS_ENABLED); icq_EnableMultipleControls(hwndDlg, icqPopupsControls, SIZEOF(icqPopupsControls), bEnabled); break; case IDC_USEWINCOLORS: bEnabled = IsDlgButtonChecked(hwndDlg,IDC_POPUPS_ENABLED); icq_EnableMultipleControls(hwndDlg, icqPopupColorControls, SIZEOF(icqPopupColorControls), bEnabled & !IsDlgButtonChecked(hwndDlg,IDC_USEWINCOLORS)); break; case IDC_POPUPS_OPTIONS: ShowPopUpsOpts(); return TRUE; } OptDlgChanged(hwndDlg); break; case WM_NOTIFY: switch (((LPNMHDR)lParam)->code) { case PSN_APPLY: ICQWriteContactSettingByte(NULL,"PopupsEnabled",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_POPUPS_ENABLED)); ICQWriteContactSettingByte(NULL,"PopupsLogEnabled",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_POPUPS_LOG_ENABLED)); ICQWriteContactSettingByte(NULL,"PopupsWinColors",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_USEWINCOLORS)); ICQWriteContactSettingByte(NULL,"PopupsSysIcons",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_USESYSICONS)); StoreDBCheckState(hwndDlg, IDC_POPUP_FOR_NOTONLIST , "PopUpForNotOnList"); bPopUpForNotOnList = ICQGetContactSettingByte(NULL, "PopUpForNotOnList", 0); StoreDBCheckState(hwndDlg, IDC_UINPOPUP , "UinPopup"); bUinPopup = ICQGetContactSettingByte(NULL, "UinPopup", 0); return TRUE; } break; } return FALSE; } static BOOL CALLBACK DlgProcIcqPopupOpts2(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { extern BOOL bXUpdaterPopUp; switch (msg) { case WM_INITDIALOG: ICQTranslateDialog(hwndDlg); LoadDBCheckState(hwndDlg, IDC_SPAM_POPUP_ENABLE, "SpamPopUpEnabled", 0); LoadDBCheckState(hwndDlg, IDC_UNKNOWN_POPUP_ENABLE, "UnknownPopUpEnabled", 0); LoadDBCheckState(hwndDlg, IDC_WAS_FOUND_POPUP_ENABLE, "FoundPopUpEnabled", 1); LoadDBCheckState(hwndDlg, IDC_SCAN_POPUP_ENABLE, "ScanPopUpEnabled", 1); LoadDBCheckState(hwndDlg, IDC_VIS_POPUP_ENABLE, "VisPopUpEnabled", 1); LoadDBCheckState(hwndDlg, IDC_CLIENT_CHANGE_POPUP, "ClientChangePopup", 0); LoadDBCheckState(hwndDlg, IDC_POPSELFREM, "PopSelfRem", 1); LoadDBCheckState(hwndDlg, IDC_IGNCHECKPOP, "IgnoreCheckPop", 1); LoadDBCheckState(hwndDlg, IDC_INFO_REQUEST_POPUP, "InfoRequestPopUp", 0); LoadDBCheckState(hwndDlg, IDC_POPAUTH, "AuthPopUp", 0); LoadDBCheckState(hwndDlg, IDC_POPXUPDATER, "XUpdaterPopUp", 0); SendDlgItemMessage(hwndDlg, IDC_POPUP_LOG0_TEXTCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"Popups0TextColor",RGB(255,255,255))); SendDlgItemMessage(hwndDlg, IDC_POPUP_LOG0_BACKCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"Popups0BackColor",RGB(0,0,0))); SetDlgItemInt(hwndDlg, IDC_POPUP_LOG0_TIMEOUT, ICQGetContactSettingDword(NULL,"Popups0Timeout",0),FALSE); SendDlgItemMessage(hwndDlg, IDC_POPUP_LOG1_TEXTCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"Popups1TextColor",RGB(255,255,255))); SendDlgItemMessage(hwndDlg, IDC_POPUP_LOG1_BACKCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"Popups1BackColor",RGB(0,0,0))); SetDlgItemInt(hwndDlg, IDC_POPUP_LOG1_TIMEOUT, ICQGetContactSettingDword(NULL,"Popups1Timeout",0),FALSE); SendDlgItemMessage(hwndDlg, IDC_POPUP_LOG2_TEXTCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"Popups2TextColor",RGB(255,255,255))); SendDlgItemMessage(hwndDlg, IDC_POPUP_LOG2_BACKCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"Popups2BackColor",RGB(0,0,0))); SetDlgItemInt(hwndDlg, IDC_POPUP_LOG2_TIMEOUT, ICQGetContactSettingDword(NULL,"Popups2Timeout",0),FALSE); SendDlgItemMessage(hwndDlg, IDC_POPUP_LOG3_TEXTCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"Popups3TextColor",RGB(255,255,255))); SendDlgItemMessage(hwndDlg, IDC_POPUP_LOG3_BACKCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"Popups3BackColor",RGB(0,0,0))); SetDlgItemInt(hwndDlg, IDC_POPUP_LOG3_TIMEOUT, ICQGetContactSettingDword(NULL,"Popups3Timeout",0),FALSE); SendDlgItemMessage(hwndDlg, IDC_POPUP_LOG4_TEXTCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"PopupsFoundTextColor",RGB(255,255,255))); SendDlgItemMessage(hwndDlg, IDC_POPUP_LOG4_BACKCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"PopupsFoundBackColor",RGB(0,0,0))); SetDlgItemInt(hwndDlg, IDC_POPUP_LOG4_TIMEOUT, ICQGetContactSettingDword(NULL,"PopupsFoundTimeout",0),FALSE); SendDlgItemMessage(hwndDlg, IDC_POPUP_LOG5_TEXTCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"PopupsFinishedTextColor",RGB(255,255,255))); SendDlgItemMessage(hwndDlg, IDC_POPUP_LOG5_BACKCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"PopupsFinishedBackColor",RGB(0,0,0))); SetDlgItemInt(hwndDlg, IDC_POPUP_LOG5_TIMEOUT, ICQGetContactSettingDword(NULL,"PopupsFinishedTimeout",0),FALSE); SendDlgItemMessage(hwndDlg, IDC_POPUP_SPAM_TEXTCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"PopupsSpamTextColor",RGB(255,255,255))); SendDlgItemMessage(hwndDlg, IDC_POPUP_SPAM_BACKCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"PopupsSpamBackColor",RGB(0,0,255))); SetDlgItemInt(hwndDlg, IDC_POPUP_SPAM_TIMEOUT, ICQGetContactSettingDword(NULL,"PopupsSpamTimeout",0),FALSE); SendDlgItemMessage(hwndDlg, IDC_POPUP_UNKNOWN_TEXTCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"PopupsUnknownTextColor",RGB(255,255,255))); SendDlgItemMessage(hwndDlg, IDC_POPUP_UNKNOWN_BACKCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"PopupsUnknownBackColor",RGB(0,0,0))); SetDlgItemInt(hwndDlg, IDC_POPUP_UNKNOWN_TIMEOUT, ICQGetContactSettingDword(NULL,"PopupsUnknownTimeout",0),FALSE); SendDlgItemMessage(hwndDlg, IDC_POPUP_LOG6_TEXTCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"PopupsVisTextColor",RGB(255,255,255))); SendDlgItemMessage(hwndDlg, IDC_POPUP_LOG6_BACKCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"PopupsVisBackColor",RGB(0,0,0))); SetDlgItemInt(hwndDlg, IDC_POPUP_LOG6_TIMEOUT, ICQGetContactSettingDword(NULL,"PopupsVisTimeout",0),FALSE); SendDlgItemMessage(hwndDlg, IDC_POPUP_CLIENT_CHANGE_TEXTCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"PopupsClientChangeTextColor",RGB(255,255,255))); SendDlgItemMessage(hwndDlg, IDC_POPUP_CLIENT_CHANGE_BACKCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"PopupsClientChangeBackColor",RGB(0,0,0))); SetDlgItemInt(hwndDlg, IDC_POPUP_CLIENT_CHANGE_TIMEOUT, ICQGetContactSettingDword(NULL,"PopupsClientChangeTimeout",0),FALSE); SendDlgItemMessage(hwndDlg, IDC_POPUP_INFO_REQUEST_TEXTCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"PopupsInfoRequestTextColor",RGB(255,255,255))); SendDlgItemMessage(hwndDlg, IDC_POPUP_INFO_REQUEST_BACKCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"PopupsInfoRequestBackColor",RGB(0,0,0))); SetDlgItemInt(hwndDlg, IDC_POPUP_INFO_REQUEST_TIMEOUT, ICQGetContactSettingDword(NULL,"PopupsInfoRequestTimeout",0),FALSE); SendDlgItemMessage(hwndDlg, IDC_POPUP_IGNORECHECK_TEXTCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"PopupsIgnoreCheckTextColor",RGB(255,255,255))); SendDlgItemMessage(hwndDlg, IDC_POPUP_IGNORECHECK_BACKCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"PopupsIgnoreCheckBackColor",RGB(0,0,0))); SetDlgItemInt(hwndDlg, IDC_POPUP_IGNORECHECK_TIMEOUT, ICQGetContactSettingDword(NULL,"PopupsIgnoreCheckTimeout",0),FALSE); SendDlgItemMessage(hwndDlg, IDC_POPUP_REMOVE_HIMSELF_TEXTCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"PopupsRemoveHimselfTextColor",RGB(255,255,255))); SendDlgItemMessage(hwndDlg, IDC_POPUP_REMOVE_HIMSELF_BACKCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"PopupsRemoveHimselfBackColor",RGB(0,0,0))); SetDlgItemInt(hwndDlg, IDC_POPUP_REMOVE_HIMSELF_TIMEOUT, ICQGetContactSettingDword(NULL,"PopupsRemoveHimselfTimeout",0),FALSE); SendDlgItemMessage(hwndDlg, IDC_POPUP_AUTH_TEXTCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"PopupsAuthTextColor",RGB(255,255,255))); SendDlgItemMessage(hwndDlg, IDC_POPUP_AUTH_BACKCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"PopupsAuthBackColor",RGB(0,0,0))); SetDlgItemInt(hwndDlg, IDC_POPUP_AUTH_TIMEOUT, ICQGetContactSettingDword(NULL,"PopupsAuthTimeout",0),FALSE); SendDlgItemMessage(hwndDlg, IDC_POPUP_XUPDATER_TEXTCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"PopupsXUpdaterTextColor",RGB(255,255,255))); SendDlgItemMessage(hwndDlg, IDC_POPUP_XUPDATER_BACKCOLOR, CPM_SETCOLOUR, 0, ICQGetContactSettingDword(NULL,"PopupsXUpdaterBackColor",RGB(0,0,0))); SetDlgItemInt(hwndDlg, IDC_POPUP_XUPDATER_TIMEOUT, ICQGetContactSettingDword(NULL,"PopupsXUpdaterTimeout",0),FALSE); icq_EnableMultipleControls(hwndDlg, icqPopupColorControls, SIZEOF(icqPopupColorControls), ICQGetContactSettingByte(NULL, "PopupsWinColors", 0)-1); break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_OK: ICQWriteContactSettingDword(NULL,"Popups0TextColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_LOG0_TEXTCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"Popups0BackColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_LOG0_BACKCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"Popups0Timeout",GetDlgItemInt(hwndDlg, IDC_POPUP_LOG0_TIMEOUT, NULL, FALSE)); ICQWriteContactSettingDword(NULL,"Popups1TextColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_LOG1_TEXTCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"Popups1BackColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_LOG1_BACKCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"Popups1Timeout",GetDlgItemInt(hwndDlg, IDC_POPUP_LOG1_TIMEOUT, NULL, FALSE)); ICQWriteContactSettingDword(NULL,"Popups2TextColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_LOG2_TEXTCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"Popups2BackColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_LOG2_BACKCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"Popups2Timeout",GetDlgItemInt(hwndDlg, IDC_POPUP_LOG2_TIMEOUT, NULL, FALSE)); ICQWriteContactSettingDword(NULL,"Popups3TextColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_LOG3_TEXTCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"Popups3BackColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_LOG3_BACKCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"Popups3Timeout",GetDlgItemInt(hwndDlg, IDC_POPUP_LOG3_TIMEOUT, NULL, FALSE)); ICQWriteContactSettingDword(NULL,"PopupsFoundTextColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_LOG4_TEXTCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"PopupsFoundBackColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_LOG4_BACKCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"PopupsFoundTimeout",GetDlgItemInt(hwndDlg, IDC_POPUP_LOG4_TIMEOUT, NULL, FALSE)); ICQWriteContactSettingDword(NULL,"PopupsFinishedTextColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_LOG5_TEXTCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"PopupsFinishedBackColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_LOG5_BACKCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"PopupsFinishedTimeout",GetDlgItemInt(hwndDlg, IDC_POPUP_LOG5_TIMEOUT, NULL, FALSE)); ICQWriteContactSettingDword(NULL,"PopupsSpamTextColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_SPAM_TEXTCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"PopupsSpamBackColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_SPAM_BACKCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"PopupsSpamTimeout",GetDlgItemInt(hwndDlg, IDC_POPUP_SPAM_TIMEOUT, NULL, FALSE)); ICQWriteContactSettingDword(NULL,"PopupsUnknownTextColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_UNKNOWN_TEXTCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"PopupsUnknownBackColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_UNKNOWN_BACKCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"PopupsUnknownTimeout",GetDlgItemInt(hwndDlg, IDC_POPUP_UNKNOWN_TIMEOUT, NULL, FALSE)); ICQWriteContactSettingDword(NULL,"PopupsVisTextColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_LOG6_TEXTCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"PopupsVisBackColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_LOG6_BACKCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"PopupsVisTimeout",GetDlgItemInt(hwndDlg, IDC_POPUP_LOG6_TIMEOUT, NULL, FALSE)); ICQWriteContactSettingDword(NULL,"PopupsClientChangeTextColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_CLIENT_CHANGE_TEXTCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"PopupsClientChangeBackColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_CLIENT_CHANGE_BACKCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"PopupsClientChangeTimeout",GetDlgItemInt(hwndDlg, IDC_POPUP_CLIENT_CHANGE_TIMEOUT, NULL, FALSE)); ICQWriteContactSettingDword(NULL,"PopupsInfoRequestTextColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_INFO_REQUEST_TEXTCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"PopupsInfoRequestBackColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_INFO_REQUEST_BACKCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"PopupsInfoRequestTimeout",GetDlgItemInt(hwndDlg, IDC_POPUP_INFO_REQUEST_TIMEOUT, NULL, FALSE)); ICQWriteContactSettingDword(NULL,"PopupsIgnoreCheckTextColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_IGNORECHECK_TEXTCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"PopupsIgnoreCheckBackColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_IGNORECHECK_BACKCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"PopupsIgnoreCheckTimeout",GetDlgItemInt(hwndDlg, IDC_POPUP_IGNORECHECK_TIMEOUT, NULL, FALSE)); ICQWriteContactSettingDword(NULL,"PopupsRemoveHimselfTextColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_REMOVE_HIMSELF_TEXTCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"PopupsRemoveHimselfBackColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_REMOVE_HIMSELF_BACKCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"PopupsRemoveHimselfTimeout",GetDlgItemInt(hwndDlg, IDC_POPUP_REMOVE_HIMSELF_TIMEOUT, NULL, FALSE)); ICQWriteContactSettingDword(NULL,"PopupsAuthTextColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_AUTH_TEXTCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"PopupsAuthBackColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_AUTH_BACKCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"PopupsAuthTimeout",GetDlgItemInt(hwndDlg, IDC_POPUP_AUTH_TIMEOUT, NULL, FALSE)); ICQWriteContactSettingDword(NULL,"PopupsXUpdaterTextColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_XUPDATER_TEXTCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"PopupsXUpdaterBackColor",SendDlgItemMessage(hwndDlg,IDC_POPUP_XUPDATER_BACKCOLOR,CPM_GETCOLOUR,0,0)); ICQWriteContactSettingDword(NULL,"PopupsXUpdaterTimeout",GetDlgItemInt(hwndDlg, IDC_POPUP_XUPDATER_TIMEOUT, NULL, FALSE)); StoreDBCheckState(hwndDlg, IDC_SPAM_POPUP_ENABLE , "SpamPopUpEnabled"); bSpamPopUp = ICQGetContactSettingByte(NULL, "SpamPopUpEnabled", 0); StoreDBCheckState(hwndDlg, IDC_UNKNOWN_POPUP_ENABLE , "UnknownPopUpEnabled"); bUnknownPopUp = ICQGetContactSettingByte(NULL, "UnknownPopUpEnabled", 0); StoreDBCheckState(hwndDlg, IDC_WAS_FOUND_POPUP_ENABLE , "FoundPopUpEnabled"); bFoundPopUp = ICQGetContactSettingByte(NULL, "FoundPopUpEnabled", 1); StoreDBCheckState(hwndDlg, IDC_SCAN_POPUP_ENABLE , "ScanPopUpEnabled"); bScanPopUp = ICQGetContactSettingByte(NULL, "ScanPopUpEnabled", 1); StoreDBCheckState(hwndDlg, IDC_VIS_POPUP_ENABLE , "VisPopUpEnabled"); bVisPopUp = ICQGetContactSettingByte(NULL, "VisPopUpEnabled", 1); StoreDBCheckState(hwndDlg, IDC_CLIENT_CHANGE_POPUP , "ClientChangePopup"); bClientChangePopUp = ICQGetContactSettingByte(NULL, "ClientChangePopup", 0); StoreDBCheckState(hwndDlg, IDC_IGNCHECKPOP , "IgnoreCheckPop"); bIgnoreCheckPop = ICQGetContactSettingByte(NULL, "IgnoreCheckPop", 1); StoreDBCheckState(hwndDlg, IDC_POPSELFREM , "PopSelfRem"); bPopSelfRem = ICQGetContactSettingByte(NULL, "PopSelfRem", 1); StoreDBCheckState(hwndDlg, IDC_INFO_REQUEST_POPUP , "InfoRequestPopUp"); bInfoRequestPopUp = ICQGetContactSettingByte(NULL, "InfoRequestPopUp", 0); StoreDBCheckState(hwndDlg, IDC_POPAUTH , "AuthPopUp"); bAuthPopUp = ICQGetContactSettingByte(NULL, "AuthPopUp", 0); StoreDBCheckState(hwndDlg, IDC_POPXUPDATER , "XUpdaterPopUp"); bXUpdaterPopUp = ICQGetContactSettingByte(NULL, "XUpdaterPopUp", 0); DestroyWindow(hwndDlg); } break; case WM_NOTIFY: switch (((LPNMHDR)lParam)->code) { break; } break; case WM_CLOSE: DestroyWindow(hwndDlg); break; case WM_DESTROY: hwndPopUpsOpts = NULL; break; } return FALSE; } static BOOL CALLBACK DlgProcIcqASDOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { void ShowASDOpts(void); switch(msg) { case WM_INITDIALOG: ICQTranslateDialog(hwndDlg); LoadDBCheckState(hwndDlg, IDC_DETECT_VIA_STATUS_MESSAGE, "bASDViaAwayMsg", 0); LoadDBCheckState(hwndDlg, IDC_DETECT_VIA_XTRAZ, "bASDViaXtraz", 0); LoadDBCheckState(hwndDlg, IDC_DETECT_VIA_URL, "bASDViaURL", 0); LoadDBCheckState(hwndDlg, IDC_DETECT_UNAUTHORIZED, "bASDUnauthorized", 0); LoadDBCheckState(hwndDlg, IDC_DETECT_VIA_AUTH, "bASDViaAuth", 0); break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_OK: StoreDBCheckState(hwndDlg, IDC_DETECT_VIA_STATUS_MESSAGE, "bASDViaAwayMsg"); bASDViaAwayMsg = ICQGetContactSettingByte(NULL, "bASDViaAwayMsg", 0); StoreDBCheckState(hwndDlg, IDC_DETECT_VIA_XTRAZ, "bASDViaXtraz"); bASDViaXtraz = ICQGetContactSettingByte(NULL, "bASDViaXtraz", 0); StoreDBCheckState(hwndDlg, IDC_DETECT_VIA_URL, "bASDViaURL"); bASDViaURL = ICQGetContactSettingByte(NULL, "bASDViaURL", 0); StoreDBCheckState(hwndDlg, IDC_DETECT_UNAUTHORIZED, "bASDUnauthorized"); bASDUnauthorized = ICQGetContactSettingByte(NULL, "bASDUnauthorized", 0); StoreDBCheckState(hwndDlg, IDC_DETECT_VIA_AUTH, "bASDViaAuth"); bASDViaAuth = ICQGetContactSettingByte(NULL, "bASDViaAuth", 0); DestroyWindow(hwndDlg); break; } break; case WM_NOTIFY: switch (((LPNMHDR)lParam)->code) { break; } break; case WM_CLOSE: DestroyWindow(hwndDlg); break; case WM_DESTROY: hwndASDOpts = NULL; break; } return FALSE; } static HWND hCpCombo; struct CPTABLE { WORD cpId; char *cpName; }; struct CPTABLE cpTable[] = { { 874, "Thai" }, { 932, "Japanese" }, { 936, "Simplified Chinese" }, { 949, "Korean" }, { 950, "Traditional Chinese" }, { 1250, "Central European" }, { 1251, "Cyrillic" }, { 1252, "Latin I" }, { 1253, "Greek" }, { 1254, "Turkish" }, { 1255, "Hebrew" }, { 1256, "Arabic" }, { 1257, "Baltic" }, { 1258, "Vietnamese" }, { 1361, "Korean (Johab)" }, { -1, NULL} }; static BOOL CALLBACK FillCpCombo(LPCSTR str) { int i; UINT cp; cp = atoi(str); for (i=0; cpTable[i].cpName != NULL && cpTable[i].cpId!=cp; i++); if (cpTable[i].cpName != NULL) { ComboBoxAddStringUtf(hCpCombo, cpTable[i].cpName, cpTable[i].cpId); } return TRUE; } static const UINT icqUnicodeControls[] = {IDC_UTFALL,IDC_UTFSTATIC,IDC_UTFCODEPAGE}; static const UINT icqDCMsgControls[] = {IDC_DCPASSIVE}; static const UINT icqDCIconsControls[] = {IDC_DC_ICON_POS,IDC_DC_ICON_POS_TEXT}; static const UINT icqXStatusControls[] = {IDC_XSTNONSTD,IDC_XSTUPDATERATE,IDC_XSTUPDATE,IDC_XSTATUSAUTO,IDC_XSTATUSRESET,IDC_FORCEXSTATUS,IDC_XSTATUS_ICON_POS,IDC_XSTATUS_SHOW,IDC_REPLACEXTEXT,IDC_ICON_POS_TEXT}; static const UINT icqAimControls[] = {IDC_AIMENABLE}; static BOOL CALLBACK DlgProcIcqFeaturesOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_INITDIALOG: { BYTE bData; int sCodePage; int i; ICQTranslateDialog(hwndDlg); bData = ICQGetContactSettingByte(NULL, "UtfEnabled", DEFAULT_UTF_ENABLED); CheckDlgButton(hwndDlg, IDC_UTFENABLE, bData?TRUE:FALSE); CheckDlgButton(hwndDlg, IDC_UTFALL, bData==2?TRUE:FALSE); icq_EnableMultipleControls(hwndDlg, icqUnicodeControls, sizeof(icqUnicodeControls)/sizeof(icqUnicodeControls[0]), bData?TRUE:FALSE); LoadDBCheckState(hwndDlg, IDC_XSTUPDATE, "UpdateXStatus", 1); SetDlgItemInt(hwndDlg, IDC_XSTUPDATERATE, ICQGetContactSettingDword(NULL, "XStatusUpdatePeriod", 15), 0); EnableDlgItem(hwndDlg, IDC_XSTUPDATERATE, IsDlgButtonChecked(hwndDlg, IDC_XSTUPDATE)); LoadDBCheckState(hwndDlg, IDC_TEMPVISIBLE, "TempVisListEnabled",DEFAULT_TEMPVIS_ENABLED); LoadDBCheckState(hwndDlg, IDC_SLOWSEND, "SlowSend", DEFAULT_SLOWSEND); LoadDBCheckState(hwndDlg, IDC_ONLYSERVERACKS, "OnlyServerAcks", DEFAULT_ONLYSERVERACKS); bData = ICQGetContactSettingByte(NULL, "DirectMessaging", DEFAULT_DCMSG_ENABLED); LoadDBCheckState(hwndDlg, IDC_DCICON, "ShowDCIcon", 1); CheckDlgButton(hwndDlg, IDC_DCENABLE, bData?TRUE:FALSE); CheckDlgButton(hwndDlg, IDC_DCPASSIVE, bData==1?TRUE:FALSE); icq_EnableMultipleControls(hwndDlg, icqDCMsgControls, sizeof(icqDCMsgControls)/sizeof(icqDCMsgControls[0]), bData?TRUE:FALSE); bData = ICQGetContactSettingByte(NULL, "XStatusEnabled", DEFAULT_XSTATUS_ENABLED); CheckDlgButton(hwndDlg, IDC_XSTATUSENABLE, bData); icq_EnableMultipleControls(hwndDlg, icqXStatusControls, sizeof(icqXStatusControls)/sizeof(icqXStatusControls[0]), bData); LoadDBCheckState(hwndDlg, IDC_XSTATUSAUTO, "XStatusAuto", DEFAULT_XSTATUS_AUTO); LoadDBCheckState(hwndDlg, IDC_XSTATUSRESET, "XStatusReset", DEFAULT_XSTATUS_RESET); LoadDBCheckState(hwndDlg, IDC_XSTATUS_SHOW, "XStatusIconShow", 1); LoadDBCheckState(hwndDlg, IDC_FORCEXSTATUS, "ForceXstatus", 0); LoadDBCheckState(hwndDlg, IDC_KILLSPAMBOTS, "KillSpambots", DEFAULT_KILLSPAM_ENABLED); LoadDBCheckState(hwndDlg, IDC_KILLUNKNOWN, "KillUnknown", 0); LoadDBCheckState(hwndDlg, IDC_AIMENABLE, "AimEnabled", DEFAULT_AIM_ENABLED); LoadDBCheckState(hwndDlg, IDC_RTF, "RTF", 0); LoadDBCheckState(hwndDlg, IDC_REPLACEXTEXT, "ShowMyXText", 1); icq_EnableMultipleControls(hwndDlg, icqAimControls, sizeof(icqAimControls)/sizeof(icqAimControls[0]), icqOnline?FALSE:TRUE); { char* CIdComboBox[] = { "Email","Protocol","SMS","Advanced 1","Advanced 2","Web","Client","VisMode","Advanced 3","Advanced 4" }; int i; for (i=0; icode) { case PSN_APPLY: { int i = SendDlgItemMessage(hwndDlg, IDC_DC_ICON_POS, CB_GETCURSEL, 0, 0)+1; DBWriteContactSettingWord(NULL, gpszICQProtoName, "dc_icon_pos", (WORD)i); } { int i = SendDlgItemMessage(hwndDlg, IDC_XSTATUS_ICON_POS, CB_GETCURSEL, 0, 0)+1; DBWriteContactSettingWord(NULL, gpszICQProtoName, "xstatus_icon_pos", (WORD)i); } if( DBGetContactSettingByte(NULL,gpszICQProtoName,"RTF", 0) != (BYTE)IsDlgButtonChecked(hwndDlg,IDC_RTF)) { MessageBox(0,Translate("To enable RTF text reciving you must reconnect your Miranda after option is enabled"),Translate("Warning"),MB_OK); ICQWriteContactSettingByte(NULL,"RTF",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_RTF)); } if (IsDlgButtonChecked(hwndDlg, IDC_UTFENABLE)) gbUtfEnabled = IsDlgButtonChecked(hwndDlg, IDC_UTFALL)?2:1; else gbUtfEnabled = 0; { int i = SendDlgItemMessage(hwndDlg, IDC_UTFCODEPAGE, CB_GETCURSEL, 0, 0); gwAnsiCodepage = (WORD)SendDlgItemMessage(hwndDlg, IDC_UTFCODEPAGE, CB_GETITEMDATA, (WPARAM)i, 0); ICQWriteContactSettingWord(NULL, "AnsiCodePage", gwAnsiCodepage); } ICQWriteContactSettingByte(NULL, "UtfEnabled", gbUtfEnabled); gbTempVisListEnabled = (BYTE)IsDlgButtonChecked(hwndDlg, IDC_TEMPVISIBLE); ICQWriteContactSettingByte(NULL, "TempVisListEnabled", gbTempVisListEnabled); StoreDBCheckState(hwndDlg, IDC_SLOWSEND, "SlowSend"); StoreDBCheckState(hwndDlg, IDC_ONLYSERVERACKS, "OnlyServerAcks"); if (IsDlgButtonChecked(hwndDlg, IDC_DCENABLE)) gbDCMsgEnabled = IsDlgButtonChecked(hwndDlg, IDC_DCPASSIVE)?1:2; else gbDCMsgEnabled = 0; ICQWriteContactSettingByte(NULL, "DirectMessaging", gbDCMsgEnabled); gbXStatusEnabled = (BYTE)IsDlgButtonChecked(hwndDlg, IDC_XSTATUSENABLE); ICQWriteContactSettingByte(NULL, "XStatusEnabled", gbXStatusEnabled); StoreDBCheckState(hwndDlg, IDC_DCICON, "ShowDCIcon"); StoreDBCheckState(hwndDlg, IDC_XSTATUSAUTO, "XStatusAuto"); StoreDBCheckState(hwndDlg, IDC_XSTATUSRESET, "XStatusReset"); StoreDBCheckState(hwndDlg, IDC_FORCEXSTATUS , "ForceXstatus"); StoreDBCheckState(hwndDlg, IDC_XSTATUS_SHOW, "XStatusIconShow"); bXstatusIconShow = ICQGetContactSettingByte(NULL, "XStatusIconShow", 1); StoreDBCheckState(hwndDlg, IDC_KILLSPAMBOTS , "KillSpambots"); StoreDBCheckState(hwndDlg, IDC_KILLUNKNOWN , "KillUnknown"); StoreDBCheckState(hwndDlg, IDC_AIMENABLE, "AimEnabled"); StoreDBCheckState(hwndDlg, IDC_RTF, "RTF"); StoreDBCheckState(hwndDlg, IDC_REPLACEXTEXT, "ShowMyXText"); { DWORD dwRate; StoreDBCheckState(hwndDlg, IDC_XSTUPDATE, "UpdateXStatus"); dwRate = GetDlgItemInt(hwndDlg, IDC_XSTUPDATERATE, 0, 0); if(dwRate < 1 || dwRate > 60) dwRate = 15; SetDlgItemInt(hwndDlg, IDC_XSTUPDATERATE, dwRate, 0); ICQWriteContactSettingDword(NULL, "XStatusUpdatePeriod", dwRate); } StoreDBCheckState(hwndDlg, IDC_XSTNONSTD, "NonStandartXstatus"); return TRUE; } break; } return FALSE; } static const UINT icqASDControls[] = {IDC_NOASD, IDC_CHECKITEM, IDC_ASDSTARTUP}; static const UINT icqPSDControls[] = {IDC_NOPSD_FOR_HIDDEN}; static BOOL CALLBACK DlgProcIcqFeatures2Opts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { extern BOOL bShowAuth; switch (msg) { case WM_INITDIALOG: { BYTE bData; ICQTranslateDialog(hwndDlg); // LoadDBCheckState(hwndDlg, IDC_STEALTHRQST, "StealthRequest", 0); LoadDBCheckState(hwndDlg, IDC_PSD, "PSD", 0); LoadDBCheckState(hwndDlg, IDC_NOASD, "NoASD", 0); LoadDBCheckState(hwndDlg, IDC_SHOW_AUTH, "ShowAuth", 0); // LoadDBCheckState(hwndDlg, IDC_INV4INV, "Inv4Inv", DEFAULT_INV4INV_DISABLED); // LoadDBCheckState(hwndDlg, IDC_LOGSELFREM, "LogSelfRem", 0); // LoadDBCheckState(hwndDlg, IDC_IGNCHECKLOG, "IgnoreCheckLog", 0); LoadDBCheckState(hwndDlg, IDC_ASDSTARTUP, "ASDStartup", 0); LoadDBCheckState(hwndDlg, IDC_NOPSD_FOR_HIDDEN, "NoPSDForHidden", 1); bData = DBGetContactSettingByte(NULL,gpszICQProtoName,"ASD", 0); CheckDlgButton(hwndDlg, IDC_ASD, bData); icq_EnableMultipleControls(hwndDlg, icqASDControls, sizeof(icqASDControls)/sizeof(icqASDControls[0]), bData?TRUE:FALSE); // bData = DBGetContactSettingByte(NULL,gpszICQProtoName,"Inv4Inv", DEFAULT_INV4INV_DISABLED); // CheckDlgButton(hwndDlg, IDC_INV4INV, bData); bData = DBGetContactSettingByte(NULL,gpszICQProtoName,"ASDStartup", 0); CheckDlgButton(hwndDlg, IDC_ASDSTARTUP, bData); LoadDBCheckState(hwndDlg, IDC_TZER, "tZer", 0); // icq_EnableMultipleControls(hwndDlg, icqIncognitoControls, sizeof(icqIncognitoControls)/sizeof(icqIncognitoControls[0]), bStealthRequest?TRUE:FALSE); CheckDlgButton(hwndDlg, IDC_INCUSER, (bIncognitoGlobal == 0)); CheckDlgButton(hwndDlg, IDC_INCGLOBAL, (bIncognitoGlobal == 1)); return TRUE; } case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_ASD: icq_EnableMultipleControls(hwndDlg, icqASDControls, sizeof(icqASDControls)/sizeof(icqASDControls[0]), IsDlgButtonChecked(hwndDlg, IDC_ASD)); break; case IDC_PSD: icq_EnableMultipleControls(hwndDlg, icqPSDControls, sizeof(icqPSDControls)/sizeof(icqPSDControls[0]), IsDlgButtonChecked(hwndDlg, IDC_PSD)); break; // case IDC_STEALTHRQST: // icq_EnableMultipleControls(hwndDlg, icqIncognitoControls, sizeof(icqIncognitoControls)/sizeof(icqIncognitoControls[0]), IsDlgButtonChecked(hwndDlg, IDC_STEALTHRQST)); case IDC_ASDOPTIONS: ShowASDOpts(); break; } OptDlgChanged(hwndDlg); break; case WM_NOTIFY: switch (((LPNMHDR)lParam)->code) { case PSN_APPLY: if( gbASD != (BYTE)IsDlgButtonChecked(hwndDlg,IDC_ASD)) { ICQWriteContactSettingByte(NULL,"ASD",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_ASD)); gbASD = (BYTE)IsDlgButtonChecked(hwndDlg,IDC_ASD); gbASD?icq_InitISee():icq_ISeeCleanup(); //here we need remove menu item from ASD } /* if( DBGetContactSettingByte(NULL,gpszICQProtoName,"Inv4Inv", 0) != (BYTE)IsDlgButtonChecked(hwndDlg,IDC_INV4INV)) { MessageBox(0,"To enable/disable Inv4Inv you must restart your Miranda","Warning",MB_OK); ICQWriteContactSettingByte(NULL,"Inv4Inv",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_INV4INV)); }*/ if( DBGetContactSettingByte(NULL,gpszICQProtoName,"ASDStartup", 0) != (BYTE)IsDlgButtonChecked(hwndDlg,IDC_ASDSTARTUP)) { MessageBox(0,Translate("To enable/disable Entire list check you must restart your Miranda"),Translate("Warning"),MB_OK); ICQWriteContactSettingByte(NULL,"ASDStartup",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_ASDSTARTUP)); } // StoreDBCheckState(hwndDlg, IDC_STEALTHRQST , "StealthRequest"); // if(ICQGetContactSettingByte(NULL, "StealthRequest", 0) == 1) // bStealthRequest = TRUE; // else // bStealthRequest = FALSE; StoreDBCheckState(hwndDlg, IDC_SHOW_AUTH, "ShowAuth"); bShowAuth = ICQGetContactSettingByte(NULL, "ShowAuth", 0); StoreDBCheckState(hwndDlg, IDC_PSD , "PSD"); bPSD = ICQGetContactSettingByte(NULL, "PSD", 1); StoreDBCheckState(hwndDlg, IDC_NOASD , "NoASD"); bNoASD = ICQGetContactSettingByte(NULL, "NoASD", 1); StoreDBCheckState(hwndDlg, IDC_NOPSD_FOR_HIDDEN, "NoPSDForHidden"); bNoPSDForHidden = ICQGetContactSettingByte(NULL, "NoPSDForHidden", 1); // StoreDBCheckState(hwndDlg, IDC_INV4INV , "Inv4Inv"); StoreDBCheckState(hwndDlg, IDC_INCGLOBAL , "IncognitoGlobal"); bIncognitoGlobal = ICQGetContactSettingByte(NULL, "IncognitoGlobal", 0); StoreDBCheckState(hwndDlg, IDC_NOASD , "NoASD"); StoreDBCheckState(hwndDlg, IDC_ASDSTARTUP , "ASDStartup"); StoreDBCheckState(hwndDlg, IDC_TZER, "tZer"); gbTzerEnabled = ICQGetContactSettingByte(NULL,"tZer",0); return TRUE; } break; } return FALSE; } static BOOL CALLBACK DlgProcIcqEventLogOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { extern BOOL bHcontactHistory; switch (msg) { case WM_INITDIALOG: ICQTranslateDialog(hwndDlg); LoadDBCheckState(hwndDlg, IDC_LOG_REMOVE_FILE, "LogSelfRemoveFile", 0); LoadDBCheckState(hwndDlg, IDC_LOG_IGNORECHECK_FILE, "LogIgnoreCheckFile", 0); LoadDBCheckState(hwndDlg, IDC_LOG_CHECKSTATUS_FILE, "LogStatusCheckFile", 0); LoadDBCheckState(hwndDlg, IDC_LOG_ASD_FILE, "LogASDFile", 0); LoadDBCheckState(hwndDlg, IDC_LOG_CLIENTCHANGE_FILE, "LogClientChangeFile", 0); LoadDBCheckState(hwndDlg, IDC_LOG_AUTH_FILE, "LogAuthFile", 0); LoadDBCheckState(hwndDlg, IDC_LOG_REQUEST_FILE, "LogRequestFile", 0); LoadDBCheckState(hwndDlg, IDC_LOG_REMOVE_HISTORY, "LogSelfRemoveHistory", 0); LoadDBCheckState(hwndDlg, IDC_LOG_IGNORECHECK_HISTORY, "LogIgnoreCheckHistory", 0); LoadDBCheckState(hwndDlg, IDC_LOG_CHECKSTATUS_HISTORY, "LogStatusCheckHistory", 0); LoadDBCheckState(hwndDlg, IDC_LOG_ASD_HISTORY, "LogASDHistory", 0); LoadDBCheckState(hwndDlg, IDC_LOG_CLIENTCHANGE_HISTORY, "LogClientChangeHistory", 0); LoadDBCheckState(hwndDlg, IDC_LOG_AUTH_HISTORY, "LogAuthHistory", 0); LoadDBCheckState(hwndDlg, IDC_LOG_REQUEST_HISTORY, "LogRequestHistory", 0); LoadDBCheckState(hwndDlg, IDC_LOG_TO_HCONTACT_HISTORY, "LogToHcontact", 0); SetDlgItemText(hwndDlg, IDC_FILEPATH, UniGetContactSettingUtf(NULL, gpszICQProtoName, "EventsLog", "EventsLog.txt")); SendMessage(GetDlgItem(hwndDlg, IDC_BROWSE), BUTTONSETASFLATBTN, 0, 0); SendMessage(GetDlgItem(hwndDlg, IDC_BROWSE), BM_SETIMAGE, IMAGE_ICON, (LPARAM)LoadSkinnedIcon(SKINICON_EVENT_FILE)); return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_BROWSE: { TCHAR str[MAX_PATH+2]; OPENFILENAME ofn={0}; TCHAR filter[512],*pfilter; GetWindowText(GetWindow((HWND)lParam,GW_HWNDPREV),str,SIZEOF(str)); ofn.lStructSize=CDSIZEOF_STRUCT(OPENFILENAME,lpTemplateName); ofn.hwndOwner=hwndDlg; ofn.Flags=OFN_HIDEREADONLY; if (LOWORD(wParam)==IDC_BROWSE) { ofn.lpstrTitle=TranslateT("Select where log file will be created"); } else { ofn.Flags|=OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST; ofn.lpstrTitle=TranslateT("Select program to be run"); } _tcscpy(filter,TranslateT("All Files")); _tcscat(filter,_T(" (*)")); pfilter=filter+lstrlen(filter)+1; _tcscpy(pfilter,_T("*")); pfilter=pfilter+lstrlen(pfilter)+1; *pfilter='\0'; ofn.lpstrFilter=filter; ofn.lpstrFile=str; ofn.nMaxFile=SIZEOF(str)-2; ofn.nMaxFileTitle=MAX_PATH; if (LOWORD(wParam)==IDC_BROWSE) { if(!GetSaveFileName(&ofn)) return 1; } else { if(!GetOpenFileName(&ofn)) return 1; } SetWindowText(GetWindow((HWND)lParam,GW_HWNDPREV),str); break; } break; } OptDlgChanged(hwndDlg); break; case WM_NOTIFY: switch (((LPNMHDR)lParam)->code) { case PSN_APPLY: StoreDBCheckState(hwndDlg, IDC_LOG_REMOVE_FILE, "LogSelfRemoveFile"); bLogSelfRemoveFile = ICQGetContactSettingByte(NULL, "LogSelfRemoveFile", 0); StoreDBCheckState(hwndDlg, IDC_LOG_IGNORECHECK_FILE, "LogIgnoreCheckFile"); bLogIgnoreCheckFile= ICQGetContactSettingByte(NULL, "LogIgnoreCheckFile", 0); StoreDBCheckState(hwndDlg, IDC_LOG_CHECKSTATUS_FILE, "LogStatusCheckFile"); bLogStatusCheckFile = ICQGetContactSettingByte(NULL, "LogStatusCheckFile", 0); StoreDBCheckState(hwndDlg, IDC_LOG_ASD_FILE, "LogASDFile"); bLogASDFile = ICQGetContactSettingByte(NULL, "LogASDFile", 0); StoreDBCheckState(hwndDlg, IDC_LOG_CLIENTCHANGE_FILE, "LogClientChangeFile"); bLogClientChangeFile = ICQGetContactSettingByte(NULL, "LogClientChangeFile", 0); StoreDBCheckState(hwndDlg, IDC_LOG_AUTH_FILE, "LogAuthFile"); bLogAuthFile = ICQGetContactSettingByte(NULL, "LogAuthFile", 0); StoreDBCheckState(hwndDlg, IDC_LOG_REQUEST_FILE, "LogRequestFile"); bLogInfoRequestFile = ICQGetContactSettingByte(NULL, "LogRequestFile", 0); StoreDBCheckState(hwndDlg, IDC_LOG_REMOVE_HISTORY, "LogSelfRemoveHistory"); bLogSelfRemoveHistory = ICQGetContactSettingByte(NULL, "LogSelfRemoveHistory", 0); StoreDBCheckState(hwndDlg, IDC_LOG_IGNORECHECK_HISTORY, "LogIgnoreCheckHistory"); bLogIgnoreCheckHistory= ICQGetContactSettingByte(NULL, "LogIgnoreCheckHistory", 0); StoreDBCheckState(hwndDlg, IDC_LOG_CHECKSTATUS_HISTORY, "LogStatusCheckHistory"); bLogStatusCheckHistory = ICQGetContactSettingByte(NULL, "LogStatusCheckHistory", 0); StoreDBCheckState(hwndDlg, IDC_LOG_ASD_HISTORY, "LogASDHistory"); bLogASDHistory = ICQGetContactSettingByte(NULL, "LogASDHistory", 0); StoreDBCheckState(hwndDlg, IDC_LOG_CLIENTCHANGE_HISTORY, "LogClientChangeHistory"); bLogClientChangeHistory = ICQGetContactSettingByte(NULL, "LogClientChangeHistory", 0); StoreDBCheckState(hwndDlg, IDC_LOG_AUTH_HISTORY, "LogAuthHistory"); bLogAuthHistory = ICQGetContactSettingByte(NULL, "LogAuthHistory", 0); StoreDBCheckState(hwndDlg, IDC_LOG_REQUEST_HISTORY, "LogRequestHistory"); bLogInfoRequestHistory = ICQGetContactSettingByte(NULL, "LogRequestHistory", 0); StoreDBCheckState(hwndDlg, IDC_LOG_TO_HCONTACT_HISTORY, "LogToHcontact"); bHcontactHistory = ICQGetContactSettingByte(NULL, "LogToHcontact", 0); { char i[1024]; GetDlgItemText(hwndDlg, IDC_FILEPATH, i, sizeof(i) ); UniWriteContactSettingUtf(NULL, gpszICQProtoName, "EventsLog", i); } return TRUE; } break; } return FALSE; } BOOL id = FALSE; static const UINT icqVersionControls[] = {IDC_VERSION_CHECKBOX,IDC_SET_VERSION}; static BOOL CALLBACK DlgProcIcqClientIDOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { static BYTE bIdChanged = FALSE; switch (msg) { case WM_INITDIALOG: { ICQTranslateDialog(hwndDlg); LoadDBCheckState(hwndDlg, IDC_HIDEID, "Hide ID", 1); LoadDBCheckState(hwndDlg, IDC_CUSTOM_CAP, "customcap", 1); LoadDBCheckState(hwndDlg, IDC_VERSION_CHECKBOX, "CurrentVer", 0); id = FALSE; { char* CIdComboBox[] = { "MirandaIM","unknown","QIP2005a","YSM","pyICQ","&RQ","Jimm","Trillian", "Licq","Kopete","ICQ for MAC","Miranda IM v6.6.6","ICQ 5 (Rambler)","ICQ 5.1","ICQ 5 (abv)", "ICQ netvigator","Sim/MacOS X","Sim/Win32","Centericq","libicq2k","mChat","stICQ","KXicq2", "QIP PDA (Windows)","QIP Mobile (Java)","ICQ 2002","ICQ 6","ICQ for Pocket PC", "Anastasia","Virus","alicq","mICQ","StrICQ","vICQ","IM2","GAIM","ICQ99","WebICQ","SmartICQ", "IM+","uIM","TICQClient","IC@","PreludeICQ","Qnext","ICQ Lite","QIP Infium","JICQ", "SpamBot","MIP","Trillian Astra","R&Q","NanoICQ","IMadering","MirandaMobile" }; int i; for (i=0; icode) { case PSN_APPLY: { int i, fakeId, fakeICQModID; fakeId = SendDlgItemMessage(hwndDlg, IDC_CHANGEID, CB_GETCURSEL, 0, 0); if(DBGetContactSettingWord(NULL, gpszICQProtoName, "CurrentID", 0) != fakeId) { id = TRUE; DBWriteContactSettingWord(NULL, gpszICQProtoName, "CurrentID", (WORD)fakeId); } // Miranda IM ICQ mods fakeICQModID = SendDlgItemMessage(hwndDlg, IDC_ENIFMIRCBX, CB_GETCURSEL, 0, 0); if(DBGetContactSettingWord(NULL, gpszICQProtoName, "CurrentICQModID", 0) != fakeICQModID) { id = TRUE; DBWriteContactSettingWord(NULL, gpszICQProtoName, "CurrentICQModID", (WORD)fakeICQModID); } StoreDBCheckState(hwndDlg, IDC_VERSION_CHECKBOX, "CurrentVer"); gbVerEnabled = DBGetContactSettingByte(NULL, gpszICQProtoName, "CurrentVer", 0); i = GetDlgItemInt(hwndDlg, IDC_SET_VERSION, 0, 0); if(DBGetContactSettingWord(NULL, gpszICQProtoName, "setVersion", 0) != i) { id = TRUE; DBWriteContactSettingWord(NULL, gpszICQProtoName, "setVersion", (WORD)i); } i = IsDlgButtonChecked(hwndDlg, IDC_HIDEID); if(DBGetContactSettingByte(NULL, gpszICQProtoName, "Hide ID", 0) != i) { id = TRUE; DBWriteContactSettingByte(NULL, gpszICQProtoName, "Hide ID", i); } if(DBGetContactSettingByte(NULL, gpszICQProtoName, "Hide ID", 0)) gbHideIdEnabled = 1; else gbHideIdEnabled = 0; i = IsDlgButtonChecked(hwndDlg, IDC_CUSTOM_CAP); if(DBGetContactSettingByte(NULL, gpszICQProtoName, "customcap", 0) != i) { id = TRUE; DBWriteContactSettingByte(NULL, gpszICQProtoName, "customcap", i); gbCustomCapEnabled=i; } if (id) { setUserInfo(); { extern int icqGoingOnlineStatus; icq_packet packet; WORD wStatus; DWORD dwFT1; DWORD dwFT2; DWORD dwFT3; int nPort = ICQGetContactSettingWord(NULL, "UserPort", 0); DWORD dwDirectCookie = rand() ^ (rand() << 16); // Get status wStatus = MirandaStatusToIcq(icqGoingOnlineStatus); wStatus = MirandaStatusToIcq(icqGoingOnlineStatus); serverPacketInit(&packet, 71); packFNACHeader(&packet, ICQ_SERVICE_FAMILY, ICQ_CLIENT_SET_STATUS); packDWord(&packet, 0x00060004); // TLV 6: Status mode and security flags packWord(&packet, GetMyStatusFlags()); // Status flags packWord(&packet, wStatus); // Status packTLVWord(&packet, 0x0008, 0x0000); // TLV 8: Error code packDWord(&packet, 0x000c0025); // TLV C: Direct connection info packDWord(&packet, ICQGetContactSettingDword(NULL, "RealIP", 0)); packDWord(&packet, nPort); packByte(&packet, DC_TYPE); // TCP/FLAG firewall settings packWord(&packet, (WORD)GetProtoVersion()); packDWord(&packet, dwDirectCookie); // DC Cookie packDWord(&packet, WEBFRONTPORT); // Web front port packDWord(&packet, CLIENTFEATURES); // Client features SetTimeStamps(&dwFT1, &dwFT2, &dwFT3); packDWord(&packet, dwFT1); packDWord(&packet, dwFT2); packDWord(&packet, dwFT3); packWord(&packet, 0x0000); // Unknown packTLVWord(&packet, 0x001F, 0x0000); sendServPacket(&packet); } } if(fakeId != 0) SetDlgItemText(hwndDlg, IDC_FAKEWARNING, Translate("Your client ID is changed!\nChanging client id can result in serious messaging problems!\n\nIf you experience such problems, set your client ID back to \"Miranda\"")); else SetDlgItemText(hwndDlg, IDC_FAKEWARNING, ""); if(bIdChanged && (fakeId != 0)) { MessageBox(0,Translate("Changing client ID can result in serious messaging problems!"),Translate("Warning"),MB_OK); bIdChanged = FALSE; } } // custom capability edit control /* { char cap[24]; char tmp[MAXMODULELABELLENGTH]; mir_snprintf(tmp, MAXMODULELABELLENGTH, "%sCaps", gpszICQProtoName); GetDlgItemText(hwndDlg, IDC_CUSTCAPEDIT, cap, sizeof(cap)); DBWriteContactSettingStringUtf(NULL, tmp, "capability", cap); }*/ return TRUE; } break; } return FALSE; } static const UINT icqContactsControls[] = {IDC_ADDSERVER,IDC_LOADFROMSERVER,IDC_SAVETOSERVER,IDC_UPLOADNOW,IDC_FORCEREFRESH}; static const UINT icqAvatarControls[] = {IDC_AUTOLOADAVATARS,IDC_BIGGERAVATARS,IDC_STRICTAVATARCHECK}; static const UINT icqAddTempControls[] = {IDC_ADDTEMP,IDC_TMP_CONTACTS_GROUP}; static BOOL CALLBACK DlgProcIcqContactsOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_INITDIALOG: { ICQTranslateDialog(hwndDlg); LoadDBCheckState(hwndDlg, IDC_ENABLE, "UseServerCList", DEFAULT_SS_ENABLED); LoadDBCheckState(hwndDlg, IDC_ADDSERVER, "ServerAddRemove", DEFAULT_SS_ADDSERVER); LoadDBCheckState(hwndDlg, IDC_LOADFROMSERVER, "LoadServerDetails", DEFAULT_SS_LOAD); LoadDBCheckState(hwndDlg, IDC_SAVETOSERVER, "StoreServerDetails", DEFAULT_SS_STORE); LoadDBCheckState(hwndDlg, IDC_ENABLEAVATARS, "AvatarsEnabled", DEFAULT_AVATARS_ENABLED); LoadDBCheckState(hwndDlg, IDC_AUTOLOADAVATARS, "AvatarsAutoLoad", DEFAULT_LOAD_AVATARS); LoadDBCheckState(hwndDlg, IDC_BIGGERAVATARS, "AvatarsAllowBigger", DEFAULT_BIGGER_AVATARS); LoadDBCheckState(hwndDlg, IDC_STRICTAVATARCHECK, "StrictAvatarCheck", DEFAULT_AVATARS_CHECK); icq_EnableMultipleControls(hwndDlg, icqContactsControls, sizeof(icqContactsControls)/sizeof(icqContactsControls[0]), ICQGetContactSettingByte(NULL, "UseServerCList", DEFAULT_SS_ENABLED)?TRUE:FALSE); icq_EnableMultipleControls(hwndDlg, icqAvatarControls, sizeof(icqAvatarControls)/sizeof(icqAvatarControls[0]), ICQGetContactSettingByte(NULL, "AvatarsEnabled", DEFAULT_AVATARS_ENABLED)?TRUE:FALSE); CheckDlgButton(hwndDlg, IDC_DELETE_TMP_CONTACTS, (bTmpContacts == 0)); CheckDlgButton(hwndDlg, IDC_ADD_TMP_CONTACTS, (bTmpContacts == 1)); SetDlgItemText(hwndDlg, IDC_TMP_CONTACTS_GROUP, UniGetContactSettingUtf(NULL,gpszICQProtoName,"TmpContactsGroup", 0)); LoadDBCheckState(hwndDlg, IDC_ADDTEMP, "AddTemp", 0); icq_EnableMultipleControls(hwndDlg, icqAddTempControls, sizeof(icqAddTempControls)/sizeof(icqAddTempControls[0]), bTmpContacts?TRUE:FALSE); if (icqOnline) { ShowWindow(GetDlgItem(hwndDlg, IDC_OFFLINETOENABLE), SW_SHOW); EnableDlgItem(hwndDlg, IDC_ENABLE, FALSE); EnableDlgItem(hwndDlg, IDC_ENABLEAVATARS, FALSE); } else { EnableDlgItem(hwndDlg, IDC_UPLOADNOW, FALSE); } if (!DBGetContactSettingDword(NULL,gpszICQProtoName,"SrvLastUpdate",0) && !DBGetContactSettingWord(NULL,gpszICQProtoName,"SrvRecordCount",0)) EnableWindow(GetDlgItem(hwndDlg, IDC_FORCEREFRESH), FALSE); return TRUE; } case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_UPLOADNOW: ShowUploadContactsDialog(); return TRUE; case IDC_FORCEREFRESH: DBWriteContactSettingDword(NULL,gpszICQProtoName,"SrvLastUpdate",0); DBWriteContactSettingWord(NULL,gpszICQProtoName,"SrvRecordCount",0); EnableWindow(GetDlgItem(hwndDlg, IDC_FORCEREFRESH), FALSE); return TRUE; case IDC_ENABLE: icq_EnableMultipleControls(hwndDlg, icqContactsControls, sizeof(icqContactsControls)/sizeof(icqContactsControls[0]), IsDlgButtonChecked(hwndDlg, IDC_ENABLE)); if (icqOnline) ShowWindow(GetDlgItem(hwndDlg, IDC_RECONNECTREQD), SW_SHOW); else EnableDlgItem(hwndDlg, IDC_UPLOADNOW, FALSE); break; case IDC_ENABLEAVATARS: icq_EnableMultipleControls(hwndDlg, icqAvatarControls, sizeof(icqAvatarControls)/sizeof(icqAvatarControls[0]), IsDlgButtonChecked(hwndDlg, IDC_ENABLEAVATARS)); break; case IDC_ADD_TMP_CONTACTS: icq_EnableMultipleControls(hwndDlg, icqAddTempControls, sizeof(icqAddTempControls)/sizeof(icqAddTempControls[0]), IsDlgButtonChecked(hwndDlg, IDC_ADD_TMP_CONTACTS)); break; case IDC_DELETE_TMP_CONTACTS: icq_EnableMultipleControls(hwndDlg, icqAddTempControls, sizeof(icqAddTempControls)/sizeof(icqAddTempControls[0]), IsDlgButtonChecked(hwndDlg, IDC_ADD_TMP_CONTACTS)); break; } OptDlgChanged(hwndDlg); break; case WM_NOTIFY: switch (((LPNMHDR)lParam)->code) { case PSN_APPLY: StoreDBCheckState(hwndDlg, IDC_ENABLE, "UseServerCList"); StoreDBCheckState(hwndDlg, IDC_ADDSERVER, "ServerAddRemove"); StoreDBCheckState(hwndDlg, IDC_LOADFROMSERVER, "LoadServerDetails"); StoreDBCheckState(hwndDlg, IDC_SAVETOSERVER, "StoreServerDetails"); StoreDBCheckState(hwndDlg, IDC_ENABLEAVATARS, "AvatarsEnabled"); StoreDBCheckState(hwndDlg, IDC_AUTOLOADAVATARS, "AvatarsAutoLoad"); StoreDBCheckState(hwndDlg, IDC_BIGGERAVATARS, "AvatarsAllowBigger"); StoreDBCheckState(hwndDlg, IDC_STRICTAVATARCHECK, "StrictAvatarCheck"); if (IsDlgButtonChecked(hwndDlg, IDC_DELETE_TMP_CONTACTS)) { ICQWriteContactSettingByte(NULL, "TempContacts", 0); bTmpContacts = 0; } else if (IsDlgButtonChecked(hwndDlg, IDC_ADD_TMP_CONTACTS)) { ICQWriteContactSettingByte(NULL, "TempContacts", 1); bTmpContacts = 1; } { static char NewTmpGroupName[128] = {0}, CurrentTmpGroupName[128] = {0}; GetDlgItemText(hwndDlg, IDC_TMP_CONTACTS_GROUP, NewTmpGroupName, sizeof(NewTmpGroupName)); strcpy(CurrentTmpGroupName, UniGetContactSettingUtf(NULL, gpszICQProtoName, "TmpContactsGroup", "0")); if(strcmp(CurrentTmpGroupName, NewTmpGroupName) != 0) { int GroupNumber = 0; BYTE GroupExist = 0; char szNumber[32] = {0}, szValue[96] = {0}; extern int CreateCListGroup(const char* szGroupName); strcpy(szNumber, "0"); while(strcmp(UniGetContactSettingUtf(NULL, "CListGroups", szNumber, "0"), "0") != 0) { #if defined(_MSC_VER) && _MSC_VER >= 1300 _itoa_s(GroupNumber, szNumber, sizeof(szNumber), 10); #else _itoa(GroupNumber, szNumber, 10); #endif strcpy(szValue, UniGetContactSettingUtf(NULL, "CListGroups", szNumber, "0")); if(strcmp(NewTmpGroupName, szValue + 1) == 0) { GroupExist = 1; break; } GroupNumber++; } UniWriteContactSettingUtf(NULL,gpszICQProtoName, "TmpContactsGroup", NewTmpGroupName); TmpGroupName = UniGetContactSettingUtf(NULL,gpszICQProtoName,"TmpContactsGroup", Translate("General")); if(!GroupExist) CreateCListGroup(TmpGroupName); } } StoreDBCheckState(hwndDlg, IDC_ADDTEMP, "AddTemp"); bAddTemp = ICQGetContactSettingByte(NULL, "AddTemp", 0); return TRUE; } break; } return FALSE; } static BOOL CALLBACK DlgProcIcqNewUINOpts(HWND hwndDlg,UINT msg,WPARAM wParam,LPARAM lParam) { switch (msg) { case WM_INITDIALOG: { ICQTranslateDialog(hwndDlg); return TRUE; } case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_LOOKUPLINK: CallService(MS_UTILS_OPENURL, 1, (LPARAM)URL_FORGOT_PASSWORD); return TRUE; case IDC_NEWUINLINK: CallService(MS_UTILS_OPENURL, 1, (LPARAM)URL_REGISTER_UIN); return TRUE; case IDC_PICTURE: if(icqOnline) { if (MessageBox(0,Translate("If you continue, you will lose current connection with a server,\nContinue?"),Translate("Warning"),MB_YESNO) == IDYES) icq_requestRegImage(hwndDlg); } else icq_requestRegImage(hwndDlg); break; case IDC_REGISTER: { char password[128]; char regimage[128]; GetDlgItemText(hwndDlg, IDC_NEWUIN_PASS, password, sizeof(password)); GetDlgItemText(hwndDlg, IDC_PICTURE_CONTENT, regimage, sizeof(regimage)); icq_registerNewUin(password, regimage); } break; } break; case WM_CLOSE: DestroyWindow(hwndDlg); break; case WM_DESTROY: hwndRegUin = NULL; break; } return FALSE; } void ShowRegUinDialog(void) { if (hwndRegUin == NULL) { hwndRegUin = CreateDialogUtf(hInst, MAKEINTRESOURCE(IDD_ICQ_REG_UIN), NULL, DlgProcIcqNewUINOpts); } SetForegroundWindow(hwndRegUin); } void ShowPopUpsOpts(void) { if (hwndPopUpsOpts == NULL) { hwndPopUpsOpts = CreateDialogUtf(hInst, MAKEINTRESOURCE(IDD_OPT_POPUPS2), NULL, DlgProcIcqPopupOpts2); } SetForegroundWindow(hwndPopUpsOpts); } void ShowASDOpts(void){ if (hwndASDOpts == NULL) { hwndASDOpts = CreateDialogUtf(hInst, MAKEINTRESOURCE(IDD_OPT_ASD), NULL, DlgProcIcqASDOpts); } SetForegroundWindow(hwndASDOpts); } // password input box subclassing typedef struct { WNDPROC oldWndProc; HWND hwndTip; } TPasswordBoxData; static void IcqPasswordBox_Destroy(HWND hwndDlg, int idCtrl); static LRESULT CALLBACK IcqPasswordBox_WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) { WNDPROC oldWndProc; TPasswordBoxData *dat = (TPasswordBoxData *)GetWindowLong(hwnd, GWL_USERDATA); if (!dat) return DefWindowProc(hwnd, msg, wParam, lParam); oldWndProc = dat->oldWndProc; switch(msg) { case WM_APP: { if (dat->hwndTip) { SendMessage(dat->hwndTip, TTM_TRACKACTIVATE, FALSE, 0); DestroyWindow(dat->hwndTip); dat->hwndTip = 0; } if (wParam && lParam) { TOOLINFO ti = {0}; RECT rc; dat->hwndTip = CreateWindowEx(0, TOOLTIPS_CLASS, NULL, WS_POPUP|TTS_NOPREFIX|TTS_BALLOON, 0, 0, 0, 0, hwnd, NULL, hInst, 0); ti.cbSize = sizeof(ti); ti.lpszText = (TCHAR *)lParam; ti.hinst = hInst; ti.hwnd = hwnd; ti.uFlags = TTF_TRACK|TTF_IDISHWND|TTF_TRANSPARENT; ti.uId = (UINT_PTR)hwnd; SendMessage(dat->hwndTip, TTM_ADDTOOL, 0, (LPARAM)&ti); GetWindowRect(hwnd, &rc); SendMessage(dat->hwndTip, TTM_TRACKPOSITION, 0, (LPARAM)MAKELONG(rc.left+20, rc.bottom)); SendMessage(dat->hwndTip, TTM_SETTITLE, 1, (LPARAM)wParam); SendMessage(dat->hwndTip, TTM_TRACKACTIVATE, TRUE, (LPARAM)&ti); } break; } case WM_KILLFOCUS: { if (dat->hwndTip) { SendMessage(dat->hwndTip, TTM_TRACKACTIVATE, FALSE, 0); DestroyWindow(dat->hwndTip); dat->hwndTip = 0; } break; } case WM_DESTROY: { IcqPasswordBox_Destroy(GetParent(hwnd), GetWindowLong(hwnd, GWL_ID)); break; } } return CallWindowProcUtf(oldWndProc, hwnd, msg, wParam, lParam); } static void IcqPasswordBox_Init(HWND hwndDlg, int idCtrl) { HWND hwnd = GetDlgItem(hwndDlg, idCtrl); if(GetWindowLong(hwnd, GWL_USERDATA)) return; if (IsWinVer2000Plus()) { TPasswordBoxData *dat = (TPasswordBoxData *)mir_alloc(sizeof(TPasswordBoxData)); dat->hwndTip = NULL; SetWindowLong(hwnd, GWL_USERDATA, (LONG)dat); dat->oldWndProc = (WNDPROC)SetWindowLongUtf(hwnd, GWL_WNDPROC, (LONG)IcqPasswordBox_WndProc); } } static void IcqPasswordBox_Destroy(HWND hwndDlg, int idCtrl) { HWND hwnd = GetDlgItem(hwndDlg, idCtrl); TPasswordBoxData *dat = (TPasswordBoxData *)GetWindowLong(hwnd, GWL_USERDATA); SetWindowLongUtf(hwnd, GWL_WNDPROC, (LONG)dat->oldWndProc); SetWindowLong(hwnd, GWL_USERDATA, 0); if (dat->hwndTip) { SendMessage(dat->hwndTip, TTM_TRACKACTIVATE, FALSE, 0); DestroyWindow(dat->hwndTip); dat->hwndTip = 0; } mir_free(dat); }