From 8c28b3a113572b85bbed245b340e76408e491911 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 9 Nov 2023 12:56:02 +0300 Subject: =?UTF-8?q?fixes=20#3902=20(IRC:=20=D0=BD=D0=B5=D0=BA=D0=BE=D1=80?= =?UTF-8?q?=D1=80=D0=B5=D0=BA=D1=82=D0=BD=D0=BE=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=D0=B5=D1=82=20=D0=B4=D0=B8=D0=B0=D0=BB=D0=BE=D0=B3?= =?UTF-8?q?=20=D0=B8=D0=B3=D0=BD=D0=BE=D1=80=D0=B8=D1=80=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- protocols/IRCG/res/IRC.rc | 4 +- protocols/IRCG/src/options.cpp | 114 ++++++++++++++++++++--------------------- 2 files changed, 57 insertions(+), 61 deletions(-) diff --git a/protocols/IRCG/res/IRC.rc b/protocols/IRCG/res/IRC.rc index 97b0cc48be..12bb071fb0 100644 --- a/protocols/IRCG/res/IRC.rc +++ b/protocols/IRCG/res/IRC.rc @@ -205,9 +205,9 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN PUSHBUTTON "&Close",IDOK,306,183,50,14 DEFPUSHBUTTON "&Join",IDC_JOIN,251,183,50,14,WS_DISABLED - CONTROL "List1",IDC_INFO_LISTVIEW,"SysListView32",LVS_REPORT | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP,4,7,352,172 + CONTROL "",IDC_INFO_LISTVIEW,"SysListView32",LVS_REPORT | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP,4,7,352,172 EDITTEXT IDC_FILTER_STRING,68,183,143,13,ES_AUTOHSCROLL - CONTROL "List1",IDC_INFO_LISTVIEW2,"SysListView32",LVS_REPORT | LVS_SINGLESEL | NOT WS_VISIBLE | WS_BORDER | WS_TABSTOP,4,7,352,172 + CONTROL "",IDC_INFO_LISTVIEW2,"SysListView32",LVS_REPORT | LVS_SINGLESEL | NOT WS_VISIBLE | WS_BORDER | WS_TABSTOP,4,7,352,172 LTEXT "Filter by",IDC_FILTER_BTN,7,185,56,8 EDITTEXT IDC_TEXT,4,200,351,10,ES_AUTOHSCROLL | WS_DISABLED | NOT WS_BORDER,WS_EX_STATICEDGE END diff --git a/protocols/IRCG/src/options.cpp b/protocols/IRCG/src/options.cpp index 414cd687df..2c98c451fe 100644 --- a/protocols/IRCG/src/options.cpp +++ b/protocols/IRCG/src/options.cpp @@ -816,45 +816,68 @@ public: ///////////////////////////////////////////////////////////////////////////////////////// // 'add ignore' preferences dialog -struct CAddIgnoreDlg : public CIrcBaseDlg +class CAddIgnoreDlg : public CIrcBaseDlg { - wchar_t szOldMask[500]; + const wchar_t *szOldMask, *szOldFlags; - CAddIgnoreDlg::CAddIgnoreDlg(CIrcProto *_pro, const wchar_t *mask, CDlgBase *_owner) : - CIrcBaseDlg(_pro, IDD_ADDIGNORE) - { - m_hwndParent = _owner->GetHwnd(); + CCtrlEdit edtMask; + CCtrlCheck chkQ, chkN, chkI, chkD, chkC, chkM; - if (mask == nullptr) - szOldMask[0] = 0; - else - wcsncpy(szOldMask, mask, _countof(szOldMask)); +public: + CAddIgnoreDlg::CAddIgnoreDlg(CIrcProto *_pro, const wchar_t *mask, const wchar_t *flags, CDlgBase *_owner) : + CIrcBaseDlg(_pro, IDD_ADDIGNORE), + szOldMask(mask), + szOldFlags(flags), + chkQ(this, IDC_Q), + chkN(this, IDC_N), + chkI(this, IDC_I), + chkD(this, IDC_D), + chkC(this, IDC_C), + chkM(this, IDC_M), + edtMask(this, IDC_MASK) + { + SetParent(_owner->GetHwnd()); } 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); + if (szOldMask == nullptr) { + SetCaption(TranslateT("Add ignore")); + chkQ.SetState(true); + chkN.SetState(true); + chkI.SetState(true); + chkD.SetState(true); + chkC.SetState(true); + } + else { + SetCaption(TranslateT("Edit ignore")); + for (auto *p = szOldFlags; *p; p++) + switch (*p) { + case 'q': chkQ.SetState(true); break; + case 'n': chkN.SetState(true); break; + case 'i': chkI.SetState(true); break; + case 'd': chkD.SetState(true); break; + case 'c': chkC.SetState(true); break; + case 'm': chkM.SetState(true); break; + } + + edtMask.SetText(szOldMask); } return true; } bool OnApply() override { - wchar_t szMask[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'; + if (chkQ.IsChecked()) flags += 'q'; + if (chkN.IsChecked()) flags += 'n'; + if (chkI.IsChecked()) flags += 'i'; + if (chkD.IsChecked()) flags += 'd'; + if (chkC.IsChecked()) flags += 'c'; + if (chkM.IsChecked()) flags += 'm'; - GetDlgItemText(m_hwnd, IDC_MASK, szMask, _countof(szMask)); + wchar_t szMask[500]; + edtMask.GetText(szMask, _countof(szMask)); CMStringW Mask = GetWord(szMask, 0); if (Mask.GetLength() != 0) { @@ -862,7 +885,7 @@ struct CAddIgnoreDlg : public CIrcBaseDlg Mask += L"!*@*"; if (!flags.IsEmpty()) { - if (*szOldMask) + if (szOldMask) m_proto->RemoveIgnore(szOldMask); m_proto->AddIgnore(Mask.c_str(), flags.c_str()); } @@ -1118,14 +1141,14 @@ public: lvC.iSubItem = 0; lvC.cx = 235; lvC.pszText = TranslateT("Ignore mask"); - ListView_InsertColumn(GetDlgItem(m_hwnd, IDC_INFO_LISTVIEW), 0, &lvC); + m_list.InsertColumn(0, &lvC); lvC.iSubItem = 1; lvC.cx = 100; lvC.pszText = TranslateT("Flags"); - ListView_InsertColumn(GetDlgItem(m_hwnd, IDC_INFO_LISTVIEW), 1, &lvC); + m_list.InsertColumn(1, &lvC); - ListView_SetExtendedListViewStyle(GetDlgItem(m_hwnd, IDC_INFO_LISTVIEW), LVS_EX_FULLROWSELECT); + m_list.SetExtendedListViewStyle(LVS_EX_FULLROWSELECT); RebuildList(); return true; } @@ -1195,12 +1218,8 @@ public: 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(); + if (CAddIgnoreDlg(m_proto, nullptr, nullptr, this).DoModal()) + UpdateList(); } void OnEdit(CCtrlButton *) @@ -1210,34 +1229,11 @@ public: 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); - m_add.Disable(); - m_edit.Disable(); - m_del.Disable(); + if (CAddIgnoreDlg(m_proto, szMask, szFlags, this).DoModal()) + UpdateList(); } void OnDelete(CCtrlButton *) -- cgit v1.2.3