summaryrefslogtreecommitdiff
path: root/plugins/NewStory
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2024-03-29 14:42:01 +0300
committerGeorge Hazan <george.hazan@gmail.com>2024-03-29 14:42:01 +0300
commit26a60eece6b2e0f2793c09f8773f129ba5d96bad (patch)
tree89e2f60b048b0b35ae5ae6d5e1a5cfe3afc456cf /plugins/NewStory
parent6fd72c2415dd52977fef53db575cf62a85153cdd (diff)
even better [img=url]descr[/img] support
Diffstat (limited to 'plugins/NewStory')
-rw-r--r--plugins/NewStory/src/history_array.cpp29
-rw-r--r--plugins/NewStory/src/templates.cpp15
-rw-r--r--plugins/NewStory/src/utils.cpp2
3 files changed, 27 insertions, 19 deletions
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"<img style=\"width: 300;\" src=\"%s\" /><br>", 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"<img style=\"width: 300;\" src=\"%s\" title=\"%s\" alt=\"%s\"/><br>", 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++;
}