diff options
author | George Hazan <george.hazan@gmail.com> | 2023-09-12 20:19:33 +0300 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2023-09-12 20:19:33 +0300 |
commit | 9dedc6fb280a58f83d7939ab0b85c00ea0d726f1 (patch) | |
tree | 28d685292ca15ae9d0aeb3594e0244b9d019fdb5 | |
parent | 8cb9d3fd6d002d034f88b87a67bd76c4976d0271 (diff) |
code cleaning
-rw-r--r-- | plugins/NewStory/src/history_array.cpp | 2 | ||||
-rw-r--r-- | plugins/NewStory/src/history_control.cpp | 2 | ||||
-rw-r--r-- | plugins/NewStory/src/history_dlg.cpp | 18 | ||||
-rw-r--r-- | plugins/NewStory/src/options.cpp | 2 | ||||
-rw-r--r-- | plugins/NewStory/src/templates.cpp | 100 | ||||
-rw-r--r-- | plugins/NewStory/src/templates.h | 16 | ||||
-rw-r--r-- | plugins/NewStory/src/utils.cpp | 20 | ||||
-rw-r--r-- | plugins/NewStory/src/utils.h | 2 |
8 files changed, 68 insertions, 94 deletions
diff --git a/plugins/NewStory/src/history_array.cpp b/plugins/NewStory/src/history_array.cpp index aaf1295707..18730fba87 100644 --- a/plugins/NewStory/src/history_array.cpp +++ b/plugins/NewStory/src/history_array.cpp @@ -354,7 +354,7 @@ void ItemData::setText() if (m_bRtf) data = MTextCreateEx(htuLog, this->wtext, MTEXT_FLG_WCHAR | MTEXT_FLG_RTF); else - data = MTextCreateW(htuLog, Proto_GetBaseAccountName(hContact), ptrW(TplFormatString(getTemplate(), hContact, this))); + data = MTextCreateW(htuLog, Proto_GetBaseAccountName(hContact), TplFormatString(getTemplate(), hContact, this)); savedHeight = -1; } diff --git a/plugins/NewStory/src/history_control.cpp b/plugins/NewStory/src/history_control.cpp index 0e5d20577d..2022ae3f58 100644 --- a/plugins/NewStory/src/history_control.cpp +++ b/plugins/NewStory/src/history_control.cpp @@ -275,7 +275,7 @@ void NewstoryListData::Copy(bool bTextOnly) res.Append(L"\r\n"); } else { // copy text only - ptrW wszText(TplFormatString(p->getCopyTemplate(), p->hContact, p)); + CMStringW wszText(TplFormatString(p->getCopyTemplate(), p->hContact, p)); RemoveBbcodes(wszText); res.Append(wszText); } diff --git a/plugins/NewStory/src/history_dlg.cpp b/plugins/NewStory/src/history_dlg.cpp index 0de4d1f494..27ab1c9f72 100644 --- a/plugins/NewStory/src/history_dlg.cpp +++ b/plugins/NewStory/src/history_dlg.cpp @@ -265,7 +265,7 @@ class CHistoryDlg : public CDlgBase break; default: - SetWindowText(m_hwnd, ptrW(TplFormatString(TPL_TITLE, m_hContact, 0))); + SetWindowText(m_hwnd, TplFormatString(TPL_TITLE, m_hContact, 0)); } } @@ -356,11 +356,17 @@ public: btnFindPrev(this, IDC_FINDPREV, g_plugin.getIcon(IDI_FINDPREV), LPGEN("Find previous")), btnTimeTree(this, IDC_TIMETREE, g_plugin.getIcon(IDI_TIMETREE), LPGEN("Conversations")) { - if (m_hContact > 0) { + showFlags = g_plugin.getWord("showFlags", 0x7f); + m_dwOptions = g_plugin.getDword("dwOptions"); + + if (m_hContact == INVALID_CONTACT_ID) + m_dwOptions |= WND_OPT_SEARCHBAR; + else if (m_hContact > 0) { m_toolbar.push_back(Button(btnUserMenu)); m_toolbar.push_back(Button(btnUserInfo)); m_toolbar.push_back(Button(btnSendMsg, Button::SPACED)); } + m_toolbar.push_back(Button(btnTimeTree)); m_toolbar.push_back(Button(btnSearch)); m_toolbar.push_back(Button(btnFilter)); @@ -389,9 +395,6 @@ public: btnUserMenu.OnClick = Callback(this, &CHistoryDlg::onClick_UserMenu); btnTimeTree.OnClick = Callback(this, &CHistoryDlg::onClick_TimeTree); - showFlags = g_plugin.getWord(0, "showFlags", 0x7f); - m_dwOptions = g_plugin.getDword(0, "dwOptions"); - m_hMenu = LoadMenu(g_plugin.getInst(), MAKEINTRESOURCE(IDR_POPUPS)); TranslateMenu(m_hMenu); @@ -503,10 +506,7 @@ public: TimeTreeBuild(); SetFocus(m_histWindow.GetHwnd()); } - else { - Utils_RestoreWindowPosition(m_hwnd, 0, MODULENAME, "glb_"); - m_dwOptions |= WND_OPT_SEARCHBAR; - } + else Utils_RestoreWindowPosition(m_hwnd, 0, MODULENAME, "glb_"); m_histCtrl->SetContact(m_hContact); m_histCtrl->ScrollBottom(); diff --git a/plugins/NewStory/src/options.cpp b/plugins/NewStory/src/options.cpp index b315ac78c3..1b59265315 100644 --- a/plugins/NewStory/src/options.cpp +++ b/plugins/NewStory/src/options.cpp @@ -65,7 +65,7 @@ class CTemplateOptsDlg : public CBaseOptsDlg item.hEvent = m_hDbEVent; item.load(true); - ptrW wszText(TplFormatStringEx(int(m_curr-templates), m_curr->tmpValue, item.hContact, &item)); + CMStringW wszText(TplFormatStringEx(int(m_curr-templates), m_curr->tmpValue, &item)); preview.SetText(wszText); gpreview.SetText(wszText); } diff --git a/plugins/NewStory/src/templates.cpp b/plugins/NewStory/src/templates.cpp index fc6bb62843..7773f8af16 100644 --- a/plugins/NewStory/src/templates.cpp +++ b/plugins/NewStory/src/templates.cpp @@ -1,7 +1,5 @@ #include "stdafx.h" -int TplMeasureVars(TemplateVars* vars, wchar_t* str); - wchar_t *weekDays[7] = { LPGENW("Sunday"), LPGENW("Monday"), LPGENW("Tuesday"), LPGENW("Wednesday"), LPGENW("Thursday"), LPGENW("Friday"), LPGENW("Saturday") }; wchar_t *months[12] = @@ -13,7 +11,7 @@ wchar_t *months[12] = /////////////////////////////////////////////////////////////////////////////// // Template formatting for options dialog -wchar_t *TplFormatStringEx(int tpl, wchar_t *sztpl, MCONTACT hContact, ItemData *item) +CMStringW TplFormatStringEx(int tpl, wchar_t *sztpl, ItemData *item) { if (tpl < 0 || tpl >= TPL_COUNT || !sztpl) return mir_wstrdup(L""); @@ -21,24 +19,21 @@ wchar_t *TplFormatStringEx(int tpl, wchar_t *sztpl, MCONTACT hContact, ItemData TemplateVars vars; auto &T = templates[tpl]; - for (int i = 0; i < TemplateInfo::VF_COUNT; i++) - if (T.vf[i]) - T.vf[i](VFM_VARS, &vars, hContact, item); + for (auto &it : T.vf) + if (it) + it(&vars, item->hContact, item); - wchar_t *buf = (wchar_t *)mir_alloc(sizeof(wchar_t) * (TplMeasureVars(&vars, sztpl) + 1)); - wchar_t *bufptr = buf; + CMStringW buf; for (wchar_t *p = sztpl; *p; p++) { if (*p == '%') { wchar_t *var = vars.GetVar((p[1] & 0xff)); - if (var) { - mir_wstrcpy(bufptr, var); - bufptr += mir_wstrlen(var); - } + if (var) + buf.Append(var); p++; } - else *bufptr++ = *p; + else buf.AppendChar(*p); } - *bufptr = 0; + return buf; } @@ -120,9 +115,9 @@ CMStringA TplFormatRtf(int tpl, MCONTACT hContact, ItemData *item) TemplateVars vars; - for (int i = 0; i < TemplateInfo::VF_COUNT; i++) - if (T.vf[i]) - T.vf[i](VFM_VARS, &vars, hContact, item); + for (auto &it : T.vf) + if (it) + it(&vars, hContact, item); CMStringA buf; buf.Append("{\\rtf1\\ansi\\deff0"); @@ -145,10 +140,10 @@ CMStringA TplFormatRtf(int tpl, MCONTACT hContact, ItemData *item) /////////////////////////////////////////////////////////////////////////////// // Template formatting for copying text -wchar_t *TplFormatString(int tpl, MCONTACT hContact, ItemData *item) +CMStringW TplFormatString(int tpl, MCONTACT hContact, ItemData *item) { - if ((tpl < 0) || (tpl >= TPL_COUNT)) - return mir_wstrdup(L""); + if (tpl < 0 || tpl >= TPL_COUNT) + return CMStringW(); auto &T = templates[tpl]; if (T.value == nullptr) @@ -156,29 +151,29 @@ wchar_t *TplFormatString(int tpl, MCONTACT hContact, ItemData *item) TemplateVars vars; - for (int i = 0; i < TemplateInfo::VF_COUNT; i++) - if (T.vf[i]) - T.vf[i](VFM_VARS, &vars, hContact, item); + for (auto &it : T.vf) + if (it) + it(&vars, hContact, item); - wchar_t *buf = (wchar_t *)mir_alloc(sizeof(wchar_t) * (TplMeasureVars(&vars, T.value) + 1)); - wchar_t *bufptr = buf; + CMStringW buf; for (wchar_t *p = T.value; *p; p++) { if (*p == '%') { wchar_t *var = vars.GetVar((p[1] & 0xff)); - if (var) { - mir_wstrcpy(bufptr, var); - bufptr += mir_wstrlen(var); - } + if (var) + buf.Append(var); + p++; } - else *bufptr++ = *p; + else buf.AppendChar(*p); } - *bufptr = 0; + return buf; } -// Variable management +/////////////////////////////////////////////////////////////////////////////// +// TemplateVars members + TemplateVars::TemplateVars() { memset(&vars, 0, sizeof(vars)); @@ -191,23 +186,8 @@ TemplateVars::~TemplateVars() mir_free(V.val); } -int TplMeasureVars(TemplateVars *vars, wchar_t *str) -{ - int res = 0; - for (wchar_t *p = str; *p; p++) { - if (*p == '%') { - wchar_t *var = vars->GetVar(p[1] & 0xff); - if (var) - res += (int)mir_wstrlen(var); - p++; - } - else res++; - } - return res; -} - // Loading variables -void vfGlobal(int, TemplateVars *vars, MCONTACT hContact, ItemData *) +void vfGlobal(TemplateVars *vars, MCONTACT hContact, ItemData *) { // %%: simply % character vars->SetVar('%', L"%", false); @@ -221,7 +201,7 @@ void vfGlobal(int, TemplateVars *vars, MCONTACT hContact, ItemData *) vars->SetVar('S', nick, true); } -void vfContact(int, TemplateVars *vars, MCONTACT hContact, ItemData *) +void vfContact(TemplateVars *vars, MCONTACT hContact, ItemData *) { // %N: buddy's nick (not for messages) wchar_t *nick = (hContact == 0) ? TranslateT("System history") : Clist_GetContactDisplayName(hContact, 0); @@ -233,7 +213,7 @@ void vfContact(int, TemplateVars *vars, MCONTACT hContact, ItemData *) vars->SetVar('c', buf, true); } -void vfSystem(int, TemplateVars *vars, MCONTACT hContact, ItemData *) +void vfSystem(TemplateVars *vars, MCONTACT hContact, ItemData *) { // %N: buddy's nick (not for messages) vars->SetVar('N', TranslateT("System event"), false); @@ -244,7 +224,7 @@ void vfSystem(int, TemplateVars *vars, MCONTACT hContact, ItemData *) vars->SetVar('c', buf, true); } -void vfEvent(int, TemplateVars *vars, MCONTACT, ItemData *item) +void vfEvent(TemplateVars *vars, MCONTACT, ItemData *item) { HICON hIcon; wchar_t buf[100]; @@ -352,47 +332,47 @@ void vfEvent(int, TemplateVars *vars, MCONTACT, ItemData *item) ///////////////////////////////////////////////////////////////////////////////////////// // %M: the message string itself -void vfMessage(int, TemplateVars *vars, MCONTACT, ItemData *item) +void vfMessage(TemplateVars *vars, MCONTACT, ItemData *item) { vars->SetVar('M', item->getWBuf(), false); } -void vfFile(int, TemplateVars *vars, MCONTACT, ItemData *item) +void vfFile(TemplateVars *vars, MCONTACT, ItemData *item) { vars->SetVar('M', item->getWBuf(), false); } -void vfUrl(int, TemplateVars *vars, MCONTACT, ItemData *item) +void vfUrl(TemplateVars *vars, MCONTACT, ItemData *item) { vars->SetVar('M', item->getWBuf(), false); } -void vfSign(int, TemplateVars *vars, MCONTACT, ItemData *item) +void vfSign(TemplateVars *vars, MCONTACT, ItemData *item) { vars->SetVar('M', item->getWBuf(), false); } -void vfAuth(int, TemplateVars *vars, MCONTACT, ItemData *item) +void vfAuth(TemplateVars *vars, MCONTACT, ItemData *item) { vars->SetVar('M', item->getWBuf(), false); } -void vfAdded(int, TemplateVars *vars, MCONTACT, ItemData *item) +void vfAdded(TemplateVars *vars, MCONTACT, ItemData *item) { vars->SetVar('M', item->getWBuf(), false); } -void vfPresence(int, TemplateVars* vars, MCONTACT, ItemData* item) +void vfPresence(TemplateVars* vars, MCONTACT, ItemData* item) { vars->SetVar('M', item->getWBuf(), false); } -void vfDeleted(int, TemplateVars *vars, MCONTACT, ItemData *item) +void vfDeleted(TemplateVars *vars, MCONTACT, ItemData *item) { vars->SetVar('M', item->getWBuf(), false); } -void vfOther(int, TemplateVars *vars, MCONTACT, ItemData *item) +void vfOther(TemplateVars *vars, MCONTACT, ItemData *item) { auto *pText = item->getWBuf(); vars->SetVar('M', mir_wstrlen(pText) == 0 ? TranslateT("Unknown event") : pText, false); diff --git a/plugins/NewStory/src/templates.h b/plugins/NewStory/src/templates.h index c85f570562..932f9dc437 100644 --- a/plugins/NewStory/src/templates.h +++ b/plugins/NewStory/src/templates.h @@ -1,12 +1,6 @@ #ifndef __templates_h__ #define __templates_h__ -enum -{ - VFM_VARS, - VFM_DESCS -}; - struct TemplateVars { TemplateVars(); @@ -26,12 +20,10 @@ struct TemplateVars void SetVar(uint8_t id, wchar_t *v, bool d); }; -typedef void (*VarFunc)(int mode, TemplateVars *vars, MCONTACT hContact, ItemData *item); +typedef void (*VarFunc)(TemplateVars *vars, MCONTACT hContact, ItemData *item); struct TemplateInfo { - enum { VF_COUNT = 6 }; - char* setting; wchar_t* group; int iIcon; @@ -39,7 +31,7 @@ struct TemplateInfo wchar_t* defvalue; wchar_t* value; wchar_t* tmpValue; - VarFunc vf[VF_COUNT]; + VarFunc vf[6]; HICON getIcon() const; }; @@ -80,8 +72,8 @@ void LoadTemplates(); void SaveTemplates(); CMStringA TplFormatRtf(int tpl, MCONTACT hContact, ItemData *args); -wchar_t* TplFormatString(int tpl, MCONTACT hContact, ItemData * item); -wchar_t* TplFormatStringEx(int tpl, wchar_t *sztpl, MCONTACT hContact, ItemData *args); +CMStringW TplFormatString(int tpl, MCONTACT hContact, ItemData *item); +CMStringW TplFormatStringEx(int tpl, wchar_t *sztpl, ItemData *args); #endif // __templates_h__
\ No newline at end of file diff --git a/plugins/NewStory/src/utils.cpp b/plugins/NewStory/src/utils.cpp index 438246cf43..1479fb96c5 100644 --- a/plugins/NewStory/src/utils.cpp +++ b/plugins/NewStory/src/utils.cpp @@ -47,9 +47,9 @@ static bbcodes[] = { L"[img=", L"]" }, }; -void RemoveBbcodes(wchar_t *pwszText) +void RemoveBbcodes(CMStringW &wszText) { - if (!pwszText) + if (wszText.IsEmpty()) return; if (bbcodes[0].cbStart == 0) @@ -59,18 +59,20 @@ void RemoveBbcodes(wchar_t *pwszText) it.cbEnd = wcslen(it.pEnd); } - for (auto *p = wcschr(pwszText, '['); p != 0; p = wcschr(p, '[')) { + for (int idx = wszText.Find('[', 0); idx != -1; idx = wszText.Find('[', idx)) { for (auto &it : bbcodes) { - if (wcsncmp(p, it.pStart, it.cbStart)) + if (wcsncmp(wszText.c_str() + idx, it.pStart, it.cbStart)) continue; - strdelw(p, it.cbStart); + wszText.Delete(idx, (int)it.cbStart); - if (it.pEnd) - if (auto *pp = wcsstr(p, it.pEnd)) { - strdelw(p, size_t(pp - p)); - strdelw(p, it.cbEnd); + if (it.pEnd) { + int idx2 = wszText.Find(it.pEnd, idx); + if (idx2 != -1) { + wszText.Delete(idx2 - idx); + wszText.Delete((int)it.cbEnd); } + } break; } diff --git a/plugins/NewStory/src/utils.h b/plugins/NewStory/src/utils.h index 91f8fa92af..3842526540 100644 --- a/plugins/NewStory/src/utils.h +++ b/plugins/NewStory/src/utils.h @@ -7,4 +7,4 @@ bool CheckFilter(wchar_t *buf, wchar_t *filter); HMENU NSMenu_Build(NewstoryListData *data, ItemData *item); bool NSMenu_Process(int iCommand, NewstoryListData *data); -void RemoveBbcodes(wchar_t *pwszText); +void RemoveBbcodes(CMStringW &pwszText); |