allow hotswitch between 12h and 24h clock for keyboard (#426)
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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(())
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user