Working on TimeZone stage.

This commit is contained in:
2026-04-28 23:53:50 +02:00
parent 632c6f7f98
commit 3361562841
12 changed files with 282 additions and 9 deletions
+23 -3
View File
@@ -20,7 +20,6 @@
stages loading, switching between stages, and stuff.
*/
use iced::widget;
use std::process::ExitCode;
@@ -42,6 +41,7 @@ enum Views {
Welcome(welcome::WelcomeStage),
License(license::LicenseStage),
Network(stages::network::NetworkStage),
TimeZone(stages::timezone::TimeZoneStage),
}
enum Message {
@@ -49,6 +49,7 @@ enum Message {
Welcome(welcome::Message),
License(license::Message),
Network(stages::network::Message),
TimeZone(stages::timezone::Message),
}
struct KiraState {
@@ -105,6 +106,7 @@ fn view(k_state: &KiraState) -> Element<'_, Message> {
Views::Welcome(wellcome_stage) => wellcome_stage.view().map(Message::Welcome),
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),
}
}
@@ -158,7 +160,9 @@ fn update(k_state: &mut KiraState, message: Message) -> Task<Message> {
network::UpdateResult::StageAction(action) => match action {
StageAction::Next(network_res) => {
k_state.config.config_trail.push(network_res);
iced::exit()
k_state.current_view =
Views::TimeZone(stages::timezone::TimeZoneStage::new());
Task::none()
}
StageAction::Back => {
k_state.current_view = Views::License(license::LicenseStage {});
@@ -171,6 +175,22 @@ fn update(k_state: &mut KiraState, message: Message) -> Task<Message> {
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()
}
StageAction::Abort(_) => iced::exit(),
StageAction::Back => iced::exit(),
StageAction::None => Task::none(),
}
} else {
Task::none()
}
}
}
}
@@ -187,7 +207,7 @@ pub fn main() -> ExitCode {
let iced_result = iced::application(KiraState::boot, update, view)
.window(iced::window::Settings {
icon: Some(
iced::window::icon::from_file_data(include_bytes!("icon.png"), None)
iced::window::icon::from_file_data(include_bytes!("media/icon.png"), None)
.expect("icon should be a valid PNG"),
),
..Default::default()