allow hotswitch between 12h and 24h clock for keyboard (#426)

This commit is contained in:
Sapphire
2026-02-06 19:21:47 -06:00
committed by GitHub
parent b3e09b330f
commit 903a6b351c
3 changed files with 38 additions and 8 deletions

View File

@@ -192,6 +192,14 @@
</Button> </Button>
</template> </template>
<template name="Clock">
<div flex_direction="column" gap="3" align_items="center">
<label text="23:59" _source="clock" _display="time" size="21" weight="bold" />
<label text="Tuesday" _source="clock" _display="dow" size="15" />
<label text="22/2/2022" _source="clock" _display="date" size="15" />
</div>
</template>
<elements> <elements>
<div flex_direction="column" interactable="0"> <div flex_direction="column" interactable="0">
<rectangle macro="bg_rect" padding="10" align_items="center" justify_content="space_between"> <rectangle macro="bg_rect" padding="10" align_items="center" justify_content="space_between">
@@ -218,10 +226,8 @@
<VerticalSeparator /> <VerticalSeparator />
<div flex_direction="column" gap="3" align_items="center"> <div id="clock_root">
<label text="23:59" _source="clock" _display="time" size="21" weight="bold" /> <Clock />
<label text="Tuesday" _source="clock" _display="dow" size="15" />
<label text="22/2/2022" _source="clock" _display="date" size="15" />
</div> </div>
</div> </div>
</rectangle> </rectangle>

View File

@@ -19,6 +19,7 @@ use wgui::{
drawing::{self, Color}, drawing::{self, Color},
event::{self, CallbackMetadata, EventAlterables, EventListenerKind}, event::{self, CallbackMetadata, EventAlterables, EventListenerKind},
layout::LayoutUpdateParams, layout::LayoutUpdateParams,
log::LogErr,
parser::{Fetchable, ParseDocumentParams}, parser::{Fetchable, ParseDocumentParams},
renderer_vk::util, renderer_vk::util,
taffy::{self, prelude::length}, taffy::{self, prelude::length},
@@ -284,14 +285,30 @@ pub(super) fn create_keyboard_panel(
&doc_params, &doc_params,
)?; )?;
if elems_changed {
panel.process_custom_elems(app);
}
match event_data { match event_data {
OverlayEventData::SettingsChanged => { OverlayEventData::SettingsChanged => {
panel.state.alt_modifier = panel.state.alt_modifier =
alt_modifier_to_key(app.session.config.keyboard_middle_click_mode); alt_modifier_to_key(app.session.config.keyboard_middle_click_mode);
if app.session.config.clock_12h != panel.state.clock_12h {
panel.state.clock_12h = app.session.config.clock_12h;
if let Ok(clock_root) = panel
.parser_state
.get_widget_id("clock_root")
.log_warn("keyboard.xml may be out of date")
{
panel.layout.remove_children(clock_root);
panel.parser_state.instantiate_template(
&doc_params,
"Clock",
&mut panel.layout,
clock_root,
Default::default(),
)?;
elems_changed = true;
}
}
} }
OverlayEventData::CustomCommand { element, command } => { OverlayEventData::CustomCommand { element, command } => {
@@ -303,6 +320,10 @@ pub(super) fn create_keyboard_panel(
_ => {} _ => {}
} }
if elems_changed {
panel.process_custom_elems(app);
}
panel.layout.process_alterables(alterables)?; panel.layout.process_alterables(alterables)?;
Ok(()) Ok(())
} }

View File

@@ -55,6 +55,7 @@ pub fn create_keyboard(app: &mut AppState, wayland: bool) -> anyhow::Result<Over
processes: vec![], processes: vec![],
overlay_list: OverlayList::default(), overlay_list: OverlayList::default(),
set_list: SetList::default(), set_list: SetList::default(),
clock_12h: app.session.config.clock_12h,
}; };
let auto_labels = layout.auto_labels.unwrap_or(true); let auto_labels = layout.auto_labels.unwrap_or(true);
@@ -325,6 +326,7 @@ struct KeyboardState {
processes: Vec<Child>, processes: Vec<Child>,
overlay_list: OverlayList, overlay_list: OverlayList,
set_list: SetList, set_list: SetList,
clock_12h: bool,
} }
macro_rules! take_and_leave_default { macro_rules! take_and_leave_default {
@@ -343,6 +345,7 @@ impl KeyboardState {
processes: take_and_leave_default!(&mut self.processes), processes: take_and_leave_default!(&mut self.processes),
overlay_list: OverlayList::default(), overlay_list: OverlayList::default(),
set_list: SetList::default(), set_list: SetList::default(),
clock_12h: self.clock_12h,
} }
} }
} }