From 36f8b6d8b27cbc06df771a99a7d6f7db33b4e804 Mon Sep 17 00:00:00 2001 From: Arif Hasanic Date: Sat, 20 Dec 2025 21:05:57 +0100 Subject: [PATCH] small refactors --- CMakeLists.txt | 1 + include/bar/bar.hpp | 3 +++ include/widgets/todo.hpp | 8 ++++++++ src/bar/bar.cpp | 30 ++++++++++++++++-------------- src/widgets/todo.cpp | 9 +++++++++ 5 files changed, 37 insertions(+), 14 deletions(-) create mode 100644 include/widgets/todo.hpp create mode 100644 src/widgets/todo.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 057a467..4f21b8f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,6 +30,7 @@ target_sources(bar_lib src/services/tray.cpp src/services/notifications.cpp src/widgets/tray.cpp + src/widgets/todo.cpp src/components/popover.cpp ) include_directories(bar_lib PRIVATE diff --git a/include/bar/bar.hpp b/include/bar/bar.hpp index 137f846..b5623ad 100644 --- a/include/bar/bar.hpp +++ b/include/bar/bar.hpp @@ -35,5 +35,8 @@ class Bar : public Gtk::Window { class VolumeWidget *volumeWidget = nullptr; void setup_ui(); + void setup_left_box(); + void setup_center_box(); + void setup_right_box(); void load_css(); }; diff --git a/include/widgets/todo.hpp b/include/widgets/todo.hpp new file mode 100644 index 0000000..d9cedc3 --- /dev/null +++ b/include/widgets/todo.hpp @@ -0,0 +1,8 @@ +#pragma once + +#include "components/popover.hpp" + +class Todo : public Popover { +public: + Todo(std::string icon, std::string title); +}; \ No newline at end of file diff --git a/src/bar/bar.cpp b/src/bar/bar.cpp index b467165..9ed79b7 100644 --- a/src/bar/bar.cpp +++ b/src/bar/bar.cpp @@ -4,6 +4,7 @@ #include "widgets/date.hpp" #include "widgets/spacer.hpp" +#include "widgets/todo.hpp" #include "widgets/volumeWidget.hpp" #include "widgets/workspaceIndicator.hpp" @@ -39,6 +40,8 @@ Bar::Bar(GdkMonitor *monitor, HyprlandService &hyprlandService, set_child(main_box); this->volumeWidget = Gtk::make_managed(); + workspaceIndicator = Gtk::make_managed(hyprlandService, monitorId); + trayWidget = Gtk::make_managed(trayService); load_css(); setup_ui(); @@ -54,33 +57,32 @@ Bar::Bar(GdkMonitor *monitor, HyprlandService &hyprlandService, } void Bar::setup_ui() { - main_box.set_hexpand(true); - main_box.set_start_widget(left_box); main_box.set_center_widget(center_box); main_box.set_end_widget(right_box); - main_box.set_valign(Gtk::Align::CENTER); - left_box.set_valign(Gtk::Align::CENTER); - - center_box.set_hexpand(false); - center_box.set_valign(Gtk::Align::CENTER); - center_box.set_halign(Gtk::Align::CENTER); - - right_box.set_valign(Gtk::Align::CENTER); - - workspaceIndicator = Gtk::make_managed(hyprlandService, monitorId); + setup_left_box(); + setup_center_box(); + setup_right_box(); +} +void Bar::setup_left_box() { left_box.append(*workspaceIndicator); +} - clock.set_name("clock-label"); +void Bar::setup_center_box() { + center_box.set_hexpand(false); + + center_box.append(*(new Todo("\uf23a", "To-Do"))); + center_box.append(*(new Spacer())); center_box.append(this->date); center_box.append(*(new Spacer())); center_box.append(this->clock); center_box.append(*(new Spacer())); center_box.append(*this->volumeWidget); +} - trayWidget = Gtk::make_managed(trayService); +void Bar::setup_right_box() { right_box.append(*trayWidget); right_box.append(homeAssistant); } diff --git a/src/widgets/todo.cpp b/src/widgets/todo.cpp new file mode 100644 index 0000000..0aa2e47 --- /dev/null +++ b/src/widgets/todo.cpp @@ -0,0 +1,9 @@ +#include + +#include "widgets/todo.hpp" + +Todo::Todo(std::string icon, std::string title) : Popover(icon, title) { + auto label = Gtk::make_managed(title); + label->add_css_class("todo-label"); + this->set_popover_child(*label); +} \ No newline at end of file