diff --git a/src/components/input/outputStreamEntry.rs b/src/components/input/outputStreamEntry.rs index 0be5e46..9e1e231 100644 --- a/src/components/input/outputStreamEntry.rs +++ b/src/components/input/outputStreamEntry.rs @@ -10,7 +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 crate::components::utils::{createDropdownLabelFactory, setComboRowEllipsis}; use super::outputStreamEntryImpl; use super::sourceBox::SourceBox; @@ -34,6 +34,7 @@ impl OutputStreamEntry { let name = stream.application_name.clone() + ": " + stream.name.as_str(); imp.resetSourceSelection.set_title(name.as_str()); imp.resetSourceSelection.set_factory(Some(&createDropdownLabelFactory())); + setComboRowEllipsis(imp.resetSourceSelection.get()); let volume = stream.volume.first().unwrap_or(&0_u32); let fraction = (*volume as f64 / 655.36).round(); let percentage = (fraction).to_string() + "%"; diff --git a/src/components/input/sourceBox.rs b/src/components/input/sourceBox.rs index 7f522a7..3a97d87 100644 --- a/src/components/input/sourceBox.rs +++ b/src/components/input/sourceBox.rs @@ -22,7 +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 crate::components::utils::{createDropdownLabelFactory, setComboRowEllipsis}; use super::outputStreamEntry::OutputStreamEntry; use super::sourceEntry::{set_default_source, SourceEntry, toggle_source_mute}; @@ -65,6 +65,7 @@ impl SourceBox { selfImp.resetInputCardsBackButton.set_action_name(Some("navigation.pop")); selfImp.resetSourceDropdown.set_factory(Some(&createDropdownLabelFactory())); + setComboRowEllipsis(selfImp.resetSourceDropdown.get()); } } diff --git a/src/components/output/inputStreamEntry.rs b/src/components/output/inputStreamEntry.rs index fdffa19..24f79fd 100644 --- a/src/components/output/inputStreamEntry.rs +++ b/src/components/output/inputStreamEntry.rs @@ -10,7 +10,7 @@ use glib::subclass::types::ObjectSubclassIsExt; use glib::{clone, Cast, Propagation}; use gtk::{gio, StringObject}; use ReSet_Lib::audio::audio::InputStream; -use crate::components::utils::createDropdownLabelFactory; +use crate::components::utils::{createDropdownLabelFactory, setComboRowEllipsis}; use super::inputStreamEntryImpl; use super::sinkBox::SinkBox; @@ -39,6 +39,7 @@ impl InputStreamEntry { let name = stream.application_name.clone() + ": " + stream.name.as_str(); imp.resetSinkSelection.set_title(name.as_str()); imp.resetSinkSelection.set_factory(Some(&createDropdownLabelFactory())); + setComboRowEllipsis(imp.resetSinkSelection.get()); let volume = stream.volume.first().unwrap_or(&0_u32); let fraction = (*volume as f64 / 655.36).round(); let percentage = (fraction).to_string() + "%"; diff --git a/src/components/output/sinkBox.rs b/src/components/output/sinkBox.rs index f12024e..117e124 100644 --- a/src/components/output/sinkBox.rs +++ b/src/components/output/sinkBox.rs @@ -21,7 +21,7 @@ use crate::components::base::utils::{ InputStreamAdded, InputStreamChanged, InputStreamRemoved, SinkAdded, SinkChanged, SinkRemoved, }; use crate::components::output::sinkEntry::set_sink_volume; -use crate::components::utils::createDropdownLabelFactory; +use crate::components::utils::{createDropdownLabelFactory, setComboRowEllipsis}; use super::inputStreamEntry::InputStreamEntry; use super::sinkBoxImpl; @@ -72,6 +72,7 @@ impl SinkBox { selfImp.resetInputCardsBackButton.set_action_name(Some("navigation.pop")); selfImp.resetSinkDropdown.set_factory(Some(&createDropdownLabelFactory())); + setComboRowEllipsis(selfImp.resetSinkDropdown.get()); } } diff --git a/src/components/utils.rs b/src/components/utils.rs index 84383fe..e218519 100644 --- a/src/components/utils.rs +++ b/src/components/utils.rs @@ -1,6 +1,9 @@ -use glib::Cast; +use adw::ComboRow; +use adw::gdk::pango::EllipsizeMode; +use adw::prelude::ListModelExtManual; +use glib::{Cast, Object}; use gtk::{Align, SignalListItemFactory, StringObject}; -use gtk::prelude::{GObjectPropertyExpressionExt, ListItemExt, WidgetExt}; +use gtk::prelude::{GObjectPropertyExpressionExt, ListBoxRowExt, ListItemExt, WidgetExt}; pub fn createDropdownLabelFactory() -> SignalListItemFactory { let factory = SignalListItemFactory::new(); @@ -14,4 +17,21 @@ pub fn createDropdownLabelFactory() -> SignalListItemFactory { item.set_child(Some(&label)); }); factory +} + +pub fn setComboRowEllipsis(element: ComboRow) { + for (i, child) in element.child().unwrap().observe_children().iter::().enumerate() { + if i == 2 { + if let Ok(object) = child { + if let Some(item) = object.downcast_ref::() { + if let Some(widget) = item.first_child() { + if let Some(label) = widget.downcast_ref::() { + label.set_ellipsize(EllipsizeMode::End); + label.set_max_width_chars(1); + } + } + } + } + } + } } \ No newline at end of file diff --git a/src/components/wifi/wifiBox.rs b/src/components/wifi/wifiBox.rs index 7a4546f..4f0bfd7 100644 --- a/src/components/wifi/wifiBox.rs +++ b/src/components/wifi/wifiBox.rs @@ -22,6 +22,7 @@ use gtk::prelude::{ActionableExt, WidgetExt}; use ReSet_Lib::network::network::{AccessPoint, WifiStrength}; use ReSet_Lib::signals::{AccessPointAdded}; use ReSet_Lib::signals::{AccessPointChanged, AccessPointRemoved}; +use crate::components::utils::setComboRowEllipsis; use crate::components::wifi::wifiBoxImpl; @@ -56,6 +57,7 @@ impl WifiBox { selfImp.resetAvailableNetworks.set_activatable(true); selfImp.resetAvailableNetworks.set_action_name(Some("navigation.pop")); + setComboRowEllipsis(selfImp.resetWiFiDevice.get()); } }