Game launcher (wip), wgui refactor

[skip ci]
This commit is contained in:
Aleksander
2025-12-26 23:22:17 +01:00
parent e0c51492b8
commit d70b51184c
16 changed files with 379 additions and 93 deletions
+6 -11
View File
@@ -26,21 +26,16 @@ enum Task {
}
struct State {
launcher: Option<(PopupHandle, views::app_launcher::View)>,
view_launcher: Option<(PopupHandle, views::app_launcher::View)>,
}
pub struct TabApps {
#[allow(dead_code)]
pub parser_state: ParserState,
parser_state: ParserState,
#[allow(dead_code)]
state: Rc<RefCell<State>>,
#[allow(dead_code)]
entries: Vec<DesktopEntry>,
#[allow(dead_code)]
app_list: AppList,
tasks: Tasks<Task>,
}
@@ -54,11 +49,11 @@ impl Tab for TabApps {
for task in self.tasks.drain() {
match task {
Task::CloseLauncher => state.launcher = None,
Task::CloseLauncher => state.view_launcher = None,
}
}
if let Some((_, launcher)) = &mut state.launcher {
if let Some((_, launcher)) = &mut state.view_launcher {
launcher.update(&mut frontend.layout, &mut frontend.interface)?;
}
Ok(())
@@ -105,7 +100,7 @@ fn on_app_click(
on_launched,
})?;
state.borrow_mut().launcher = Some((data.handle, view));
state.borrow_mut().view_launcher = Some((data.handle, view));
Ok(())
})
},
@@ -129,7 +124,7 @@ impl TabApps {
let globals = frontend.layout.state.globals.clone();
let tasks = Tasks::new();
let state = Rc::new(RefCell::new(State { launcher: None }));
let state = Rc::new(RefCell::new(State { view_launcher: None }));
let mut parser_state = wgui::parser::parse_from_assets(doc_params, &mut frontend.layout, parent_id)?;
let app_list_parent = parser_state.fetch_widget(&frontend.layout.state, "app_list_parent")?;
+2 -4
View File
@@ -23,10 +23,7 @@ impl Tab for TabGames {
}
fn update(&mut self, frontend: &mut Frontend) -> anyhow::Result<()> {
self
.view_game_list
.update(&mut frontend.layout, &mut frontend.executor)?;
self.view_game_list.update(&mut frontend.layout, &frontend.executor)?;
Ok(())
}
}
@@ -46,6 +43,7 @@ impl TabGames {
let game_list_parent = state.get_widget_id("game_list_parent")?;
let view_game_list = game_list::View::new(game_list::Params {
executor: frontend.executor.clone(),
frontend_tasks: frontend.tasks.clone(),
globals: frontend.layout.state.globals.clone(),
layout: &mut frontend.layout,
+1 -1
View File
@@ -40,7 +40,7 @@ fn configure_label_hello(common: &mut CallbackDataCommon, label_hello: Widget, s
common.i18n().translate("HELLO").to_string()
};
let mut label_hello = label_hello.get_as_mut::<WidgetLabel>().unwrap();
let mut label_hello = label_hello.get_as::<WidgetLabel>().unwrap();
label_hello.set_text(common, Translation::from_raw_text(&translated));
}