extract signallistitemfactory to utils

This commit is contained in:
takotori 2023-11-27 11:31:28 +01:00
parent d3afe5675e
commit 00ffb7faf9
8 changed files with 42 additions and 46 deletions

View file

@ -10,6 +10,7 @@ use glib::subclass::types::ObjectSubclassIsExt;
use glib::{clone, Cast, Propagation};
use gtk::{gio, StringObject};
use ReSet_Lib::audio::audio::OutputStream;
use crate::components::utils::createDropdownLabelFactory;
use super::outputStreamEntryImpl;
use super::sourceBox::SourceBox;
@ -32,6 +33,7 @@ impl OutputStreamEntry {
let imp = obj.imp();
let name = stream.application_name.clone() + ": " + stream.name.as_str();
imp.resetSourceSelection.set_title(name.as_str());
imp.resetSourceSelection.set_factory(Some(&createDropdownLabelFactory()));
let volume = stream.volume.first().unwrap_or(&0_u32);
let fraction = (*volume as f64 / 655.36).round();
let percentage = (fraction).to_string() + "%";

View file

@ -10,8 +10,8 @@ use dbus::blocking::Connection;
use dbus::message::SignalArgs;
use glib::{Cast, clone, Propagation, Variant};
use glib::subclass::prelude::ObjectSubclassIsExt;
use gtk::{Align, gio, SignalListItemFactory, StringObject};
use gtk::prelude::{ActionableExt, GObjectPropertyExpressionExt, ListItemExt, WidgetExt};
use gtk::{gio, StringObject};
use gtk::prelude::{ActionableExt};
use ReSet_Lib::audio::audio::{Card, OutputStream, Source};
use crate::components::base::cardEntry::CardEntry;
@ -22,6 +22,7 @@ use crate::components::base::utils::{
};
use crate::components::input::sourceBoxImpl;
use crate::components::input::sourceEntry::set_source_volume;
use crate::components::utils::createDropdownLabelFactory;
use super::outputStreamEntry::OutputStreamEntry;
use super::sourceEntry::{set_default_source, SourceEntry, toggle_source_mute};
@ -63,18 +64,7 @@ impl SourceBox {
selfImp.resetInputCardsBackButton.set_activatable(true);
selfImp.resetInputCardsBackButton.set_action_name(Some("navigation.pop"));
let factory = &SignalListItemFactory::new();
factory.connect_setup(|_, item| {
let item = item.downcast_ref::<gtk::ListItem>().unwrap();
let label = gtk::Label::new(None);
label.set_halign(Align::Start);
item.property_expression("item")
.chain_property::<StringObject>("string")
.bind(&label, "label", gtk::Widget::NONE);
item.set_child(Some(&label));
});
selfImp.resetSourceDropdown.set_factory(Some(factory));
selfImp.resetSourceDropdown.set_factory(Some(&createDropdownLabelFactory()));
}
}