can now choose release

This commit is contained in:
ALEZ-DEV 2025-01-27 20:47:13 +01:00
parent 72fd11a2ac
commit baf66a4e13
2 changed files with 58 additions and 21 deletions

View File

@ -5,24 +5,15 @@ use babylonia_terminal_sdk::game_state::GameState;
use log::debug;
use relm4::{
adw::{
self,
prelude::{PreferencesGroupExt, PreferencesPageExt},
ApplicationWindow,
},
gtk::{
self,
prelude::{BoxExt, ButtonExt, GtkWindowExt, OrientableExt, WidgetExt},
},
self,
gtk::{self, prelude::*},
loading_widgets::LoadingWidgets,
prelude::{
AsyncComponent, AsyncComponentController, AsyncComponentParts, AsyncController,
SimpleAsyncComponent,
},
view, Component, ComponentController, Controller, RelmApp, RelmWidgetExt, WorkerController,
prelude::*,
*,
};
use libadwaita::OverlaySplitView;
use adw::prelude::*;
use libadwaita as adw;
use crate::APP_RESOURCE_PATH;
@ -85,7 +76,7 @@ impl SimpleAsyncComponent for MainWindow {
gtk::Box {
set_orientation: gtk::Orientation::Vertical,
OverlaySplitView {
adw::OverlaySplitView {
#[watch]
set_show_sidebar: model.is_menu_visible,
set_collapsed: true,

View File

@ -1,6 +1,19 @@
use libadwaita::prelude::{ButtonExt, PreferencesPageExt, PreferencesRowExt, WidgetExt};
use relm4::prelude::{AsyncComponentParts, SimpleAsyncComponent};
use relm4::{adw, gtk, AsyncComponentSender, RelmWidgetExt};
use babylonia_terminal_sdk::{
components::{
dxvk_component::{self, DXVKComponent},
proton_component::{self, ProtonComponent},
},
utils::github_requester::{GithubRelease, GithubRequester},
};
use relm4::{
self,
gtk::{self, prelude::*},
prelude::*,
*,
};
use adw::prelude::*;
use libadwaita as adw;
use crate::ui::MainWindowMsg;
@ -11,7 +24,10 @@ pub enum DownloadComponentsMsg {
Next,
}
pub struct DownloadComponentsPage;
pub struct DownloadComponentsPage {
proton_versions: Vec<GithubRelease>,
dxvk_versions: Vec<GithubRelease>,
}
#[relm4::component(async, pub)]
impl SimpleAsyncComponent for DownloadComponentsPage {
@ -42,10 +58,24 @@ impl SimpleAsyncComponent for DownloadComponentsPage {
adw::ComboRow {
set_title: "Proton version",
set_model: Some(&gtk::StringList::new(model
.proton_versions
.iter()
.map(|r| r.tag_name.as_str())
.collect::<Vec<&str>>()
.as_slice())),
},
adw::ComboRow {
set_title: "DXVK version",
set_model: Some(&gtk::StringList::new(model
.dxvk_versions
.iter()
.map(|r| r.tag_name.as_str())
.collect::<Vec<&str>>()
.as_slice())),
},
},
@ -70,7 +100,23 @@ impl SimpleAsyncComponent for DownloadComponentsPage {
root: Self::Root,
sender: AsyncComponentSender<Self>,
) -> AsyncComponentParts<Self> {
let model = DownloadComponentsPage;
let proton_releases = ProtonComponent::get_github_releases(
proton_component::PROTON_DEV,
proton_component::PROTON_REPO,
)
.await
.unwrap(); //TODO: remove unwrap()
let dxvk_releases =
DXVKComponent::get_github_releases(dxvk_component::DXVK_DEV, dxvk_component::DXVK_REPO)
.await
.unwrap(); //TODO: remove unwrap()
let model = DownloadComponentsPage {
proton_versions: proton_releases,
dxvk_versions: dxvk_releases,
};
let widgets = view_output!();
AsyncComponentParts { widgets, model }