refactor(clock): extract waybar_time to util/waybar_time.hpp

This commit is contained in:
Aleksei Bavshin
2022-01-07 18:09:44 -08:00
parent d9b5c2595a
commit c0d84853ea
3 changed files with 37 additions and 24 deletions

View File

@ -1,21 +1,14 @@
#pragma once
#include <fmt/format.h>
#if FMT_VERSION < 60000
#include <fmt/time.h>
#else
#include <fmt/chrono.h>
#endif
#include <date/tz.h>
#include "ALabel.hpp"
#include "util/sleeper_thread.hpp"
namespace waybar::modules {
namespace waybar {
struct waybar_time {
std::locale locale;
date::zoned_seconds ztime;
};
struct waybar_time;
namespace modules {
const std::string kCalendarPlaceholder = "calendar";
@ -43,4 +36,5 @@ class Clock : public ALabel {
bool is_timezone_fixed();
};
} // namespace waybar::modules
} // namespace modules
} // namespace waybar

View File

@ -0,0 +1,29 @@
#pragma once
#include <fmt/format.h>
#if FMT_VERSION < 60000
#include <fmt/time.h>
#else
#include <fmt/chrono.h>
#endif
#include <date/tz.h>
namespace waybar {
struct waybar_time {
std::locale locale;
date::zoned_seconds ztime;
};
} // namespace waybar
template <>
struct fmt::formatter<waybar::waybar_time> : fmt::formatter<std::tm> {
template <typename FormatContext>
auto format(const waybar::waybar_time& t, FormatContext& ctx) {
#if FMT_VERSION >= 80000
auto& tm_format = specs;
#endif
return format_to(ctx.out(), "{}", date::format(t.locale, fmt::to_string(tm_format), t.ztime));
}
};