Skip to content

Commit

Permalink
Merge pull request #1971 from LukashonakV/YearCalendar
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexays authored Jan 23, 2023
2 parents fea7ec9 + 3b28af8 commit e7af29a
Show file tree
Hide file tree
Showing 2 changed files with 320 additions and 138 deletions.
39 changes: 31 additions & 8 deletions include/modules/clock.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,17 @@ namespace waybar::modules {
const std::string kCalendarPlaceholder = "calendar";
const std::string KTimezonedTimeListPlaceholder = "timezoned_time_list";

enum class WeeksSide {
LEFT,
RIGHT,
HIDDEN,
};

enum class CldMode {
MONTH,
YEAR
};

class Clock : public ALabel {
public:
Clock(const std::string&, const Json::Value&);
Expand All @@ -17,25 +28,37 @@ class Clock : public ALabel {

private:
util::SleeperThread thread_;
std::map<std::pair<uint, GdkEventType>, void (waybar::modules::Clock::*)()> eventMap_;
std::locale locale_;
std::vector<const date::time_zone*> time_zones_;
int current_time_zone_idx_;
date::year_month_day calendar_cached_ymd_{date::January / 1 / 0};
date::months calendar_shift_{0}, calendar_shift_init_{0};
std::string calendar_cached_text_;
bool is_calendar_in_tooltip_;
bool is_timezoned_list_in_tooltip_;

bool handleScroll(GdkEventScroll* e);
bool handleToggle(GdkEventButton* const& e);

std::string fmt_str_weeks_;
std::string fmt_str_calendar_;
int fmt_weeks_left_pad_{0};
auto calendar_text(const date::zoned_seconds& ztime) -> std::string;
auto weekdays_header(const date::weekday& first_dow, std::ostream& os) -> void;
auto first_day_of_week() -> date::weekday;
const date::time_zone* current_timezone();
bool is_timezone_fixed();
auto timezones_text(std::chrono::system_clock::time_point* now) -> std::string;

/*Calendar properties*/
WeeksSide cldWPos_{WeeksSide::HIDDEN};
std::map<int, std::string const> fmtMap_;
CldMode cldMode_{CldMode::MONTH};
uint cldMonCols_{3}; // Count of the month in the row
int cldMonColLen_{20}; // Length of the month column
int cldWnLen_{2}; // Length of the week number
date::year_month_day cldYearShift_;
date::year_month cldMonShift_;
date::months cldCurrShift_{0};
date::months cldShift_{0};
std::string cldYearCached_{};
std::string cldMonCached_{};
/*Calendar functions*/
auto get_calendar(const date::zoned_seconds& now,
const date::zoned_seconds& wtime) -> std::string;
void cldModeSwitch();
};
} // namespace waybar::modules
Loading

0 comments on commit e7af29a

Please sign in to comment.