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>
</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>
<div flex_direction="column" interactable="0">
<rectangle macro="bg_rect" padding="10" align_items="center" justify_content="space_between">
@@ -218,10 +226,8 @@
<VerticalSeparator />
<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 id="clock_root">
<Clock />
</div>
</div>
</rectangle>

View File

@@ -19,6 +19,7 @@ use wgui::{
drawing::{self, Color},
event::{self, CallbackMetadata, EventAlterables, EventListenerKind},
layout::LayoutUpdateParams,
log::LogErr,
parser::{Fetchable, ParseDocumentParams},
renderer_vk::util,
taffy::{self, prelude::length},
@@ -284,14 +285,30 @@ pub(super) fn create_keyboard_panel(
&doc_params,
)?;
if elems_changed {
panel.process_custom_elems(app);
}
match event_data {
OverlayEventData::SettingsChanged => {
panel.state.alt_modifier =
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 } => {
@@ -303,6 +320,10 @@ pub(super) fn create_keyboard_panel(
_ => {}
}
if elems_changed {
panel.process_custom_elems(app);
}
panel.layout.process_alterables(alterables)?;
Ok(())
}

View File

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