diff options
author | George Hazan <ghazan@miranda.im> | 2020-04-28 18:39:17 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2020-04-28 18:39:17 +0300 |
commit | 175ed5d764b1c35e0d97f949e030382acea8527e (patch) | |
tree | 318a3edb92296a08761a3bd821475a32aecc1f2b /plugins | |
parent | eb40a21481eaae317e7a8638ab51e8e624a7d817 (diff) |
fixes #2365 (NewStory: date/times are displayed according to the OS locale settings)
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/NewStory/src/templates.cpp | 89 | ||||
-rw-r--r-- | plugins/NewStory/src/templates.h | 2 |
2 files changed, 48 insertions, 43 deletions
diff --git a/plugins/NewStory/src/templates.cpp b/plugins/NewStory/src/templates.cpp index 7ccf117a7f..dce4f4c10c 100644 --- a/plugins/NewStory/src/templates.cpp +++ b/plugins/NewStory/src/templates.cpp @@ -189,48 +189,53 @@ void vfEvent(int, TemplateVars *vars, MCONTACT, ItemData *item) vars->SetVar('D', L">>", false); // %t: timestamp - _tcsftime(buf, _countof(buf), L"%d.%m.%Y, %H:%M", _localtime32((__time32_t *)&item->dbe.timestamp)); - vars->SetVar('t', buf, true); - - // %h: hour (24 hour format, 0-23) - _tcsftime(buf, _countof(buf), L"%H", _localtime32((__time32_t *)&item->dbe.timestamp)); - vars->SetVar('h', buf, true); - - // %a: hour (12 hour format) - _tcsftime(buf, _countof(buf), L"%h", _localtime32((__time32_t *)&item->dbe.timestamp)); - vars->SetVar('a', buf, true); - - // %m: minute - _tcsftime(buf, _countof(buf), L"%M", _localtime32((__time32_t *)&item->dbe.timestamp)); - vars->SetVar('m', buf, true); - - // %s: second - _tcsftime(buf, _countof(buf), L"%S", _localtime32((__time32_t *)&item->dbe.timestamp)); - vars->SetVar('s', buf, true); - - // %o: month - _tcsftime(buf, _countof(buf), L"%m", _localtime32((__time32_t *)&item->dbe.timestamp)); - vars->SetVar('o', buf, true); - - // %d: day of month - _tcsftime(buf, _countof(buf), L"%d", _localtime32((__time32_t *)&item->dbe.timestamp)); - vars->SetVar('d', buf, true); - - // %y: year - _tcsftime(buf, _countof(buf), L"%Y", _localtime32((__time32_t *)&item->dbe.timestamp)); - vars->SetVar('y', buf, true); - - // %w: day of week (Sunday, Monday... translatable) - _tcsftime(buf, _countof(buf), L"%A", _localtime32((__time32_t *)&item->dbe.timestamp)); - vars->SetVar('w', TranslateW(buf), false); - - // %p: AM/PM symbol - _tcsftime(buf, _countof(buf), L"%p", _localtime32((__time32_t *)&item->dbe.timestamp)); - vars->SetVar('p', buf, true); - - // %O: Name of month, translatable - _tcsftime(buf, _countof(buf), L"%B", _localtime32((__time32_t *)&item->dbe.timestamp)); - vars->SetVar('O', TranslateW(buf), false); + SYSTEMTIME st; + if (!TimeZone_GetSystemTime(nullptr, item->dbe.timestamp, &st, 0)) { + CMStringW tmp; + GetDateFormatW(LOCALE_USER_DEFAULT, 0, &st, L"dd.MM.yyyy, ", buf, _countof(buf)); tmp += buf; + GetTimeFormatW(LOCALE_USER_DEFAULT, 0, &st, L"HH:mm", buf, _countof(buf)); tmp += buf; + vars->SetVar('t', tmp, true); + + // %h: hour (24 hour format, 0-23) + GetTimeFormatW(LOCALE_USER_DEFAULT, 0, &st, L"HH", buf, _countof(buf)); + vars->SetVar('h', buf, true); + + // %a: hour (12 hour format) + GetTimeFormatW(LOCALE_USER_DEFAULT, 0, &st, L"hh", buf, _countof(buf)); + vars->SetVar('a', buf, true); + + // %m: minute + GetTimeFormatW(LOCALE_USER_DEFAULT, 0, &st, L"mm", buf, _countof(buf)); + vars->SetVar('m', buf, true); + + // %s: second + GetTimeFormatW(LOCALE_USER_DEFAULT, 0, &st, L"ss", buf, _countof(buf)); + vars->SetVar('s', buf, true); + + // %o: month + GetDateFormatW(LOCALE_USER_DEFAULT, 0, &st, L"MM", buf, _countof(buf)); + vars->SetVar('o', buf, true); + + // %d: day of month + GetDateFormatW(LOCALE_USER_DEFAULT, 0, &st, L"dd", buf, _countof(buf)); + vars->SetVar('d', buf, true); + + // %y: year + GetDateFormatW(LOCALE_USER_DEFAULT, 0, &st, L"yyyy", buf, _countof(buf)); + vars->SetVar('y', buf, true); + + // %w: day of week (Sunday, Monday... translatable) + GetDateFormatW(LOCALE_USER_DEFAULT, 0, &st, L"dddd", buf, _countof(buf)); + vars->SetVar('w', TranslateW(buf), false); + + // %p: AM/PM symbol + GetTimeFormatW(LOCALE_USER_DEFAULT, 0, &st, L"tt", buf, _countof(buf)); + vars->SetVar('p', buf, true); + + // %O: Name of month, translatable + GetDateFormatW(LOCALE_USER_DEFAULT, 0, &st, L"MMMM", buf, _countof(buf)); + vars->SetVar('O', TranslateW(buf), false); + } } void vfMessage(int, TemplateVars *vars, MCONTACT, ItemData *item) diff --git a/plugins/NewStory/src/templates.h b/plugins/NewStory/src/templates.h index 69491a4a3c..931773ce78 100644 --- a/plugins/NewStory/src/templates.h +++ b/plugins/NewStory/src/templates.h @@ -16,7 +16,7 @@ struct TemplateVars return val[id]; } - __forceinline void SetVar(uint8_t id, wchar_t *v, bool d) { + __forceinline void SetVar(uint8_t id, const wchar_t *v, bool d) { if (val[id] && del[id]) mir_free(val[id]); val[id] = mir_wstrdup(v); |