mirror of
https://github.com/ilya-zlobintsev/LACT.git
synced 2026-08-17 16:34:54 -05:00
feat: remember selected ui tab between restarts (#842)
This commit is contained in:
@@ -140,6 +140,16 @@ impl AsyncComponent for AppModel {
|
||||
add_titled[Some("oc_page"), &fl!(I18N, "oc-page")] = model.oc_page.widget(),
|
||||
add_titled[Some("thermals_page"), &fl!(I18N, "thermals-page")] = model.thermals_page.widget(),
|
||||
add_titled[Some("software_page"), &fl!(I18N, "software-page")] = model.software_page.widget(),
|
||||
|
||||
set_visible_child_name: &CONFIG.read().selected_tab,
|
||||
connect_visible_child_name_notify => move |stack| {
|
||||
if let Some(name) = stack.visible_child_name() {
|
||||
let name = name.to_string();
|
||||
CONFIG.write().edit(|config| {
|
||||
config.selected_tab = name;
|
||||
});
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
model.apply_revealer.widget(),
|
||||
|
||||
@@ -8,6 +8,8 @@ pub const MAX_STATS_POLL_INTERVAL_MS: i64 = 5000;
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub struct UiConfig {
|
||||
#[serde(default = "default_tab")]
|
||||
pub selected_tab: String,
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
pub selected_gpu: Option<String>,
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
@@ -26,6 +28,7 @@ pub struct UiConfig {
|
||||
impl Default for UiConfig {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
selected_tab: default_tab(),
|
||||
selected_gpu: None,
|
||||
plots_time_period: None,
|
||||
plots_per_row: None,
|
||||
@@ -102,3 +105,7 @@ fn deserialize_poll_interval<'de, D: Deserializer<'de>>(deserializer: D) -> Resu
|
||||
let value = i64::deserialize(deserializer)?;
|
||||
Ok(value.clamp(MIN_STATS_POLL_INTERVAL_MS, MAX_STATS_POLL_INTERVAL_MS))
|
||||
}
|
||||
|
||||
fn default_tab() -> String {
|
||||
"info_page".to_owned()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user