From ebbd22667690a1d86ef1a38fe9781b3bdec49a0f Mon Sep 17 00:00:00 2001 From: Fabio Lenherr / DashieTM Date: Tue, 9 Apr 2024 17:34:48 +0200 Subject: [PATCH] feat: Add dynamic checks for supported plugins --- better_test_plugin/src/lib.rs | 4 ++-- src/components/window/reset_window.rs | 14 +++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/better_test_plugin/src/lib.rs b/better_test_plugin/src/lib.rs index c820d9b..f993869 100644 --- a/better_test_plugin/src/lib.rs +++ b/better_test_plugin/src/lib.rs @@ -15,7 +15,7 @@ pub const INTERFACE: &str = "org.Xetibo.ReSet.TestPlugin"; #[allow(improper_ctypes_definitions)] pub extern "C" fn capabilities() -> PluginCapabilities { println!("frontend capabilities called"); - PluginCapabilities::new(vec!["frontend test"], PluginImplementation::Frontend) + PluginCapabilities::new(vec!["test"], PluginImplementation::Frontend) } #[no_mangle] @@ -81,4 +81,4 @@ pub struct LabelWrapper { unsafe impl Send for LabelWrapper {} -unsafe impl Sync for LabelWrapper {} \ No newline at end of file +unsafe impl Sync for LabelWrapper {} diff --git a/src/components/window/reset_window.rs b/src/components/window/reset_window.rs index 620acc6..5e7f684 100644 --- a/src/components/window/reset_window.rs +++ b/src/components/window/reset_window.rs @@ -124,7 +124,6 @@ impl ReSetWindow { let audio = capabilities.contains(&"Audio".to_string()); self_imp.capabilities.set(wifi, bluetooth, audio); - // let sidebar_list = vec![CONNECTIVITY_SIDEBAR, WIFI_SIDEBAR, BLUETOOTH_SIDEBAR, AUDIO_SIDEBAR, SINK_SIDEBAR, SOURCE_SIDEBAR]; let mut sidebar_list = Vec::new(); if wifi || bluetooth { @@ -145,10 +144,23 @@ impl ReSetWindow { let mut plugin_sidebar_list = vec![]; unsafe { for plugin in FRONTEND_PLUGINS.iter() { + let plugin_capabilities = &plugin.capabilities; let (sidebar_info, plugin_boxes) = (plugin.frontend_data)(); let listeners = self_imp.listeners.clone(); (plugin.frontend_startup)(); + let mut found = false; + dbg!(&capabilities); + for capability in plugin_capabilities { + dbg!(&capability); + if capabilities.contains(&capability.to_string()) { + found = true; + break; + } + } + if !found { + continue; + } let event = Rc::new( move |reset_main: FlowBox, position: Rc>,