diff options
author | George Hazan <george.hazan@gmail.com> | 2024-03-29 14:42:01 +0300 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2024-03-29 14:42:01 +0300 |
commit | 26a60eece6b2e0f2793c09f8773f129ba5d96bad (patch) | |
tree | 89e2f60b048b0b35ae5ae6d5e1a5cfe3afc456cf /plugins/NewStory | |
parent | 6fd72c2415dd52977fef53db575cf62a85153cdd (diff) |
even better [img=url]descr[/img] support
Diffstat (limited to 'plugins/NewStory')
-rw-r--r-- | plugins/NewStory/src/history_array.cpp | 29 | ||||
-rw-r--r-- | plugins/NewStory/src/templates.cpp | 15 | ||||
-rw-r--r-- | plugins/NewStory/src/utils.cpp | 2 |
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++;
}
|