From 96e7390a2bb37176678f4d6df21e04a1df1f2797 Mon Sep 17 00:00:00 2001 From: Ada Baumann Date: Sat, 8 Nov 2025 00:54:40 +0100 Subject: [PATCH] dev-2025-11-08T00:54:40+01:00 --- run.sh | 4 ++-- src/pipewire_manager.rs | 45 +++++++++++++++++++++++++++++++++-------- subprojects/.wraplock | 0 3 files changed, 39 insertions(+), 10 deletions(-) create mode 100644 subprojects/.wraplock diff --git a/run.sh b/run.sh index 5c8c01f..3dac160 100755 --- a/run.sh +++ b/run.sh @@ -6,8 +6,8 @@ cd "$SRC_DIR" || exit #export DESTDIR=~/.local #export PKGDATADIR=~/.local/share -~/.local/bin/meson build || exit -sudo ~/.local/bin/meson install -C build || exit +meson build || exit +sudo meson install -C build || exit RUST_BACKTRACE=1 audio-device-manager || exit #git add . diff --git a/src/pipewire_manager.rs b/src/pipewire_manager.rs index 4456962..8184a6c 100644 --- a/src/pipewire_manager.rs +++ b/src/pipewire_manager.rs @@ -42,7 +42,7 @@ enum Command { } struct RegisteredObjects { - profile_combo_rows: HashMap + profile_combo_rows: HashMap } impl RegisteredObjects { @@ -166,8 +166,11 @@ fn handle_profile_discovered(device_id: usize, registered_objects: Rc().unwrap().label().to_string(); + + match label.cmp(&profile_name) { Ordering::Less => {} Ordering::Equal => return, Ordering::Greater => {break;} @@ -175,7 +178,9 @@ fn handle_profile_discovered(device_id: usize, registered_objects: Rc().unwrap().label().to_string(); + + if label == profile_name { + break; + } + + i += 1; + } combo_row.set_selected(i); @@ -257,9 +272,18 @@ impl PipewireManager { Some((id, self.devices.borrow()[&device_id].profiles[&id].description.clone())) }); - let model = gtk::StringList::new(&[]); + + let model = adw::gio::ListStore::new::(); + + //let model = gtk::StringList::new(&[]); + for name in &profile_names { - model.append(name); + + let label = gtk::Label::new(Some(name)); + + label.set_tooltip_text(Some(name)); + + model.append(&label); } combo_row.set_model(Some(&model)); @@ -273,7 +297,12 @@ impl PipewireManager { self.tx, move |c| { let model_entry = c.selected(); - let selected_profile_name = model.string(model_entry).unwrap().to_string(); + let selected_profile_name = model + .item(model_entry) + .unwrap() + .downcast::() + .unwrap() + .label(); let mut selected_profile_id = None; for (profile_id, profile) in &devices.borrow()[&device_id].profiles { diff --git a/subprojects/.wraplock b/subprojects/.wraplock new file mode 100644 index 0000000..e69de29