From 8d0f419093fed83fc74dbcde93b83881e2e005d2 Mon Sep 17 00:00:00 2001 From: yuanyuanxiang <962914132@qq.com> Date: Sun, 4 Oct 2026 14:39:38 +0200 Subject: [PATCH] Improve: multi-line keyword input in notification settings Replace the single-line, semicolon-separated keyword field with a taller multi-line edit box (with a vertical scrollbar) where each keyword goes on its own line. The stored format stays semicolon-separated, so existing notify.ini files remain valid; load/save convert between newlines and semicolons, trimming each keyword and skipping empty lines. Also decode the stored matchPattern as UTF-8 when loading the dialog, so non-ASCII keywords round-trip correctly (matching the CP_UTF8 encoding used on save). Co-Authored-By: deepseek-v4-pro --- server/2015Remote/2015Remote.rc | Bin 174646 -> 174756 bytes server/2015Remote/NotifySettingsDlg.cpp | 41 ++++++++++++++++++++++-- server/2015Remote/lang/en_US.ini | 2 +- 3 files changed, 39 insertions(+), 4 deletions(-) diff --git a/server/2015Remote/2015Remote.rc b/server/2015Remote/2015Remote.rc index 5ef24ff909857279e7ea8e8e531283941aba2afe..3d41393cd2c23d4e907159aec6c0bc9c3f245bb9 100644 GIT binary patch delta 154 zcmV;L0A>HS)C#243V^f$#w3?6SOLVhiX{Pd2m>(yGPeOP0Z#-0G?RggOOxn}E|Y*p zNDwFh&udJG08T1Sb5Smp&5M_|G67ZxIRH2SEC4c>AwdBZlkhPjmr64MUIj7$F#t4| zv0DKdm&P*zU_frN^l$MtyGXYisH= 0) ? (int)m_comboNotifyColumn.GetItemData(sel) : ONLINELIST_COMPUTER_NAME; + // Normalize one-keyword-per-line input back to semicolon-separated storage. m_editNotifyPattern.GetWindowText(str); - rule.matchPattern = CT2A(str, CP_UTF8); + str.Replace(_T("\r\n"), _T("\n")); + str.Replace(_T('\r'), _T('\n')); + { + CString joined; + int start = 0; + for (;;) { + const int pos = str.Find(_T('\n'), start); + CString kw = (pos < 0) ? str.Mid(start) : str.Mid(start, pos - start); + kw.Trim(); + if (!kw.IsEmpty()) { + if (!joined.IsEmpty()) joined += _T(';'); + joined += kw; + } + if (pos < 0) break; + start = pos + 1; + } + rule.matchPattern = CT2A(joined, CP_UTF8); + } // Update manager config and save GetNotifyManager().SetConfig(m_config); diff --git a/server/2015Remote/lang/en_US.ini b/server/2015Remote/lang/en_US.ini index cb78628..4733d9e 100644 --- a/server/2015Remote/lang/en_US.ini +++ b/server/2015Remote/lang/en_US.ini @@ -1493,7 +1493,7 @@ SMTP ´¥·¢Ìõ¼þ:=Trigger: Æ¥ÅäÁÐ:=Match Column: ¹Ø¼ü´Ê:=Keywords: -(¶à¸ö¹Ø¼ü´ÊÓ÷ֺŷָô£¬Æ¥ÅäÈÎÒ»Ïî¼´´¥·¢Í¨Öª)=(Multiple keywords separated by semicolon) +(ÿÐÐÒ»¸ö¹Ø¼ü´Ê£¬Æ¥ÅäÈÎÒ»Ïî¼´´¥·¢Í¨Öª)=(One keyword per line) Ìáʾ: ͬһÖ÷»ú 60 ·ÖÖÓÄÚ½ö֪ͨһ´Î=Tip: Same host notified only once per 60 minutes Ö÷»úÉÏÏß=Host Online IPµØÖ·=IP Address