diff --git a/assets/locales/en/main.ftl b/assets/locales/en/main.ftl index dfa714e..dedda80 100644 --- a/assets/locales/en/main.ftl +++ b/assets/locales/en/main.ftl @@ -26,6 +26,9 @@ create-prefix = Create prefix update = Update download = Download +main-window--patch-unavailable-tooltip = Patch servers are unavailable and launcher can't verify the game's patching status. You're allowed to run the game on your own risk +main-window--patch-outdated-tooltip = Patch is outdated or in preparation state, so unavailable for usage. Return back later to see its status +main-window--version-outdated-tooltip = Version is too outdated and can't be updated preferences = Preferences general = General diff --git a/assets/locales/ru/main.ftl b/assets/locales/ru/main.ftl index d82e8ec..35feaec 100644 --- a/assets/locales/ru/main.ftl +++ b/assets/locales/ru/main.ftl @@ -32,6 +32,10 @@ create-prefix = Создать префикс update = Обновить download = Установить +main-window--patch-unavailable-tooltip = Серверы патча недоступны и лаунчер не может проверить статус патча игры. Вам разрешено запустить игру на ваш страх и риск +main-window--patch-outdated-tooltip = Патч устарел или находится в процессе разработки, поэтому не может быть применен. Возвращайтесь позже чтобы проверить его статус +main-window--version-outdated-tooltip = Версия слишком стара и не может быть обновлена + preferences = Настройки general = Основное diff --git a/src/ui/main.rs b/src/ui/main.rs index 518b5a8..cec487b 100644 --- a/src/ui/main.rs +++ b/src/ui/main.rs @@ -232,18 +232,62 @@ impl SimpleComponent for App { }, #[watch] - set_sensitive: match model.state { - Some(LauncherState::GameOutdated { .. }) => false, + set_sensitive: match model.state.as_ref() { + Some(LauncherState::GameOutdated { .. }) | Some(LauncherState::VoiceOutdated(_)) => false, + Some(LauncherState::PatchAvailable(patch)) => match patch { + Patch::NotAvailable | + Patch::Outdated { .. } | + Patch::Preparation { .. } => false, + + Patch::Testing { .. } | + Patch::Available { .. } => true + }, + Some(_) => true, None => false }, + #[watch] + set_css_classes: match model.state.as_ref() { + Some(LauncherState::GameOutdated { .. }) | + Some(LauncherState::VoiceOutdated(_)) => &["warning"], + + Some(LauncherState::PatchAvailable(patch)) => match patch { + Patch::NotAvailable | + Patch::Outdated { .. } | + Patch::Preparation { .. } => &["error"], + + Patch::Testing { .. } => &["warning"], + Patch::Available { .. } => &["suggested-action"] + }, + + Some(_) => &["suggested-action"], + + None => &[] + }, + + #[watch] + set_tooltip_text: Some(&match model.state.as_ref() { + Some(LauncherState::GameOutdated { .. }) | + Some(LauncherState::VoiceOutdated(_)) => tr("main-window--version-outdated-tooltip"), + + Some(LauncherState::PatchAvailable(patch)) => match patch { + Patch::NotAvailable => tr("main-window--patch-unavailable-tooltip"), + + Patch::Outdated { .. } | + Patch::Preparation { .. } => tr("main-window--patch-outdated-tooltip"), + + _ => String::new() + }, + + _ => String::new() + }), + set_hexpand: false, set_width_request: 200, - add_css_class: "suggested-action", connect_clicked => AppMsg::PerformAction },