From 0f0cb33d469ba75c9d40dcb34120092724cc0809 Mon Sep 17 00:00:00 2001 From: Observer KRypt0n_ Date: Sun, 21 May 2023 12:08:46 +0200 Subject: [PATCH] feat(ui): added dynamic main button icon switching --- src/ui/main/mod.rs | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/ui/main/mod.rs b/src/ui/main/mod.rs index 2e6aa01..6f0e3a2 100644 --- a/src/ui/main/mod.rs +++ b/src/ui/main/mod.rs @@ -386,7 +386,34 @@ impl SimpleComponent for App { gtk::Button { adw::ButtonContent { - set_icon_name: "media-playback-start-symbolic", + #[watch] + set_icon_name: match &model.state { + Some(LauncherState::Launch) | + Some(LauncherState::PredownloadAvailable { .. }) => "media-playback-start-symbolic", + + Some(LauncherState::FolderMigrationRequired { .. }) | + Some(LauncherState::WineNotInstalled) | + Some(LauncherState::PrefixNotExists) => "document-save-symbolic", + + Some(LauncherState::GameUpdateAvailable(_)) | + Some(LauncherState::GameNotInstalled(_)) | + Some(LauncherState::VoiceUpdateAvailable(_)) | + Some(LauncherState::VoiceNotInstalled(_)) => "document-save-symbolic", + + Some(LauncherState::UnityPlayerPatchAvailable(UnityPlayerPatch { status, .. })) | + Some(LauncherState::XluaPatchAvailable(XluaPatch { status, .. })) => match status { + PatchStatus::NotAvailable | + PatchStatus::Outdated { .. } | + PatchStatus::Preparation { .. } => "window-close-symbolic", + + PatchStatus::Testing { .. } | + PatchStatus::Available { .. } => "document-save-symbolic" + } + + Some(LauncherState::VoiceOutdated(_)) | + Some(LauncherState::GameOutdated(_)) | + None => "window-close-symbolic" + }, #[watch] set_label: &match model.state {