use adw::{ActionRow, ComboRow, PreferencesGroup}; use re_set_lib::audio::audio_structures::Sink; use std::cell::RefCell; use std::collections::HashMap; use std::sync::{Arc, RwLock}; use std::time::SystemTime; use crate::components::base::list_entry::ListEntry; use crate::components::output::input_stream_entry::InputStreamEntry; use gtk::subclass::prelude::*; use gtk::{glib, Box, Button, CheckButton, CompositeTemplate, Label, StringList, TemplateChild}; use gtk::{prelude::*, Scale}; use super::sink_box; use super::sink_entry::SinkEntry; type SinkEntryMap = Arc, Arc, String)>>>; type InputStreamEntryMap = Arc, Arc)>>>; // key is model name -> alias, first u32 is the index of the sink, the second the index in the model list and the third is // the detailed name type SinkMap = Arc>>; #[derive(Default, CompositeTemplate)] #[template(resource = "/org/Xetibo/ReSet/resetAudioOutput.ui")] pub struct SinkBox { #[template_child] pub reset_sinks_row: TemplateChild, #[template_child] pub reset_cards_row: TemplateChild, #[template_child] pub reset_sink_dropdown: TemplateChild, #[template_child] pub reset_sink_mute: TemplateChild