From 80f0214e4717f4224811a9e2e9082e046144517c Mon Sep 17 00:00:00 2001 From: Csaba Date: Thu, 7 Nov 2024 09:38:19 +0100 Subject: [PATCH] Group enum, Copy RenderConfig --- komorebi-bar/src/bar.rs | 12 +++++++++--- komorebi-bar/src/config.rs | 7 +++++++ komorebi-bar/src/widget.rs | 13 +++---------- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/komorebi-bar/src/bar.rs b/komorebi-bar/src/bar.rs index 2b09cbbc..7442e3f4 100644 --- a/komorebi-bar/src/bar.rs +++ b/komorebi-bar/src/bar.rs @@ -1,3 +1,4 @@ +use crate::config::Group; use crate::config::KomobarConfig; use crate::config::KomobarTheme; use crate::config::Position; @@ -317,7 +318,12 @@ impl Komobar { ) -> Self { let mut komobar = Self { config: config.clone(), - render_config: RenderConfig::from(config.clone()), + render_config: RenderConfig { + _group: match config.group { + None => Group::None, + Some(group) => group, + }, + }, komorebi_notification_state: None, left_widgets: vec![], right_widgets: vec![], @@ -440,13 +446,13 @@ impl eframe::App for Komobar { ui.horizontal_centered(|ui| { ui.with_layout(Layout::left_to_right(Align::Center), |ui| { for w in &mut self.left_widgets { - w.render(ctx, ui, self.render_config.clone()); + w.render(ctx, ui, self.render_config); } }); ui.with_layout(Layout::right_to_left(Align::Center), |ui| { for w in &mut self.right_widgets { - w.render(ctx, ui, self.render_config.clone()); + w.render(ctx, ui, self.render_config); } }) }) diff --git a/komorebi-bar/src/config.rs b/komorebi-bar/src/config.rs index c3e13ad2..be1f1995 100644 --- a/komorebi-bar/src/config.rs +++ b/komorebi-bar/src/config.rs @@ -28,6 +28,8 @@ pub struct KomobarConfig { pub max_label_width: Option, /// Theme pub theme: Option, + /// Visual grouping for widgets + pub group: Option, /// Left side widgets (ordered left-to-right) pub left_widgets: Vec, /// Right side widgets (ordered left-to-right) @@ -178,3 +180,8 @@ pub enum LabelPrefix { /// Show an icon and text IconAndText, } + +#[derive(Copy, Clone, Debug, Serialize, Deserialize, JsonSchema)] +pub enum Group { + None +} \ No newline at end of file diff --git a/komorebi-bar/src/widget.rs b/komorebi-bar/src/widget.rs index 34fdbda2..924926d4 100644 --- a/komorebi-bar/src/widget.rs +++ b/komorebi-bar/src/widget.rs @@ -1,6 +1,6 @@ use crate::battery::Battery; use crate::battery::BatteryConfig; -use crate::config::KomobarConfig; +use crate::config::Group; use crate::cpu::Cpu; use crate::cpu::CpuConfig; use crate::date::Date; @@ -22,22 +22,15 @@ use eframe::egui::Ui; use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; -use std::sync::Arc; pub trait BarWidget { fn render(&mut self, ctx: &Context, ui: &mut Ui, config: RenderConfig); } -#[derive(Clone)] +#[derive(Copy, Clone)] pub struct RenderConfig { /// Sets how widgets are grouped - _group: i32, -} - -impl RenderConfig { - pub fn from(_config: Arc) -> Self { - Self { _group: 1 } - } + pub _group: Group, } #[derive(Clone, Debug, Serialize, Deserialize, JsonSchema)]