From 39fd353c7ee83835574ba669a44a3507736a4a01 Mon Sep 17 00:00:00 2001 From: Fabio Lenherr / DashieTM Date: Mon, 1 Apr 2024 18:26:51 +0200 Subject: [PATCH] wip: format and fix warnings --- .../audio/generic_audio_functions.rs | 4 +- src/components/audio/generic_entry.rs | 13 ++- src/components/audio/input/source_entry.rs | 87 +---------------- src/components/audio/output/sink_box.rs | 7 ++ .../audio/output/sink_box_handlers.rs | 4 +- src/components/audio/output/sink_box_impl.rs | 87 +++++++++++++++++ src/components/audio/output/sink_box_utils.rs | 4 +- src/components/audio/output/sink_entry.rs | 94 ++++--------------- .../audio/output/sink_entry_impl.rs | 45 ++++++++- 9 files changed, 169 insertions(+), 176 deletions(-) diff --git a/src/components/audio/generic_audio_functions.rs b/src/components/audio/generic_audio_functions.rs index b59d926..ee6dcda 100644 --- a/src/components/audio/generic_audio_functions.rs +++ b/src/components/audio/generic_audio_functions.rs @@ -2,13 +2,13 @@ use std::{sync::Arc, time::Duration}; use adw::traits::ComboRowExt; use dbus::{ - arg::{Arg, Get, ReadAll}, + arg::{Arg, Get}, blocking::Connection, Error, }; use gtk::{ gio, - prelude::{BoxExt, ButtonExt, CheckButtonExt, ListBoxRowExt, RangeExt}, + prelude::{ButtonExt, CheckButtonExt, RangeExt}, }; use re_set_lib::audio::audio_structures::AudioObject; diff --git a/src/components/audio/generic_entry.rs b/src/components/audio/generic_entry.rs index 5668c67..28a6841 100644 --- a/src/components/audio/generic_entry.rs +++ b/src/components/audio/generic_entry.rs @@ -1,21 +1,18 @@ use std::collections::HashMap; -use std::rc::Rc; use std::sync::RwLock; use std::time::Duration; use std::{cell::RefCell, sync::Arc, time::SystemTime}; use adw::prelude::{ButtonExt, CheckButtonExt, PreferencesRowExt, RangeExt}; use adw::{ActionRow, ComboRow, PreferencesGroup}; -use dbus::arg::{Arg, Get, ReadAll}; -use glib::clone::{Downgrade, Upgrade}; -use glib::{clone, Propagation}; +use dbus::arg::{Arg, Get}; +use glib::Propagation; use glib::{ - object::{IsA, IsClass, ObjectSubclassIs, ParentClassIs}, - subclass::types::{InstanceStruct, InstanceStructExt, ObjectSubclass, ObjectSubclassType}, + object::{IsA, IsClass}, Object, }; use gtk::{gio, Button, CheckButton, Label, Scale, StringList, TemplateChild}; -use re_set_lib::audio::audio_structures::{AudioObject, Source, Volume}; +use re_set_lib::audio::audio_structures::AudioObject; use crate::components::base::error::ReSetError; use crate::components::base::error_impl::ReSetErrorImpl; @@ -35,9 +32,11 @@ pub trait AudioBox { } pub type AudioEntryMap = Arc, Arc, String)>>>; +#[allow(dead_code)] pub type AudioStreamEntryMap = Arc, Arc)>>>; pub type AudioMap = Arc>>; +#[allow(dead_code)] pub trait AudioBoxImpl { fn audio_object_row(&self) -> &TemplateChild; fn cards_row(&self) -> &TemplateChild; diff --git a/src/components/audio/input/source_entry.rs b/src/components/audio/input/source_entry.rs index d1a201e..e3a3556 100644 --- a/src/components/audio/input/source_entry.rs +++ b/src/components/audio/input/source_entry.rs @@ -1,22 +1,17 @@ use std::sync::Arc; -use std::time::{Duration, SystemTime}; +use std::time::Duration; -use crate::components::audio::generic_entry::{new_entry, Audio, AudioImpl}; +use crate::components::audio::generic_entry::{new_entry, Audio}; use crate::components::base::error_impl::show_error; -use crate::components::utils::set_action_row_ellipsis; -use adw::glib::Object; -use adw::prelude::{ButtonExt, CheckButtonExt, PreferencesRowExt, RangeExt}; use dbus::blocking::Connection; use dbus::Error; use glib::subclass::types::ObjectSubclassIsExt; -use glib::{clone, Propagation}; use gtk::{gio, CheckButton}; use re_set_lib::audio::audio_structures::Source; use crate::components::utils::{AUDIO, BASE, DBUS_PATH}; use super::source_box::SourceBox; -use super::source_box_utils::refresh_default_source; use super::source_entry_impl; glib::wrapper! { @@ -49,84 +44,6 @@ impl SourceEntry { super::source_box_impl::SourceBox, >(is_default, check_group, source, input_box) } - // pub fn new( - // is_default: bool, - // check_group: Arc, - // source: Source, - // input_box: Arc, - // ) -> Self { - // let obj: Self = Object::builder().build(); - // // TODO use event callback for progress bar -> this is the "im speaking" indicator - // { - // let imp = obj.imp(); - // imp.reset_source_name - // .set_title(source.alias.clone().as_str()); - // let name = Arc::new(source.name.clone()); - // let volume = source.volume.first().unwrap_or(&0_u32); - // let fraction = (*volume as f64 / 655.36).round(); - // let percentage = (fraction).to_string() + "%"; - // let input_box_slider = input_box.clone(); - // let input_box_ref = input_box.clone(); - // imp.reset_volume_percentage.set_text(&percentage); - // imp.reset_volume_slider.set_value(*volume as f64); - // imp.source.replace(source); - // imp.reset_volume_slider.connect_change_value( - // clone!(@weak imp => @default-return Propagation::Stop, move |_, _, value| { - // let fraction = (value / 655.36).round(); - // let percentage = (fraction).to_string() + "%"; - // imp.reset_volume_percentage.set_text(&percentage); - // let source = imp.source.borrow(); - // let index = source.index; - // let channels = source.channels; - // { - // let mut time = imp.volume_time_stamp.borrow_mut(); - // if time.is_some() - // && time.unwrap().elapsed().unwrap() < Duration::from_millis(50) - // { - // return Propagation::Proceed; - // } - // *time = Some(SystemTime::now()); - // } - // set_source_volume(value, index, channels, input_box_slider.clone()); - // Propagation::Proceed - // }), - // ); - // imp.reset_selected_source.set_group(Some(&*check_group)); - // if is_default { - // imp.reset_selected_source.set_active(true); - // } else { - // imp.reset_selected_source.set_active(false); - // } - // imp.reset_selected_source.connect_toggled(move |button| { - // let input_box = input_box.clone(); - // if button.is_active() { - // let name = name.clone(); - // gio::spawn_blocking(move || { - // let result = set_default_source(name, input_box.clone()); - // if result.is_none() { - // return; - // } - // refresh_default_source(result.unwrap(), input_box, true); - // }); - // } - // }); - // imp.reset_source_mute - // .connect_clicked(clone!(@weak imp => move |_| { - // let mut source = imp.source.borrow_mut(); - // source.muted = !source.muted; - // if source.muted { - // imp.reset_source_mute - // .set_icon_name("microphone-disabled-symbolic"); - // } else { - // imp.reset_source_mute - // .set_icon_name("audio-input-microphone-symbolic"); - // } - // toggle_source_mute(source.index, source.muted, input_box_ref.clone()); - // })); - // set_action_row_ellipsis(imp.reset_source_name.get()); - // } - // obj - // } } pub fn set_source_volume(value: f64, index: u32, channels: u16, input_box: Arc) -> bool { diff --git a/src/components/audio/output/sink_box.rs b/src/components/audio/output/sink_box.rs index c5ca269..4723f3b 100644 --- a/src/components/audio/output/sink_box.rs +++ b/src/components/audio/output/sink_box.rs @@ -17,6 +17,7 @@ use glib::Variant; use gtk::gio; use gtk::prelude::ActionableExt; +use crate::components::audio::generic_entry::AudioBox; use crate::components::base::error_impl::ReSetErrorImpl; use crate::components::utils::BASE; use crate::components::utils::DBUS_PATH; @@ -52,6 +53,12 @@ impl ReSetErrorImpl for SinkBox { } } +impl AudioBox for SinkBox { + fn box_imp(&self) -> &super::sink_box_impl::SinkBox { + self.imp() + } +} + impl SinkBox { pub fn new() -> Self { let obj: Self = Object::builder().build(); diff --git a/src/components/audio/output/sink_box_handlers.rs b/src/components/audio/output/sink_box_handlers.rs index 802e9dc..64f1fcb 100644 --- a/src/components/audio/output/sink_box_handlers.rs +++ b/src/components/audio/output/sink_box_handlers.rs @@ -99,12 +99,12 @@ pub fn sink_added_handler(sink_box: Arc, ir: SinkAdded) -> bool { if sink_box_imp.reset_default_sink.borrow().name == ir.sink.name { is_default = true; } - let sink_entry = Arc::new(SinkEntry::new( + let sink_entry = SinkEntry::new( is_default, sink_box_imp.reset_default_check_button.clone(), ir.sink, sink_box.clone(), - )); + ); let sink_clone = sink_entry.clone(); let entry = Arc::new(ListEntry::new(&*sink_entry)); entry.set_activatable(false); diff --git a/src/components/audio/output/sink_box_impl.rs b/src/components/audio/output/sink_box_impl.rs index deda284..8c7e9f1 100644 --- a/src/components/audio/output/sink_box_impl.rs +++ b/src/components/audio/output/sink_box_impl.rs @@ -5,6 +5,7 @@ use std::collections::HashMap; use std::sync::{Arc, RwLock}; use std::time::SystemTime; +use crate::components::audio::generic_entry::AudioBoxImpl; use crate::components::audio::output::input_stream_entry::InputStreamEntry; use crate::components::base::error::ReSetError; use crate::components::base::list_entry::ListEntry; @@ -93,3 +94,89 @@ impl WidgetImpl for SinkBox {} impl WindowImpl for SinkBox {} impl ApplicationWindowImpl for SinkBox {} + +impl AudioBoxImpl for SinkBox { + fn audio_object_row(&self) -> &TemplateChild { + &self.reset_sinks_row + } + + fn cards_row(&self) -> &TemplateChild { + &self.reset_cards_row + } + + fn audio_object_dropdown(&self) -> &TemplateChild { + &self.reset_sink_dropdown + } + + fn audio_object_mute(&self) -> &TemplateChild