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