feat: remember selected ui tab between restarts (#842)

This commit is contained in:
Ilya Zlobintsev
2025-12-31 14:19:05 +02:00
committed by GitHub
parent 0af938ce17
commit 68cde3fea6
2 changed files with 17 additions and 0 deletions
+10
View File
@@ -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(),
+7
View File
@@ -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()
}