From e89de26b6785a796faa5744a2e27476fc9ee756c Mon Sep 17 00:00:00 2001 From: takotori Date: Mon, 11 Dec 2023 17:22:00 +0100 Subject: [PATCH 1/7] make bluetooth visibility settings consistent with other settingss --- src/components/bluetooth/bluetooth_box.rs | 15 ++-- .../bluetooth/bluetooth_box_impl.rs | 8 +- src/components/wifi/saved_wifi_entry_impl.rs | 2 +- src/resources/resetBluetooth.ui | 73 ++++--------------- src/resources/resetUI.cmb | 57 ++++----------- 5 files changed, 40 insertions(+), 115 deletions(-) diff --git a/src/components/bluetooth/bluetooth_box.rs b/src/components/bluetooth/bluetooth_box.rs index f4246c5..292e72b 100644 --- a/src/components/bluetooth/bluetooth_box.rs +++ b/src/components/bluetooth/bluetooth_box.rs @@ -54,6 +54,7 @@ fn setup_callbacks( imp.reset_visibility .set_action_target_value(Some(&Variant::from("visibility"))); + imp.reset_bluetooth_main_tab.set_activatable(true); imp.reset_bluetooth_main_tab .set_action_name(Some("navigation.pop")); @@ -67,15 +68,13 @@ fn setup_callbacks( }); imp.reset_bluetooth_discoverable_switch - .connect_state_set(clone!(@weak imp => @default-return glib::Propagation::Proceed,move |_, state| { - set_bluetooth_adapter_visibility(imp.reset_current_bluetooth_adapter.borrow().path.clone(), state); - glib::Propagation::Proceed + .connect_active_notify(clone!(@weak imp => move |state| { + set_bluetooth_adapter_visibility(imp.reset_current_bluetooth_adapter.borrow().path.clone(), state.is_active()); })); imp.reset_bluetooth_pairable_switch - .connect_state_set(clone!(@weak imp => @default-return glib::Propagation::Proceed,move |_, state| { - set_bluetooth_adapter_pairability(imp.reset_current_bluetooth_adapter.borrow().path.clone(), state); - glib::Propagation::Proceed + .connect_active_notify(clone!(@weak imp => move |state| { + set_bluetooth_adapter_pairability(imp.reset_current_bluetooth_adapter.borrow().path.clone(), state.is_active()); })); imp.reset_bluetooth_switch @@ -151,11 +150,11 @@ pub fn populate_conntected_bluetooth_devices(bluetooth_box: Arc) { imp.reset_bluetooth_switch .set_active(current_adapter.powered); imp.reset_bluetooth_discoverable_switch - .set_state(current_adapter.discoverable); + .set_active(current_adapter.discoverable); imp.reset_bluetooth_discoverable_switch .set_active(current_adapter.discoverable); imp.reset_bluetooth_pairable_switch - .set_state(current_adapter.pairable); + .set_active(current_adapter.pairable); imp.reset_bluetooth_pairable_switch .set_active(current_adapter.pairable); } diff --git a/src/components/bluetooth/bluetooth_box_impl.rs b/src/components/bluetooth/bluetooth_box_impl.rs index 220a60a..40a3080 100644 --- a/src/components/bluetooth/bluetooth_box_impl.rs +++ b/src/components/bluetooth/bluetooth_box_impl.rs @@ -1,4 +1,4 @@ -use adw::{ActionRow, ComboRow, PreferencesGroup}; +use adw::{ActionRow, ComboRow, PreferencesGroup, SwitchRow}; use dbus::Path; use gtk::subclass::prelude::*; use gtk::{glib, Button, CompositeTemplate, Switch}; @@ -30,11 +30,11 @@ pub struct BluetoothBox { #[template_child] pub reset_visibility: TemplateChild, #[template_child] - pub reset_bluetooth_main_tab: TemplateChild, + pub reset_bluetooth_main_tab: TemplateChild, #[template_child] - pub reset_bluetooth_discoverable_switch: TemplateChild, + pub reset_bluetooth_discoverable_switch: TemplateChild, #[template_child] - pub reset_bluetooth_pairable_switch: TemplateChild, + pub reset_bluetooth_pairable_switch: TemplateChild, pub available_devices: BluetoothMap, pub connected_devices: BluetoothMap, pub reset_bluetooth_adapters: Arc>>, diff --git a/src/components/wifi/saved_wifi_entry_impl.rs b/src/components/wifi/saved_wifi_entry_impl.rs index 6317fd9..9c310d3 100644 --- a/src/components/wifi/saved_wifi_entry_impl.rs +++ b/src/components/wifi/saved_wifi_entry_impl.rs @@ -6,7 +6,7 @@ use std::cell::RefCell; use dbus::Path; use gtk::subclass::prelude::*; -use gtk::{glib, Button, CompositeTemplate, Label}; +use gtk::{glib, CompositeTemplate}; use super::saved_wifi_entry; diff --git a/src/resources/resetBluetooth.ui b/src/resources/resetBluetooth.ui index c5ef16d..a2762a5 100644 --- a/src/resources/resetBluetooth.ui +++ b/src/resources/resetBluetooth.ui @@ -91,33 +91,16 @@ vertical - - boxed-list - 10 - 5 - 5 - 5 - True - start + - + + Available Networks - - 40 - - - Main - 5 - - - - - end - True - go-previous-symbolic - 5 - - + + end + True + go-previous-symbolic + 5 @@ -125,46 +108,18 @@ - - start - Visibility Settings - 5 - - - - - 5 - 5 - 5 + + Visibility Settings - - start - True - True - Pairable + + Pairable - - - - - - - 5 - 5 - 5 - - - start - True - True - Discoverable + + Discoverable - - - diff --git a/src/resources/resetUI.cmb b/src/resources/resetUI.cmb index 1da4d0e..07ab7d9 100644 --- a/src/resources/resetUI.cmb +++ b/src/resources/resetUI.cmb @@ -132,25 +132,19 @@ (10,143,"GtkLabel",None,142,None,None,None,None,None), (10,144,"GtkSwitch","reset_bluetooth_switch",142,None,None,None,1,None), (10,153,"GtkBox",None,138,None,None,None,None,None), - (10,154,"GtkListBox",None,153,None,None,None,None,None), - (10,155,"resetListBoxRow","reset_bluetooth_main_tab",154,None,None,None,1,None), - (10,156,"GtkBox",None,155,None,None,None,None,None), - (10,157,"GtkLabel",None,156,None,None,None,None,None), - (10,158,"GtkImage",None,156,None,None,None,1,None), - (10,159,"GtkLabel",None,153,None,None,None,1,None), (10,172,"AdwPreferencesGroup","reset_bluetooth_details",121,None,None,None,None,None), (10,173,"AdwComboRow","reset_bluetooth_adapter",172,None,None,None,None,None), (10,174,"AdwActionRow","reset_visibility",172,None,None,None,1,None), (10,175,"GtkImage",None,174,None,None,None,None,None), - (10,188,"GtkBox",None,153,None,None,None,4,None), - (10,193,"GtkLabel",None,188,None,None,None,None,None), - (10,196,"GtkSwitch","reset_bluetooth_discoverable_switch",188,None,None,None,1,None), - (10,197,"GtkBox",None,153,None,None,None,3,None), - (10,198,"GtkLabel",None,197,None,None,None,None,None), - (10,199,"GtkSwitch","reset_bluetooth_pairable_switch",197,None,None,None,1,None), (10,204,"AdwPreferencesGroup","reset_bluetooth_available_devices",121,None,None,None,1,None), (10,206,"AdwPreferencesGroup","reset_bluetooth_connected_devices",121,None,None,None,2,None), (10,207,"GtkButton","reset_bluetooth_refresh_button",204,None,None,None,-1,None), + (10,208,"AdwPreferencesGroup",None,153,None,None,None,None,None), + (10,209,"AdwPreferencesGroup",None,153,None,None,None,1,None), + (10,210,"AdwSwitchRow","reset_bluetooth_pairable_switch",209,None,None,None,-1,None), + (10,211,"AdwSwitchRow","reset_bluetooth_discoverable_switch",209,None,None,None,-1,None), + (10,212,"AdwActionRow","reset_bluetooth_main_tab",208,None,None,None,None,None), + (10,213,"GtkImage",None,212,None,None,None,None,None), (11,1,"AdwActionRow","resetBluetoothEntry",None,None,None,None,None,None), (12,11,"GtkBox","resetAudioInput",None,None,None,None,None,None), (12,12,"GtkLabel",None,11,None,None,None,None,None), @@ -504,43 +498,12 @@ (10,144,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None), (10,144,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None), (10,153,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), - (10,154,"GtkListBox","show-separators","True",None,None,None,None,None,None,None,None,None), - (10,154,"GtkWidget","css-classes","boxed-list",None,None,None,None,None,None,None,None,None), - (10,154,"GtkWidget","margin-bottom","10",None,None,None,None,None,None,None,None,None), - (10,154,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None), - (10,154,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None), - (10,154,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None), - (10,154,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None), - (10,156,"GtkWidget","height-request","40",None,None,None,None,None,None,None,None,None), - (10,157,"GtkLabel","label","Main",None,None,None,None,None,None,None,None,None), - (10,157,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None), - (10,158,"GtkImage","icon-name","go-previous-symbolic",None,None,None,None,None,None,None,None,None), - (10,158,"GtkWidget","halign","end",None,None,None,None,None,None,None,None,None), - (10,158,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), - (10,158,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None), - (10,159,"GtkLabel","label","Visibility Settings",None,None,None,None,None,None,None,None,None), - (10,159,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None), - (10,159,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None), (10,173,"AdwPreferencesRow","title","Bluetooth Adapter",None,None,None,None,None,None,None,None,None), (10,174,"AdwPreferencesRow","title","Visibility Settings",None,None,None,None,None,None,None,None,None), (10,175,"GtkImage","icon-name","go-previous-symbolic-rtl",None,None,None,None,None,None,None,None,None), (10,175,"GtkWidget","halign","end",None,None,None,None,None,None,None,None,None), (10,175,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), (10,175,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None), - (10,188,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None), - (10,188,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None), - (10,188,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None), - (10,193,"GtkLabel","label","Discoverable",None,None,None,None,None,None,None,None,None), - (10,193,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None), - (10,193,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), - (10,193,"GtkWidget","hexpand-set","True",None,None,None,None,None,None,None,None,None), - (10,197,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None), - (10,197,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None), - (10,197,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None), - (10,198,"GtkLabel","label","Pairable",None,None,None,None,None,None,None,None,None), - (10,198,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None), - (10,198,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), - (10,198,"GtkWidget","hexpand-set","True",None,None,None,None,None,None,None,None,None), (10,204,"AdwPreferencesGroup","header-suffix",None,None,None,None,None,207,None,None,None,None), (10,204,"AdwPreferencesGroup","title","Available Devices",None,None,None,None,None,None,None,None,None), (10,204,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None), @@ -551,6 +514,14 @@ (10,206,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None), (10,206,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None), (10,207,"GtkButton","icon-name","view-refresh-symbolic",None,None,None,None,None,None,None,None,None), + (10,209,"AdwPreferencesGroup","title","Visibility Settings",None,None,None,None,None,None,None,None,None), + (10,210,"AdwPreferencesRow","title","Pairable",None,None,None,None,None,None,None,None,None), + (10,211,"AdwPreferencesRow","title","Discoverable",None,None,None,None,None,None,None,None,None), + (10,212,"AdwPreferencesRow","title","Available Networks",None,None,None,None,None,None,None,None,None), + (10,213,"GtkImage","icon-name","go-previous-symbolic",None,None,None,None,None,None,None,None,None), + (10,213,"GtkWidget","halign","end",None,None,None,None,None,None,None,None,None), + (10,213,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), + (10,213,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None), (11,1,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None), (11,32,"GtkListBoxRow","child",None,None,None,None,None,39,None,None,None,None), (11,32,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None), From f95dca41a4c839473767218c2f918de123b12779 Mon Sep 17 00:00:00 2001 From: takotori Date: Mon, 11 Dec 2023 21:45:19 +0100 Subject: [PATCH 2/7] fix save connection settings according to the book of resetlib --- Cargo.toml | 2 +- src/components/wifi/wifi_entry.rs | 2 +- src/components/wifi/wifi_options.rs | 72 +++++++++++++++-------------- 3 files changed, 39 insertions(+), 37 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index fcadde9..e0c8aa4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ description = "A wip universal Linux settings application." [dependencies] reset_daemon = "0.4.6" -re_set-lib = "0.6.6" +re_set-lib = { git = "https://github.com/Xetibo/ReSet-Lib", branch = "main" } adw = { version = "0.5.3", package = "libadwaita", features = ["v1_4"] } dbus = "0.9.7" gtk = { version = "0.7.3", package = "gtk4", features = ["v4_12"] } diff --git a/src/components/wifi/wifi_entry.rs b/src/components/wifi/wifi_entry.rs index c197232..043616f 100644 --- a/src/components/wifi/wifi_entry.rs +++ b/src/components/wifi/wifi_entry.rs @@ -99,7 +99,7 @@ impl WifiEntry { let self_imp = self.imp(); self_imp.reset_wifi_edit_button.borrow().connect_clicked(clone!(@ weak self_imp, @ weak wifi_box => move |_| { let _option = get_connection_settings(self_imp.access_point.borrow().associated_connection.clone()); - wifi_box.reset_wifi_navigation.push(&*WifiOptions::new(_option, self_imp.access_point.borrow().dbus_path.clone())); + wifi_box.reset_wifi_navigation.push(&*WifiOptions::new(_option, self_imp.access_point.borrow().associated_connection.clone())); })); } } diff --git a/src/components/wifi/wifi_options.rs b/src/components/wifi/wifi_options.rs index 80fddd9..4d05d38 100644 --- a/src/components/wifi/wifi_options.rs +++ b/src/components/wifi/wifi_options.rs @@ -12,7 +12,7 @@ use dbus::arg::PropMap; use dbus::{Error, Path}; use glib::{clone, PropertySet}; use gtk::prelude::{ButtonExt, EditableExt, WidgetExt}; -use re_set_lib::network::connection::{Connection, DNSMethod4, DNSMethod6, Enum, TypeSettings}; +use re_set_lib::network::connection::{Connection, DNSMethod4, DNSMethod6, Enum, KeyManagement, TypeSettings}; use IpProtocol::{IPv4, IPv6}; use crate::components::wifi::utils::IpProtocol; @@ -30,11 +30,11 @@ unsafe impl Send for WifiOptions {} unsafe impl Sync for WifiOptions {} impl WifiOptions { - pub fn new(connection: Connection, access_point: Path<'static>) -> Arc { + pub fn new(connection: Connection, connection_path: Path<'static>) -> Arc { let wifi_option: Arc = Arc::new(Object::builder().build()); wifi_option.imp().connection.set(connection); wifi_option.initialize_ui(); - setup_callbacks(&wifi_option, access_point); + setup_callbacks(&wifi_option, connection_path); wifi_option } @@ -59,7 +59,7 @@ impl WifiOptions { .reset_wifi_metered .set_active(conn.settings.metered != -1); match &conn.device { - TypeSettings::WIFI(wifi) => { + TypeSettings::WIFI(wifi, _) => { self_imp.reset_wifi_link_speed.set_visible(false); self_imp.reset_wifi_ip4_addr.set_visible(false); self_imp.reset_wifi_ip6_addr.set_visible(false); @@ -93,27 +93,26 @@ impl WifiOptions { // IPv4 self_imp .reset_ip4_method - .set_selected(conn.ipv4.dns_method.to_i32() as u32); - self.set_ip4_visibility(conn.ipv4.dns_method.to_i32() as u32); + .set_selected(conn.ipv4.method.to_i32() as u32); + self.set_ip4_visibility(conn.ipv4.method.to_i32() as u32); - let ipv4_dns: Vec = conn + let ipv4_dns: Vec = conn .ipv4 .dns .iter() - .map(|addr| { - addr.iter() - .map(|octet| octet.to_string()) - .collect::>() - .join(".") - }) + .map(|addr| Ipv4Addr::from(*addr)) .collect(); - self_imp.reset_ip4_dns.set_text(&ipv4_dns.join(", ")); + + self_imp.reset_ip4_dns.set_text(&ipv4_dns.iter() + .map(|ip| ip.to_string()) + .collect::>() + .join(", ")); self_imp.reset_ip4_gateway.set_text(&conn.ipv4.gateway); // IPv6 self_imp .reset_ip6_method - .set_selected(conn.ipv6.dns_method.to_i32() as u32); - self.set_ip6_visibility(conn.ipv6.dns_method.to_i32() as u32); + .set_selected(conn.ipv6.method.to_i32() as u32); + self.set_ip6_visibility(conn.ipv6.method.to_i32() as u32); let ipv6_dns: Vec = conn .ipv6 @@ -126,23 +125,24 @@ impl WifiOptions { .join(":") }) .collect(); + self_imp.reset_ip6_dns.set_text(&ipv6_dns.join(", ")); self_imp.reset_ip6_gateway.set_text(&conn.ipv6.gateway); // Security - if let TypeSettings::WIFI(wifi) = &conn.device { - match wifi.security_settings.key_management.as_str() { - "none" => { + if let TypeSettings::WIFI(wifi, wifi_security) = &conn.device { + match wifi_security.key_management { + KeyManagement::NONE => { self_imp.reset_wifi_security_dropdown.set_selected(0); self_imp.reset_wifi_password.set_visible(false); self_imp.reset_wifi_password.set_text(""); } - "wpa-psk" => { + KeyManagement::WPAPSK => { self_imp.reset_wifi_security_dropdown.set_selected(1); self_imp.reset_wifi_password.set_visible(true); self_imp .reset_wifi_password - .set_text(&wifi.security_settings.psk); + .set_text(&wifi_security.psk); } _ => {} } @@ -242,6 +242,7 @@ fn setup_callbacks(wifi_options: &Arc, path: Path<'static>) { imp.wifi_options_apply_button .connect_clicked(clone!(@weak imp => move |_| { let prop = imp.connection.borrow().convert_to_propmap(); + dbg!(&prop); set_connection_settings(path.clone(), prop); })); // IPv4 @@ -250,7 +251,7 @@ fn setup_callbacks(wifi_options: &Arc, path: Path<'static>) { .connect_selected_notify(clone!(@weak imp => move |dropdown| { let selected = dropdown.selected(); let mut conn = imp.connection.borrow_mut(); - conn.ipv4.dns_method = DNSMethod4::from_i32(selected as i32); + conn.ipv4.method = DNSMethod4::from_i32(selected as i32); wifi_options_ip4.set_ip4_visibility(selected); })); @@ -266,7 +267,7 @@ fn setup_callbacks(wifi_options: &Arc, path: Path<'static>) { for dns_entry in dns_input.as_str().split(',').map(|s| s.trim()) { if let Ok(addr) = Ipv4Addr::from_str(dns_entry) { imp.reset_ip4_dns.remove_css_class("error"); - conn.ipv4.dns.push(addr.octets().to_vec()); + conn.ipv4.dns.push(u32::from_be_bytes(addr.octets())); } else { imp.reset_ip4_dns.add_css_class("error"); } @@ -274,7 +275,7 @@ fn setup_callbacks(wifi_options: &Arc, path: Path<'static>) { })); imp.reset_ip4_address_add_button .connect_clicked(clone!(@weak imp => move |_| { - let address = &WifiAddressEntry::new(None, imp.connection.clone(), IpProtocol::IPv4); + let address = &WifiAddressEntry::new(None, imp.connection.clone(), IPv4); imp.reset_ip4_address_group.add(address); })); @@ -300,7 +301,7 @@ fn setup_callbacks(wifi_options: &Arc, path: Path<'static>) { .connect_selected_notify(clone!(@weak imp => move |dropdown| { let selected = dropdown.selected(); let mut conn = imp.connection.borrow_mut(); - conn.ipv6.dns_method = DNSMethod6::from_i32(selected as i32); + conn.ipv6.method = DNSMethod6::from_i32(selected as i32); wifi_options_ip6.set_ip6_visibility(selected); })); @@ -324,7 +325,7 @@ fn setup_callbacks(wifi_options: &Arc, path: Path<'static>) { })); imp.reset_ip6_address_add_button .connect_clicked(clone!(@weak imp => move |_| { - let address = &WifiAddressEntry::new(None, imp.connection.clone(), IpProtocol::IPv4); + let address = &WifiAddressEntry::new(None, imp.connection.clone(), IPv4); imp.reset_ip6_address_group.add(address); })); @@ -352,15 +353,15 @@ fn setup_callbacks(wifi_options: &Arc, path: Path<'static>) { let mut conn = imp.connection.borrow_mut(); match (selected, &mut conn.device) { - (0 , TypeSettings::WIFI(wifi)) => { // None + (0 , TypeSettings::WIFI(wifi, wifi_security)) => { // None imp.reset_wifi_password.set_visible(false); - wifi.security_settings.key_management = String::from("none"); - wifi.security_settings.authentication_algorithm = String::from("open"); + wifi_security.key_management = KeyManagement::NONE; + wifi_security.authentication_algorithm = String::from("none"); }, - (1 , TypeSettings::WIFI(wifi)) => { // WPA/WPA2 Personal + (1 , TypeSettings::WIFI(wifi, wifi_security)) => { // WPA/WPA2 Personal imp.reset_wifi_password.set_visible(true); - wifi.security_settings.key_management = String::from("wpa-psk"); - wifi.security_settings.authentication_algorithm = String::from(""); + wifi_security.key_management = KeyManagement::WPAPSK; + wifi_security.authentication_algorithm = String::from("none"); }, (_, _) => {} } @@ -370,8 +371,8 @@ fn setup_callbacks(wifi_options: &Arc, path: Path<'static>) { .connect_changed(clone!(@weak imp => move |entry| { let password_input = entry.text(); let mut conn = imp.connection.borrow_mut(); - if let TypeSettings::WIFI(wifi) = &mut conn.device { - wifi.security_settings.psk = password_input.to_string(); + if let TypeSettings::WIFI(wifi, wifi_security) = &mut conn.device { + wifi_security.psk = password_input.to_string(); } })); } @@ -384,10 +385,11 @@ fn set_connection_settings(path: Path<'static>, prop: HashMap) "/org/Xetibo/ReSetDaemon", Duration::from_millis(1000), ); - let _: Result<(bool,), Error> = proxy.method_call( + let asdf: Result<(bool,), Error> = proxy.method_call( "org.Xetibo.ReSetWireless", "SetConnectionSettings", (path, prop), ); + dbg!(asdf); }); } From 209dc7f0aff25adc7a3e56b28e770cef955676f6 Mon Sep 17 00:00:00 2001 From: takotori Date: Mon, 11 Dec 2023 21:54:36 +0100 Subject: [PATCH 3/7] remove progress bars from audio entries --- .../input/output_stream_entry_impl.rs | 2 - src/components/input/source_box_impl.rs | 3 +- .../output/input_stream_entry_impl.rs | 2 - src/components/output/sink_box_impl.rs | 2 - src/components/output/sink_entry_impl.rs | 2 - src/resources/resetAudioInput.ui | 5 --- src/resources/resetAudioOutput.ui | 5 --- src/resources/resetInputStreamEntry.ui | 5 --- src/resources/resetOutputStreamEntry.ui | 5 --- src/resources/resetSinkEntry.ui | 5 --- src/resources/resetSourceEntry.ui | 5 --- src/resources/resetUI.cmb | 38 ++----------------- 12 files changed, 4 insertions(+), 75 deletions(-) diff --git a/src/components/input/output_stream_entry_impl.rs b/src/components/input/output_stream_entry_impl.rs index 8b63808..037562d 100644 --- a/src/components/input/output_stream_entry_impl.rs +++ b/src/components/input/output_stream_entry_impl.rs @@ -20,8 +20,6 @@ pub struct OutputStreamEntry { pub reset_volume_slider: TemplateChild, #[template_child] pub reset_volume_percentage: TemplateChild - - - 5 - - diff --git a/src/resources/resetAudioOutput.ui b/src/resources/resetAudioOutput.ui index 382a99c..53807c2 100644 --- a/src/resources/resetAudioOutput.ui +++ b/src/resources/resetAudioOutput.ui @@ -97,11 +97,6 @@ - - - 5 - - diff --git a/src/resources/resetInputStreamEntry.ui b/src/resources/resetInputStreamEntry.ui index 07a51af..ca13274 100644 --- a/src/resources/resetInputStreamEntry.ui +++ b/src/resources/resetInputStreamEntry.ui @@ -59,11 +59,6 @@ - - - 5 - - audioRow diff --git a/src/resources/resetOutputStreamEntry.ui b/src/resources/resetOutputStreamEntry.ui index 32b3734..3152406 100644 --- a/src/resources/resetOutputStreamEntry.ui +++ b/src/resources/resetOutputStreamEntry.ui @@ -58,11 +58,6 @@ - - - 5 - - audioRow diff --git a/src/resources/resetSinkEntry.ui b/src/resources/resetSinkEntry.ui index 6735711..1f572bc 100644 --- a/src/resources/resetSinkEntry.ui +++ b/src/resources/resetSinkEntry.ui @@ -60,11 +60,6 @@ - - - 5 - - audioRow diff --git a/src/resources/resetSourceEntry.ui b/src/resources/resetSourceEntry.ui index eeb16c8..ce35bf1 100644 --- a/src/resources/resetSourceEntry.ui +++ b/src/resources/resetSourceEntry.ui @@ -60,11 +60,6 @@ - - - 5 - - audioRow diff --git a/src/resources/resetUI.cmb b/src/resources/resetUI.cmb index 07ab7d9..1466ff8 100644 --- a/src/resources/resetUI.cmb +++ b/src/resources/resetUI.cmb @@ -21,8 +21,7 @@ (20,None,None,"resetCardEntry.ui",None,None,None,None,None,None,None), (21,1,None,"resetWifiOptions.ui",None,None,None,None,None,None,None), (22,1,None,"resetWifiAddressEntry.ui",None,None,None,None,None,None,None), - (23,1,None,"resetWifiRouteEntry.ui",None,None,None,None,None,None,None), - (25,None,None,None,None,None,None,None,None,None,None) + (23,1,None,"resetWifiRouteEntry.ui",None,None,None,None,None,None,None) (21,"gtk","4.12",None), @@ -85,7 +84,6 @@ (7,20,"GtkScale","reset_volume_slider",18,None,None,None,1,None), (7,21,"GtkAdjustment",None,20,None,None,None,None,None), (7,22,"GtkLabel","reset_volume_percentage",18,None,None,None,2,None), - (7,23,"GtkProgressBar","reset_volume_meter",17,None,None,None,1,None), (7,24,"GtkSeparator",None,14,None,None,None,-1,None), (8,1,"GtkBox","resetAudioOutput",None,None,None,None,None,None), (8,53,"GtkLabel",None,1,None,None,None,None,None), @@ -104,7 +102,6 @@ (8,98,"GtkButton","reset_sink_mute",97,None,None,None,None,None), (8,99,"GtkScale","reset_volume_slider",97,None,None,None,1,None), (8,101,"GtkLabel","reset_volume_percentage",97,None,None,None,2,None), - (8,102,"GtkProgressBar","reset_volume_meter",93,None,None,None,1,None), (8,103,"GtkSeparator",None,56,None,None,None,3,None), (8,115,"GtkAdjustment",None,99,None,None,None,-1,None), (8,116,"AdwNavigationPage",None,54,None,None,None,2,None), @@ -156,7 +153,6 @@ (12,24,"GtkButton","reset_source_mute",23,None,None,None,None,None), (12,25,"GtkScale","reset_volume_slider",23,None,None,None,1,None), (12,27,"GtkLabel","reset_volume_percentage",23,None,None,None,2,None), - (12,28,"GtkProgressBar","reset_volume_meter",22,None,None,None,1,None), (12,29,"GtkSeparator",None,15,None,None,None,3,None), (12,30,"GtkBox","reset_output_streams",15,None,None,None,4,None), (12,31,"GtkLabel",None,30,None,None,None,None,None), @@ -190,7 +186,6 @@ (13,38,"GtkScale","reset_volume_slider",36,None,None,None,1,None), (13,39,"GtkAdjustment",None,38,None,None,None,None,None), (13,40,"GtkLabel","reset_volume_percentage",36,None,None,None,2,None), - (13,41,"GtkProgressBar","reset_volume_meter",27,None,None,None,1,None), (13,42,"GtkSeparator",None,22,None,None,None,-1,None), (14,3,"GtkBox","resetSettingBox",None,None,None,None,-1,None), (15,1,"GtkListBoxRow","resetListBoxRow",None,None,None,None,None,None), @@ -211,7 +206,6 @@ (18,20,"GtkScale","reset_volume_slider",18,None,None,None,1,None), (18,21,"GtkAdjustment",None,20,None,None,None,None,None), (18,22,"GtkLabel","reset_volume_percentage",18,None,None,None,2,None), - (18,23,"GtkProgressBar","reset_volume_meter",17,None,None,None,1,None), (18,24,"GtkSeparator",None,13,None,None,None,2,None), (19,13,"AdwPreferencesGroup","resetSourceEntry",None,None,None,None,None,None), (19,14,"AdwActionRow","reset_source_name",13,None,None,None,None,None), @@ -223,7 +217,6 @@ (19,20,"GtkScale","reset_volume_slider",18,None,None,None,1,None), (19,21,"GtkAdjustment",None,20,None,None,None,None,None), (19,22,"GtkLabel","reset_volume_percentage",18,None,None,None,2,None), - (19,23,"GtkProgressBar","reset_volume_meter",17,None,None,None,1,None), (19,24,"GtkSeparator",None,13,None,None,None,2,None), (20,2,"AdwComboRow","reset_card_entry",None,None,None,None,None,None), (21,1,"AdwNavigationPage","resetWifiOptions",None,None,None,None,-1,None), @@ -291,11 +284,7 @@ (23,8,"AdwEntryRow","reset_route_metric",6,None,None,None,1,None), (23,9,"GtkBox",None,2,None,None,None,None,None), (23,10,"AdwEntryRow","reset_route_address",9,None,None,None,None,None), - (23,11,"AdwEntryRow","reset_route_prefix",9,None,None,None,1,None), - (25,1,"GtkBox",None,None,None,None,None,None,None), - (25,2,"GtkLabel","reset_saved_wifi_label",1,None,None,None,None,None), - (25,3,"GtkButton","reset_edit_saved_wifi_button",1,None,None,None,1,None), - (25,4,"GtkButton","reset_delete_saved_wifi_button",1,None,None,None,2,None) + (23,11,"AdwEntryRow","reset_route_prefix",9,None,None,None,1,None) (3,1,"GtkWidget","height-request","200",None,None,None,None,None,None,None,None,None), @@ -416,7 +405,6 @@ (7,22,"GtkLabel","label","100%",None,None,None,None,None,None,None,None,None), (7,22,"GtkLabel","lines","1",None,None,None,None,None,None,None,None,None), (7,22,"GtkWidget","width-request","40",None,None,None,None,None,None,None,None,None), - (7,23,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None), (7,24,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None), (8,1,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), (8,1,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None), @@ -457,7 +445,6 @@ (8,101,"GtkLabel","label","100%",None,None,None,None,None,None,None,None,None), (8,101,"GtkLabel","lines","1",None,None,None,None,None,None,None,None,None), (8,101,"GtkWidget","width-request","40",None,None,None,None,None,None,None,None,None), - (8,102,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None), (8,115,"GtkAdjustment","page-increment","2005.4016",None,None,None,None,None,None,None,None,None), (8,115,"GtkAdjustment","step-increment","2005.4016",None,None,None,None,None,None,None,None,None), (8,115,"GtkAdjustment","upper","100270.08",None,None,None,None,None,None,None,None,None), @@ -591,7 +578,6 @@ (12,27,"GtkLabel","label","100%",None,None,None,None,None,None,None,None,None), (12,27,"GtkLabel","lines","1",None,None,None,None,None,None,None,None,None), (12,27,"GtkWidget","width-request","40",None,None,None,None,None,None,None,None,None), - (12,28,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None), (12,30,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), (12,30,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None), (12,31,"GtkLabel","label","Input Streams",None,None,None,None,None,None,None,None,None), @@ -649,7 +635,6 @@ (13,40,"GtkLabel","label","100%",None,None,None,None,None,None,None,None,None), (13,40,"GtkLabel","lines","1",None,None,None,None,None,None,None,None,None), (13,40,"GtkWidget","width-request","40",None,None,None,None,None,None,None,None,None), - (13,41,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None), (13,42,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None), (14,3,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), (14,3,"GtkWidget","css-classes","settings-box",None,None,None,None,None,None,None,None,None), @@ -696,7 +681,6 @@ (18,22,"GtkLabel","label","100%",None,None,None,None,None,None,None,None,None), (18,22,"GtkLabel","lines","1",None,None,None,None,None,None,None,None,None), (18,22,"GtkWidget","width-request","40",None,None,None,None,None,None,None,None,None), - (18,23,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None), (18,24,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None), (18,24,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None), (19,14,"AdwActionRow","title-lines","3",None,None,None,None,None,None,None,None,None), @@ -723,7 +707,6 @@ (19,22,"GtkLabel","label","100%",None,None,None,None,None,None,None,None,None), (19,22,"GtkLabel","lines","1",None,None,None,None,None,None,None,None,None), (19,22,"GtkWidget","width-request","40",None,None,None,None,None,None,None,None,None), - (19,23,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None), (19,24,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None), (19,24,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None), (20,2,"AdwComboRow","use-subtitle","True",None,None,None,None,None,None,None,None,None), @@ -821,22 +804,7 @@ (23,10,"AdwPreferencesRow","title","Address",None,None,None,None,None,None,None,None,None), (23,10,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), (23,11,"AdwPreferencesRow","title","Prefix",None,None,None,None,None,None,None,None,None), - (23,11,"GtkEditable","max-width-chars","5",None,None,None,None,None,None,None,None,None), - (25,2,"GtkLabel","ellipsize","end",None,None,None,None,None,None,None,None,None), - (25,2,"GtkLabel","label","LoremIpsumInternet",None,None,None,None,None,None,None,None,None), - (25,2,"GtkLabel","single-line-mode","True",None,None,None,None,None,None,None,None,None), - (25,2,"GtkLabel","xalign","0.0",None,None,None,None,None,None,None,None,None), - (25,2,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), - (25,2,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None), - (25,2,"GtkWidget","width-request","200",None,None,None,None,None,None,None,None,None), - (25,3,"GtkButton","has-frame","False",None,None,None,None,None,None,None,None,None), - (25,3,"GtkButton","icon-name","document-edit-symbolic",None,None,None,None,None,None,None,None,None), - (25,3,"GtkWidget","halign","end",None,None,None,None,None,None,None,None,None), - (25,3,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), - (25,4,"GtkButton","has-frame","False",None,None,None,None,None,None,None,None,None), - (25,4,"GtkButton","icon-name","user-trash-symbolic",None,None,None,None,None,None,None,None,None), - (25,4,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None), - (25,4,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None) + (23,11,"GtkEditable","max-width-chars","5",None,None,None,None,None,None,None,None,None) (3,42,"GtkWidget",1,1,None,None,None,None,None,None), From 08700b824feb7c97317a0c50954a62139229cc92 Mon Sep 17 00:00:00 2001 From: dashie Date: Mon, 11 Dec 2023 21:56:36 +0000 Subject: [PATCH 4/7] fix: Get initial mute status for default sink and source --- src/components/input/source_box.rs | 10 ++++++++++ src/components/output/sink_box.rs | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/components/input/source_box.rs b/src/components/input/source_box.rs index 0260ae8..6cbfd09 100644 --- a/src/components/input/source_box.rs +++ b/src/components/input/source_box.rs @@ -120,6 +120,16 @@ pub fn populate_sources(input_box: Arc) { let default_sink = input_box_imp.reset_default_source.clone(); let source = default_sink.borrow(); + if source.muted { + input_box_imp + .reset_source_mute + .set_icon_name("microphone-disabled-symbolic"); + } else { + input_box_imp + .reset_source_mute + .set_icon_name("audio-input-microphone-symbolic"); + } + let volume = source.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/sink_box.rs b/src/components/output/sink_box.rs index ae5b815..1729295 100644 --- a/src/components/output/sink_box.rs +++ b/src/components/output/sink_box.rs @@ -119,6 +119,16 @@ pub fn populate_sinks(output_box: Arc) { let default_sink = output_box_imp.reset_default_sink.clone(); let sink = default_sink.borrow(); + if sink.muted { + output_box_imp + .reset_sink_mute + .set_icon_name("audio-volume-muted-symbolic"); + } else { + output_box_imp + .reset_sink_mute + .set_icon_name("audio-volume-high-symbolic"); + } + let volume = sink.volume.first().unwrap_or(&0); let fraction = (*volume as f64 / 655.36).round(); let percentage = (fraction).to_string() + "%"; From 445c4d06fedcc960e89da2242e33f2ca0b038145 Mon Sep 17 00:00:00 2001 From: takotori Date: Mon, 11 Dec 2023 22:00:52 +0100 Subject: [PATCH 5/7] make edit button from saved wifi entry working again --- src/components/wifi/saved_wifi_entry.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/wifi/saved_wifi_entry.rs b/src/components/wifi/saved_wifi_entry.rs index 00db4fa..2126057 100644 --- a/src/components/wifi/saved_wifi_entry.rs +++ b/src/components/wifi/saved_wifi_entry.rs @@ -11,6 +11,8 @@ use glib::subclass::types::ObjectSubclassIsExt; use glib::{clone, PropertySet}; use gtk::{Align, Button, gio, Orientation}; use gtk::prelude::{BoxExt, ListBoxRowExt}; +use crate::components::wifi::utils::get_connection_settings; +use crate::components::wifi::wifi_options::WifiOptions; glib::wrapper! { pub struct SavedWifiEntry(ObjectSubclass) @@ -43,9 +45,8 @@ impl SavedWifiEntry { edit_button.connect_clicked( clone!(@ weak entry_imp, @ weak wifi_box => move |_| { - // TODO accesspoint has to be saved somewhere i guess - // let _option = getConnectionSettings(entryImp.accessPoint.borrow().associated_connection.clone()); - // wifiBox.resetWifiNavigation.push(&*WifiOptions::new(_option)); + let _option = get_connection_settings(entry_imp.reset_connection_path.borrow().clone()); + wifi_box.reset_wifi_navigation.push(&*WifiOptions::new(_option, entry_imp.reset_connection_path.borrow().clone())); }), ); From b9ed39f85b5e02020d35610eb826773e3c024953 Mon Sep 17 00:00:00 2001 From: dashie Date: Mon, 11 Dec 2023 22:01:20 +0000 Subject: [PATCH 6/7] chore: Fix warning --- src/components/input/output_stream_entry_impl.rs | 2 +- src/components/input/source_box_impl.rs | 2 +- src/components/output/input_stream_entry_impl.rs | 2 +- src/components/output/sink_box_impl.rs | 2 +- src/components/output/sink_entry_impl.rs | 2 +- src/components/wifi/wifi_options.rs | 11 +++++------ 6 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/components/input/output_stream_entry_impl.rs b/src/components/input/output_stream_entry_impl.rs index 037562d..15687b2 100644 --- a/src/components/input/output_stream_entry_impl.rs +++ b/src/components/input/output_stream_entry_impl.rs @@ -7,7 +7,7 @@ use std::time::SystemTime; use crate::components::input::output_stream_entry; use gtk::subclass::prelude::*; -use gtk::{glib, Button, CompositeTemplate, Label, ProgressBar, Scale}; +use gtk::{glib, Button, CompositeTemplate, Label, Scale}; #[derive(Default, CompositeTemplate)] #[template(resource = "/org/Xetibo/ReSet/resetOutputStreamEntry.ui")] diff --git a/src/components/input/source_box_impl.rs b/src/components/input/source_box_impl.rs index 61bb3fa..b087434 100644 --- a/src/components/input/source_box_impl.rs +++ b/src/components/input/source_box_impl.rs @@ -9,7 +9,7 @@ use crate::components::base::list_entry::ListEntry; use crate::components::input::source_box; use gtk::subclass::prelude::*; use gtk::{glib, CheckButton, CompositeTemplate, StringList, TemplateChild}; -use gtk::{prelude::*, Button, Label, ProgressBar, Scale}; +use gtk::{prelude::*, Button, Label, Scale}; use super::output_stream_entry::OutputStreamEntry; use super::source_entry::SourceEntry; diff --git a/src/components/output/input_stream_entry_impl.rs b/src/components/output/input_stream_entry_impl.rs index e48cad4..acdf98f 100644 --- a/src/components/output/input_stream_entry_impl.rs +++ b/src/components/output/input_stream_entry_impl.rs @@ -6,7 +6,7 @@ use std::sync::Arc; use std::time::SystemTime; use gtk::subclass::prelude::*; -use gtk::{glib, Button, CompositeTemplate, Label, ProgressBar, Scale}; +use gtk::{glib, Button, CompositeTemplate, Label, Scale}; use super::input_stream_entry; diff --git a/src/components/output/sink_box_impl.rs b/src/components/output/sink_box_impl.rs index 464f96d..64d0fa9 100644 --- a/src/components/output/sink_box_impl.rs +++ b/src/components/output/sink_box_impl.rs @@ -9,7 +9,7 @@ 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::*, ProgressBar, Scale}; +use gtk::{prelude::*, Scale}; use super::sink_box; use super::sink_entry::SinkEntry; diff --git a/src/components/output/sink_entry_impl.rs b/src/components/output/sink_entry_impl.rs index fc29adb..f51bc7d 100644 --- a/src/components/output/sink_entry_impl.rs +++ b/src/components/output/sink_entry_impl.rs @@ -7,7 +7,7 @@ use std::time::SystemTime; use crate::components::output::sink_entry; use gtk::subclass::prelude::*; -use gtk::{glib, Button, CheckButton, CompositeTemplate, Label, ProgressBar, Scale}; +use gtk::{glib, Button, CheckButton, CompositeTemplate, Label, Scale}; #[derive(Default, CompositeTemplate)] #[template(resource = "/org/Xetibo/ReSet/resetSinkEntry.ui")] diff --git a/src/components/wifi/wifi_options.rs b/src/components/wifi/wifi_options.rs index 4d05d38..0da08f8 100644 --- a/src/components/wifi/wifi_options.rs +++ b/src/components/wifi/wifi_options.rs @@ -130,7 +130,7 @@ impl WifiOptions { self_imp.reset_ip6_gateway.set_text(&conn.ipv6.gateway); // Security - if let TypeSettings::WIFI(wifi, wifi_security) = &conn.device { + if let TypeSettings::WIFI(_, wifi_security) = &conn.device { match wifi_security.key_management { KeyManagement::NONE => { self_imp.reset_wifi_security_dropdown.set_selected(0); @@ -353,12 +353,12 @@ fn setup_callbacks(wifi_options: &Arc, path: Path<'static>) { let mut conn = imp.connection.borrow_mut(); match (selected, &mut conn.device) { - (0 , TypeSettings::WIFI(wifi, wifi_security)) => { // None + (0 , TypeSettings::WIFI(_, wifi_security)) => { // None imp.reset_wifi_password.set_visible(false); wifi_security.key_management = KeyManagement::NONE; wifi_security.authentication_algorithm = String::from("none"); }, - (1 , TypeSettings::WIFI(wifi, wifi_security)) => { // WPA/WPA2 Personal + (1 , TypeSettings::WIFI(_, wifi_security)) => { // WPA/WPA2 Personal imp.reset_wifi_password.set_visible(true); wifi_security.key_management = KeyManagement::WPAPSK; wifi_security.authentication_algorithm = String::from("none"); @@ -371,7 +371,7 @@ fn setup_callbacks(wifi_options: &Arc, path: Path<'static>) { .connect_changed(clone!(@weak imp => move |entry| { let password_input = entry.text(); let mut conn = imp.connection.borrow_mut(); - if let TypeSettings::WIFI(wifi, wifi_security) = &mut conn.device { + if let TypeSettings::WIFI(_, wifi_security) = &mut conn.device { wifi_security.psk = password_input.to_string(); } })); @@ -385,11 +385,10 @@ fn set_connection_settings(path: Path<'static>, prop: HashMap) "/org/Xetibo/ReSetDaemon", Duration::from_millis(1000), ); - let asdf: Result<(bool,), Error> = proxy.method_call( + let _: Result<(bool,), Error> = proxy.method_call( "org.Xetibo.ReSetWireless", "SetConnectionSettings", (path, prop), ); - dbg!(asdf); }); } From aba894f3a8d159cbd9add136a5c45533d471a5c8 Mon Sep 17 00:00:00 2001 From: takotori Date: Mon, 11 Dec 2023 22:16:16 +0100 Subject: [PATCH 7/7] fix remove saved wifi entry --- src/components/wifi/saved_wifi_entry.rs | 21 ++++++++++----------- src/components/wifi/wifi_box.rs | 2 +- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/components/wifi/saved_wifi_entry.rs b/src/components/wifi/saved_wifi_entry.rs index 2126057..1b398c3 100644 --- a/src/components/wifi/saved_wifi_entry.rs +++ b/src/components/wifi/saved_wifi_entry.rs @@ -1,10 +1,11 @@ +use std::rc::Rc; use std::time::Duration; use crate::components::wifi::saved_wifi_entry_impl; use crate::components::wifi::wifi_box_impl::WifiBox; use adw::glib; use adw::glib::Object; -use adw::prelude::{ActionRowExt, ButtonExt, PreferencesRowExt, WidgetExt}; +use adw::prelude::{ActionRowExt, ButtonExt, PreferencesRowExt, PreferencesGroupExt}; use dbus::blocking::Connection; use dbus::{Error, Path}; use glib::subclass::types::ObjectSubclassIsExt; @@ -21,8 +22,8 @@ glib::wrapper! { } impl SavedWifiEntry { - pub fn new(name: &str, path: Path<'static>, wifi_box: &WifiBox) -> Self { - let entry: SavedWifiEntry = Object::builder().build(); + pub fn new(name: &str, path: Path<'static>, wifi_box: &WifiBox) -> Rc { + let entry: Rc = Rc::new(Object::builder().build()); entry.set_activatable(false); let entry_imp = entry.imp(); @@ -50,15 +51,13 @@ impl SavedWifiEntry { }), ); - delete_button.connect_clicked( - clone!(@weak entry as entry => move |_| { - delete_connection(entry.imp().reset_connection_path.take()); + let entry_ref = entry.clone(); + delete_button.connect_clicked(clone!(@weak wifi_box => move |_| { + delete_connection(entry_ref.imp().reset_connection_path.take()); // TODO handle error - let parent = entry.parent().unwrap(); - parent.set_visible(false); - parent.unparent(); - }), - ); + wifi_box.reset_stored_wifi_list.remove(&*entry_ref); + + })); entry } } diff --git a/src/components/wifi/wifi_box.rs b/src/components/wifi/wifi_box.rs index 6c6213b..50caac7 100644 --- a/src/components/wifi/wifi_box.rs +++ b/src/components/wifi/wifi_box.rs @@ -178,7 +178,7 @@ pub fn show_stored_connections(wifi_box: Arc) { let name = &String::from_utf8(connection.1).unwrap_or_else(|_| String::from("")); let entry = SavedWifiEntry::new(name, connection.0, self_imp); - self_imp.reset_stored_wifi_list.add(&entry); + self_imp.reset_stored_wifi_list.add(&*entry); } }); });