From 25c72306da694aefc53294c6ccd9e7e205229260 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 26 Mar 2021 16:48:53 +0300 Subject: fixes #2798 (IRC: remove "Networks") --- protocols/IRCG/res/IRC.rc | 201 ++-- protocols/IRCG/res/quick.ico | Bin 5430 -> 0 bytes protocols/IRCG/src/commandmonitor.cpp | 24 +- protocols/IRCG/src/input.cpp | 3 +- protocols/IRCG/src/irc_dlg.h | 155 +-- protocols/IRCG/src/irclib.cpp | 4 +- protocols/IRCG/src/irclib.h | 5 +- protocols/IRCG/src/ircproto.cpp | 83 +- protocols/IRCG/src/ircproto.h | 7 +- protocols/IRCG/src/main.cpp | 10 - protocols/IRCG/src/options.cpp | 2100 ++++++++++++++------------------- protocols/IRCG/src/resource.h | 15 - protocols/IRCG/src/scripting.cpp | 3 - protocols/IRCG/src/services.cpp | 32 +- protocols/IRCG/src/stdafx.h | 13 - protocols/IRCG/src/tools.cpp | 16 +- protocols/IRCG/src/version.h | 4 +- protocols/IRCG/src/windows.cpp | 167 +-- 18 files changed, 982 insertions(+), 1860 deletions(-) delete mode 100644 protocols/IRCG/res/quick.ico (limited to 'protocols') diff --git a/protocols/IRCG/res/IRC.rc b/protocols/IRCG/res/IRC.rc index f758d79c89..1e1662ac9a 100644 --- a/protocols/IRCG/res/IRC.rc +++ b/protocols/IRCG/res/IRC.rc @@ -17,7 +17,7 @@ #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU) LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL -#pragma code_page(1252) +#pragma code_page(1251) ///////////////////////////////////////////////////////////////////////////// // @@ -27,22 +27,36 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. IDI_MAIN ICON "irc.ico" + IDI_ADD ICON "add.ico" + IDI_BLOCK ICON "block.ico" + IDI_DELETE ICON "delete.ico" + IDI_APPLY ICON "apply.ico" + IDI_WHOIS ICON "whois.ico" + IDI_LIST ICON "list.ico" + IDI_MANAGER ICON "manager.ico" -IDI_QUICK ICON "quick.ico" + IDI_RENAME ICON "rename.ico" + IDI_SHOW ICON "show.ico" + IDI_LOGO ICON "world.ico" + IDI_DCC ICON "dcc.ico" + IDI_SERVER ICON "server.ico" + IDI_EDIT ICON "edit.ico" + IDI_IRCQUESTION ICON "question.ico" + ///////////////////////////////////////////////////////////////////////////// // // Dialog @@ -53,46 +67,39 @@ STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD EXSTYLE WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "Default network",IDC_STATIC,2,0,142,134 - CONTROL "Enable",IDC_STARTUP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,11,125,10 - LTEXT "Server name",IDC_STATIC,10,22,125,8,0,WS_EX_TRANSPARENT - COMBOBOX IDC_SERVERCOMBO,10,30,125,90,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP - CONTROL "Internet address",IDC_STATIC,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,10,45,81,8,WS_EX_TRANSPARENT - EDITTEXT IDC_SERVER,10,53,88,12,ES_AUTOHSCROLL | ES_READONLY | WS_GROUP - LTEXT "SSL",IDC_STATIC,107,45,28,8,0,WS_EX_TRANSPARENT - EDITTEXT IDC_SSL,107,53,28,12,ES_AUTOHSCROLL | ES_READONLY | ES_NUMBER,WS_EX_RIGHT - LTEXT "Port range",IDC_STATIC,10,67,79,8,0,WS_EX_TRANSPARENT - EDITTEXT IDC_PORT,10,75,33,12,ES_AUTOHSCROLL | ES_READONLY | ES_NUMBER,WS_EX_RIGHT - LTEXT "->",IDC_STATIC,45,76,8,8 - EDITTEXT IDC_PORT2,54,75,33,12,ES_AUTOHSCROLL | ES_READONLY | ES_NUMBER,WS_EX_RIGHT - LTEXT "Password",IDC_STATIC,10,90,125,8,0,WS_EX_TRANSPARENT - EDITTEXT IDC_PASS,10,100,125,12,ES_PASSWORD | ES_AUTOHSCROLL - CONTROL "&Add",IDC_ADDSERVER,"MButtonClass",WS_DISABLED | WS_TABSTOP,16,116,27,14,WS_EX_NOACTIVATE | 0x10000000L - CONTROL "&Edit",IDC_EDITSERVER,"MButtonClass",WS_DISABLED | WS_TABSTOP,59,116,27,14,WS_EX_NOACTIVATE | 0x10000000L - CONTROL "&Del",IDC_DELETESERVER,"MButtonClass",WS_DISABLED | WS_TABSTOP,102,116,27,14,WS_EX_NOACTIVATE | 0x10000000L + GROUPBOX "Server",IDC_STATIC,2,0,142,134 + CONTROL "Host address",IDC_STATIC,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,8,11,81,8,WS_EX_TRANSPARENT + EDITTEXT IDC_SERVER,8,21,127,12,ES_AUTOHSCROLL | WS_GROUP + LTEXT "SSL",IDC_STATIC,8,64,28,8,0,WS_EX_TRANSPARENT + LTEXT "Port range",IDC_STATIC,8,37,79,8,0,WS_EX_TRANSPARENT + EDITTEXT IDC_PORT,8,47,39,12,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT + LTEXT "->",IDC_STATIC,55,49,8,8 + EDITTEXT IDC_PORT2,68,47,39,12,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT + LTEXT "Password",IDC_STATIC,8,105,127,8,0,WS_EX_TRANSPARENT + EDITTEXT IDC_PASS,8,115,127,12,ES_PASSWORD | ES_AUTOHSCROLL GROUPBOX "User info - Required",IDC_STATIC,150,0,154,90 - RTEXT "Nick",IDC_STATIC,158,16,75,8,0,WS_EX_TRANSPARENT + RTEXT "Nick",IDC_STATIC,157,16,76,8,0,WS_EX_TRANSPARENT EDITTEXT IDC_NICK,237,13,63,13,ES_AUTOHSCROLL - RTEXT "Alternative nick",IDC_STATIC,158,34,75,8,0,WS_EX_TRANSPARENT + RTEXT "Alternative nick",IDC_STATIC,157,34,76,8,0,WS_EX_TRANSPARENT EDITTEXT IDC_NICK2,237,32,63,13,ES_AUTOHSCROLL - RTEXT "Full name (e-mail)",IDC_STATIC,158,53,75,8,0,WS_EX_TRANSPARENT + RTEXT "Full name (e-mail)",IDC_STATIC,157,53,76,8,0,WS_EX_TRANSPARENT EDITTEXT IDC_NAME,237,51,63,13,ES_AUTOHSCROLL - RTEXT "User ID (Ident)",IDC_STATIC,158,73,75,8,0,WS_EX_TRANSPARENT + RTEXT "User ID (Ident)",IDC_STATIC,157,73,76,8,0,WS_EX_TRANSPARENT EDITTEXT IDC_USERID,237,71,63,13,ES_AUTOHSCROLL GROUPBOX "Ident",IDC_STATIC,150,92,154,42 - CONTROL "Enable",IDC_IDENT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,106,46,15 + CONTROL "Enable",IDC_IDENT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,157,106,46,15 LTEXT "System",IDC_STATIC,210,98,39,8,0,WS_EX_TRANSPARENT EDITTEXT IDC_IDENTSYSTEM,210,106,39,12,ES_AUTOHSCROLL LTEXT "Port",IDC_STATIC,256,98,35,8,0,WS_EX_TRANSPARENT EDITTEXT IDC_IDENTPORT,256,106,39,12,ES_AUTOHSCROLL | ES_NUMBER CONTROL "only while connecting",IDC_IDENT_TIMED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,171,120,124,11 GROUPBOX "Other",IDC_STATIC,2,134,302,92 - CONTROL "Force visible (-i)",IDC_FORCEVISIBLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,145,134,10 - CONTROL "Rejoin channel if kicked",IDC_REJOINONKICK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,156,134,10 - CONTROL "Rejoin channels on reconnect",IDC_REJOINCHANNELS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,167,134,10 - CONTROL "Disable tray balloon on error",IDC_DISABLEERROR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,178,134,10 - CONTROL "Show addresses",IDC_ADDRESS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,189,134,10 - CONTROL "Use server window",IDC_USESERVER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,200,134,10 + CONTROL "Force visible (-i)",IDC_FORCEVISIBLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,145,136,10 + CONTROL "Rejoin channel if kicked",IDC_REJOINONKICK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,156,136,10 + CONTROL "Rejoin channels on reconnect",IDC_REJOINCHANNELS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,167,136,10 + CONTROL "Disable tray balloon on error",IDC_DISABLEERROR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,178,136,10 + CONTROL "Show addresses",IDC_ADDRESS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,189,136,10 + CONTROL "Use server window",IDC_USESERVER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,200,136,10 CONTROL "Show server window on startup",IDC_SHOWSERVER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,211,129,10 CONTROL "Keep connection alive",IDC_KEEPALIVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,144,145,154,10 CONTROL "Automatically join on invite",IDC_AUTOJOIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,144,156,154,10 @@ -107,7 +114,8 @@ BEGIN RTEXT "Don't check if more than (users):",IDC_STATIC,142,212,124,8 EDITTEXT IDC_LIMIT,267,210,29,12,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT CONTROL "Spin2",IDC_SPIN2,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK,284,209,11,14 - CONTROL "SASL",IDC_SASL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,103,77,32,10 + CONTROL "Enable SASL",IDC_SASL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,92,55,10 + COMBOBOX IDC_SSL,8,74,48,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END IDD_INFO DIALOGEX 0, 0, 267, 214 @@ -192,30 +200,6 @@ BEGIN CONTROL "Enable UTF-8 autodetection",IDC_UTF_AUTODETECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,208,287,10 END -IDD_ADDSERVER DIALOGEX 0, 0, 182, 136 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CONTROLPARENT -CAPTION "Add server" -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - COMBOBOX IDC_ADD_COMBO,7,20,168,90,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP - EDITTEXT IDC_ADD_SERVER,7,44,120,12,ES_AUTOHSCROLL - EDITTEXT IDC_ADD_ADDRESS,7,68,120,12,ES_AUTOHSCROLL | WS_GROUP - EDITTEXT IDC_ADD_PORT,7,92,47,12,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT - EDITTEXT IDC_ADD_PORT2,80,92,47,12,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT - CONTROL "Auto",IDC_AUTO,"Button",BS_AUTORADIOBUTTON | WS_GROUP,139,52,32,10 - CONTROL "On",IDC_ON,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,139,69,32,10 - CONTROL "Off",IDC_OFF,"Button",BS_AUTORADIOBUTTON,139,86,32,10 - DEFPUSHBUTTON "&OK",IDOK,63,115,50,14 - PUSHBUTTON "&Cancel",IDCANCEL,125,115,50,14 - CONTROL "Host address",IDC_STATIC,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,7,60,120,8,WS_EX_TRANSPARENT - LTEXT "->",IDC_STATIC,64,94,8,8 - LTEXT "Port range",IDC_STATIC,7,84,87,8,0,WS_EX_TRANSPARENT - LTEXT "Server description",IDC_STATIC,7,36,120,8,0,WS_EX_TRANSPARENT - LTEXT "Network",IDC_STATIC,7,12,107,8,0,WS_EX_TRANSPARENT - GROUPBOX "SSL",IDC_STATIC,136,38,39,67 -END - IDD_LIST DIALOGEX 0, 0, 360, 212 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "Channels on server" @@ -230,35 +214,6 @@ BEGIN EDITTEXT IDC_TEXT,4,200,351,10,ES_AUTOHSCROLL | WS_DISABLED | NOT WS_BORDER,WS_EX_STATICEDGE END -IDD_QUICKCONN DIALOGEX 0, 0, 201, 165 -STYLE DS_SYSMODAL | DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - COMBOBOX IDC_SERVERCOMBO,12,54,177,69,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP - EDITTEXT IDC_SERVER,12,78,177,12,ES_AUTOHSCROLL - GROUPBOX "SSL",IDC_GRBOX_SSL,12,94,177,21,WS_GROUP | WS_TABSTOP - CONTROL "Off",IDC_SSL_OFF,"Button",BS_AUTORADIOBUTTON,36,102,42,10 - CONTROL "Auto",IDC_SSL_AUTO,"Button",BS_AUTORADIOBUTTON,87,102,42,10 - CONTROL "On",IDC_SSL_ON,"Button",BS_AUTORADIOBUTTON,138,102,44,10 - EDITTEXT IDC_PORT,12,124,36,12,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT - EDITTEXT IDC_PORT2,63,124,36,12,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT - EDITTEXT IDC_PASS,116,124,73,12,ES_PASSWORD | ES_AUTOHSCROLL - DEFPUSHBUTTON "C&onnect",IDOK,83,146,50,14 - PUSHBUTTON "&Cancel",IDCANCEL,139,146,50,14 - CONTROL "Internet address",IDC_STATIC,"Static",SS_LEFTNOWORDWRAP,12,70,130,8,WS_EX_TRANSPARENT - LTEXT "Port range",IDC_STATIC,12,116,63,8,0,WS_EX_TRANSPARENT - LTEXT "Password",IDC_STATIC,116,116,73,8,0,WS_EX_TRANSPARENT - LTEXT "Server name",IDC_STATIC,12,46,177,8,0,WS_EX_TRANSPARENT - CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,0,140,201,1 - CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,0,38,201,1 - LTEXT "",IDC_WHITERECT,0,0,201,38 - ICON "",IDC_LOGO,159,5,20,20,SS_REALSIZEIMAGE - LTEXT "",IDC_TEXT,18,16,138,18 - LTEXT "",IDC_CAPTION,12,5,143,11 - LTEXT "->",IDC_STATIC,51,126,8,8,0,WS_EX_TRANSPARENT -END - IDD_USERINFO DIALOGEX 0, 0, 222, 132 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD EXSTYLE WS_EX_CONTROLPARENT @@ -408,7 +363,6 @@ EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN EDITTEXT IDC_MASK,7,15,137,14,ES_AUTOHSCROLL - EDITTEXT IDC_NETWORK,150,15,63,14,ES_AUTOHSCROLL CONTROL "Queries",IDC_Q,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,47,54,10 CONTROL "Messages",IDC_M,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,80,47,64,10 CONTROL "Notices",IDC_N,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,150,47,57,10 @@ -423,27 +377,29 @@ BEGIN CTEXT "(*) blank to set this mask for all networks",IDC_STATIC,7,90,206,8 END -IDD_ACCMGRUI DIALOGEX 0, 0, 186, 134 +IDD_ACCMGRUI DIALOGEX 0, 0, 186, 135 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD EXSTYLE WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - COMBOBOX IDC_SERVERCOMBO,55,5,123,90,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP - EDITTEXT IDC_SERVER,5,21,88,12,ES_AUTOHSCROLL | ES_READONLY | WS_GROUP | NOT WS_TABSTOP - EDITTEXT IDC_PORT,96,21,27,12,ES_AUTOHSCROLL | ES_READONLY | ES_NUMBER | NOT WS_TABSTOP,WS_EX_RIGHT - EDITTEXT IDC_PORT2,126,21,27,12,ES_AUTOHSCROLL | ES_READONLY | ES_NUMBER | NOT WS_TABSTOP,WS_EX_RIGHT - EDITTEXT IDC_PASS,55,38,123,12,ES_PASSWORD | ES_AUTOHSCROLL - EDITTEXT IDC_NICK,87,64,91,13,ES_AUTOHSCROLL - EDITTEXT IDC_NICK2,87,81,91,13,ES_AUTOHSCROLL - EDITTEXT IDC_NAME,87,98,91,13,ES_AUTOHSCROLL - EDITTEXT IDC_USERID,87,115,91,13,ES_AUTOHSCROLL - RTEXT "Server:",IDC_STATIC,5,7,45,8 - RTEXT "Password:",IDC_STATIC,5,41,45,8 - RTEXT "Nick",IDC_STATIC,5,66,79,8 - RTEXT "Alternative nick",IDC_STATIC,5,83,79,8 - RTEXT "Full name (e-mail)",IDC_STATIC,5,100,79,8 - RTEXT "User ID (Ident)",IDC_STATIC,5,117,79,8 - EDITTEXT IDC_SSL,155,21,23,12,ES_AUTOHSCROLL | ES_READONLY | ES_NUMBER | NOT WS_TABSTOP,WS_EX_RIGHT + EDITTEXT IDC_SERVER,87,6,91,12,ES_AUTOHSCROLL | WS_GROUP | NOT WS_TABSTOP + EDITTEXT IDC_PORT,87,22,34,12,ES_AUTOHSCROLL | ES_NUMBER | NOT WS_TABSTOP,WS_EX_RIGHT + EDITTEXT IDC_PORT2,144,22,34,12,ES_AUTOHSCROLL | ES_NUMBER | NOT WS_TABSTOP,WS_EX_RIGHT + EDITTEXT IDC_PASS,87,52,91,12,ES_PASSWORD | ES_AUTOHSCROLL + EDITTEXT IDC_NICK,87,68,91,13,ES_AUTOHSCROLL + EDITTEXT IDC_NICK2,87,84,91,13,ES_AUTOHSCROLL + EDITTEXT IDC_NAME,87,100,91,13,ES_AUTOHSCROLL + EDITTEXT IDC_USERID,87,116,91,13,ES_AUTOHSCROLL + LTEXT "Password",IDC_STATIC,5,55,79,8 + LTEXT "Nick",IDC_STATIC,5,70,79,8 + LTEXT "Alternative nick",IDC_STATIC,5,86,79,8 + LTEXT "Full name (e-mail)",IDC_STATIC,5,102,79,8 + LTEXT "User ID (Ident)",IDC_STATIC,5,118,79,8 + LTEXT "Host",IDC_STATIC,5,8,79,8 + LTEXT "Port range",IDC_STATIC,5,22,79,8 + LTEXT "->",IDC_STATIC,130,24,10,8 + LTEXT "SSL",IDC_STATIC,5,39,79,8 + COMBOBOX IDC_SSL,87,37,48,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END @@ -458,10 +414,10 @@ BEGIN IDD_PREFS_CONNECT, DIALOG BEGIN LEFTMARGIN, 2 - VERTGUIDE, 10 + VERTGUIDE, 8 VERTGUIDE, 135 VERTGUIDE, 144 - VERTGUIDE, 158 + VERTGUIDE, 157 VERTGUIDE, 210 VERTGUIDE, 233 VERTGUIDE, 237 @@ -526,21 +482,6 @@ BEGIN HORZGUIDE, 174 END - IDD_ADDSERVER, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 175 - VERTGUIDE, 127 - VERTGUIDE, 136 - VERTGUIDE, 143 - TOPMARGIN, 7 - BOTTOMMARGIN, 129 - HORZGUIDE, 20 - HORZGUIDE, 44 - HORZGUIDE, 68 - HORZGUIDE, 92 - END - IDD_LIST, DIALOG BEGIN LEFTMARGIN, 4 @@ -556,19 +497,6 @@ BEGIN HORZGUIDE, 179 END - IDD_QUICKCONN, DIALOG - BEGIN - VERTGUIDE, 12 - VERTGUIDE, 189 - BOTTOMMARGIN, 160 - HORZGUIDE, 5 - HORZGUIDE, 38 - HORZGUIDE, 54 - HORZGUIDE, 78 - HORZGUIDE, 124 - HORZGUIDE, 140 - END - IDD_USERINFO, DIALOG BEGIN LEFTMARGIN, 6 @@ -679,15 +607,15 @@ BEGIN IDD_ACCMGRUI, DIALOG BEGIN VERTGUIDE, 5 - VERTGUIDE, 50 - VERTGUIDE, 55 VERTGUIDE, 84 VERTGUIDE, 87 VERTGUIDE, 178 + BOTTOMMARGIN, 134 END END #endif // APSTUDIO_INVOKED + ///////////////////////////////////////////////////////////////////////////// // // AFX_DIALOG_LAYOUT @@ -698,6 +626,11 @@ BEGIN 0 END +IDD_ACCMGRUI AFX_DIALOG_LAYOUT +BEGIN + 0 +END + #endif // Neutral resources ///////////////////////////////////////////////////////////////////////////// diff --git a/protocols/IRCG/res/quick.ico b/protocols/IRCG/res/quick.ico deleted file mode 100644 index 9638e6e948..0000000000 Binary files a/protocols/IRCG/res/quick.ico and /dev/null differ diff --git a/protocols/IRCG/src/commandmonitor.cpp b/protocols/IRCG/src/commandmonitor.cpp index a402668e45..c3f356564a 100644 --- a/protocols/IRCG/src/commandmonitor.cpp +++ b/protocols/IRCG/src/commandmonitor.cpp @@ -599,12 +599,10 @@ bool CIrcProto::OnIrc_NOTICE(const CIrcMessage *pmsg) if (!m_ignore || !IsIgnored(pmsg->prefix.sNick, pmsg->prefix.sUser, pmsg->prefix.sHost, 'n')) { CMStringW S; CMStringW S2; - CMStringW S3; + if (pmsg->prefix.sNick.GetLength() > 0) S = pmsg->prefix.sNick; - else - S = m_info.sNetwork; - S3 = m_info.sNetwork; + if (IsChannel(pmsg->parameters[0])) S2 = pmsg->parameters[0]; else { @@ -625,7 +623,7 @@ bool CIrcProto::OnIrc_NOTICE(const CIrcMessage *pmsg) } else S2 = L""; } - DoEvent(GC_EVENT_NOTICE, S2.IsEmpty() ? nullptr : S2.c_str(), S, pmsg->parameters[1], nullptr, S3, NULL, true, false); + DoEvent(GC_EVENT_NOTICE, S2.IsEmpty() ? nullptr : S2.c_str(), S, pmsg->parameters[1], nullptr, L"IRC", NULL, true, false); } } else ShowMessage(pmsg); @@ -2338,9 +2336,8 @@ bool CIrcProto::DoOnConnect(const CIrcMessage*) PostIrcMessage(L"/AWAY " + m_statusMessage.Mid(0, 450)); if (m_perform) { - DoPerform("ALL NETWORKS"); if (IsConnected()) { - DoPerform(_T2A(m_info.sNetwork)); + DoPerform("Connect"); switch (Temp) { case ID_STATUS_FREECHAT: DoPerform("Event: Free for chat"); break; case ID_STATUS_ONLINE: DoPerform("Event: Available"); break; @@ -2418,19 +2415,14 @@ int CIrcProto::IsIgnored(CMStringW user, char type) return i + 1; bool bUserContainsWild = (wcschr(user, '*') != nullptr || wcschr(user, '?') != nullptr); - if (!bUserContainsWild && WCCmp(C.mask, user) || - bUserContainsWild && !mir_wstrcmpi(user, C.mask)) { + if (!bUserContainsWild && WCCmp(C.mask, user) || bUserContainsWild && !mir_wstrcmpi(user, C.mask)) { if (C.flags.IsEmpty() || C.flags[0] != '+') continue; if (!wcschr(C.flags, type)) continue; - if (C.network.IsEmpty()) - return i + 1; - - if (IsConnected() && !mir_wstrcmpi(C.network, m_info.sNetwork)) - return i + 1; + return i + 1; } } @@ -2444,7 +2436,7 @@ bool CIrcProto::AddIgnore(const wchar_t* mask, const wchar_t* flags, const wchar RewriteIgnoreSettings(); if (m_ignoreDlg) - m_ignoreDlg->RebuildList(); + m_ignoreDlg->Update(); return true; } @@ -2457,6 +2449,6 @@ bool CIrcProto::RemoveIgnore(const wchar_t* mask) RewriteIgnoreSettings(); if (m_ignoreDlg) - m_ignoreDlg->RebuildList(); + m_ignoreDlg->Update(); return true; } diff --git a/protocols/IRCG/src/input.cpp b/protocols/IRCG/src/input.cpp index 934d56abd5..fe5f53ebde 100644 --- a/protocols/IRCG/src/input.cpp +++ b/protocols/IRCG/src/input.cpp @@ -170,7 +170,6 @@ CMStringW CIrcProto::DoIdentifiers(CMStringW text, const wchar_t*) text.Replace(L"%module", _A2T(m_szModuleName)); text.Replace(L"%name", m_name); text.Replace(L"%newl", L"\r\n"); - text.Replace(L"%network", m_info.sNetwork.c_str()); text.Replace(L"%me", m_info.sNick.c_str()); char mirver[100]; @@ -294,7 +293,7 @@ BOOL CIrcProto::DoHardcodedCommand(CMStringW text, wchar_t *window, MCONTACT hCo CMStringW szNetwork; if (three.IsEmpty()) - szNetwork = m_info.sNetwork; + szNetwork = "IRC"; else szNetwork = three; diff --git a/protocols/IRCG/src/irc_dlg.h b/protocols/IRCG/src/irc_dlg.h index b070217fd7..082973dd2f 100644 --- a/protocols/IRCG/src/irc_dlg.h +++ b/protocols/IRCG/src/irc_dlg.h @@ -21,10 +21,19 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #pragma once +struct CIrcBaseDlg : public CProtoDlgBase +{ + CIrcBaseDlg(CIrcProto *ppro, int dlgId) : + CProtoDlgBase(ppro, dlgId) + {} + + virtual void Update() {}; +}; + ///////////////////////////////////////////////////////////////////////////////////////// // Dialogs -struct CMessageBoxDlg : public CProtoDlgBase < CIrcProto > +struct CMessageBoxDlg : public CIrcBaseDlg { DCCINFO *pdci; @@ -33,7 +42,7 @@ struct CMessageBoxDlg : public CProtoDlgBase < CIrcProto > bool OnApply() override; }; -struct CCoolIrcDlg : public CProtoDlgBase < CIrcProto > +struct CCoolIrcDlg : public CIrcBaseDlg { CCoolIrcDlg(CIrcProto* _pro, int dlgId); @@ -79,7 +88,7 @@ struct CNickDlg : public CCoolIrcDlg void OnDestroy() override; }; -struct CListDlg : public CProtoDlgBase < CIrcProto > +struct CListDlg : public CIrcBaseDlg { CListDlg(CIrcProto* _pro); @@ -111,21 +120,6 @@ struct CJoinDlg : public CCoolIrcDlg void OnDestroy() override; }; -struct CQuickDlg : public CCoolIrcDlg -{ - CQuickDlg(CIrcProto* _pro); - - bool OnInitDialog() override; - bool OnApply() override; - void OnDestroy() override; - - CCtrlCombo m_serverCombo; - void OnServerCombo(CCtrlData*); - -private: - struct SERVER_INFO* m_si; -}; - struct CManagerDlg : public CCoolIrcDlg { CManagerDlg(CIrcProto* _pro); @@ -176,128 +170,3 @@ struct CQuestionDlg : public CCoolIrcDlg private: CManagerDlg* m_owner; }; - -///////////////////////////////////////////////////////////////////////////////////////// -// options - -//---- the first property page: Account ------------------------------------------------- - -struct CConnectPrefsDlg : public CProtoDlgBase < CIrcProto > -{ - bool m_serverlistModified; - - CCtrlCombo m_serverCombo; - CCtrlEdit m_server, m_port, m_port2, m_pass; - CCtrlMButton m_add, m_edit, m_del; - CCtrlEdit m_nick, m_nick2, m_name, m_userID; - - CCtrlCheck m_ident, m_identTimer; - CCtrlEdit m_identSystem, m_identPort; - - CCtrlCheck m_forceVisible, m_rejoinOnKick, m_rejoinChannels, m_disableError, - m_address, m_useServer, m_showServer, m_keepAlive, m_autoJoin, - m_oldStyle, m_onlineNotif, m_channelAway, m_enableServer, m_useSasl; - CCtrlEdit m_onlineTimer, m_limit, m_ssl; - CCtrlSpin m_spin1, m_spin2; - - CConnectPrefsDlg(CIrcProto* _pro); - - bool OnInitDialog() override; - bool OnApply() override; - - void OnServerCombo(CCtrlData*); - void OnAddServer(CCtrlButton*); - void OnDeleteServer(CCtrlButton*); - void OnEditServer(CCtrlButton*); - void OnStartup(CCtrlData*); - void OnIdent(CCtrlData*); - void OnUseServer(CCtrlData*); - void OnOnlineNotif(CCtrlData*); - void OnChannelAway(CCtrlData*); -}; - -//---- the second property page: DCC/CTCP ----------------------------------------------- - -struct CCtcpPrefsDlg : public CProtoDlgBase < CIrcProto > -{ - CCtrlCombo m_combo; - CCtrlCheck m_slow, m_fast, m_disc, m_passive, m_sendNotice, m_enableIP, m_fromServer; - CCtrlEdit m_ip, m_userInfo; - CCtrlCheck m_radio1, m_radio2, m_radio3; - - CCtcpPrefsDlg(CIrcProto* _pro); - - bool OnInitDialog() override; - bool OnApply() override; - - void OnClicked(CCtrlData*); -}; - -//---- the third property page: Other --------------------------------------------------- - -struct COtherPrefsDlg : public CProtoDlgBase < CIrcProto > -{ - bool m_performlistModified; - - CCtrlButton m_url; - CCtrlMButton m_add, m_delete; - CCtrlCombo m_performCombo, m_codepage; - CCtrlEdit m_pertormEdit, m_quitMessage, m_alias; - CCtrlCheck m_perform, m_scripting, m_autodetect; - - COtherPrefsDlg(CIrcProto* _pro); - - bool OnInitDialog() override; - bool OnApply() override; - void OnDestroy() override; - - void OnPerformCombo(CCtrlData*); - void OnCodePage(CCtrlData*); - void OnPerformEdit(CCtrlData*); - void OnPerform(CCtrlData*); - void OnAdd(CCtrlButton*); - void OnDelete(CCtrlButton*); - - void addPerformComboValue(int idx, const char* szValueName); -}; - -//---- the fourth property page: Ignore ------------------------------------------------- - -struct CIgnorePrefsDlg : public CProtoDlgBase < CIrcProto > -{ - CCtrlMButton m_add, m_edit, m_del; - CCtrlCheck m_enable, m_ignoreChat, m_ignoreFile, m_ignoreChannel, m_ignoreUnknown; - CCtrlListView m_list; - - CIgnorePrefsDlg(CIrcProto* _pro); - - bool OnInitDialog() override; - bool OnApply() override; - void OnDestroy() override; - - INT_PTR DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) override; - - void List_OnColumnClick(CCtrlListView::TEventInfo*); - void OnEnableIgnore(CCtrlData*); - void OnIgnoreChat(CCtrlData*); - void OnAdd(CCtrlButton*); - void OnEdit(CCtrlButton*); - void OnDelete(CCtrlButton*); - - void FixButtons(void); - void RebuildList(void); - void UpdateList(void); -}; - -struct CAddIgnoreDlg : public CProtoDlgBase < CIrcProto > -{ - CIgnorePrefsDlg* m_owner; - - wchar_t szOldMask[500]; - - CAddIgnoreDlg(CIrcProto* _pro, const wchar_t* mask, CIgnorePrefsDlg* parent); - - bool OnInitDialog() override; - bool OnApply() override; - void OnDestroy() override; -}; diff --git a/protocols/IRCG/src/irclib.cpp b/protocols/IRCG/src/irclib.cpp index 4c4ac7e045..50a5b51079 100644 --- a/protocols/IRCG/src/irclib.cpp +++ b/protocols/IRCG/src/irclib.cpp @@ -200,7 +200,7 @@ bool CIrcProto::Connect(const CIrcSessionInfo& info) con = Netlib_OpenConnection(m_hNetlibUser, &ncon); if (con == nullptr) { wchar_t szTemp[300]; - mir_snwprintf(szTemp, L"%c5%s %c%s%c (%S: %u).", irc::COLOR, TranslateT("Failed to connect to"), irc::BOLD, m_sessionInfo.sNetwork.c_str(), irc::BOLD, m_sessionInfo.sServer.c_str(), m_sessionInfo.iPort); + mir_snwprintf(szTemp, L"%c%s (%S: %u).", irc::COLOR, TranslateT("Failed to connect to"), m_sessionInfo.sServer.c_str(), m_sessionInfo.iPort); DoEvent(GC_EVENT_INFORMATION, SERVERWINDOW, nullptr, szTemp, nullptr, nullptr, NULL, true, false); return false; } @@ -619,7 +619,6 @@ CIrcSessionInfo::CIrcSessionInfo(const CIrcSessionInfo& si) : bIdentServer(si.bIdentServer), m_iSSL(si.m_iSSL), sIdentServerType(si.sIdentServerType), - sNetwork(si.sNetwork), iIdentServerPort(si.iIdentServerPort) { } @@ -638,7 +637,6 @@ void CIrcSessionInfo::Reset() m_iSSL = 0; sIdentServerType = L""; iIdentServerPort = 0; - sNetwork = L""; } //////////////////////////////////////////////////////////////////// diff --git a/protocols/IRCG/src/irclib.h b/protocols/IRCG/src/irclib.h index 7677956762..9b32b78ebf 100644 --- a/protocols/IRCG/src/irclib.h +++ b/protocols/IRCG/src/irclib.h @@ -92,14 +92,13 @@ private : struct CIrcSessionInfo { - CMStringA sServer; + CMStringA sServer; CMStringW sServerName; CMStringW sNick; CMStringW sUserID; CMStringW sFullName; - CMStringA sPassword; + CMStringA sPassword; CMStringW sIdentServerType; - CMStringW sNetwork; bool bIdentServer; bool bNickFlag; int m_iSSL; diff --git a/protocols/IRCG/src/ircproto.cpp b/protocols/IRCG/src/ircproto.cpp index 2d6a97709c..dc96b7342a 100644 --- a/protocols/IRCG/src/ircproto.cpp +++ b/protocols/IRCG/src/ircproto.cpp @@ -46,7 +46,6 @@ CIrcProto::CIrcProto(const char* szModuleName, const wchar_t* tszUserName) : CreateProtoService(PS_LEAVECHAT, &CIrcProto::OnLeaveChat); CreateProtoService(IRC_JOINCHANNEL, &CIrcProto::OnJoinMenuCommand); - CreateProtoService(IRC_QUICKCONNECT, &CIrcProto::OnQuickConnectMenuCommand); CreateProtoService(IRC_CHANGENICK, &CIrcProto::OnChangeNickMenuCommand); CreateProtoService(IRC_SHOWLIST, &CIrcProto::OnShowListMenuCommand); CreateProtoService(IRC_SHOWSERVER, &CIrcProto::OnShowServerMenuCommand); @@ -171,19 +170,6 @@ CIrcProto::~CIrcProto() //////////////////////////////////////////////////////////////////////////////////////// // OnModulesLoaded - performs hook registration -static int sttCheckPerform(const char *szSetting, void *lParam) -{ - if (!_strnicmp(szSetting, "PERFORM:", 8)) { - CMStringA s = szSetting; - s.MakeUpper(); - if (s != szSetting) { - OBJLIST* p = (OBJLIST*)lParam; - p->insert(new CMStringA(szSetting)); - } - } - return 0; -} - void CIrcProto::OnModulesLoaded() { wchar_t name[128]; @@ -205,54 +191,24 @@ void CIrcProto::OnModulesLoaded() nlu.szDescriptiveName.w = name; hNetlibDCC = Netlib_RegisterUser(&nlu); - m_pServer = Chat_NewSession(GCW_SERVER, m_szModuleName, SERVERWINDOW, _A2T(m_network)); + m_pServer = Chat_NewSession(GCW_SERVER, m_szModuleName, SERVERWINDOW, TranslateT("Server window")); if (m_useServer && !m_hideServerWindow) Chat_Control(m_szModuleName, SERVERWINDOW, WINDOW_VISIBLE); else Chat_Control(m_szModuleName, SERVERWINDOW, WINDOW_HIDDEN); - wchar_t szTemp[MAX_PATH]; - mir_snwprintf(szTemp, L"%%miranda_path%%\\Plugins\\%S_perform.ini", m_szModuleName); - wchar_t *szLoadFileName = Utils_ReplaceVarsW(szTemp); - char* pszPerformData = IrcLoadFile(szLoadFileName); - if (pszPerformData != nullptr) { - char *p1 = pszPerformData, *p2 = pszPerformData; - while ((p1 = strstr(p2, "NETWORK: ")) != nullptr) { - p1 += 9; - p2 = strchr(p1, '\n'); - CMStringA sNetwork(p1, int(p2 - p1 - 1)); - sNetwork.MakeUpper(); - p1 = p2; - p2 = strstr(++p1, "\nNETWORK: "); - if (!p2) - p2 = p1 + mir_strlen(p1) - 1; - if (p1 == p2) - break; + ptrA szNetwork(getStringA("Network")); + if (szNetwork) { + CMStringA szSetting(FORMAT, "PERFORM:%s", szNetwork); + szSetting.MakeUpper(); - *p2++ = 0; - setString(("PERFORM:" + sNetwork).c_str(), rtrim(p1)); + CMStringW wszValue(getMStringW(szSetting)); + if (!wszValue.IsEmpty()) { + setWString("PERFORM:EVENT: CONNECT", wszValue); + delSetting(szSetting); } - delete[] pszPerformData; - ::_wremove(szLoadFileName); - } - mir_free(szLoadFileName); - - if (!getByte("PerformConversionDone", 0)) { - OBJLIST performToConvert(10); - db_enum_settings(NULL, sttCheckPerform, m_szModuleName, &performToConvert); - - for (auto &it : performToConvert) { - DBVARIANT dbv; - if (!getWString(*it, &dbv)) { - db_unset(0, m_szModuleName, *it); - it->MakeUpper(); - setWString(*it, dbv.pwszVal); - db_free(&dbv); - } - } - - setByte("PerformConversionDone", 1); + delSetting("Network"); } InitIgnore(); @@ -664,25 +620,6 @@ int CIrcProto::SetStatus(int iNewStatus) int CIrcProto::SetStatusInternal(int iNewStatus, bool bIsInternal) { - if (iNewStatus != ID_STATUS_OFFLINE && !m_network[0]) { - if (m_nick[0] && !m_disableDefaultServer) { - if (m_quickDlg == nullptr) { - m_quickDlg = new CQuickDlg(this); - m_quickComboSelection = m_serverComboSelection + 1; - m_quickDlg->Show(); - } - - HWND hwnd = m_quickDlg->GetHwnd(); - SetWindowTextA(hwnd, "Miranda IRC"); - SetDlgItemText(hwnd, IDC_TEXT, TranslateT("Please choose an IRC-network to go online. This network will be the default.")); - SetDlgItemText(hwnd, IDC_CAPTION, TranslateT("Default network")); - Window_SetIcon_IcoLib(hwnd, g_plugin.getIconHandle(IDI_MAIN)); - ShowWindow(hwnd, SW_SHOW); - SetActiveWindow(hwnd); - } - return 0; - } - if (iNewStatus != ID_STATUS_OFFLINE && !m_nick[0] || !m_userID[0] || !m_name[0]) { Clist_TrayNotifyW(m_szModuleName, TranslateT("IRC error"), TranslateT("Connection cannot be established! You have not completed all necessary fields (Nickname, User ID and Full name)."), NIIF_ERROR, 15000); return 0; diff --git a/protocols/IRCG/src/ircproto.h b/protocols/IRCG/src/ircproto.h index 6c344ef45d..bbf980d830 100644 --- a/protocols/IRCG/src/ircproto.h +++ b/protocols/IRCG/src/ircproto.h @@ -87,7 +87,6 @@ struct CIrcProto : public PROTO INT_PTR __cdecl OnMenuDisconnect(WPARAM, LPARAM); INT_PTR __cdecl OnMenuIgnore(WPARAM, LPARAM); INT_PTR __cdecl OnMenuWhois(WPARAM, LPARAM); - INT_PTR __cdecl OnQuickConnectMenuCommand(WPARAM, LPARAM); INT_PTR __cdecl OnShowListMenuCommand(WPARAM, LPARAM); INT_PTR __cdecl OnShowServerMenuCommand(WPARAM, LPARAM); @@ -105,7 +104,6 @@ struct CIrcProto : public PROTO char m_serverName[100]; char m_password[500]; wchar_t m_identSystem[10]; - char m_network[30]; char m_portStart[10]; char m_portEnd[10]; int m_iSSL; @@ -122,7 +120,6 @@ struct CIrcProto : public PROTO char m_myLocalHost[50]; WORD m_myLocalPort; wchar_t *m_alias; - int m_serverComboSelection; int m_quickComboSelection; int m_onlineNotificationTime; int m_onlineNotificationLimit; @@ -136,7 +133,6 @@ struct CIrcProto : public PROTO BYTE m_hideServerWindow; BYTE m_ident; BYTE m_identTimer; - BYTE m_disableDefaultServer; BYTE m_autoOnlineNotification; BYTE m_sendKeepAlive; BYTE m_joinOnInvite; @@ -189,9 +185,8 @@ struct CIrcProto : public PROTO CListDlg *m_listDlg; CNickDlg *m_nickDlg; CWhoisDlg *m_whoisDlg; - CQuickDlg *m_quickDlg; CManagerDlg *m_managerDlg; - CIgnorePrefsDlg *m_ignoreDlg; + CIrcBaseDlg *m_ignoreDlg; int m_noOfChannels, m_manualWhoisCount; CMStringA sChannelModes, sUserModes; diff --git a/protocols/IRCG/src/main.cpp b/protocols/IRCG/src/main.cpp index 69ffe7aa1e..c80a013e46 100644 --- a/protocols/IRCG/src/main.cpp +++ b/protocols/IRCG/src/main.cpp @@ -24,15 +24,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. CMPlugin g_plugin; -///////////////////////////////////////////////////////////////////////////////////////// - -static int CompareServers(const SERVER_INFO* p1, const SERVER_INFO* p2) -{ - return mir_strcmp(p1->m_name, p2->m_name); -} - -OBJLIST g_servers(20, CompareServers); - void UninitTimers(void); ///////////////////////////////////////////////////////////////////////////////////////// @@ -67,7 +58,6 @@ extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = { MIID_PROTOC int CMPlugin::Load() { InitIcons(); - InitServers(); InitContactMenus(); return 0; } diff --git a/protocols/IRCG/src/options.cpp b/protocols/IRCG/src/options.cpp index 4390e41d31..74df705b51 100644 --- a/protocols/IRCG/src/options.cpp +++ b/protocols/IRCG/src/options.cpp @@ -22,7 +22,16 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "stdafx.h" #include -static const CIrcProto *pZero = nullptr; +static void removeSpaces(wchar_t* p) +{ + while (*p) { + if (*p == ' ') + memmove(p, p + 1, sizeof(wchar_t)*mir_wstrlen(p)); + p++; + } +} + +///////////////////////////////////////////////////////////////////////////////////////// void CIrcProto::ReadSettings(TDbSetting *sets, int count) { @@ -112,78 +121,6 @@ void CIrcProto::WriteSettings(TDbSetting *sets, int count) } } -///////////////////////////////////////////////////////////////////////////////////////// - -static int sttServerEnum(const char *szSetting, void *) -{ - CMStringA szValue(db_get_sm(0, SERVERSMODULE, szSetting)); - if (szValue.IsEmpty()) - return 0; - - int iStart = 0; - CMStringA szName, szAddress, szPort, szGroup; - szName = szValue.Tokenize(":", iStart); // skip SERVER - szAddress = szValue.Tokenize(":", iStart); - if (szName.IsEmpty() || szAddress.IsEmpty()) - return 0; - - szPort = szValue.Tokenize(":", iStart); - szGroup = szValue.Tokenize(":", iStart); - - SERVER_INFO *pData = new SERVER_INFO; - pData->m_name = mir_strdup(szSetting); - - pData->m_iSSL = 0; - if (!_strnicmp(szAddress, "SSL", 3)) { - if (szAddress[3] == '1') - pData->m_iSSL = 1; - else if (szAddress[3] == '2') - pData->m_iSSL = 2; - szAddress.Delete(0, 4); - } - - pData->m_address = mir_strdup(szAddress); - - for (iStart = 0; iStart < szPort.GetLength(); iStart++) - if (szPort[iStart] == 'G' || szPort[iStart] == '-') - break; - - pData->m_portStart = atoi(szPort.Left(iStart)); - - if (szPort[iStart] == 'G') - pData->m_portEnd = pData->m_portStart; - else { - int iEnd = szPort.Find('G', ++iStart); - if (iEnd == -1) - return 0; - - pData->m_portEnd = atoi(szPort.Mid(iStart, iEnd - iStart)); - } - - pData->m_group = mir_strdup(szGroup); - - g_servers.insert(pData); - return 0; -} - -void RereadServers() -{ - g_servers.destroy(); - - db_enum_settings(NULL, sttServerEnum, SERVERSMODULE); -} - -///////////////////////////////////////////////////////////////////////////////////////// - -static void removeSpaces(wchar_t* p) -{ - while (*p) { - if (*p == ' ') - memmove(p, p + 1, sizeof(wchar_t)*mir_wstrlen(p)); - p++; - } -} - ///////////////////////////////////////////////////////////////////////////////////////// // add icons to the skinning module @@ -198,7 +135,6 @@ static IconItem iconList[] = { LPGEN("Ignore"), "block", IDI_BLOCK, 0 }, { LPGEN("Channel list"), "list", IDI_LIST, 0 }, { LPGEN("Channel manager"), "manager", IDI_MANAGER, 0 }, - { LPGEN("Quick connect"), "quick", IDI_QUICK, 0 }, { LPGEN("Server window"), "server", IDI_SERVER, 0 }, { LPGEN("Show channel"), "show", IDI_SHOW, 0 }, { LPGEN("Question"), "question",IDI_IRCQUESTION, 0 }, @@ -257,148 +193,28 @@ static BOOL CALLBACK sttLangAddCallback(wchar_t *str) return TRUE; } -///////////////////////////////////////////////////////////////////////////////////////// -// 'Add server' dialog - -static int sttRequiredFields[] = { IDC_ADD_SERVER, IDC_ADD_ADDRESS, IDC_ADD_PORT, IDC_ADD_PORT2, IDC_ADD_COMBO }; - -struct CServerDlg : public CProtoDlgBase -{ - CConnectPrefsDlg *m_owner; - int m_action; - - CCtrlEdit m_server, m_address, m_port, m_port2; - CCtrlCombo m_groupCombo; - - CServerDlg(CIrcProto *_pro, CConnectPrefsDlg *_owner, int _action) - : CProtoDlgBase(_pro, IDD_ADDSERVER), - m_owner(_owner), - m_action(_action), - m_groupCombo(this, IDC_ADD_COMBO), - m_address(this, IDC_ADD_ADDRESS), - m_server(this, IDC_ADD_SERVER), - m_port(this, IDC_ADD_PORT), - m_port2(this, IDC_ADD_PORT2) - { - m_hwndParent = _owner->GetHwnd(); - } - - bool OnInitDialog() override - { - int i = m_owner->m_serverCombo.GetCount(); - for (int index = 0; index < i; index++) { - SERVER_INFO *pData = (SERVER_INFO*)m_owner->m_serverCombo.GetItemData(index); - if (m_groupCombo.FindStringA(pData->m_group, -1, true) == CB_ERR) - m_groupCombo.AddStringA(pData->m_group); - } - - if (m_action == 2) { - int j = m_owner->m_serverCombo.GetCurSel(); - SERVER_INFO *pData = (SERVER_INFO*)m_owner->m_serverCombo.GetItemData(j); - m_address.SetTextA(pData->m_address); - m_groupCombo.SetTextA(pData->m_group); - m_port.SetInt(pData->m_portStart); - m_port2.SetInt(pData->m_portEnd); - - char *p = strstr(pData->m_name, ": "); - if (p) - m_server.SetTextA(p + 2); - - if (pData->m_iSSL == 0) - CheckDlgButton(m_hwnd, IDC_OFF, BST_CHECKED); - if (pData->m_iSSL == 1) - CheckDlgButton(m_hwnd, IDC_AUTO, BST_CHECKED); - if (pData->m_iSSL == 2) - CheckDlgButton(m_hwnd, IDC_ON, BST_CHECKED); - } - else { - CheckDlgButton(m_hwnd, IDC_OFF, BST_CHECKED); - m_port.SetInt(6667); - m_port2.SetInt(6667); - } - - int bEnableSsl = TRUE; - EnableWindow(GetDlgItem(m_hwnd, IDC_ON), bEnableSsl); - EnableWindow(GetDlgItem(m_hwnd, IDC_OFF), bEnableSsl); - EnableWindow(GetDlgItem(m_hwnd, IDC_AUTO), bEnableSsl); - - SetFocus(m_groupCombo.GetHwnd()); - return true; - } - - bool OnApply() override - { - for (auto &it : sttRequiredFields) - if (!GetWindowTextLength(GetDlgItem(m_hwnd, it))) { - MessageBox(m_hwnd, TranslateT("Please complete all fields"), TranslateT("IRC error"), MB_OK | MB_ICONERROR); - return false; - } - - SERVER_INFO *pData; - if (m_action == 2) { - int j = m_owner->m_serverCombo.GetCurSel(); - pData = (SERVER_INFO*)m_owner->m_serverCombo.GetItemData(j); - } - else pData = new SERVER_INFO; - - pData->m_iSSL = 0; - if (IsDlgButtonChecked(m_hwnd, IDC_ON)) - pData->m_iSSL = 2; - if (IsDlgButtonChecked(m_hwnd, IDC_AUTO)) - pData->m_iSSL = 1; - - pData->m_portStart = m_port.GetInt(); - pData->m_portEnd = m_port2.GetInt(); - pData->m_address = rtrim(m_address.GetTextA()); - pData->m_group = m_groupCombo.GetTextA(); - pData->m_name = m_server.GetTextA(); - - char temp[255]; - mir_snprintf(temp, "%s: %s", pData->m_group, pData->m_name); - mir_free(pData->m_name); - pData->m_name = mir_strdup(temp); - - int iItem = m_owner->m_serverCombo.AddStringA(pData->m_name, (LPARAM)pData); - m_owner->m_serverCombo.SetCurSel(iItem); - m_owner->OnServerCombo(nullptr); - - m_owner->m_serverlistModified = true; - return true; - } - - void OnDestroy() override - { - m_owner->m_serverCombo.Enable(); - m_owner->m_add.Enable(); - m_owner->m_edit.Enable(); - m_owner->m_del.Enable(); - } -}; - ///////////////////////////////////////////////////////////////////////////////////////// // 'Connect preferences' dialog static TDbSetting ConnectSettings[] = { - { FIELD_OFFSET(CIrcProto, m_userID), "UserID", DBVT_WCHAR, _countof(pZero->m_userID) }, - { FIELD_OFFSET(CIrcProto, m_identSystem), "IdentSystem", DBVT_WCHAR, _countof(pZero->m_identSystem) }, - { FIELD_OFFSET(CIrcProto, m_identPort), "IdentPort", DBVT_WCHAR, _countof(pZero->m_identPort) }, - - { FIELD_OFFSET(CIrcProto, m_serverName), "ServerName", DBVT_ASCIIZ, _countof(pZero->m_serverName) }, - { FIELD_OFFSET(CIrcProto, m_portStart), "PortStart", DBVT_ASCIIZ, _countof(pZero->m_portStart) }, - { FIELD_OFFSET(CIrcProto, m_portEnd), "PortEnd", DBVT_ASCIIZ, _countof(pZero->m_portEnd) }, - { FIELD_OFFSET(CIrcProto, m_password), "Password", DBVT_ASCIIZ, _countof(pZero->m_password) }, + { FIELD_OFFSET(CIrcProto, m_userID), "UserID", DBVT_WCHAR, _countof(CIrcProto::m_userID) }, + { FIELD_OFFSET(CIrcProto, m_identSystem), "IdentSystem", DBVT_WCHAR, _countof(CIrcProto::m_identSystem) }, + { FIELD_OFFSET(CIrcProto, m_identPort), "IdentPort", DBVT_WCHAR, _countof(CIrcProto::m_identPort) }, + + { FIELD_OFFSET(CIrcProto, m_serverName), "ServerName", DBVT_ASCIIZ, _countof(CIrcProto::m_serverName) }, + { FIELD_OFFSET(CIrcProto, m_portStart), "PortStart", DBVT_ASCIIZ, _countof(CIrcProto::m_portStart) }, + { FIELD_OFFSET(CIrcProto, m_portEnd), "PortEnd", DBVT_ASCIIZ, _countof(CIrcProto::m_portEnd) }, + { FIELD_OFFSET(CIrcProto, m_password), "Password", DBVT_ASCIIZ, _countof(CIrcProto::m_password) }, { FIELD_OFFSET(CIrcProto, m_joinOnInvite), "JoinOnInvite", DBVT_BYTE }, - { FIELD_OFFSET(CIrcProto, m_network), "Network", DBVT_ASCIIZ, _countof(pZero->m_network) }, { FIELD_OFFSET(CIrcProto, m_iSSL), "UseSSL", DBVT_BYTE }, { FIELD_OFFSET(CIrcProto, m_onlineNotificationTime) , "OnlineNotificationTime", DBVT_WORD, 0, 30 }, { FIELD_OFFSET(CIrcProto, m_onlineNotificationLimit) , "OnlineNotificationLimit", DBVT_WORD, 0, 50 }, { FIELD_OFFSET(CIrcProto, m_channelAwayNotification), "ChannelAwayNotification", DBVT_BYTE, 0, 1 }, - { FIELD_OFFSET(CIrcProto, m_nick), "Nick", DBVT_WCHAR, _countof(pZero->m_nick) }, - { FIELD_OFFSET(CIrcProto, m_pNick), "PNick", DBVT_WCHAR, _countof(pZero->m_pNick) }, - { FIELD_OFFSET(CIrcProto, m_alternativeNick), "AlernativeNick", DBVT_WCHAR, _countof(pZero->m_alternativeNick) }, - { FIELD_OFFSET(CIrcProto, m_name), "Name", DBVT_WCHAR, _countof(pZero->m_name) }, - { FIELD_OFFSET(CIrcProto, m_disableDefaultServer), "DisableDefaultServer", DBVT_BYTE }, + { FIELD_OFFSET(CIrcProto, m_nick), "Nick", DBVT_WCHAR, _countof(CIrcProto::m_nick) }, + { FIELD_OFFSET(CIrcProto, m_pNick), "PNick", DBVT_WCHAR, _countof(CIrcProto::m_pNick) }, + { FIELD_OFFSET(CIrcProto, m_alternativeNick), "AlernativeNick", DBVT_WCHAR, _countof(CIrcProto::m_alternativeNick) }, + { FIELD_OFFSET(CIrcProto, m_name), "Name", DBVT_WCHAR, _countof(CIrcProto::m_name) }, { FIELD_OFFSET(CIrcProto, m_ident), "Ident", DBVT_BYTE }, { FIELD_OFFSET(CIrcProto, m_identTimer), "IdentTimer", DBVT_BYTE }, { FIELD_OFFSET(CIrcProto, m_forceVisible), "ForceVisible", DBVT_BYTE }, @@ -410,492 +226,360 @@ static TDbSetting ConnectSettings[] = { FIELD_OFFSET(CIrcProto, m_useServer), "UseServer", DBVT_BYTE, 0, 1 }, { FIELD_OFFSET(CIrcProto, m_bUseSASL), "UseSASL", DBVT_BYTE }, { FIELD_OFFSET(CIrcProto, m_hideServerWindow), "HideServerWindow", DBVT_BYTE, 0, 1 }, - { FIELD_OFFSET(CIrcProto, m_serverComboSelection), "ServerComboSelection", DBVT_DWORD, 0 }, { FIELD_OFFSET(CIrcProto, m_sendKeepAlive), "SendKeepAlive", DBVT_BYTE, 0, 1 }, { FIELD_OFFSET(CIrcProto, m_autoOnlineNotification), "AutoOnlineNotification", DBVT_BYTE }, }; -CConnectPrefsDlg::CConnectPrefsDlg(CIrcProto *_pro) - : CProtoDlgBase(_pro, IDD_PREFS_CONNECT), - m_serverCombo(this, IDC_SERVERCOMBO), - m_server(this, IDC_SERVER), - m_port(this, IDC_PORT), - m_port2(this, IDC_PORT2), - m_pass(this, IDC_PASS), - m_add(this, IDC_ADDSERVER, g_plugin.getIcon(IDI_ADD), LPGEN("Add a new network")), - m_edit(this, IDC_EDITSERVER, g_plugin.getIcon(IDI_EDIT), LPGEN("Edit this network")), - m_del(this, IDC_DELETESERVER, g_plugin.getIcon(IDI_DELETE), LPGEN("Delete this network")), - m_nick(this, IDC_NICK), - m_nick2(this, IDC_NICK2), - m_name(this, IDC_NAME), - m_userID(this, IDC_USERID), - m_ident(this, IDC_IDENT), - m_identSystem(this, IDC_IDENTSYSTEM), - m_identPort(this, IDC_IDENTPORT), - m_identTimer(this, IDC_IDENT_TIMED), - m_forceVisible(this, IDC_FORCEVISIBLE), - m_rejoinOnKick(this, IDC_REJOINONKICK), - m_rejoinChannels(this, IDC_REJOINCHANNELS), - m_disableError(this, IDC_DISABLEERROR), - m_address(this, IDC_ADDRESS), - m_useServer(this, IDC_USESERVER), - m_showServer(this, IDC_SHOWSERVER), - m_keepAlive(this, IDC_KEEPALIVE), - m_autoJoin(this, IDC_AUTOJOIN), - m_oldStyle(this, IDC_OLDSTYLE), - m_useSasl(this, IDC_SASL), - m_onlineNotif(this, IDC_ONLINENOTIF), - m_channelAway(this, IDC_CHANNELAWAY), - m_enableServer(this, IDC_STARTUP), - m_onlineTimer(this, IDC_ONLINETIMER), - m_limit(this, IDC_LIMIT), - m_spin1(this, IDC_SPIN1, 999, 20), - m_spin2(this, IDC_SPIN2, 200), - m_ssl(this, IDC_SSL), - m_serverlistModified(false) -{ - m_serverCombo.OnChange = Callback(this, &CConnectPrefsDlg::OnServerCombo); - m_add.OnClick = Callback(this, &CConnectPrefsDlg::OnAddServer); - m_del.OnClick = Callback(this, &CConnectPrefsDlg::OnDeleteServer); - m_edit.OnClick = Callback(this, &CConnectPrefsDlg::OnEditServer); - m_enableServer.OnChange = Callback(this, &CConnectPrefsDlg::OnStartup); - m_ident.OnChange = Callback(this, &CConnectPrefsDlg::OnIdent); - m_useServer.OnChange = Callback(this, &CConnectPrefsDlg::OnUseServer); - m_onlineNotif.OnChange = Callback(this, &CConnectPrefsDlg::OnOnlineNotif); - m_channelAway.OnChange = Callback(this, &CConnectPrefsDlg::OnChannelAway); -} - -bool CConnectPrefsDlg::OnInitDialog() +class CConnectPrefsDlg : public CIrcBaseDlg { - m_proto->m_hwndConnect = m_hwnd; - - // Fill the servers combo box and create SERVER_INFO structures - for (auto &it : g_servers) - m_serverCombo.AddStringA(it->m_name, LPARAM(it)); - - m_serverCombo.SetCurSel(m_proto->m_serverComboSelection); - m_server.SetTextA(m_proto->m_serverName); - m_port.SetTextA(m_proto->m_portStart); - m_port2.SetTextA(m_proto->m_portEnd); - - if (m_proto->m_iSSL == 0) - m_ssl.SetText(TranslateT("Off")); - if (m_proto->m_iSSL == 1) - m_ssl.SetText(TranslateT("Auto")); - if (m_proto->m_iSSL == 2) - m_ssl.SetText(TranslateT("On")); - - if (m_proto->m_serverComboSelection != -1) { - SERVER_INFO *pData = (SERVER_INFO*)m_serverCombo.GetItemData(m_proto->m_serverComboSelection); - if ((INT_PTR)pData != CB_ERR) { - m_server.SetTextA(pData->m_address); - m_port.SetInt(pData->m_portStart); - m_port2.SetInt(pData->m_portEnd); - } - } + CCtrlEdit m_server, m_port, m_port2, m_pass; + CCtrlEdit m_nick, m_nick2, m_name, m_userID; + CCtrlCombo m_ssl; - m_spin1.SetPosition(m_proto->m_onlineNotificationTime); - m_spin2.SetPosition(m_proto->m_onlineNotificationLimit); - - m_nick.SetText(m_proto->m_nick); - m_nick2.SetText(m_proto->m_alternativeNick); - m_userID.SetText(m_proto->m_userID); - m_name.SetText(m_proto->m_name); - m_pass.SetTextA(m_proto->m_password); - m_identSystem.SetText(m_proto->m_identSystem); - m_identPort.SetText(m_proto->m_identPort); - m_address.SetState(m_proto->m_showAddresses); - m_oldStyle.SetState(m_proto->m_oldStyleModes); - m_useSasl.SetState(m_proto->m_bUseSASL); - m_channelAway.SetState(m_proto->m_channelAwayNotification); - m_onlineNotif.SetState(m_proto->m_autoOnlineNotification); - m_ident.SetState(m_proto->m_ident); - m_identTimer.SetState(m_proto->m_identTimer); - m_disableError.SetState(m_proto->m_disableErrorPopups); - m_forceVisible.SetState(m_proto->m_forceVisible); - m_rejoinChannels.SetState(m_proto->m_rejoinChannels); - m_rejoinOnKick.SetState(m_proto->m_rejoinIfKicked); - m_enableServer.SetState(!m_proto->m_disableDefaultServer); - m_keepAlive.SetState(m_proto->m_sendKeepAlive); - m_useServer.SetState(m_proto->m_useServer); - m_showServer.SetState(!m_proto->m_hideServerWindow); - m_showServer.Enable(m_proto->m_useServer); - m_autoJoin.SetState(m_proto->m_joinOnInvite); - return true; -} + CCtrlCheck m_ident, m_identTimer; + CCtrlEdit m_identSystem, m_identPort; -void CConnectPrefsDlg::OnServerCombo(CCtrlData*) -{ - int i = m_serverCombo.GetCurSel(); - SERVER_INFO *pData = (SERVER_INFO*)m_serverCombo.GetItemData(i); - if (pData && (INT_PTR)pData != CB_ERR) { - m_server.SetTextA(pData->m_address); - m_port.SetInt(pData->m_portStart); - m_port2.SetInt(pData->m_portEnd); - m_pass.SetTextA(""); - - if (pData->m_iSSL == 0) - m_ssl.SetText(TranslateT("Off")); - if (pData->m_iSSL == 1) - m_ssl.SetText(TranslateT("Auto")); - if (pData->m_iSSL == 2) - m_ssl.SetText(TranslateT("On")); - - SendMessage(GetParent(m_hwnd), PSM_CHANGED, 0, 0); - } -} + CCtrlCheck m_forceVisible, m_rejoinOnKick, m_rejoinChannels, m_disableError; + CCtrlCheck m_address, m_useServer, m_showServer, m_keepAlive, m_autoJoin; + CCtrlCheck m_oldStyle, m_onlineNotif, m_channelAway, m_useSasl; -void CConnectPrefsDlg::OnAddServer(CCtrlButton*) -{ - m_serverCombo.Disable(); - m_add.Disable(); - m_edit.Disable(); - m_del.Disable(); - CServerDlg *dlg = new CServerDlg(m_proto, this, 1); - dlg->Show(); -} + CCtrlEdit m_onlineTimer, m_limit; + CCtrlSpin m_spin1, m_spin2; -void CConnectPrefsDlg::OnDeleteServer(CCtrlButton*) -{ - int i = m_serverCombo.GetCurSel(); - if (i == CB_ERR) - return; - - m_serverCombo.Disable(); - m_add.Disable(); - m_edit.Disable(); - m_del.Disable(); - - SERVER_INFO *pData = (SERVER_INFO*)m_serverCombo.GetItemData(i); - wchar_t temp[200]; - mir_snwprintf(temp, TranslateT("Do you want to delete\r\n%s"), (wchar_t*)_A2T(pData->m_name)); - if (MessageBox(m_hwnd, temp, TranslateT("Delete server"), MB_YESNO | MB_ICONQUESTION) == IDYES) { - g_servers.remove(pData); - - m_serverCombo.DeleteString(i); - if (i >= m_serverCombo.GetCount()) - i--; - m_serverCombo.SetCurSel(i); - OnServerCombo(nullptr); - SendMessage(GetParent(m_hwnd), PSM_CHANGED, 0, 0); - m_serverlistModified = true; +public: + CConnectPrefsDlg::CConnectPrefsDlg(CIrcProto *_pro) : + CIrcBaseDlg(_pro, IDD_PREFS_CONNECT), + m_server(this, IDC_SERVER), + m_port(this, IDC_PORT), + m_port2(this, IDC_PORT2), + m_pass(this, IDC_PASS), + m_nick(this, IDC_NICK), + m_nick2(this, IDC_NICK2), + m_name(this, IDC_NAME), + m_userID(this, IDC_USERID), + m_ident(this, IDC_IDENT), + m_identSystem(this, IDC_IDENTSYSTEM), + m_identPort(this, IDC_IDENTPORT), + m_identTimer(this, IDC_IDENT_TIMED), + m_forceVisible(this, IDC_FORCEVISIBLE), + m_rejoinOnKick(this, IDC_REJOINONKICK), + m_rejoinChannels(this, IDC_REJOINCHANNELS), + m_disableError(this, IDC_DISABLEERROR), + m_address(this, IDC_ADDRESS), + m_useServer(this, IDC_USESERVER), + m_showServer(this, IDC_SHOWSERVER), + m_keepAlive(this, IDC_KEEPALIVE), + m_autoJoin(this, IDC_AUTOJOIN), + m_oldStyle(this, IDC_OLDSTYLE), + m_useSasl(this, IDC_SASL), + m_onlineNotif(this, IDC_ONLINENOTIF), + m_channelAway(this, IDC_CHANNELAWAY), + m_onlineTimer(this, IDC_ONLINETIMER), + m_limit(this, IDC_LIMIT), + m_spin1(this, IDC_SPIN1, 999, 20), + m_spin2(this, IDC_SPIN2, 200), + m_ssl(this, IDC_SSL) + { + m_ident.OnChange = Callback(this, &CConnectPrefsDlg::OnIdent); + m_useServer.OnChange = Callback(this, &CConnectPrefsDlg::OnUseServer); + m_onlineNotif.OnChange = Callback(this, &CConnectPrefsDlg::OnOnlineNotif); + m_channelAway.OnChange = Callback(this, &CConnectPrefsDlg::OnChannelAway); } - m_serverCombo.Enable(); - m_add.Enable(); - m_edit.Enable(); - m_del.Enable(); -} - -void CConnectPrefsDlg::OnEditServer(CCtrlButton*) -{ - int i = m_serverCombo.GetCurSel(); - if (i == CB_ERR) - return; - - m_serverCombo.Disable(); - m_add.Disable(); - m_edit.Disable(); - m_del.Disable(); - CServerDlg *dlg = new CServerDlg(m_proto, this, 2); - dlg->Show(); - SetWindowText(dlg->GetHwnd(), TranslateT("Edit server")); -} - -void CConnectPrefsDlg::OnStartup(CCtrlData*) -{ - m_serverCombo.Enable(m_enableServer.GetState()); - m_add.Enable(m_enableServer.GetState()); - m_edit.Enable(m_enableServer.GetState()); - m_del.Enable(m_enableServer.GetState()); - m_server.Enable(m_enableServer.GetState()); - m_port.Enable(m_enableServer.GetState()); - m_port2.Enable(m_enableServer.GetState()); - m_pass.Enable(m_enableServer.GetState()); - m_ssl.Enable(m_enableServer.GetState()); -} + bool OnInitDialog() override + { + m_proto->m_hwndConnect = m_hwnd; -void CConnectPrefsDlg::OnIdent(CCtrlData*) -{ - m_identSystem.Enable(m_ident.GetState()); - m_identPort.Enable(m_ident.GetState()); - m_identTimer.Enable(m_ident.GetState()); -} + m_server.SetTextA(m_proto->m_serverName); + m_port.SetTextA(m_proto->m_portStart); + m_port2.SetTextA(m_proto->m_portEnd); + m_pass.SetTextA(m_proto->m_password); + m_useSasl.SetState(m_proto->m_bUseSASL); -void CConnectPrefsDlg::OnUseServer(CCtrlData*) -{ - EnableWindow(GetDlgItem(m_hwnd, IDC_SHOWSERVER), m_useServer.GetState()); -} + m_ssl.AddString(TranslateT("Off"), 0); + m_ssl.AddString(TranslateT("Auto"), 1); + m_ssl.AddString(TranslateT("On"), 2); + m_ssl.SetCurSel(m_proto->m_iSSL); -void CConnectPrefsDlg::OnOnlineNotif(CCtrlData*) -{ - m_channelAway.Enable(m_onlineNotif.GetState()); - m_onlineTimer.Enable(m_onlineNotif.GetState()); - m_spin1.Enable(m_onlineNotif.GetState()); - m_spin2.Enable(m_onlineNotif.GetState()); - m_limit.Enable(m_onlineNotif.GetState() && m_channelAway.GetState()); -} + m_spin1.SetPosition(m_proto->m_onlineNotificationTime); + m_spin2.SetPosition(m_proto->m_onlineNotificationLimit); -void CConnectPrefsDlg::OnChannelAway(CCtrlData*) -{ - m_spin2.Enable(m_onlineNotif.GetState() && m_channelAway.GetState()); - m_limit.Enable(m_onlineNotif.GetState() && m_channelAway.GetState()); -} + m_nick.SetText(m_proto->m_nick); + m_nick2.SetText(m_proto->m_alternativeNick); + m_userID.SetText(m_proto->m_userID); + m_name.SetText(m_proto->m_name); + m_identSystem.SetText(m_proto->m_identSystem); + m_identPort.SetText(m_proto->m_identPort); + m_address.SetState(m_proto->m_showAddresses); + m_oldStyle.SetState(m_proto->m_oldStyleModes); + m_channelAway.SetState(m_proto->m_channelAwayNotification); + m_onlineNotif.SetState(m_proto->m_autoOnlineNotification); + m_ident.SetState(m_proto->m_ident); + m_identTimer.SetState(m_proto->m_identTimer); + m_disableError.SetState(m_proto->m_disableErrorPopups); + m_forceVisible.SetState(m_proto->m_forceVisible); + m_rejoinChannels.SetState(m_proto->m_rejoinChannels); + m_rejoinOnKick.SetState(m_proto->m_rejoinIfKicked); + m_keepAlive.SetState(m_proto->m_sendKeepAlive); + m_useServer.SetState(m_proto->m_useServer); + m_showServer.SetState(!m_proto->m_hideServerWindow); + m_showServer.Enable(m_proto->m_useServer); + m_autoJoin.SetState(m_proto->m_joinOnInvite); + return true; + } -bool CConnectPrefsDlg::OnApply() -{ - //Save the setting in the CONNECT dialog - if (m_enableServer.GetState()) { + bool OnApply() override + { + // Save the setting in the CONNECT dialog m_server.GetTextA(m_proto->m_serverName, _countof(m_proto->m_serverName)); m_port.GetTextA(m_proto->m_portStart, _countof(m_proto->m_portStart)); m_port2.GetTextA(m_proto->m_portEnd, _countof(m_proto->m_portEnd)); m_pass.GetTextA(m_proto->m_password, _countof(m_proto->m_password)); - } - else m_proto->m_serverName[0] = m_proto->m_portStart[0] = m_proto->m_portEnd[0] = m_proto->m_password[0] = 0; - - m_proto->m_onlineNotificationTime = SendDlgItemMessage(m_hwnd, IDC_SPIN1, UDM_GETPOS, 0, 0); - m_proto->m_onlineNotificationLimit = SendDlgItemMessage(m_hwnd, IDC_SPIN2, UDM_GETPOS, 0, 0); - m_proto->m_channelAwayNotification = m_channelAway.GetState(); - - m_nick.GetText(m_proto->m_nick, _countof(m_proto->m_nick)); - removeSpaces(m_proto->m_nick); - wcsncpy_s(m_proto->m_pNick, m_proto->m_nick, _TRUNCATE); - m_nick2.GetText(m_proto->m_alternativeNick, _countof(m_proto->m_alternativeNick)); - removeSpaces(m_proto->m_alternativeNick); - m_userID.GetText(m_proto->m_userID, _countof(m_proto->m_userID)); - removeSpaces(m_proto->m_userID); - m_name.GetText(m_proto->m_name, _countof(m_proto->m_name)); - m_identSystem.GetText(m_proto->m_identSystem, _countof(m_proto->m_identSystem)); - m_identPort.GetText(m_proto->m_identPort, _countof(m_proto->m_identPort)); - m_proto->m_disableDefaultServer = !m_enableServer.GetState(); - m_proto->m_ident = m_ident.GetState(); - m_proto->m_identTimer = m_identTimer.GetState(); - m_proto->m_forceVisible = m_forceVisible.GetState(); - m_proto->m_disableErrorPopups = m_disableError.GetState(); - m_proto->m_rejoinChannels = m_rejoinChannels.GetState(); - m_proto->m_rejoinIfKicked = m_rejoinOnKick.GetState(); - m_proto->m_showAddresses = m_address.GetState(); - m_proto->m_oldStyleModes = m_oldStyle.GetState(); - m_proto->m_useServer = m_useServer.GetState(); - m_proto->m_bUseSASL = m_useSasl.GetState(); - - Menu_EnableItem(m_proto->hMenuServer, m_proto->m_useServer != 0); - - m_proto->m_joinOnInvite = m_autoJoin.GetState(); - m_proto->m_hideServerWindow = !m_showServer.GetState(); - m_proto->m_serverComboSelection = m_serverCombo.GetCurSel(); - if (m_proto->m_sendKeepAlive = m_keepAlive.GetState()) - m_proto->SetChatTimer(m_proto->KeepAliveTimer, 60 * 1000, KeepAliveTimerProc); - else - m_proto->KillChatTimer(m_proto->KeepAliveTimer); - - m_proto->m_autoOnlineNotification = m_onlineNotif.GetState(); - if (m_proto->m_autoOnlineNotification) { - if (!m_proto->bTempDisableCheck) { - m_proto->SetChatTimer(m_proto->OnlineNotifTimer, 500, OnlineNotifTimerProc); - if (m_proto->m_channelAwayNotification) - m_proto->SetChatTimer(m_proto->OnlineNotifTimer3, 1500, OnlineNotifTimerProc3); - } - } - else if (!m_proto->bTempForceCheck) { - m_proto->KillChatTimer(m_proto->OnlineNotifTimer); - m_proto->KillChatTimer(m_proto->OnlineNotifTimer3); - } + m_proto->m_iSSL = m_ssl.GetCurSel(); + m_proto->m_bUseSASL = m_useSasl.GetState(); + + m_proto->m_onlineNotificationTime = SendDlgItemMessage(m_hwnd, IDC_SPIN1, UDM_GETPOS, 0, 0); + m_proto->m_onlineNotificationLimit = SendDlgItemMessage(m_hwnd, IDC_SPIN2, UDM_GETPOS, 0, 0); + m_proto->m_channelAwayNotification = m_channelAway.GetState(); - int i = m_serverCombo.GetCurSel(); - SERVER_INFO *pData = (SERVER_INFO*)m_serverCombo.GetItemData(i); - if (pData && (INT_PTR)pData != CB_ERR) { - if (m_enableServer.GetState()) - mir_strcpy(m_proto->m_network, pData->m_group); + m_nick.GetText(m_proto->m_nick, _countof(m_proto->m_nick)); + removeSpaces(m_proto->m_nick); + wcsncpy_s(m_proto->m_pNick, m_proto->m_nick, _TRUNCATE); + m_nick2.GetText(m_proto->m_alternativeNick, _countof(m_proto->m_alternativeNick)); + removeSpaces(m_proto->m_alternativeNick); + m_userID.GetText(m_proto->m_userID, _countof(m_proto->m_userID)); + removeSpaces(m_proto->m_userID); + m_name.GetText(m_proto->m_name, _countof(m_proto->m_name)); + m_identSystem.GetText(m_proto->m_identSystem, _countof(m_proto->m_identSystem)); + m_identPort.GetText(m_proto->m_identPort, _countof(m_proto->m_identPort)); + m_proto->m_ident = m_ident.GetState(); + m_proto->m_identTimer = m_identTimer.GetState(); + m_proto->m_forceVisible = m_forceVisible.GetState(); + m_proto->m_disableErrorPopups = m_disableError.GetState(); + m_proto->m_rejoinChannels = m_rejoinChannels.GetState(); + m_proto->m_rejoinIfKicked = m_rejoinOnKick.GetState(); + m_proto->m_showAddresses = m_address.GetState(); + m_proto->m_oldStyleModes = m_oldStyle.GetState(); + m_proto->m_useServer = m_useServer.GetState(); + + Menu_EnableItem(m_proto->hMenuServer, m_proto->m_useServer != 0); + + m_proto->m_joinOnInvite = m_autoJoin.GetState(); + m_proto->m_hideServerWindow = !m_showServer.GetState(); + if (m_proto->m_sendKeepAlive = m_keepAlive.GetState()) + m_proto->SetChatTimer(m_proto->KeepAliveTimer, 60 * 1000, KeepAliveTimerProc); else - mir_strcpy(m_proto->m_network, ""); - m_proto->m_iSSL = pData->m_iSSL; - } + m_proto->KillChatTimer(m_proto->KeepAliveTimer); + + m_proto->m_autoOnlineNotification = m_onlineNotif.GetState(); + if (m_proto->m_autoOnlineNotification) { + if (!m_proto->bTempDisableCheck) { + m_proto->SetChatTimer(m_proto->OnlineNotifTimer, 500, OnlineNotifTimerProc); + if (m_proto->m_channelAwayNotification) + m_proto->SetChatTimer(m_proto->OnlineNotifTimer3, 1500, OnlineNotifTimerProc3); + } + } + else if (!m_proto->bTempForceCheck) { + m_proto->KillChatTimer(m_proto->OnlineNotifTimer); + m_proto->KillChatTimer(m_proto->OnlineNotifTimer3); + } - if (m_serverlistModified) { - m_serverlistModified = false; - db_delete_module(0, SERVERSMODULE); + m_proto->WriteSettings(ConnectSettings, _countof(ConnectSettings)); + return true; + } - int j = m_serverCombo.GetCount(); - if (j != CB_ERR && j != 0) { - for (int index2 = 0; index2 < j; index2++) { - pData = (SERVER_INFO*)m_serverCombo.GetItemData(index2); - if (pData == nullptr || (INT_PTR)pData == CB_ERR) - continue; + void OnIdent(CCtrlData *) + { + m_identSystem.Enable(m_ident.GetState()); + m_identPort.Enable(m_ident.GetState()); + m_identTimer.Enable(m_ident.GetState()); + } - char TextLine[512]; - if (pData->m_iSSL > 0) - mir_snprintf(TextLine, "SERVER:SSL%u%s:%d-%dGROUP:%s", pData->m_iSSL, pData->m_address, pData->m_portStart, pData->m_portEnd, pData->m_group); - else - mir_snprintf(TextLine, "SERVER:%s:%d-%dGROUP:%s", pData->m_address, pData->m_portStart, pData->m_portEnd, pData->m_group); - db_set_s(0, SERVERSMODULE, pData->m_name, TextLine); + void OnUseServer(CCtrlData *) + { + EnableWindow(GetDlgItem(m_hwnd, IDC_SHOWSERVER), m_useServer.GetState()); + } - // combobox might contain new items - if (g_servers.find(pData) == nullptr) - g_servers.insert(pData); - } - } + void OnOnlineNotif(CCtrlData *) + { + m_channelAway.Enable(m_onlineNotif.GetState()); + m_onlineTimer.Enable(m_onlineNotif.GetState()); + m_spin1.Enable(m_onlineNotif.GetState()); + m_spin2.Enable(m_onlineNotif.GetState()); + m_limit.Enable(m_onlineNotif.GetState() && m_channelAway.GetState()); } - m_proto->WriteSettings(ConnectSettings, _countof(ConnectSettings)); - return true; -} + void OnChannelAway(CCtrlData *) + { + m_spin2.Enable(m_onlineNotif.GetState() && m_channelAway.GetState()); + m_limit.Enable(m_onlineNotif.GetState() && m_channelAway.GetState()); + } +}; ///////////////////////////////////////////////////////////////////////////////////////// // 'CTCP preferences' dialog static TDbSetting CtcpSettings[] = { - { FIELD_OFFSET(CIrcProto, m_userInfo), "UserInfo", DBVT_WCHAR, _countof(pZero->m_userInfo) }, + { FIELD_OFFSET(CIrcProto, m_userInfo), "UserInfo", DBVT_WCHAR, _countof(CIrcProto::m_userInfo) }, { FIELD_OFFSET(CIrcProto, m_DCCPacketSize), "DccPacketSize", DBVT_WORD, 0, 4096 }, { FIELD_OFFSET(CIrcProto, m_DCCPassive), "DccPassive", DBVT_BYTE }, { FIELD_OFFSET(CIrcProto, m_DCCMode), "DCCMode", DBVT_BYTE }, { FIELD_OFFSET(CIrcProto, m_manualHost), "ManualHost", DBVT_BYTE }, { FIELD_OFFSET(CIrcProto, m_IPFromServer), "IPFromServer", DBVT_BYTE, 0, 1 }, { FIELD_OFFSET(CIrcProto, m_disconnectDCCChats), "DisconnectDCCChats", DBVT_BYTE }, - { FIELD_OFFSET(CIrcProto, m_mySpecifiedHost), "SpecHost", DBVT_ASCIIZ, _countof(pZero->m_mySpecifiedHost) }, + { FIELD_OFFSET(CIrcProto, m_mySpecifiedHost), "SpecHost", DBVT_ASCIIZ, _countof(CIrcProto::m_mySpecifiedHost) }, { FIELD_OFFSET(CIrcProto, m_DCCChatAccept), "CtcpChatAccept", DBVT_BYTE, 0, 1 }, { FIELD_OFFSET(CIrcProto, m_sendNotice), "SendNotice", DBVT_BYTE, 0, 1 } }; -CCtcpPrefsDlg::CCtcpPrefsDlg(CIrcProto* _pro) - : CProtoDlgBase(_pro, IDD_PREFS_CTCP), - m_enableIP(this, IDC_ENABLEIP), - m_fromServer(this, IDC_FROMSERVER), - m_combo(this, IDC_COMBO), - m_slow(this, IDC_SLOW), - m_fast(this, IDC_FAST), - m_disc(this, IDC_DISC), - m_passive(this, IDC_PASSIVE), - m_sendNotice(this, IDC_SENDNOTICE), - m_ip(this, IDC_IP), - m_userInfo(this, IDC_USERINFO), - m_radio1(this, IDC_RADIO1), - m_radio2(this, IDC_RADIO2), - m_radio3(this, IDC_RADIO3) -{ - m_enableIP.OnChange = Callback(this, &CCtcpPrefsDlg::OnClicked); - m_fromServer.OnChange = Callback(this, &CCtcpPrefsDlg::OnClicked); -} +class CCtcpPrefsDlg : public CIrcBaseDlg +{ + CCtrlCombo m_combo; + CCtrlCheck m_slow, m_fast, m_disc, m_passive, m_sendNotice, m_enableIP, m_fromServer; + CCtrlEdit m_ip, m_userInfo; + CCtrlCheck m_radio1, m_radio2, m_radio3; + +public: + CCtcpPrefsDlg(CIrcProto *_pro) : + CIrcBaseDlg(_pro, IDD_PREFS_CTCP), + m_enableIP(this, IDC_ENABLEIP), + m_fromServer(this, IDC_FROMSERVER), + m_combo(this, IDC_COMBO), + m_slow(this, IDC_SLOW), + m_fast(this, IDC_FAST), + m_disc(this, IDC_DISC), + m_passive(this, IDC_PASSIVE), + m_sendNotice(this, IDC_SENDNOTICE), + m_ip(this, IDC_IP), + m_userInfo(this, IDC_USERINFO), + m_radio1(this, IDC_RADIO1), + m_radio2(this, IDC_RADIO2), + m_radio3(this, IDC_RADIO3) + { + m_enableIP.OnChange = Callback(this, &CCtcpPrefsDlg::OnClicked); + m_fromServer.OnChange = Callback(this, &CCtcpPrefsDlg::OnClicked); + } -bool CCtcpPrefsDlg::OnInitDialog() -{ - m_userInfo.SetText(m_proto->m_userInfo); - - m_slow.SetState(m_proto->m_DCCMode == 0); - m_fast.SetState(m_proto->m_DCCMode == 1); - m_disc.SetState(m_proto->m_disconnectDCCChats); - m_passive.SetState(m_proto->m_DCCPassive); - m_sendNotice.SetState(m_proto->m_sendNotice); - - m_combo.AddStringA("256"); - m_combo.AddStringA("512"); - m_combo.AddStringA("1024"); - m_combo.AddStringA("2048"); - m_combo.AddStringA("4096"); - m_combo.AddStringA("8192"); - - wchar_t szTemp[10]; - mir_snwprintf(szTemp, L"%u", m_proto->m_DCCPacketSize); - int i = m_combo.SelectString(szTemp); - if (i == CB_ERR) - m_combo.SelectString(L"4096"); - - if (m_proto->m_DCCChatAccept == 1) - m_radio1.SetState(true); - if (m_proto->m_DCCChatAccept == 2) - m_radio2.SetState(true); - if (m_proto->m_DCCChatAccept == 3) - m_radio3.SetState(true); - - m_fromServer.SetState(m_proto->m_IPFromServer); - m_enableIP.SetState(m_proto->m_manualHost); - m_ip.Enable(m_proto->m_manualHost); - m_fromServer.Enable(!m_proto->m_manualHost); - if (m_proto->m_manualHost) - m_ip.SetTextA(m_proto->m_mySpecifiedHost); - else { - if (m_proto->m_IPFromServer) { - if (m_proto->m_myHost[0]) { - CMStringW s = (CMStringW)TranslateT("m_myHost) + L">"; - m_ip.SetText(s.c_str()); - } - else m_ip.SetText(TranslateT("")); - } + bool OnInitDialog() override + { + m_userInfo.SetText(m_proto->m_userInfo); + + m_slow.SetState(m_proto->m_DCCMode == 0); + m_fast.SetState(m_proto->m_DCCMode == 1); + m_disc.SetState(m_proto->m_disconnectDCCChats); + m_passive.SetState(m_proto->m_DCCPassive); + m_sendNotice.SetState(m_proto->m_sendNotice); + + m_combo.AddStringA("256"); + m_combo.AddStringA("512"); + m_combo.AddStringA("1024"); + m_combo.AddStringA("2048"); + m_combo.AddStringA("4096"); + m_combo.AddStringA("8192"); + + wchar_t szTemp[10]; + mir_snwprintf(szTemp, L"%u", m_proto->m_DCCPacketSize); + int i = m_combo.SelectString(szTemp); + if (i == CB_ERR) + m_combo.SelectString(L"4096"); + + if (m_proto->m_DCCChatAccept == 1) + m_radio1.SetState(true); + if (m_proto->m_DCCChatAccept == 2) + m_radio2.SetState(true); + if (m_proto->m_DCCChatAccept == 3) + m_radio3.SetState(true); + + m_fromServer.SetState(m_proto->m_IPFromServer); + m_enableIP.SetState(m_proto->m_manualHost); + m_ip.Enable(m_proto->m_manualHost); + m_fromServer.Enable(!m_proto->m_manualHost); + if (m_proto->m_manualHost) + m_ip.SetTextA(m_proto->m_mySpecifiedHost); else { - if (m_proto->m_myLocalHost[0]) { - CMStringW s = (CMStringW)TranslateT("m_myLocalHost) + L">"; - m_ip.SetText(s.c_str()); + if (m_proto->m_IPFromServer) { + if (m_proto->m_myHost[0]) { + CMStringW s = (CMStringW)TranslateT("m_myHost) + L">"; + m_ip.SetText(s.c_str()); + } + else m_ip.SetText(TranslateT("")); + } + else { + if (m_proto->m_myLocalHost[0]) { + CMStringW s = (CMStringW)TranslateT("m_myLocalHost) + L">"; + m_ip.SetText(s.c_str()); + } + else m_ip.SetText(TranslateT("")); } - else m_ip.SetText(TranslateT("")); } + return true; } - return true; -} - -void CCtcpPrefsDlg::OnClicked(CCtrlData*) -{ - m_ip.Enable(m_enableIP.GetState()); - m_fromServer.Enable(!m_enableIP.GetState()); - if (m_enableIP.GetState()) - m_ip.SetTextA(m_proto->m_mySpecifiedHost); - else { - if (m_fromServer.GetState()) { - if (m_proto->m_myHost[0]) { - CMStringW s = (CMStringW)TranslateT("m_myHost) + L">"; - m_ip.SetText(s.c_str()); - } - else m_ip.SetText(TranslateT("")); - } - else { - if (m_proto->m_myLocalHost[0]) { - CMStringW s = (CMStringW)TranslateT("m_myLocalHost) + L">"; - m_ip.SetText(s.c_str()); - } - else m_ip.SetText(TranslateT("")); + bool OnApply() override + { + m_userInfo.GetText(m_proto->m_userInfo, _countof(m_proto->m_userInfo)); + + m_proto->m_DCCPacketSize = m_combo.GetInt(); + m_proto->m_DCCPassive = m_passive.GetState(); + m_proto->m_sendNotice = m_sendNotice.GetState(); + m_proto->m_DCCMode = m_fast.GetState(); + m_proto->m_manualHost = m_enableIP.GetState(); + m_proto->m_IPFromServer = m_fromServer.GetState(); + m_proto->m_disconnectDCCChats = m_disc.GetState(); + + if (m_enableIP.GetState()) { + char szTemp[500]; + m_ip.GetTextA(szTemp, sizeof(szTemp)); + mir_strncpy(m_proto->m_mySpecifiedHost, GetWord(szTemp, 0).c_str(), 499); + if (mir_strlen(m_proto->m_mySpecifiedHost)) + m_proto->ForkThread(&CIrcProto::ResolveIPThread, new IPRESOLVE(m_proto->m_mySpecifiedHost, IP_MANUAL)); } - } -} + else m_proto->m_mySpecifiedHost[0] = 0; -bool CCtcpPrefsDlg::OnApply() -{ - m_userInfo.GetText(m_proto->m_userInfo, _countof(m_proto->m_userInfo)); - - m_proto->m_DCCPacketSize = m_combo.GetInt(); - m_proto->m_DCCPassive = m_passive.GetState(); - m_proto->m_sendNotice = m_sendNotice.GetState(); - m_proto->m_DCCMode = m_fast.GetState(); - m_proto->m_manualHost = m_enableIP.GetState(); - m_proto->m_IPFromServer = m_fromServer.GetState(); - m_proto->m_disconnectDCCChats = m_disc.GetState(); - - if (m_enableIP.GetState()) { - char szTemp[500]; - m_ip.GetTextA(szTemp, sizeof(szTemp)); - mir_strncpy(m_proto->m_mySpecifiedHost, GetWord(szTemp, 0).c_str(), 499); - if (mir_strlen(m_proto->m_mySpecifiedHost)) - m_proto->ForkThread(&CIrcProto::ResolveIPThread, new IPRESOLVE(m_proto->m_mySpecifiedHost, IP_MANUAL)); + if (m_radio1.GetState()) + m_proto->m_DCCChatAccept = 1; + if (m_radio2.GetState()) + m_proto->m_DCCChatAccept = 2; + if (m_radio3.GetState()) + m_proto->m_DCCChatAccept = 3; + + m_proto->WriteSettings(CtcpSettings, _countof(CtcpSettings)); + return true; } - else m_proto->m_mySpecifiedHost[0] = 0; - if (m_radio1.GetState()) - m_proto->m_DCCChatAccept = 1; - if (m_radio2.GetState()) - m_proto->m_DCCChatAccept = 2; - if (m_radio3.GetState()) - m_proto->m_DCCChatAccept = 3; + void OnClicked(CCtrlData *) + { + m_ip.Enable(m_enableIP.GetState()); + m_fromServer.Enable(!m_enableIP.GetState()); - m_proto->WriteSettings(CtcpSettings, _countof(CtcpSettings)); - return true; -} + if (m_enableIP.GetState()) + m_ip.SetTextA(m_proto->m_mySpecifiedHost); + else { + if (m_fromServer.GetState()) { + if (m_proto->m_myHost[0]) { + CMStringW s = (CMStringW)TranslateT("m_myHost) + L">"; + m_ip.SetText(s.c_str()); + } + else m_ip.SetText(TranslateT("")); + } + else { + if (m_proto->m_myLocalHost[0]) { + CMStringW s = (CMStringW)TranslateT("m_myLocalHost) + L">"; + m_ip.SetText(s.c_str()); + } + else m_ip.SetText(TranslateT("")); + } + } + } +}; ///////////////////////////////////////////////////////////////////////////////////////// // 'Advanced preferences' dialog static TDbSetting OtherSettings[] = { - { FIELD_OFFSET(CIrcProto, m_quitMessage), "QuitMessage", DBVT_WCHAR, _countof(pZero->m_quitMessage) }, + { FIELD_OFFSET(CIrcProto, m_quitMessage), "QuitMessage", DBVT_WCHAR, _countof(CIrcProto::m_quitMessage) }, { FIELD_OFFSET(CIrcProto, m_alias), "Alias", DBVT_WCHAR, (size_t)-1 }, { FIELD_OFFSET(CIrcProto, m_codepage), "Codepage", DBVT_DWORD, 0, CP_ACP }, { FIELD_OFFSET(CIrcProto, m_utfAutodetect), "UtfAutodetect", DBVT_BYTE }, @@ -904,14 +588,14 @@ static TDbSetting OtherSettings[] = }; static char* sttPerformEvents[] = { + LPGEN("Event: Connect"), LPGEN("Event: Available"), LPGEN("Event: Away"), LPGEN("Event: Not available"), LPGEN("Event: Occupied"), LPGEN("Event: Do not disturb"), LPGEN("Event: Free for chat"), - LPGEN("Event: Disconnect"), - LPGEN("ALL NETWORKS") + LPGEN("Event: Disconnect") }; static LRESULT CALLBACK EditSubclassProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) @@ -937,276 +621,268 @@ static LRESULT CALLBACK EditSubclassProc(HWND hwndDlg, UINT msg, WPARAM wParam, return mir_callNextSubclass(hwndDlg, EditSubclassProc, msg, wParam, lParam); } -COtherPrefsDlg::COtherPrefsDlg(CIrcProto *_pro) : - CProtoDlgBase(_pro, IDD_PREFS_OTHER), - m_url(this, IDC_CUSTOM), - m_performCombo(this, IDC_PERFORMCOMBO), - m_codepage(this, IDC_CODEPAGE), - m_pertormEdit(this, IDC_PERFORMEDIT), - m_perform(this, IDC_PERFORM), - m_scripting(this, IDC_SCRIPT), - m_autodetect(this, IDC_UTF_AUTODETECT), - m_quitMessage(this, IDC_QUITMESSAGE), - m_alias(this, IDC_ALIASEDIT), - m_add(this, IDC_ADD, g_plugin.getIcon(IDI_ADD), LPGEN("Click to set commands that will be performed for this event")), - m_delete(this, IDC_DELETE, g_plugin.getIcon(IDI_DELETE), LPGEN("Click to delete the commands for this event")), - m_performlistModified(false) -{ - m_performCombo.OnChange = Callback(this, &COtherPrefsDlg::OnPerformCombo); - m_codepage.OnChange = Callback(this, &COtherPrefsDlg::OnCodePage); - m_pertormEdit.OnChange = Callback(this, &COtherPrefsDlg::OnPerformEdit); - m_perform.OnChange = Callback(this, &COtherPrefsDlg::OnPerform); - m_add.OnClick = Callback(this, &COtherPrefsDlg::OnAdd); - m_delete.OnClick = Callback(this, &COtherPrefsDlg::OnDelete); -} - -bool COtherPrefsDlg::OnInitDialog() -{ - mir_subclassWindow(m_alias.GetHwnd(), EditSubclassProc); - mir_subclassWindow(m_quitMessage.GetHwnd(), EditSubclassProc); - mir_subclassWindow(m_pertormEdit.GetHwnd(), EditSubclassProc); - - m_alias.SetText(m_proto->m_alias); - m_quitMessage.SetText(m_proto->m_quitMessage); - m_perform.SetState(m_proto->m_perform); - m_scripting.SetState(m_proto->m_scriptingEnabled); - m_performCombo.Enable(m_proto->m_perform); - m_pertormEdit.Enable(m_proto->m_perform); - m_add.Enable(m_proto->m_perform); - m_delete.Enable(m_proto->m_perform); - - m_codepage.AddString(TranslateT("Default ANSI codepage"), CP_ACP); - - sttCombo = &m_codepage; - EnumSystemCodePages(sttLangAddCallback, CP_INSTALLED); - - for (int i = m_codepage.GetCount(); i >= 0; i--) { - if (m_codepage.GetItemData(i) == m_proto->m_codepage) { - m_codepage.SetCurSel(i); - break; - } +class COtherPrefsDlg : public CIrcBaseDlg +{ + bool m_performlistModified; + + CCtrlButton m_url; + CCtrlMButton m_add, m_delete; + CCtrlCombo m_performCombo, m_codepage; + CCtrlEdit m_pertormEdit, m_quitMessage, m_alias; + CCtrlCheck m_perform, m_scripting, m_autodetect; + +public: + COtherPrefsDlg(CIrcProto *_pro) : + CIrcBaseDlg(_pro, IDD_PREFS_OTHER), + m_url(this, IDC_CUSTOM), + m_performCombo(this, IDC_PERFORMCOMBO), + m_codepage(this, IDC_CODEPAGE), + m_pertormEdit(this, IDC_PERFORMEDIT), + m_perform(this, IDC_PERFORM), + m_scripting(this, IDC_SCRIPT), + m_autodetect(this, IDC_UTF_AUTODETECT), + m_quitMessage(this, IDC_QUITMESSAGE), + m_alias(this, IDC_ALIASEDIT), + m_add(this, IDC_ADD, g_plugin.getIcon(IDI_ADD), LPGEN("Click to set commands that will be performed for this event")), + m_delete(this, IDC_DELETE, g_plugin.getIcon(IDI_DELETE), LPGEN("Click to delete the commands for this event")), + m_performlistModified(false) + { + m_performCombo.OnChange = Callback(this, &COtherPrefsDlg::OnPerformCombo); + m_codepage.OnChange = Callback(this, &COtherPrefsDlg::OnCodePage); + m_pertormEdit.OnChange = Callback(this, &COtherPrefsDlg::OnPerformEdit); + m_perform.OnChange = Callback(this, &COtherPrefsDlg::OnPerform); + m_add.OnClick = Callback(this, &COtherPrefsDlg::OnAdd); + m_delete.OnClick = Callback(this, &COtherPrefsDlg::OnDelete); } - if (m_proto->m_codepage == CP_UTF8) - m_autodetect.Disable(); - - for (auto &si : g_servers) { - int idx = m_performCombo.FindStringA(si->m_group, -1, true); - if (idx == CB_ERR) { - idx = m_performCombo.AddStringA(si->m_group); - addPerformComboValue(idx, si->m_group); + bool OnInitDialog() + { + mir_subclassWindow(m_alias.GetHwnd(), EditSubclassProc); + mir_subclassWindow(m_quitMessage.GetHwnd(), EditSubclassProc); + mir_subclassWindow(m_pertormEdit.GetHwnd(), EditSubclassProc); + + m_alias.SetText(m_proto->m_alias); + m_quitMessage.SetText(m_proto->m_quitMessage); + m_perform.SetState(m_proto->m_perform); + m_scripting.SetState(m_proto->m_scriptingEnabled); + m_performCombo.Enable(m_proto->m_perform); + m_pertormEdit.Enable(m_proto->m_perform); + m_add.Enable(m_proto->m_perform); + m_delete.Enable(m_proto->m_perform); + + m_codepage.AddString(TranslateT("Default ANSI codepage"), CP_ACP); + + sttCombo = &m_codepage; + EnumSystemCodePages(sttLangAddCallback, CP_INSTALLED); + + for (int i = m_codepage.GetCount(); i >= 0; i--) { + if (m_codepage.GetItemData(i) == m_proto->m_codepage) { + m_codepage.SetCurSel(i); + break; + } } - } - - for (int i = 0; i < _countof(sttPerformEvents); i++) { - int idx = m_performCombo.InsertString(_A2T(Translate(sttPerformEvents[i])), i); - addPerformComboValue(idx, sttPerformEvents[i]); - } - - m_performCombo.SetCurSel(0); - OnPerformCombo(nullptr); - m_autodetect.SetState(m_proto->m_utfAutodetect); - return true; -} -void COtherPrefsDlg::OnPerformCombo(CCtrlData*) -{ - int i = m_performCombo.GetCurSel(); - PERFORM_INFO *pPerf = (PERFORM_INFO*)m_performCombo.GetItemData(i); - if (pPerf == nullptr) - m_pertormEdit.SetTextA(""); - else - m_pertormEdit.SetText(pPerf->mText.c_str()); - m_add.Disable(); - if (GetWindowTextLength(m_pertormEdit.GetHwnd()) != 0) - m_delete.Enable(); - else - m_delete.Disable(); -} + if (m_proto->m_codepage == CP_UTF8) + m_autodetect.Disable(); -void COtherPrefsDlg::OnCodePage(CCtrlData*) -{ - int curSel = m_codepage.GetCurSel(); - m_autodetect.Enable(m_codepage.GetItemData(curSel) != CP_UTF8); -} + for (auto &it: sttPerformEvents) { + CMStringA sSetting = CMStringA("PERFORM:") + it; + sSetting.MakeUpper(); -void COtherPrefsDlg::OnPerformEdit(CCtrlData*) -{ - m_add.Enable(); + PERFORM_INFO *pPref = new PERFORM_INFO(sSetting.c_str(), m_proto->getMStringW(sSetting.c_str())); + m_performCombo.AddString(_A2T(Translate(it)), (LPARAM)pPref); + } - if (GetWindowTextLength(m_pertormEdit.GetHwnd()) != 0) - m_delete.Enable(); - else - m_delete.Disable(); -} + m_performCombo.SetCurSel(0); + OnPerformCombo(nullptr); + m_autodetect.SetState(m_proto->m_utfAutodetect); + return true; + } -void COtherPrefsDlg::OnPerform(CCtrlData*) -{ - m_performCombo.Enable(m_perform.GetState()); - m_pertormEdit.Enable(m_perform.GetState()); - m_add.Enable(m_perform.GetState()); - m_delete.Enable(m_perform.GetState()); -} + bool OnApply() override + { + mir_free(m_proto->m_alias); + m_proto->m_alias = m_alias.GetText(); + m_quitMessage.GetText(m_proto->m_quitMessage, _countof(m_proto->m_quitMessage)); -void COtherPrefsDlg::OnAdd(CCtrlButton*) -{ - wchar_t *temp = m_pertormEdit.GetText(); + int curSel = m_codepage.GetCurSel(); + m_proto->m_codepage = m_codepage.GetItemData(curSel); + if (m_proto->IsConnected()) + m_proto->setCodepage(m_proto->m_codepage); + + m_proto->m_utfAutodetect = m_autodetect.GetState(); + m_proto->m_perform = m_perform.GetState(); + m_proto->m_scriptingEnabled = m_scripting.GetState(); + if (m_add.Enabled()) + OnAdd(nullptr); + + if (m_performlistModified) { + int count = m_performCombo.GetCount(); + for (int i = 0; i < count; i++) { + PERFORM_INFO *pPerf = (PERFORM_INFO *)m_performCombo.GetItemData(i); + if ((INT_PTR)pPerf == CB_ERR) + continue; - if (my_strstri(temp, L"/away")) - MessageBox(nullptr, TranslateT("The usage of /AWAY in your perform buffer is restricted\n as IRC sends this command automatically."), TranslateT("IRC Error"), MB_OK); - else { - int i = m_performCombo.GetCurSel(); - if (i != CB_ERR) { - PERFORM_INFO *pPerf = (PERFORM_INFO*)m_performCombo.GetItemData(i); - if (pPerf != nullptr) - pPerf->mText = temp; + if (pPerf->mText.IsEmpty()) + m_proto->delSetting(pPerf->mSetting.c_str()); + else + m_proto->setWString(pPerf->mSetting.c_str(), pPerf->mText.c_str()); + } + } + m_proto->WriteSettings(OtherSettings, _countof(OtherSettings)); + return true; + } - m_add.Disable(); - m_performlistModified = true; + void OnDestroy() override + { + int i = m_performCombo.GetCount(); + if (i != CB_ERR && i != 0) { + for (int index = 0; index < i; index++) { + PERFORM_INFO *pPerf = (PERFORM_INFO *)m_performCombo.GetItemData(index); + if ((INT_PTR)pPerf != CB_ERR && pPerf != nullptr) + delete pPerf; + } } } - mir_free(temp); -} -void COtherPrefsDlg::OnDelete(CCtrlButton*) -{ - int i = m_performCombo.GetCurSel(); - if (i != CB_ERR) { - PERFORM_INFO *pPerf = (PERFORM_INFO*)m_performCombo.GetItemData(i); - if (pPerf != nullptr) { - pPerf->mText = L""; + void OnPerformCombo(CCtrlData *) + { + int i = m_performCombo.GetCurSel(); + if (i == CB_ERR) + return; + + PERFORM_INFO *pPerf = (PERFORM_INFO *)m_performCombo.GetItemData(i); + if (pPerf == nullptr) m_pertormEdit.SetTextA(""); + else + m_pertormEdit.SetText(pPerf->mText.c_str()); + m_add.Disable(); + if (GetWindowTextLength(m_pertormEdit.GetHwnd()) != 0) + m_delete.Enable(); + else m_delete.Disable(); - m_add.Disable(); - } - - m_performlistModified = true; } -} -void COtherPrefsDlg::OnDestroy() -{ - int i = m_performCombo.GetCount(); - if (i != CB_ERR && i != 0) { - for (int index = 0; index < i; index++) { - PERFORM_INFO *pPerf = (PERFORM_INFO*)m_performCombo.GetItemData(index); - if ((INT_PTR)pPerf != CB_ERR && pPerf != nullptr) - delete pPerf; - } + void OnCodePage(CCtrlData *) + { + int curSel = m_codepage.GetCurSel(); + m_autodetect.Enable(m_codepage.GetItemData(curSel) != CP_UTF8); } -} -bool COtherPrefsDlg::OnApply() -{ - mir_free(m_proto->m_alias); - m_proto->m_alias = m_alias.GetText(); - m_quitMessage.GetText(m_proto->m_quitMessage, _countof(m_proto->m_quitMessage)); - - int curSel = m_codepage.GetCurSel(); - m_proto->m_codepage = m_codepage.GetItemData(curSel); - if (m_proto->IsConnected()) - m_proto->setCodepage(m_proto->m_codepage); - - m_proto->m_utfAutodetect = m_autodetect.GetState(); - m_proto->m_perform = m_perform.GetState(); - m_proto->m_scriptingEnabled = m_scripting.GetState(); - if (m_add.Enabled()) - OnAdd(nullptr); - - if (m_performlistModified) { - int count = m_performCombo.GetCount(); - for (int i = 0; i < count; i++) { - PERFORM_INFO *pPerf = (PERFORM_INFO*)m_performCombo.GetItemData(i); - if ((INT_PTR)pPerf == CB_ERR) - continue; + void OnPerformEdit(CCtrlData *) + { + m_add.Enable(); - if (!pPerf->mText.IsEmpty()) - m_proto->setWString(pPerf->mSetting.c_str(), pPerf->mText.c_str()); - else - db_unset(0, m_proto->m_szModuleName, pPerf->mSetting.c_str()); + if (GetWindowTextLength(m_pertormEdit.GetHwnd()) != 0) + m_delete.Enable(); + else + m_delete.Disable(); + } + + void OnPerform(CCtrlData *) + { + m_performCombo.Enable(m_perform.GetState()); + m_pertormEdit.Enable(m_perform.GetState()); + m_add.Enable(m_perform.GetState()); + m_delete.Enable(m_perform.GetState()); + } + + void OnAdd(CCtrlButton *) + { + wchar_t *temp = m_pertormEdit.GetText(); + + if (my_strstri(temp, L"/away")) + MessageBox(nullptr, TranslateT("The usage of /AWAY in your perform buffer is restricted\n as IRC sends this command automatically."), TranslateT("IRC Error"), MB_OK); + else { + int i = m_performCombo.GetCurSel(); + if (i != CB_ERR) { + PERFORM_INFO *pPerf = (PERFORM_INFO *)m_performCombo.GetItemData(i); + if (pPerf != nullptr) + pPerf->mText = temp; + + m_add.Disable(); + m_performlistModified = true; + } } + mir_free(temp); } - m_proto->WriteSettings(OtherSettings, _countof(OtherSettings)); - return true; -} -void COtherPrefsDlg::addPerformComboValue(int idx, const char* szValueName) -{ - CMStringA sSetting = CMStringA("PERFORM:") + szValueName; - sSetting.MakeUpper(); + void OnDelete(CCtrlButton *) + { + int i = m_performCombo.GetCurSel(); + if (i != CB_ERR) { + PERFORM_INFO *pPerf = (PERFORM_INFO *)m_performCombo.GetItemData(i); + if (pPerf != nullptr) { + pPerf->mText = L""; + m_pertormEdit.SetTextA(""); + m_delete.Disable(); + m_add.Disable(); + } - PERFORM_INFO *pPref; - DBVARIANT dbv; - if (!m_proto->getWString(sSetting.c_str(), &dbv)) { - pPref = new PERFORM_INFO(sSetting.c_str(), dbv.pwszVal); - db_free(&dbv); + m_performlistModified = true; + } } - else pPref = new PERFORM_INFO(sSetting.c_str(), L""); - m_performCombo.SetItemData(idx, (LPARAM)pPref); -} +}; ///////////////////////////////////////////////////////////////////////////////////////// // 'add ignore' preferences dialog -CAddIgnoreDlg::CAddIgnoreDlg(CIrcProto* _pro, const wchar_t* mask, CIgnorePrefsDlg* _owner) - : CProtoDlgBase(_pro, IDD_ADDIGNORE), - m_owner(_owner) +struct CAddIgnoreDlg : public CIrcBaseDlg { - m_hwndParent = _owner->GetHwnd(); + wchar_t szOldMask[500]; - if (mask == nullptr) - szOldMask[0] = 0; - else - wcsncpy(szOldMask, mask, _countof(szOldMask)); -} + CAddIgnoreDlg::CAddIgnoreDlg(CIrcProto *_pro, const wchar_t *mask, CDlgBase *_owner) : + CIrcBaseDlg(_pro, IDD_ADDIGNORE) + { + m_hwndParent = _owner->GetHwnd(); -bool CAddIgnoreDlg::OnInitDialog() -{ - if (szOldMask[0] == 0) { - if (m_proto->IsConnected()) - SetDlgItemText(m_hwnd, IDC_NETWORK, m_proto->m_info.sNetwork.c_str()); - CheckDlgButton(m_hwnd, IDC_Q, BST_CHECKED); - CheckDlgButton(m_hwnd, IDC_N, BST_CHECKED); - CheckDlgButton(m_hwnd, IDC_I, BST_CHECKED); - CheckDlgButton(m_hwnd, IDC_D, BST_CHECKED); - CheckDlgButton(m_hwnd, IDC_C, BST_CHECKED); + if (mask == nullptr) + szOldMask[0] = 0; + else + wcsncpy(szOldMask, mask, _countof(szOldMask)); } - return true; -} -bool CAddIgnoreDlg::OnApply() -{ - wchar_t szMask[500]; - wchar_t szNetwork[500]; - CMStringW flags; - if (IsDlgButtonChecked(m_hwnd, IDC_Q) == BST_CHECKED) flags += 'q'; - if (IsDlgButtonChecked(m_hwnd, IDC_N) == BST_CHECKED) flags += 'n'; - if (IsDlgButtonChecked(m_hwnd, IDC_I) == BST_CHECKED) flags += 'i'; - if (IsDlgButtonChecked(m_hwnd, IDC_D) == BST_CHECKED) flags += 'd'; - if (IsDlgButtonChecked(m_hwnd, IDC_C) == BST_CHECKED) flags += 'c'; - if (IsDlgButtonChecked(m_hwnd, IDC_M) == BST_CHECKED) flags += 'm'; - - GetDlgItemText(m_hwnd, IDC_MASK, szMask, _countof(szMask)); - GetDlgItemText(m_hwnd, IDC_NETWORK, szNetwork, _countof(szNetwork)); - - CMStringW Mask = GetWord(szMask, 0); - if (Mask.GetLength() != 0) { - if (!wcschr(Mask.c_str(), '!') && !wcschr(Mask.c_str(), '@')) - Mask += L"!*@*"; - - if (!flags.IsEmpty()) { - if (*szOldMask) - m_proto->RemoveIgnore(szOldMask); - m_proto->AddIgnore(Mask.c_str(), flags.c_str(), szNetwork); + bool OnInitDialog() override + { + if (szOldMask[0] == 0) { + CheckDlgButton(m_hwnd, IDC_Q, BST_CHECKED); + CheckDlgButton(m_hwnd, IDC_N, BST_CHECKED); + CheckDlgButton(m_hwnd, IDC_I, BST_CHECKED); + CheckDlgButton(m_hwnd, IDC_D, BST_CHECKED); + CheckDlgButton(m_hwnd, IDC_C, BST_CHECKED); } + return true; } - return true; -} -void CAddIgnoreDlg::OnDestroy() -{ - m_owner->FixButtons(); -} + bool OnApply() override + { + wchar_t szMask[500]; + wchar_t szNetwork[500]; + CMStringW flags; + if (IsDlgButtonChecked(m_hwnd, IDC_Q) == BST_CHECKED) flags += 'q'; + if (IsDlgButtonChecked(m_hwnd, IDC_N) == BST_CHECKED) flags += 'n'; + if (IsDlgButtonChecked(m_hwnd, IDC_I) == BST_CHECKED) flags += 'i'; + if (IsDlgButtonChecked(m_hwnd, IDC_D) == BST_CHECKED) flags += 'd'; + if (IsDlgButtonChecked(m_hwnd, IDC_C) == BST_CHECKED) flags += 'c'; + if (IsDlgButtonChecked(m_hwnd, IDC_M) == BST_CHECKED) flags += 'm'; + + GetDlgItemText(m_hwnd, IDC_MASK, szMask, _countof(szMask)); + GetDlgItemText(m_hwnd, IDC_NETWORK, szNetwork, _countof(szNetwork)); + + CMStringW Mask = GetWord(szMask, 0); + if (Mask.GetLength() != 0) { + if (!wcschr(Mask.c_str(), '!') && !wcschr(Mask.c_str(), '@')) + Mask += L"!*@*"; + + if (!flags.IsEmpty()) { + if (*szOldMask) + m_proto->RemoveIgnore(szOldMask); + m_proto->AddIgnore(Mask.c_str(), flags.c_str(), szNetwork); + } + } + return true; + } +}; ///////////////////////////////////////////////////////////////////////////////////////// // 'Ignore' preferences dialog @@ -1220,34 +896,6 @@ static TDbSetting IgnoreSettings[] = { FIELD_OFFSET(CIrcProto, m_ignoreChannelDefault), "IgnoreChannelDefault", DBVT_BYTE }, }; -static int CALLBACK IgnoreListSort(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) -{ - CIgnorePrefsDlg *hwndDlg = (CIgnorePrefsDlg*)lParamSort; - if (!hwndDlg->GetHwnd()) - return 1; - - wchar_t temp1[512]; - wchar_t temp2[512]; - - LVITEM lvm; - lvm.mask = LVIF_TEXT; - lvm.iSubItem = 0; - lvm.cchTextMax = _countof(temp1); - - lvm.iItem = lParam1; - lvm.pszText = temp1; - hwndDlg->m_list.GetItem(&lvm); - - lvm.iItem = lParam2; - lvm.pszText = temp2; - hwndDlg->m_list.GetItem(&lvm); - - if (temp1[0] && temp2[0]) - return mir_wstrcmpi(temp1, temp2); - - return (temp1[0] == 0) ? 1 : -1; -} - static LRESULT CALLBACK ListviewSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { @@ -1348,250 +996,292 @@ void CIrcProto::RewriteIgnoreSettings(void) } } -CIgnorePrefsDlg::CIgnorePrefsDlg(CIrcProto* _pro) - : CProtoDlgBase(_pro, IDD_PREFS_IGNORE), - m_list(this, IDC_LIST), - m_add(this, IDC_ADD, g_plugin.getIcon(IDI_ADD), LPGEN("Add new ignore")), - m_edit(this, IDC_EDIT, g_plugin.getIcon(IDI_EDIT), LPGEN("Edit this ignore")), - m_del(this, IDC_DELETE, g_plugin.getIcon(IDI_DELETE), LPGEN("Delete this ignore")), - m_enable(this, IDC_ENABLEIGNORE), - m_ignoreChat(this, IDC_IGNORECHAT), - m_ignoreFile(this, IDC_IGNOREFILE), - m_ignoreChannel(this, IDC_IGNORECHANNEL), - m_ignoreUnknown(this, IDC_IGNOREUNKNOWN) -{ - m_enable.OnChange = Callback(this, &CIgnorePrefsDlg::OnEnableIgnore); - m_ignoreChat.OnChange = Callback(this, &CIgnorePrefsDlg::OnIgnoreChat); - m_add.OnClick = Callback(this, &CIgnorePrefsDlg::OnAdd); - m_list.OnDoubleClick = m_edit.OnClick = Callback(this, &CIgnorePrefsDlg::OnEdit); - m_del.OnClick = Callback(this, &CIgnorePrefsDlg::OnDelete); - m_list.OnColumnClick = Callback(this, &CIgnorePrefsDlg::List_OnColumnClick); -} - -bool CIgnorePrefsDlg::OnInitDialog() +class CIgnorePrefsDlg : public CIrcBaseDlg { - m_proto->m_ignoreDlg = this; - mir_subclassWindow(m_list.GetHwnd(), ListviewSubclassProc); - - m_enable.SetState(m_proto->m_ignore); - m_ignoreFile.SetState(!m_proto->m_DCCFileEnabled); - m_ignoreChat.SetState(!m_proto->m_DCCChatEnabled); - m_ignoreChannel.SetState(m_proto->m_ignoreChannelDefault); - if (m_proto->m_DCCChatIgnore == 2) - m_ignoreUnknown.SetState(BST_CHECKED); - - m_ignoreUnknown.Enable(m_proto->m_DCCChatEnabled); - m_list.Enable(m_proto->m_ignore); - m_ignoreChannel.Enable(m_proto->m_ignore); - m_add.Enable(m_proto->m_ignore); - - static int COLUMNS_SIZES[3] = { 195, 60, 80 }; - LV_COLUMN lvC; - lvC.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; - lvC.fmt = LVCFMT_LEFT; - for (int index = 0; index < 3; index++) { - lvC.iSubItem = index; - lvC.cx = COLUMNS_SIZES[index]; - - wchar_t *text = nullptr; - switch (index) { - case 0: text = TranslateT("Ignore mask"); break; - case 1: text = TranslateT("Flags"); break; - case 2: text = TranslateT("Network"); break; + void FixButtons() + { + m_add.Enable(m_enable.GetState()); + if (m_list.GetSelectionMark() != -1) { + m_edit.Enable(); + m_del.Enable(); + } + else { + m_edit.Disable(); + m_del.Disable(); } - lvC.pszText = text; - ListView_InsertColumn(GetDlgItem(m_hwnd, IDC_INFO_LISTVIEW), index, &lvC); } - ListView_SetExtendedListViewStyle(GetDlgItem(m_hwnd, IDC_INFO_LISTVIEW), LVS_EX_FULLROWSELECT); - RebuildList(); - return true; -} + static int CALLBACK IgnoreListSort(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) + { + CIgnorePrefsDlg *hwndDlg = (CIgnorePrefsDlg*)lParamSort; + if (!hwndDlg->GetHwnd()) + return 1; -INT_PTR CIgnorePrefsDlg::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) -{ - switch (msg) { - case WM_NOTIFY: - switch (((LPNMHDR)lParam)->idFrom) { - case IDC_LIST: - switch (((NMHDR*)lParam)->code) { - case NM_CLICK: - case NM_RCLICK: - if (m_list.GetSelectionMark() != -1) - FixButtons(); - break; - } + wchar_t temp1[512]; + wchar_t temp2[512]; + + LVITEM lvm; + lvm.mask = LVIF_TEXT; + lvm.iSubItem = 0; + lvm.cchTextMax = _countof(temp1); + + lvm.iItem = lParam1; + lvm.pszText = temp1; + hwndDlg->m_list.GetItem(&lvm); + + lvm.iItem = lParam2; + lvm.pszText = temp2; + hwndDlg->m_list.GetItem(&lvm); + + if (temp1[0] && temp2[0]) + return mir_wstrcmpi(temp1, temp2); + + return (temp1[0] == 0) ? 1 : -1; + } + + void RebuildList() + { + m_list.DeleteAllItems(); + + for (auto &C : m_proto->m_ignoreItems) { + if (C->mask.IsEmpty() || C->flags[0] != '+') + continue; + + LVITEM lvItem; + lvItem.iItem = m_list.GetItemCount(); + lvItem.mask = LVIF_TEXT | LVIF_PARAM; + lvItem.iSubItem = 0; + lvItem.lParam = lvItem.iItem; + lvItem.pszText = (wchar_t *)C->mask.c_str(); + lvItem.iItem = m_list.InsertItem(&lvItem); + + lvItem.mask = LVIF_TEXT; + lvItem.iSubItem = 1; + lvItem.pszText = (wchar_t *)C->flags.c_str(); + m_list.SetItem(&lvItem); + + lvItem.mask = LVIF_TEXT; + lvItem.iSubItem = 2; + lvItem.pszText = (wchar_t *)C->network.c_str(); + m_list.SetItem(&lvItem); } - break; + + UpdateList(); + m_list.SortItems(IgnoreListSort, (LPARAM)this); + UpdateList(); + + FixButtons(); } - return CDlgBase::DlgProc(msg, wParam, lParam); -} -void CIgnorePrefsDlg::OnEnableIgnore(CCtrlData*) -{ - m_ignoreChannel.Enable(m_enable.GetState()); - m_list.Enable(m_enable.GetState()); - m_add.Enable(m_enable.GetState()); -} + void UpdateList() + { + int j = m_list.GetItemCount(); + if (j > 0) { + LVITEM lvm; + lvm.mask = LVIF_PARAM; + lvm.iSubItem = 0; + for (int i = 0; i < j; i++) { + lvm.iItem = i; + lvm.lParam = i; + m_list.SetItem(&lvm); + } + } + } -void CIgnorePrefsDlg::OnIgnoreChat(CCtrlData*) -{ - m_ignoreUnknown.Enable(m_ignoreChat.GetState() == BST_UNCHECKED); -} + CCtrlMButton m_add, m_edit, m_del; + CCtrlCheck m_enable, m_ignoreChat, m_ignoreFile, m_ignoreChannel, m_ignoreUnknown; + CCtrlListView m_list; + +public: + CIgnorePrefsDlg(CIrcProto *_pro) : + CIrcBaseDlg(_pro, IDD_PREFS_IGNORE), + m_list(this, IDC_LIST), + m_add(this, IDC_ADD, g_plugin.getIcon(IDI_ADD), LPGEN("Add new ignore")), + m_edit(this, IDC_EDIT, g_plugin.getIcon(IDI_EDIT), LPGEN("Edit this ignore")), + m_del(this, IDC_DELETE, g_plugin.getIcon(IDI_DELETE), LPGEN("Delete this ignore")), + m_enable(this, IDC_ENABLEIGNORE), + m_ignoreChat(this, IDC_IGNORECHAT), + m_ignoreFile(this, IDC_IGNOREFILE), + m_ignoreChannel(this, IDC_IGNORECHANNEL), + m_ignoreUnknown(this, IDC_IGNOREUNKNOWN) + { + m_enable.OnChange = Callback(this, &CIgnorePrefsDlg::OnEnableIgnore); + m_ignoreChat.OnChange = Callback(this, &CIgnorePrefsDlg::OnIgnoreChat); + m_add.OnClick = Callback(this, &CIgnorePrefsDlg::OnAdd); + m_list.OnDoubleClick = m_edit.OnClick = Callback(this, &CIgnorePrefsDlg::OnEdit); + m_del.OnClick = Callback(this, &CIgnorePrefsDlg::OnDelete); + m_list.OnColumnClick = Callback(this, &CIgnorePrefsDlg::List_OnColumnClick); + } -void CIgnorePrefsDlg::OnAdd(CCtrlButton*) -{ - CAddIgnoreDlg *dlg = new CAddIgnoreDlg(m_proto, nullptr, this); - dlg->Show(); - SetWindowText(dlg->GetHwnd(), TranslateT("Add ignore")); - m_add.Disable(); - m_edit.Disable(); - m_del.Disable(); -} + bool OnInitDialog() override + { + m_proto->m_ignoreDlg = this; + mir_subclassWindow(m_list.GetHwnd(), ListviewSubclassProc); + + m_enable.SetState(m_proto->m_ignore); + m_ignoreFile.SetState(!m_proto->m_DCCFileEnabled); + m_ignoreChat.SetState(!m_proto->m_DCCChatEnabled); + m_ignoreChannel.SetState(m_proto->m_ignoreChannelDefault); + if (m_proto->m_DCCChatIgnore == 2) + m_ignoreUnknown.SetState(BST_CHECKED); + + m_ignoreUnknown.Enable(m_proto->m_DCCChatEnabled); + m_list.Enable(m_proto->m_ignore); + m_ignoreChannel.Enable(m_proto->m_ignore); + m_add.Enable(m_proto->m_ignore); + + static int COLUMNS_SIZES[3] = { 195, 60, 80 }; + LV_COLUMN lvC; + lvC.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; + lvC.fmt = LVCFMT_LEFT; + for (int index = 0; index < 3; index++) { + lvC.iSubItem = index; + lvC.cx = COLUMNS_SIZES[index]; + + wchar_t *text = nullptr; + switch (index) { + case 0: text = TranslateT("Ignore mask"); break; + case 1: text = TranslateT("Flags"); break; + case 2: text = TranslateT("Network"); break; + } + lvC.pszText = text; + ListView_InsertColumn(GetDlgItem(m_hwnd, IDC_INFO_LISTVIEW), index, &lvC); + } -void CIgnorePrefsDlg::OnEdit(CCtrlButton*) -{ - if (!m_add.Enabled()) - return; - - wchar_t szMask[512]; - wchar_t szFlags[512]; - wchar_t szNetwork[512]; - int i = m_list.GetSelectionMark(); - m_list.GetItemText(i, 0, szMask, 511); - m_list.GetItemText(i, 1, szFlags, 511); - m_list.GetItemText(i, 2, szNetwork, 511); - CAddIgnoreDlg* dlg = new CAddIgnoreDlg(m_proto, szMask, this); - dlg->Show(); - HWND hWnd = dlg->GetHwnd(); - SetWindowText(hWnd, TranslateT("Edit ignore")); - if (szFlags[0]) { - if (wcschr(szFlags, 'q')) - CheckDlgButton(hWnd, IDC_Q, BST_CHECKED); - if (wcschr(szFlags, 'n')) - CheckDlgButton(hWnd, IDC_N, BST_CHECKED); - if (wcschr(szFlags, 'i')) - CheckDlgButton(hWnd, IDC_I, BST_CHECKED); - if (wcschr(szFlags, 'd')) - CheckDlgButton(hWnd, IDC_D, BST_CHECKED); - if (wcschr(szFlags, 'c')) - CheckDlgButton(hWnd, IDC_C, BST_CHECKED); - if (wcschr(szFlags, 'm')) - CheckDlgButton(hWnd, IDC_M, BST_CHECKED); + ListView_SetExtendedListViewStyle(GetDlgItem(m_hwnd, IDC_INFO_LISTVIEW), LVS_EX_FULLROWSELECT); + RebuildList(); + return true; } - SetDlgItemText(hWnd, IDC_MASK, szMask); - SetDlgItemText(hWnd, IDC_NETWORK, szNetwork); - m_add.Disable(); - m_edit.Disable(); - m_del.Disable(); -} -void CIgnorePrefsDlg::OnDelete(CCtrlButton*) -{ - if (!m_del.Enabled()) - return; + bool OnApply() override + { + m_proto->m_DCCFileEnabled = !m_ignoreFile.GetState(); + m_proto->m_DCCChatEnabled = !m_ignoreChat.GetState(); + m_proto->m_ignore = m_enable.GetState(); + m_proto->m_ignoreChannelDefault = m_ignoreChannel.GetState(); + m_proto->m_DCCChatIgnore = m_ignoreUnknown.GetState() ? 2 : 1; + m_proto->WriteSettings(IgnoreSettings, _countof(IgnoreSettings)); + return true; + } - wchar_t szMask[512]; - int i = m_list.GetSelectionMark(); - m_list.GetItemText(i, 0, szMask, _countof(szMask)); - m_proto->RemoveIgnore(szMask); -} + void OnDestroy() override + { + m_proto->m_ignoreDlg = nullptr; + m_proto->m_ignoreItems.destroy(); + + int i = m_list.GetItemCount(); + for (int j = 0; j < i; j++) { + wchar_t szMask[512], szFlags[40], szNetwork[100]; + m_list.GetItemText(j, 0, szMask, _countof(szMask)); + m_list.GetItemText(j, 1, szFlags, _countof(szFlags)); + m_list.GetItemText(j, 2, szNetwork, _countof(szNetwork)); + m_proto->m_ignoreItems.insert(new CIrcIgnoreItem(szMask, szFlags, szNetwork)); + } -void CIgnorePrefsDlg::List_OnColumnClick(CCtrlListView::TEventInfo*) -{ - m_list.SortItems(IgnoreListSort, (LPARAM)this); - UpdateList(); -} + m_proto->RewriteIgnoreSettings(); + } -bool CIgnorePrefsDlg::OnApply() -{ - m_proto->m_DCCFileEnabled = !m_ignoreFile.GetState(); - m_proto->m_DCCChatEnabled = !m_ignoreChat.GetState(); - m_proto->m_ignore = m_enable.GetState(); - m_proto->m_ignoreChannelDefault = m_ignoreChannel.GetState(); - m_proto->m_DCCChatIgnore = m_ignoreUnknown.GetState() ? 2 : 1; - m_proto->WriteSettings(IgnoreSettings, _countof(IgnoreSettings)); - return true; -} + INT_PTR DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) override + { + switch (msg) { + case WM_NOTIFY: + switch (((LPNMHDR)lParam)->idFrom) { + case IDC_LIST: + switch (((NMHDR *)lParam)->code) { + case NM_CLICK: + case NM_RCLICK: + if (m_list.GetSelectionMark() != -1) + FixButtons(); + break; + } + } + break; + } + return CDlgBase::DlgProc(msg, wParam, lParam); + } -void CIgnorePrefsDlg::OnDestroy() -{ - m_proto->m_ignoreDlg = nullptr; - m_proto->m_ignoreItems.destroy(); - - int i = m_list.GetItemCount(); - for (int j = 0; j < i; j++) { - wchar_t szMask[512], szFlags[40], szNetwork[100]; - m_list.GetItemText(j, 0, szMask, _countof(szMask)); - m_list.GetItemText(j, 1, szFlags, _countof(szFlags)); - m_list.GetItemText(j, 2, szNetwork, _countof(szNetwork)); - m_proto->m_ignoreItems.insert(new CIrcIgnoreItem(szMask, szFlags, szNetwork)); + void Update() override + { + RebuildList(); } - m_proto->RewriteIgnoreSettings(); -} + void OnEnableIgnore(CCtrlData *) + { + m_ignoreChannel.Enable(m_enable.GetState()); + m_list.Enable(m_enable.GetState()); + m_add.Enable(m_enable.GetState()); + } -void CIgnorePrefsDlg::FixButtons() -{ - m_add.Enable(m_enable.GetState()); - if (m_list.GetSelectionMark() != -1) { - m_edit.Enable(); - m_del.Enable(); + void OnIgnoreChat(CCtrlData *) + { + m_ignoreUnknown.Enable(m_ignoreChat.GetState() == BST_UNCHECKED); } - else { + + void OnAdd(CCtrlButton *) + { + CAddIgnoreDlg *dlg = new CAddIgnoreDlg(m_proto, nullptr, this); + dlg->Show(); + SetWindowText(dlg->GetHwnd(), TranslateT("Add ignore")); + m_add.Disable(); m_edit.Disable(); m_del.Disable(); } -} -void CIgnorePrefsDlg::RebuildList() -{ - m_list.DeleteAllItems(); - - for (auto &C : m_proto->m_ignoreItems) { - if (C->mask.IsEmpty() || C->flags[0] != '+') - continue; - - LVITEM lvItem; - lvItem.iItem = m_list.GetItemCount(); - lvItem.mask = LVIF_TEXT | LVIF_PARAM; - lvItem.iSubItem = 0; - lvItem.lParam = lvItem.iItem; - lvItem.pszText = (wchar_t*)C->mask.c_str(); - lvItem.iItem = m_list.InsertItem(&lvItem); - - lvItem.mask = LVIF_TEXT; - lvItem.iSubItem = 1; - lvItem.pszText = (wchar_t*)C->flags.c_str(); - m_list.SetItem(&lvItem); - - lvItem.mask = LVIF_TEXT; - lvItem.iSubItem = 2; - lvItem.pszText = (wchar_t*)C->network.c_str(); - m_list.SetItem(&lvItem); + void OnEdit(CCtrlButton *) + { + if (!m_add.Enabled()) + return; + + wchar_t szMask[512]; + wchar_t szFlags[512]; + wchar_t szNetwork[512]; + int i = m_list.GetSelectionMark(); + m_list.GetItemText(i, 0, szMask, 511); + m_list.GetItemText(i, 1, szFlags, 511); + m_list.GetItemText(i, 2, szNetwork, 511); + CAddIgnoreDlg *dlg = new CAddIgnoreDlg(m_proto, szMask, this); + dlg->Show(); + HWND hWnd = dlg->GetHwnd(); + SetWindowText(hWnd, TranslateT("Edit ignore")); + if (szFlags[0]) { + if (wcschr(szFlags, 'q')) + CheckDlgButton(hWnd, IDC_Q, BST_CHECKED); + if (wcschr(szFlags, 'n')) + CheckDlgButton(hWnd, IDC_N, BST_CHECKED); + if (wcschr(szFlags, 'i')) + CheckDlgButton(hWnd, IDC_I, BST_CHECKED); + if (wcschr(szFlags, 'd')) + CheckDlgButton(hWnd, IDC_D, BST_CHECKED); + if (wcschr(szFlags, 'c')) + CheckDlgButton(hWnd, IDC_C, BST_CHECKED); + if (wcschr(szFlags, 'm')) + CheckDlgButton(hWnd, IDC_M, BST_CHECKED); + } + + SetDlgItemText(hWnd, IDC_MASK, szMask); + SetDlgItemText(hWnd, IDC_NETWORK, szNetwork); + m_add.Disable(); + m_edit.Disable(); + m_del.Disable(); } - UpdateList(); - m_list.SortItems(IgnoreListSort, (LPARAM)this); - UpdateList(); + void OnDelete(CCtrlButton *) + { + if (!m_del.Enabled()) + return; - FixButtons(); -} + wchar_t szMask[512]; + int i = m_list.GetSelectionMark(); + m_list.GetItemText(i, 0, szMask, _countof(szMask)); + m_proto->RemoveIgnore(szMask); + } -void CIgnorePrefsDlg::UpdateList() -{ - int j = m_list.GetItemCount(); - if (j > 0) { - LVITEM lvm; - lvm.mask = LVIF_PARAM; - lvm.iSubItem = 0; - for (int i = 0; i < j; i++) { - lvm.iItem = i; - lvm.lParam = i; - m_list.SetItem(&lvm); - } + void List_OnColumnClick(CCtrlListView::TEventInfo *) + { + m_list.SortItems(IgnoreListSort, (LPARAM)this); + UpdateList(); } -} +}; ///////////////////////////////////////////////////////////////////////////////////////// @@ -1620,83 +1310,17 @@ int CIrcProto::OnInitOptionsPages(WPARAM wParam, LPARAM) return 0; } -///////////////////////////////////////////////////////////////////////////////////////// - -void CIrcProto::InitPrefs(void) -{ - ConnectSettings[0].defStr = L"Miranda"; - ConnectSettings[1].defStr = L"UNIX"; - ConnectSettings[2].defStr = L"113"; - ConnectSettings[3].defStr = L"30"; - ConnectSettings[4].defStr = L"10"; - - CtcpSettings[0].defStr = STR_USERINFO; - - OtherSettings[0].defStr = STR_QUITMESSAGE; - - ReadSettings(ConnectSettings, _countof(ConnectSettings)); - ReadSettings(CtcpSettings, _countof(CtcpSettings)); - ReadSettings(OtherSettings, _countof(OtherSettings)); - ReadSettings(IgnoreSettings, _countof(IgnoreSettings)); - - int x = getDword("SizeOfListBottom", -1); - if (x != -1) { - db_unset(0, m_szModuleName, "SizeOfListBottom"); - setDword("channelList_height", x); - } - if ((x = getDword("SizeOfListWidth", -1)) != -1) { - db_unset(0, m_szModuleName, "SizeOfListWidth"); - setDword("channelList_width", x); - } - - if (m_pNick[0] == 0) { - if (m_nick[0] != 0) { - memcpy(m_pNick, m_nick, sizeof(m_pNick)); - setWString("PNick", m_nick); - } - } - else { - memcpy(m_nick, m_pNick, sizeof(m_nick)); - setWString("Nick", m_nick); - } - - m_mySpecifiedHostIP[0] = 0; - - if (m_alias == nullptr) - m_alias = mir_wstrdup(L"/op /mode ## +ooo $1 $2 $3\r\n/dop /mode ## -ooo $1 $2 $3\r\n/voice /mode ## +vvv $1 $2 $3\r\n/dvoice /mode ## -vvv $1 $2 $3\r\n/j /join #$1 $2-\r\n/p /part ## $1-\r\n/w /whois $1\r\n/k /kick ## $1 $2-\r\n/q /query $1\r\n/logon /log on ##\r\n/logoff /log off ##\r\n/save /log buffer $1\r\n/slap /me slaps $1 around a bit with a large trout"); - - m_quickComboSelection = getDword("QuickComboSelection", m_serverComboSelection + 1); - m_myHost[0] = 0; - - colors[0] = RGB(255, 255, 255); - colors[1] = RGB(0, 0, 0); - colors[2] = RGB(0, 0, 127); - colors[3] = RGB(0, 147, 0); - colors[4] = RGB(255, 0, 0); - colors[5] = RGB(127, 0, 0); - colors[6] = RGB(156, 0, 156); - colors[7] = RGB(252, 127, 0); - colors[8] = RGB(255, 255, 0); - colors[9] = RGB(0, 252, 0); - colors[10] = RGB(0, 147, 147); - colors[11] = RGB(0, 255, 255); - colors[12] = RGB(0, 0, 252); - colors[13] = RGB(255, 0, 255); - colors[14] = RGB(127, 127, 127); - colors[15] = RGB(210, 210, 210); -} - /////////////////////////////////////////////////////////////////////////////// // Account manager UI -struct CDlgAccMgrUI : public CProtoDlgBase +class CDlgAccMgrUI : public CIrcBaseDlg { - CCtrlCombo m_serverCombo; - CCtrlEdit m_server, m_port, m_port2, m_pass, m_nick, m_nick2, m_name, m_userID, m_ssl; + CCtrlEdit m_server, m_port, m_port2, m_pass, m_nick, m_nick2, m_name, m_userID; + CCtrlCombo m_ssl; - CDlgAccMgrUI(CIrcProto* _pro, HWND _owner) - : CProtoDlgBase(_pro, IDD_ACCMGRUI), - m_serverCombo(this, IDC_SERVERCOMBO), +public: + CDlgAccMgrUI(CIrcProto* _pro, HWND _owner) : + CIrcBaseDlg(_pro, IDD_ACCMGRUI), m_server(this, IDC_SERVER), m_port(this, IDC_PORT), m_port2(this, IDC_PORT2), @@ -1708,24 +1332,19 @@ struct CDlgAccMgrUI : public CProtoDlgBase m_userID(this, IDC_USERID) { m_hwndParent = _owner; - m_serverCombo.OnChange = Callback(this, &CDlgAccMgrUI::OnChangeCombo); } bool OnInitDialog() override { - for (auto &si : g_servers) - m_serverCombo.AddStringA(si->m_name, LPARAM(si)); - - m_serverCombo.SetCurSel(m_proto->m_serverComboSelection); m_server.SetTextA(m_proto->m_serverName); m_port.SetTextA(m_proto->m_portStart); m_port2.SetTextA(m_proto->m_portEnd); m_pass.SetTextA(m_proto->m_password); - switch (m_proto->m_iSSL) { - case 0: m_ssl.SetTextA("Off"); break; - case 1: m_ssl.SetTextA("Auto"); break; - case 2: m_ssl.SetTextA("On"); break; - } + + m_ssl.AddString(TranslateT("Off"), 0); + m_ssl.AddString(TranslateT("Auto"), 1); + m_ssl.AddString(TranslateT("On"), 2); + m_ssl.SetCurSel(m_proto->m_iSSL); m_nick.SetText(m_proto->m_nick); m_nick2.SetText(m_proto->m_alternativeNick); @@ -1736,12 +1355,13 @@ struct CDlgAccMgrUI : public CProtoDlgBase bool OnApply() override { - m_proto->m_serverComboSelection = m_serverCombo.GetCurSel(); m_server.GetTextA(m_proto->m_serverName, _countof(m_proto->m_serverName)); m_port.GetTextA(m_proto->m_portStart, _countof(m_proto->m_portStart)); m_port2.GetTextA(m_proto->m_portEnd, _countof(m_proto->m_portEnd)); m_pass.GetTextA(m_proto->m_password, _countof(m_proto->m_password)); + m_proto->m_iSSL = m_ssl.GetCurSel(); + m_nick.GetText(m_proto->m_nick, _countof(m_proto->m_nick)); removeSpaces(m_proto->m_nick); wcsncpy_s(m_proto->m_pNick, m_proto->m_nick, _TRUNCATE); @@ -1753,23 +1373,6 @@ struct CDlgAccMgrUI : public CProtoDlgBase m_proto->WriteSettings(ConnectSettings, _countof(ConnectSettings)); return true; } - - void OnChangeCombo(CCtrlCombo*) - { - int i = m_serverCombo.GetCurSel(); - SERVER_INFO *pData = (SERVER_INFO*)m_serverCombo.GetItemData(i); - if (pData && (INT_PTR)pData != CB_ERR) { - m_server.SetTextA(pData->m_address); - m_port.SetInt(pData->m_portStart); - m_port2.SetInt(pData->m_portEnd); - m_pass.SetTextA(""); - switch (pData->m_iSSL) { - case 0: m_ssl.SetTextA("Off"); break; - case 1: m_ssl.SetTextA("Auto"); break; - case 2: m_ssl.SetTextA("On"); break; - } - } - } }; INT_PTR CIrcProto::SvcCreateAccMgrUI(WPARAM, LPARAM lParam) @@ -1780,39 +1383,66 @@ INT_PTR CIrcProto::SvcCreateAccMgrUI(WPARAM, LPARAM lParam) } ///////////////////////////////////////////////////////////////////////////////////////// -// Initialize servers list -static void sttImportIni(const wchar_t* szIniFile) +void CIrcProto::InitPrefs(void) { - FILE *serverFile = _wfopen(szIniFile, L"r"); - if (serverFile == nullptr) - return; + ConnectSettings[0].defStr = L"Miranda"; + ConnectSettings[1].defStr = L"UNIX"; + ConnectSettings[2].defStr = L"113"; + ConnectSettings[3].defStr = L"30"; + ConnectSettings[4].defStr = L"10"; - char buf1[500], buf2[200]; - while (fgets(buf1, sizeof(buf1), serverFile)) { - char *p = strchr(buf1, '='); - if (!p) - continue; + CtcpSettings[0].defStr = STR_USERINFO; - p++; - rtrim(p); - char *p1 = strstr(p, "SERVER:"); - if (!p1) - continue; - - memcpy(buf2, p, int(p1 - p)); - buf2[int(p1 - p)] = 0; - db_set_s(0, SERVERSMODULE, buf2, p1); + OtherSettings[0].defStr = STR_QUITMESSAGE; + + ReadSettings(ConnectSettings, _countof(ConnectSettings)); + ReadSettings(CtcpSettings, _countof(CtcpSettings)); + ReadSettings(OtherSettings, _countof(OtherSettings)); + ReadSettings(IgnoreSettings, _countof(IgnoreSettings)); + + int x = getDword("SizeOfListBottom", -1); + if (x != -1) { + db_unset(0, m_szModuleName, "SizeOfListBottom"); + setDword("channelList_height", x); + } + if ((x = getDword("SizeOfListWidth", -1)) != -1) { + db_unset(0, m_szModuleName, "SizeOfListWidth"); + setDword("channelList_width", x); } - fclose(serverFile); - ::_wremove(szIniFile); -} -void InitServers() -{ - wchar_t *szTemp = Utils_ReplaceVarsW(L"%miranda_path%\\Plugins\\IRC_servers.ini"); - sttImportIni(szTemp); - mir_free(szTemp); + if (m_pNick[0] == 0) { + if (m_nick[0] != 0) { + memcpy(m_pNick, m_nick, sizeof(m_pNick)); + setWString("PNick", m_nick); + } + } + else { + memcpy(m_nick, m_pNick, sizeof(m_nick)); + setWString("Nick", m_nick); + } + + m_mySpecifiedHostIP[0] = 0; + + if (m_alias == nullptr) + m_alias = mir_wstrdup(L"/op /mode ## +ooo $1 $2 $3\r\n/dop /mode ## -ooo $1 $2 $3\r\n/voice /mode ## +vvv $1 $2 $3\r\n/dvoice /mode ## -vvv $1 $2 $3\r\n/j /join #$1 $2-\r\n/p /part ## $1-\r\n/w /whois $1\r\n/k /kick ## $1 $2-\r\n/q /query $1\r\n/logon /log on ##\r\n/logoff /log off ##\r\n/save /log buffer $1\r\n/slap /me slaps $1 around a bit with a large trout"); - RereadServers(); + m_myHost[0] = 0; + + colors[0] = RGB(255, 255, 255); + colors[1] = RGB(0, 0, 0); + colors[2] = RGB(0, 0, 127); + colors[3] = RGB(0, 147, 0); + colors[4] = RGB(255, 0, 0); + colors[5] = RGB(127, 0, 0); + colors[6] = RGB(156, 0, 156); + colors[7] = RGB(252, 127, 0); + colors[8] = RGB(255, 255, 0); + colors[9] = RGB(0, 252, 0); + colors[10] = RGB(0, 147, 147); + colors[11] = RGB(0, 255, 255); + colors[12] = RGB(0, 0, 252); + colors[13] = RGB(255, 0, 255); + colors[14] = RGB(127, 127, 127); + colors[15] = RGB(210, 210, 210); } diff --git a/protocols/IRCG/src/resource.h b/protocols/IRCG/src/resource.h index 89630cf71d..913211493f 100644 --- a/protocols/IRCG/src/resource.h +++ b/protocols/IRCG/src/resource.h @@ -9,7 +9,6 @@ #define IDD_INFO 106 #define IDD_NICK 107 #define IDD_PREFS_OTHER 113 -#define IDD_ADDSERVER 120 #define IDD_LIST 123 #define IDD_QUICKCONN 133 #define IDI_MAIN 136 @@ -27,7 +26,6 @@ #define IDI_WHOIS 179 #define IDI_LIST 181 #define IDI_MANAGER 182 -#define IDI_QUICK 184 #define IDI_GO 185 #define IDI_APPLY 185 #define IDI_SHOW 186 @@ -66,11 +64,8 @@ #define IDC_INFO_NICK 1013 #define IDC_EDIT2 1013 #define ID_INFO_GO 1017 -#define IDC_SERVERCOMBO 1022 #define IDC_IDENT 1023 #define IDC_IDENT_TIMED 1024 -#define IDC_ADDSERVER 1031 -#define IDC_EDITSERVER 1032 #define IDC_IDENTSYSTEM 1036 #define IDC_IDENTPORT 1037 #define IDC_ONLINETIMER 1038 @@ -95,16 +90,9 @@ #define IDC_REMOVE 1094 #define IDC_APPLYTOPIC 1095 #define IDC_APPLYMODES 1096 -#define IDC_DELETESERVER 1097 -#define IDC_ADD_COMBO 1100 -#define IDC_ADD_SERVER 1101 -#define IDC_ADD_ADDRESS 1102 -#define IDC_ADD_PORT 1103 -#define IDC_ADD_PORT2 1104 #define IDC_CLOSE 1108 #define IDC_JOIN 1109 #define ID_INFO_OK 1110 -#define IDC_STARTUP 1133 #define IDC_TEXT 1134 #define IDC_DEFAULT 1139 #define IDC_WILDCARD 1140 @@ -131,9 +119,6 @@ #define IDC_WHITERECT 1179 #define IDC_LOGO 1180 #define IDC_CAPTION 1181 -#define IDC_OFF 1184 -#define IDC_AUTO 1185 -#define IDC_ON 1186 #define IDC_QUITMESSAGE 1187 #define IDC_USERINFO 1189 #define IDC_PING 1190 diff --git a/protocols/IRCG/src/scripting.cpp b/protocols/IRCG/src/scripting.cpp index 620072fa8e..07bd9f533e 100644 --- a/protocols/IRCG/src/scripting.cpp +++ b/protocols/IRCG/src/scripting.cpp @@ -113,9 +113,6 @@ INT_PTR __cdecl CIrcProto::Scripting_GetIrcData(WPARAM, LPARAM lparam) if (sRequest == "ownnick" && IsConnected()) sOutput = m_info.sNick; - else if (sRequest == "network" && IsConnected()) - sOutput = m_info.sNetwork; - else if (sRequest == "primarynick") sOutput = m_nick; diff --git a/protocols/IRCG/src/services.cpp b/protocols/IRCG/src/services.cpp index 917842b0e7..2e7cf56bfb 100644 --- a/protocols/IRCG/src/services.cpp +++ b/protocols/IRCG/src/services.cpp @@ -25,14 +25,8 @@ void CIrcProto::OnBuildProtoMenu() { CMenuItem mi(&g_plugin); mi.root = Menu_GetProtocolRoot(this); - - mi.name.a = LPGEN("&Quick connect"); - mi.hIcolibItem = g_plugin.getIconHandle(IDI_QUICK); - mi.pszService = IRC_QUICKCONNECT; - mi.position = 201001; - hMenuQuick = Menu_AddProtoMenuItem(&mi, m_szModuleName); - - if (m_iStatus != ID_STATUS_OFFLINE) mi.flags |= CMIF_GRAYED; + if (m_iStatus != ID_STATUS_OFFLINE) + mi.flags |= CMIF_GRAYED; mi.name.a = LPGEN("&Join channel"); mi.hIcolibItem = Skin_GetIconHandle(SKINICON_CHAT_JOIN); @@ -315,23 +309,6 @@ INT_PTR __cdecl CIrcProto::OnJoinMenuCommand(WPARAM, LPARAM) return 0; } -INT_PTR __cdecl CIrcProto::OnQuickConnectMenuCommand(WPARAM, LPARAM) -{ - if (!m_quickDlg) { - m_quickDlg = new CQuickDlg(this); - m_quickDlg->Show(); - - SetWindowText(m_quickDlg->GetHwnd(), TranslateT("Quick connect")); - SetDlgItemText(m_quickDlg->GetHwnd(), IDC_TEXT, TranslateT("Please select IRC network and enter the password if needed")); - SetDlgItemText(m_quickDlg->GetHwnd(), IDC_CAPTION, TranslateT("Quick connect")); - Window_SetIcon_IcoLib(m_quickDlg->GetHwnd(), g_plugin.getIconHandle(IDI_QUICK)); - } - - ShowWindow(m_quickDlg->GetHwnd(), SW_SHOW); - SetActiveWindow(m_quickDlg->GetHwnd()); - return 0; -} - INT_PTR __cdecl CIrcProto::OnShowListMenuCommand(WPARAM, LPARAM) { PostIrcMessage(L"/LIST"); @@ -948,8 +925,6 @@ void __cdecl CIrcProto::ConnectServerThread(void*) if (IsConnected()) { if (m_mySpecifiedHost[0]) ForkThread(&CIrcProto::ResolveIPThread, new IPRESOLVE(m_mySpecifiedHost, IP_MANUAL)); - - Chat_ChangeSessionName(m_szModuleName, SERVERWINDOW, m_info.sNetwork); } else { Temp = m_iDesiredStatus; @@ -985,7 +960,6 @@ void CIrcProto::ConnectToServer(void) m_sessionInfo.iIdentServerPort = _wtoi(m_identPort); m_sessionInfo.sIdentServerType = m_identSystem; m_sessionInfo.m_iSSL = m_iSSL; - m_sessionInfo.sNetwork = m_network; bPerformDone = false; bTempDisableCheck = false; @@ -1002,7 +976,7 @@ void CIrcProto::ConnectToServer(void) InterlockedIncrement((long *)&m_bConnectRequested); wchar_t szTemp[300]; - mir_snwprintf(szTemp, L"\033%s %c%s%c (%S: %u)", TranslateT("Connecting to"), irc::BOLD, m_sessionInfo.sNetwork.c_str(), irc::BOLD, m_sessionInfo.sServer.c_str(), m_sessionInfo.iPort); + mir_snwprintf(szTemp, L"\033%s %S:%u", TranslateT("Connecting to"), m_sessionInfo.sServer.c_str(), m_sessionInfo.iPort); DoEvent(GC_EVENT_INFORMATION, SERVERWINDOW, nullptr, szTemp, nullptr, nullptr, NULL, true, false); } diff --git a/protocols/IRCG/src/stdafx.h b/protocols/IRCG/src/stdafx.h index 4f79b0249a..35d3d6ca94 100644 --- a/protocols/IRCG/src/stdafx.h +++ b/protocols/IRCG/src/stdafx.h @@ -69,7 +69,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "resource.h" -#define IRC_QUICKCONNECT "/QuickConnectMenu" #define IRC_JOINCHANNEL "/JoinChannelMenu" #define IRC_CHANGENICK "/ChangeNickMenu" #define IRC_SHOWLIST "/ShowListMenu" @@ -136,14 +135,6 @@ struct CHANNELINFO // Contains info about the channels int codepage; }; -struct SERVER_INFO // Contains info about different servers -{ - ~SERVER_INFO(); - - char *m_name, *m_address, *m_group; - int m_portStart, m_portEnd, m_iSSL; -}; - struct PERFORM_INFO // Contains 'm_perform buffer' for different networks { PERFORM_INFO(const char* szSetting, const wchar_t* value) : @@ -199,7 +190,6 @@ using namespace irc; // Functions // main.cpp -extern OBJLIST g_servers; CIrcProto* GetTimerOwner(UINT_PTR eventId); @@ -212,9 +202,6 @@ VOID CALLBACK DCCTimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime) // options.cpp -void InitServers(void); -void RereadServers(void); - void InitContactMenus(void); void UninitContactMenus(void); diff --git a/protocols/IRCG/src/tools.cpp b/protocols/IRCG/src/tools.cpp index 02ca2c5b6d..e0ebfd64fe 100644 --- a/protocols/IRCG/src/tools.cpp +++ b/protocols/IRCG/src/tools.cpp @@ -373,10 +373,7 @@ INT_PTR CIrcProto::DoEvent(int iEvent, const wchar_t* pszWindow, const wchar_t* GCEVENT gce = { m_szModuleName, nullptr, iEvent }; if (pszWindow) { - if (mir_wstrcmpi(pszWindow, SERVERWINDOW)) - sID = pszWindow + (CMStringW)L" - " + m_info.sNetwork; - else - sID = pszWindow; + sID = pszWindow; gce.pszID.w = (wchar_t*)sID.c_str(); } else gce.pszID.w = nullptr; @@ -521,7 +518,7 @@ int CIrcProto::SetChannelSBText(CMStringW sWindow, CHANNELINFO * wi) CMStringW CIrcProto::MakeWndID(const wchar_t* sWindow) { wchar_t buf[200]; - mir_snwprintf(buf, L"%s - %s", sWindow, (IsConnected()) ? m_info.sNetwork.c_str() : TranslateT("Offline")); + mir_snwprintf(buf, L"%s - %s", sWindow, (IsConnected()) ? m_tszUserName : TranslateT("Offline")); return CMStringW(buf); } @@ -670,12 +667,3 @@ void CIrcProto::ClearUserhostReasons(int type) break; } } - -//////////////////////////////////////////////////////////////////// - -SERVER_INFO::~SERVER_INFO() -{ - mir_free(m_name); - mir_free(m_address); - mir_free(m_group); -} diff --git a/protocols/IRCG/src/version.h b/protocols/IRCG/src/version.h index f1f90eb4cf..0e67ee5bb7 100644 --- a/protocols/IRCG/src/version.h +++ b/protocols/IRCG/src/version.h @@ -1,6 +1,6 @@ #define __MAJOR_VERSION 0 -#define __MINOR_VERSION 95 -#define __RELEASE_NUM 10 +#define __MINOR_VERSION 96 +#define __RELEASE_NUM 1 #define __BUILD_NUM 1 #include diff --git a/protocols/IRCG/src/windows.cpp b/protocols/IRCG/src/windows.cpp index 44a5d90d79..8a16147cfa 100644 --- a/protocols/IRCG/src/windows.cpp +++ b/protocols/IRCG/src/windows.cpp @@ -24,8 +24,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ///////////////////////////////////////////////////////////////////////////////////////// // Message Box -CMessageBoxDlg::CMessageBoxDlg(CIrcProto *_pro, DCCINFO *_dci) - : CProtoDlgBase(_pro, IDD_MESSAGEBOX), +CMessageBoxDlg::CMessageBoxDlg(CIrcProto *_pro, DCCINFO *_dci) : + CIrcBaseDlg(_pro, IDD_MESSAGEBOX), pdci(_dci) { } @@ -244,8 +244,8 @@ bool CNickDlg::OnApply() #define LIST_TIMER 10 -CListDlg::CListDlg(CIrcProto *_pro) - : CProtoDlgBase(_pro, IDD_LIST), +CListDlg::CListDlg(CIrcProto *_pro) : + CIrcBaseDlg(_pro, IDD_LIST), m_Join(this, IDC_JOIN), m_list(this, IDC_INFO_LISTVIEW), m_list2(this, IDC_INFO_LISTVIEW2), @@ -545,157 +545,6 @@ bool CJoinDlg::OnApply() return true; } -///////////////////////////////////////////////////////////////////////////////////////// -// 'Quick' dialog - -CQuickDlg::CQuickDlg(CIrcProto *_pro) - : CCoolIrcDlg(_pro, IDD_QUICKCONN), - m_serverCombo(this, IDC_SERVERCOMBO) -{ - m_serverCombo.OnChange = Callback(this, &CQuickDlg::OnServerCombo); -} - -bool CQuickDlg::OnInitDialog() -{ - CCoolIrcDlg::OnInitDialog(); - - if (g_servers.getCount() > 0) { - for (auto &si : g_servers) - m_serverCombo.AddStringA(si->m_name, (LPARAM)si); - } - else EnableWindow(GetDlgItem(m_hwnd, IDOK), false); - - CMStringA szName(FORMAT, "---- %s ----", Translate("Not listed server")); - m_si = new SERVER_INFO; - m_si->m_group = mir_strdup(""); - m_si->m_name = szName.Detach(); - - DBVARIANT dbv; - if (!m_proto->getString("ServerName", &dbv)) { - m_si->m_address = mir_strdup(dbv.pszVal); - db_free(&dbv); - } - else m_si->m_address = mir_strdup(Translate("Type new server address here")); - - if (!m_proto->getString("PortStart", &dbv)) { - m_si->m_portStart = atoi(dbv.pszVal); - db_free(&dbv); - } - else m_si->m_portStart = 6667; - - if (!m_proto->getString("PortEnd", &dbv)) { - m_si->m_portEnd = atoi(dbv.pszVal); - db_free(&dbv); - } - else m_si->m_portEnd = 6667; - - m_si->m_iSSL = m_proto->getByte("UseSSL", 0); - - m_serverCombo.AddStringA(m_si->m_name, (LPARAM)m_si); - - if (m_proto->m_quickComboSelection != -1) { - m_serverCombo.SetCurSel(m_proto->m_quickComboSelection); - OnServerCombo(nullptr); - } - else EnableWindow(GetDlgItem(m_hwnd, IDOK), false); - return true; -} - -void CQuickDlg::OnDestroy() -{ - CCoolIrcDlg::OnDestroy(); - - delete m_si; - m_proto->m_quickDlg = nullptr; -} - -bool CQuickDlg::OnApply() -{ - GetDlgItemTextA(m_hwnd, IDC_SERVER, m_proto->m_serverName, _countof(m_proto->m_serverName)); - GetDlgItemTextA(m_hwnd, IDC_PORT, m_proto->m_portStart, _countof(m_proto->m_portStart)); - GetDlgItemTextA(m_hwnd, IDC_PORT2, m_proto->m_portEnd, _countof(m_proto->m_portEnd)); - GetDlgItemTextA(m_hwnd, IDC_PASS, m_proto->m_password, _countof(m_proto->m_password)); - - int i = m_serverCombo.GetCurSel(); - SERVER_INFO* pData = (SERVER_INFO*)m_serverCombo.GetItemData(i); - if (pData && (INT_PTR)pData != CB_ERR) { - mir_strcpy(m_proto->m_network, pData->m_group); - pData->m_iSSL = 0; - if (IsDlgButtonChecked(m_hwnd, IDC_SSL_ON)) - pData->m_iSSL = 2; - if (IsDlgButtonChecked(m_hwnd, IDC_SSL_AUTO)) - pData->m_iSSL = 1; - m_proto->m_iSSL = pData->m_iSSL; - } - - wchar_t windowname[20]; - GetWindowText(m_hwnd, windowname, _countof(windowname)); - if (mir_wstrcmpi(windowname, L"Miranda IRC") == 0) { - m_proto->m_serverComboSelection = m_serverCombo.GetCurSel() - 1; - m_proto->setDword("ServerComboSelection", m_proto->m_serverComboSelection); - m_proto->setString("ServerName", m_proto->m_serverName); - m_proto->setString("PortStart", m_proto->m_portStart); - m_proto->setString("PortEnd", m_proto->m_portEnd); - m_proto->setString("Password", m_proto->m_password); - m_proto->setString("Network", m_proto->m_network); - m_proto->setByte("UseSSL", m_proto->m_iSSL); - } - m_proto->m_quickComboSelection = m_serverCombo.GetCurSel(); - m_proto->setDword("QuickComboSelection", m_proto->m_quickComboSelection); - m_proto->DisconnectFromServer(); - m_proto->ConnectToServer(); - return true; -} - -void CQuickDlg::OnServerCombo(CCtrlData*) -{ - int i = m_serverCombo.GetCurSel(); - if (i == CB_ERR) - return; - - SERVER_INFO* pData = (SERVER_INFO*)m_serverCombo.GetItemData(i); - SetDlgItemTextA(m_hwnd, IDC_SERVER, pData->m_address); - SetDlgItemTextA(m_hwnd, IDC_PASS, ""); - SetDlgItemInt(m_hwnd, IDC_PORT, pData->m_portStart, FALSE); - SetDlgItemInt(m_hwnd, IDC_PORT2, pData->m_portEnd, FALSE); - - if (pData->m_iSSL == 0) { - CheckDlgButton(m_hwnd, IDC_SSL_OFF, BST_CHECKED); - CheckDlgButton(m_hwnd, IDC_SSL_AUTO, BST_UNCHECKED); - CheckDlgButton(m_hwnd, IDC_SSL_ON, BST_UNCHECKED); - } - if (pData->m_iSSL == 1) { - CheckDlgButton(m_hwnd, IDC_SSL_AUTO, BST_CHECKED); - CheckDlgButton(m_hwnd, IDC_SSL_OFF, BST_UNCHECKED); - CheckDlgButton(m_hwnd, IDC_SSL_ON, BST_UNCHECKED); - } - if (pData->m_iSSL == 2) { - CheckDlgButton(m_hwnd, IDC_SSL_ON, BST_CHECKED); - CheckDlgButton(m_hwnd, IDC_SSL_OFF, BST_UNCHECKED); - CheckDlgButton(m_hwnd, IDC_SSL_AUTO, BST_UNCHECKED); - } - - CMStringA szDefault(FORMAT, "---- %s ----", Translate("Not listed server")); - if (!mir_strcmp(pData->m_name, szDefault)) { - SendDlgItemMessage(m_hwnd, IDC_SERVER, EM_SETREADONLY, false, 0); - SendDlgItemMessage(m_hwnd, IDC_PORT, EM_SETREADONLY, false, 0); - SendDlgItemMessage(m_hwnd, IDC_PORT2, EM_SETREADONLY, false, 0); - EnableWindow(GetDlgItem(m_hwnd, IDC_SSL_OFF), TRUE); - EnableWindow(GetDlgItem(m_hwnd, IDC_SSL_AUTO), TRUE); - EnableWindow(GetDlgItem(m_hwnd, IDC_SSL_ON), TRUE); - } - else { - SendDlgItemMessage(m_hwnd, IDC_SERVER, EM_SETREADONLY, true, 0); - SendDlgItemMessage(m_hwnd, IDC_PORT, EM_SETREADONLY, true, 0); - SendDlgItemMessage(m_hwnd, IDC_PORT2, EM_SETREADONLY, true, 0); - EnableWindow(GetDlgItem(m_hwnd, IDC_SSL_OFF), FALSE); - EnableWindow(GetDlgItem(m_hwnd, IDC_SSL_AUTO), FALSE); - EnableWindow(GetDlgItem(m_hwnd, IDC_SSL_ON), FALSE); - } - - EnableWindow(GetDlgItem(m_hwnd, IDOK), true); -} - ///////////////////////////////////////////////////////////////////////////////////////// // 'Question' dialog @@ -921,7 +770,7 @@ bool CManagerDlg::OnClose() } if (!S.IsEmpty() && m_proto->IsConnected()) { - mir_snwprintf(temp, L"Topic%s%s", window, m_proto->m_info.sNetwork.c_str()); + mir_snwprintf(temp, L"Topic%s", window); char* p = mir_u2a(temp); m_proto->setWString(p, S.c_str()); mir_free(p); @@ -1277,7 +1126,7 @@ void CManagerDlg::InitManager(int mode, const wchar_t* window) if (wi) { if (m_proto->IsConnected()) { wchar_t temp[1000]; - mir_snwprintf(temp, L"Topic%s%s", window, m_proto->m_info.sNetwork.c_str()); + mir_snwprintf(temp, L"Topic%s", window); char* p = mir_u2a(temp); @@ -1370,8 +1219,8 @@ void CManagerDlg::InitManager(int mode, const wchar_t* window) ///////////////////////////////////////////////////////////////////////////////////////// // 'cool' dialog -CCoolIrcDlg::CCoolIrcDlg(CIrcProto* _pro, int dlgId) - : CProtoDlgBase(_pro, dlgId) +CCoolIrcDlg::CCoolIrcDlg(CIrcProto* _pro, int dlgId) : + CIrcBaseDlg(_pro, dlgId) {} bool CCoolIrcDlg::OnInitDialog() -- cgit v1.2.3