display_list, add_display views (wip)

[skip ci]
This commit is contained in:
Aleksander
2025-12-15 21:08:59 +01:00
parent 7118cea810
commit 9aea733452
21 changed files with 574 additions and 153 deletions
+6 -10
View File
@@ -66,16 +66,12 @@ impl TabHome {
let btn_processes = state.fetch_component_as::<ComponentButton>("btn_processes")?;
let btn_settings = state.fetch_component_as::<ComponentButton>("btn_settings")?;
let frontend = params.frontend;
Frontend::register_button_task(frontend.clone(), &btn_apps, FrontendTask::SetTab(TabType::Apps));
Frontend::register_button_task(frontend.clone(), &btn_games, FrontendTask::SetTab(TabType::Games));
Frontend::register_button_task(frontend.clone(), &btn_monado, FrontendTask::SetTab(TabType::Monado));
Frontend::register_button_task(
frontend.clone(),
&btn_processes,
FrontendTask::SetTab(TabType::Processes),
);
Frontend::register_button_task(frontend.clone(), &btn_settings, FrontendTask::SetTab(TabType::Settings));
let tasks = params.frontend_tasks;
tasks.handle_button(btn_apps, FrontendTask::SetTab(TabType::Apps));
tasks.handle_button(btn_games, FrontendTask::SetTab(TabType::Games));
tasks.handle_button(btn_monado, FrontendTask::SetTab(TabType::Monado));
tasks.handle_button(btn_processes, FrontendTask::SetTab(TabType::Processes));
tasks.handle_button(btn_settings, FrontendTask::SetTab(TabType::Settings));
Ok(Self { state })
}
+14 -1
View File
@@ -2,8 +2,9 @@ use wgui::{
globals::WguiGlobals,
layout::{Layout, WidgetID},
};
use wlx_common::dash_interface;
use crate::frontend::RcFrontend;
use crate::frontend::{FrontendTasks, RcFrontend};
pub mod apps;
pub mod games;
@@ -28,9 +29,21 @@ pub struct TabParams<'a> {
pub parent_id: WidgetID,
pub frontend: &'a RcFrontend,
pub settings: &'a mut crate::settings::Settings,
pub frontend_tasks: &'a FrontendTasks,
}
pub struct TabUpdateParams<'a> {
pub globals: &'a WguiGlobals,
pub frontend_tasks: &'a FrontendTasks,
pub layout: &'a mut Layout,
pub interface: &'a mut Box<dyn dash_interface::DashInterface>,
}
pub trait Tab {
#[allow(dead_code)]
fn get_type(&self) -> TabType;
fn update(&mut self, _params: TabUpdateParams) -> anyhow::Result<()> {
Ok(())
}
}
+21 -3
View File
@@ -1,19 +1,29 @@
use wgui::{
assets::AssetPath,
parser::{ParseDocumentParams, ParserState},
parser::{Fetchable, ParseDocumentParams, ParserState},
};
use crate::tab::{Tab, TabParams, TabType};
use crate::{
tab::{Tab, TabParams, TabType, TabUpdateParams},
views::display_list,
};
pub struct TabProcesses {
#[allow(dead_code)]
pub state: ParserState,
view_display_list: display_list::View,
}
impl Tab for TabProcesses {
fn get_type(&self) -> TabType {
TabType::Games
}
fn update(&mut self, params: TabUpdateParams) -> anyhow::Result<()> {
self.view_display_list.update(params.layout, params.interface)?;
Ok(())
}
}
impl TabProcesses {
@@ -28,6 +38,14 @@ impl TabProcesses {
params.parent_id,
)?;
Ok(Self { state })
Ok(Self {
view_display_list: display_list::View::new(display_list::Params {
layout: params.layout,
parent_id: state.get_widget_id("display_list_parent")?,
globals: params.globals.clone(),
frontend_tasks: params.frontend_tasks.clone(),
})?,
state,
})
}
}