Work on locale stage.

This commit is contained in:
2026-05-03 00:56:20 +02:00
parent b8c2630d3e
commit 0de2f1ce10
7 changed files with 372 additions and 16 deletions
+27 -4
View File
@@ -42,6 +42,7 @@ enum Views {
License(license::LicenseStage),
Network(stages::network::NetworkStage),
TimeZone(stages::timezone::TimeZoneStage),
Locale(stages::locale::LocaleStage),
}
enum Message {
@@ -50,6 +51,7 @@ enum Message {
License(license::Message),
Network(stages::network::Message),
TimeZone(stages::timezone::Message),
Locale(stages::locale::Message),
}
struct KiraState {
@@ -107,6 +109,7 @@ fn view(k_state: &KiraState) -> Element<'_, Message> {
Views::License(license_stage) => license_stage.view().map(Message::License),
Views::Network(network_stage) => network_stage.view().map(Message::Network),
Views::TimeZone(timezone_stage) => timezone_stage.view().map(Message::TimeZone),
Views::Locale(locale_stage) => locale_stage.view().map(Message::Locale),
}
}
@@ -138,7 +141,7 @@ fn update(k_state: &mut KiraState, message: Message) -> Task<Message> {
} else {
Task::none()
}
}
},
Message::License(license_message) => {
if let Views::License(license_view) = &mut k_state.current_view {
let action = license_view.update(license_message);
@@ -160,7 +163,7 @@ fn update(k_state: &mut KiraState, message: Message) -> Task<Message> {
} else {
Task::none()
}
}
},
Message::Network(network_message) => {
if let Views::Network(network_view) = &mut k_state.current_view {
let update_result = network_view.update(network_message);
@@ -184,14 +187,15 @@ fn update(k_state: &mut KiraState, message: Message) -> Task<Message> {
} else {
Task::none()
}
}
},
Message::TimeZone(timezone_message) => {
if let Views::TimeZone(timezone_view) = &mut k_state.current_view {
let action = timezone_view.update(timezone_message);
match action {
StageAction::Next(tz_res) => {
k_state.config.config_trail.push(tz_res);
iced::exit()
k_state.current_view = Views::Locale(stages::locale::LocaleStage::new(&k_state.config));
Task::none()
}
StageAction::Abort => iced::exit(),
StageAction::Back => {
@@ -205,6 +209,25 @@ fn update(k_state: &mut KiraState, message: Message) -> Task<Message> {
} else {
Task::none()
}
},
Message::Locale(locale_msg) => {
if let Views::Locale(locale_view) = &mut k_state.current_view {
match locale_view.update(locale_msg) {
StageAction::Next(locale_res) => {
k_state.config.config_trail.push(locale_res);
iced::exit()
}
StageAction::Back => {
k_state.config.config_trail.pop();
k_state.current_view =
Views::TimeZone(stages::timezone::TimeZoneStage::new());
Task::none()
}
_ => Task::none(),
}
} else {
Task::none()
}
}
}
}