refactor(clock): extract waybar_time to util/waybar_time.hpp
parent
d9b5c2595a
commit
c0d84853ea
|
@ -1,21 +1,14 @@
|
||||||
#pragma once
|
#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 <date/tz.h>
|
||||||
#include "ALabel.hpp"
|
#include "ALabel.hpp"
|
||||||
#include "util/sleeper_thread.hpp"
|
#include "util/sleeper_thread.hpp"
|
||||||
|
|
||||||
namespace waybar::modules {
|
namespace waybar {
|
||||||
|
|
||||||
struct waybar_time {
|
struct waybar_time;
|
||||||
std::locale locale;
|
|
||||||
date::zoned_seconds ztime;
|
namespace modules {
|
||||||
};
|
|
||||||
|
|
||||||
const std::string kCalendarPlaceholder = "calendar";
|
const std::string kCalendarPlaceholder = "calendar";
|
||||||
|
|
||||||
|
@ -43,4 +36,5 @@ class Clock : public ALabel {
|
||||||
bool is_timezone_fixed();
|
bool is_timezone_fixed();
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace waybar::modules
|
} // namespace modules
|
||||||
|
} // namespace waybar
|
||||||
|
|
|
@ -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));
|
||||||
|
}
|
||||||
|
};
|
|
@ -6,12 +6,13 @@
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
#include "util/ustring_clen.hpp"
|
#include "util/ustring_clen.hpp"
|
||||||
|
#include "util/waybar_time.hpp"
|
||||||
#ifdef HAVE_LANGINFO_1STDAY
|
#ifdef HAVE_LANGINFO_1STDAY
|
||||||
#include <langinfo.h>
|
#include <langinfo.h>
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
using waybar::modules::waybar_time;
|
using waybar::waybar_time;
|
||||||
|
|
||||||
waybar::modules::Clock::Clock(const std::string& id, const Json::Value& config)
|
waybar::modules::Clock::Clock(const std::string& id, const Json::Value& config)
|
||||||
: ALabel(config, "clock", id, "{:%H:%M}", 60, false, false, true),
|
: ALabel(config, "clock", id, "{:%H:%M}", 60, false, false, true),
|
||||||
|
@ -227,14 +228,3 @@ auto waybar::modules::Clock::first_day_of_week() -> date::weekday {
|
||||||
#endif
|
#endif
|
||||||
return date::Sunday;
|
return date::Sunday;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <>
|
|
||||||
struct fmt::formatter<waybar_time> : fmt::formatter<std::tm> {
|
|
||||||
template <typename FormatContext>
|
|
||||||
auto format(const 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));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
Loading…
Reference in New Issue