From 7593f2edc14de8e270519524a543701f06297c9e Mon Sep 17 00:00:00 2001 From: Fabio Lenherr / DashieTM Date: Mon, 1 Apr 2024 19:09:19 +0200 Subject: [PATCH] wip: Refactor Dbus functions --- .../audio/generic_audio_functions.rs | 27 +++++++++---------- src/components/audio/generic_entry.rs | 20 +++++++++++--- src/components/audio/input/mod.rs | 1 + .../audio/input/source_box_handlers.rs | 7 ++--- src/components/audio/input/source_box_impl.rs | 7 ++++- src/components/audio/input/source_const.rs | 21 +++++++++++++++ src/components/audio/input/source_entry.rs | 14 ---------- .../audio/input/source_entry_impl.rs | 19 ++++++++----- src/components/audio/output/mod.rs | 1 + src/components/audio/output/sink_box_impl.rs | 7 ++++- src/components/audio/output/sink_const.rs | 21 +++++++++++++++ .../audio/output/sink_entry_impl.rs | 20 +++++++++----- 12 files changed, 115 insertions(+), 50 deletions(-) create mode 100644 src/components/audio/input/source_const.rs create mode 100644 src/components/audio/output/sink_const.rs diff --git a/src/components/audio/generic_audio_functions.rs b/src/components/audio/generic_audio_functions.rs index ee6dcda..db97ca2 100644 --- a/src/components/audio/generic_audio_functions.rs +++ b/src/components/audio/generic_audio_functions.rs @@ -17,23 +17,23 @@ use crate::components::{ utils::{AUDIO, BASE, DBUS_PATH}, }; -use super::generic_entry::{Audio, AudioBox, AudioBoxImpl, AudioImpl}; +use super::generic_entry::{Audio, AudioBox, AudioBoxImpl, AudioImpl, DBusFunction}; pub fn set_volume( value: f64, index: u32, channels: u16, reset_box: Arc, - function: (&'static str, &'static str), + function: &'static DBusFunction, ) -> bool { gio::spawn_blocking(move || { let conn = Connection::new_session().unwrap(); let proxy = conn.with_proxy(BASE, DBUS_PATH, Duration::from_millis(1000)); let res: Result<(), Error> = - proxy.method_call(AUDIO, function.0, (index, channels, value as u32)); + proxy.method_call(AUDIO, function.function, (index, channels, value as u32)); if res.is_err() { // TODO: also log this with LOG/ERROR - show_error::(reset_box.clone(), function.1); + show_error::(reset_box.clone(), function.error); } }); true @@ -43,15 +43,15 @@ pub fn toggle_audio_object_mute( index: u32, muted: bool, input_box: Arc, - function: (&'static str, &'static str), + function: &'static DBusFunction, ) -> bool { gio::spawn_blocking(move || { let conn = Connection::new_session().unwrap(); let proxy = conn.with_proxy(BASE, DBUS_PATH, Duration::from_millis(1000)); - let res: Result<(), Error> = proxy.method_call(AUDIO, function.0, (index, muted)); + let res: Result<(), Error> = proxy.method_call(AUDIO, function.function, (index, muted)); if res.is_err() { // TODO: also log this with LOG/ERROR - show_error::(input_box.clone(), function.1); + show_error::(input_box.clone(), function.error); } }); true @@ -60,7 +60,7 @@ pub fn toggle_audio_object_mute( pub fn set_default_audio_object( name: Arc, input_box: Arc, - function: (&'static str, &'static str), + function: &'static DBusFunction, ) -> Option where T: ReSetErrorImpl + 'static, @@ -68,9 +68,9 @@ where { let conn = Connection::new_session().unwrap(); let proxy = conn.with_proxy(BASE, DBUS_PATH, Duration::from_millis(1000)); - let res: Result<(R,), Error> = proxy.method_call(AUDIO, function.0, (name.as_str(),)); + let res: Result<(R,), Error> = proxy.method_call(AUDIO, function.function, (name.as_str(),)); if res.is_err() { - show_error::(input_box.clone(), function.1); + show_error::(input_box.clone(), function.error); return None; } Some(res.unwrap().0) @@ -116,12 +116,11 @@ pub fn refresh_default_audio_object< } imp.volume_percentage().set_text(&percentage); imp.volume_slider().set_value(volume as f64); + let icons = imp.icons(); if new_audio_object.muted() { - imp.audio_object_mute() - .set_icon_name("audio-volume-muted-symbolic"); + imp.audio_object_mute().set_icon_name(icons.muted); } else { - imp.audio_object_mute() - .set_icon_name("audio-volume-high-symbolic"); + imp.audio_object_mute().set_icon_name(icons.active); } imp.default_audio_object().replace(new_audio_object); }); diff --git a/src/components/audio/generic_entry.rs b/src/components/audio/generic_entry.rs index 28a6841..92f65bd 100644 --- a/src/components/audio/generic_entry.rs +++ b/src/components/audio/generic_entry.rs @@ -58,8 +58,10 @@ pub trait AudioBoxImpl { fn model_index(&self) -> Arc>; fn source_map(&self) -> &AudioMap; fn volume_time_stamp(&self) -> &RefCell>; + fn icons(&self) -> &AudioIcons; } +#[allow(dead_code)] pub trait AudioImpl { fn name(&self) -> &TemplateChild; fn selected_audio_object(&self) -> &TemplateChild; @@ -68,9 +70,10 @@ pub trait AudioImpl { fn volume_percentage(&self) -> &TemplateChild