summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2023-09-12 20:19:33 +0300
committerGeorge Hazan <george.hazan@gmail.com>2023-09-12 20:19:33 +0300
commit9dedc6fb280a58f83d7939ab0b85c00ea0d726f1 (patch)
tree28d685292ca15ae9d0aeb3594e0244b9d019fdb5
parent8cb9d3fd6d002d034f88b87a67bd76c4976d0271 (diff)
code cleaning
-rw-r--r--plugins/NewStory/src/history_array.cpp2
-rw-r--r--plugins/NewStory/src/history_control.cpp2
-rw-r--r--plugins/NewStory/src/history_dlg.cpp18
-rw-r--r--plugins/NewStory/src/options.cpp2
-rw-r--r--plugins/NewStory/src/templates.cpp100
-rw-r--r--plugins/NewStory/src/templates.h16
-rw-r--r--plugins/NewStory/src/utils.cpp20
-rw-r--r--plugins/NewStory/src/utils.h2
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);