From 26a60eece6b2e0f2793c09f8773f129ba5d96bad Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 29 Mar 2024 14:42:01 +0300 Subject: even better [img=url]descr[/img] support --- plugins/NewStory/src/history_array.cpp | 29 ++++++++++++++++------------- plugins/NewStory/src/templates.cpp | 15 ++++++++++----- plugins/NewStory/src/utils.cpp | 2 +- 3 files changed, 27 insertions(+), 19 deletions(-) (limited to 'plugins/NewStory/src') diff --git a/plugins/NewStory/src/history_array.cpp b/plugins/NewStory/src/history_array.cpp index 04c1b44d64..1708cb50e7 100644 --- a/plugins/NewStory/src/history_array.cpp +++ b/plugins/NewStory/src/history_array.cpp @@ -386,7 +386,17 @@ void ItemData::load(bool bLoadAlways) { DB::FILE_BLOB blob(dbe); if (blob.isOffline()) { - CMStringW buf; + CMStringW wszDescr, buf; + + wszDescr.Append(blob.getName() ? blob.getName() : TranslateT("Unnamed")); + + if (auto *pwszDescr = blob.getDescr()) { + wszDescr.Append(L" - "); + wszDescr.Append(pwszDescr); + } + + if (uint32_t size = blob.getSize()) + wszDescr.AppendFormat(TranslateT(" %u KB"), size < 1024 ? 1 : unsigned(blob.getSize() / 1024)); m_bOfflineFile = true; if (blob.isCompleted()) { @@ -394,22 +404,15 @@ void ItemData::load(bool bLoadAlways) auto *pwszLocalName = blob.getLocalName(); if (ProtoGetAvatarFileFormat(pwszLocalName) != PA_FORMAT_UNKNOWN) - buf.AppendFormat(L"[img]file://%s[/img]", pwszLocalName); + buf.AppendFormat(L"[img=file://%s]%s[/img]%s", pwszLocalName, wszDescr.c_str(), wszDescr.c_str()); else - buf.AppendFormat(L"[url]file://%s[/url]", pwszLocalName); + buf.AppendFormat(L"[url]file://%s[/url] %s", pwszLocalName, wszDescr.c_str()); } - else m_bOfflineDownloaded = uint8_t(100.0 * blob.getTransferred() / blob.getSize()); - - buf.Append(blob.getName() ? blob.getName() : TranslateT("Unnamed")); - - if (auto *pwszDescr = blob.getDescr()) { - buf.Append(L" - "); - buf.Append(pwszDescr); + else { + buf += wszDescr; + m_bOfflineDownloaded = uint8_t(100.0 * blob.getTransferred() / blob.getSize()); } - if (uint32_t size = blob.getSize()) - buf.AppendFormat(TranslateT(" %u KB"), size < 1024 ? 1 : unsigned(blob.getSize() / 1024)); - wtext = buf.Detach(); pOwner->MarkRead(this); break; diff --git a/plugins/NewStory/src/templates.cpp b/plugins/NewStory/src/templates.cpp index 405a198fe6..809cba555a 100644 --- a/plugins/NewStory/src/templates.cpp +++ b/plugins/NewStory/src/templates.cpp @@ -113,13 +113,18 @@ static void AppendString(CMStringW &buf, const wchar_t *p) buf.AppendFormat(L"<%ss>", pEnd); p++; } - else if (!wcsncmp(p, L"img]", 4)) { + else if (!wcsncmp(p, L"img=", 4)) { p += 4; - if (auto *p2 = wcsstr(p, L"[/img]")) { - CMStringW wszUrl(p, int(p2 - p)); - buf.AppendFormat(L"
", wszUrl.c_str()); - p = p2 + 5; + if (auto *p1 = wcschr(p, ']')) { + CMStringW wszUrl(p, int(p1 - p)); + p1++; + + if (auto *p2 = wcsstr(p1, L"[/img]")) { + CMStringW wszDescr(p1, int(p2 - p1)); + buf.AppendFormat(L"\"%s\"/
", wszUrl.c_str(), wszDescr.c_str(), wszDescr.c_str()); + p = p2 + 5; + } } } else if (!wcsncmp(p, L"url]", 4)) { diff --git a/plugins/NewStory/src/utils.cpp b/plugins/NewStory/src/utils.cpp index bd12aea485..fdeb6db9f3 100644 --- a/plugins/NewStory/src/utils.cpp +++ b/plugins/NewStory/src/utils.cpp @@ -148,7 +148,7 @@ void UrlAutodetect(CMStringW &str) int level = 0; for (auto *p = str.c_str(); *p; p++) { - if (!wcsncmp(p, L"[img]", 5) || !wcsncmp(p, L"[url]", 5)) { + if (!wcsncmp(p, L"[img=", 5) || !wcsncmp(p, L"[url]", 5)) { p += 4; level++; } -- cgit v1.2.3