diff --git a/Cargo.toml b/Cargo.toml index 2219fdc..c42f10d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,8 +5,8 @@ edition = "2021" description = "A wip universal Linux settings application." [dependencies] -reset_daemon = "0.3.3" -ReSet-Lib = "0.5.5" +reset_daemon = "0.3.7" +ReSet-Lib = "0.6.1" 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/bluetooth/bluetoothBox.rs b/src/components/bluetooth/bluetoothBox.rs index 17a483e..94374f3 100644 --- a/src/components/bluetooth/bluetoothBox.rs +++ b/src/components/bluetooth/bluetoothBox.rs @@ -5,14 +5,16 @@ use std::time::{Duration, SystemTime}; use adw::glib; use adw::glib::Object; +use adw::prelude::{ComboRowExt, ListModelExtManual}; use adw::subclass::prelude::ObjectSubclassIsExt; use dbus::blocking::Connection; use dbus::message::SignalArgs; use dbus::{Error, Path}; -use gtk::gio; +use glib::{clone, Cast}; use gtk::glib::Variant; -use gtk::prelude::{ActionableExt, ListBoxRowExt, WidgetExt}; -use ReSet_Lib::bluetooth::bluetooth::BluetoothDevice; +use gtk::prelude::{ActionableExt, BoxExt, ListBoxRowExt, WidgetExt}; +use gtk::{gio, StringObject, Widget}; +use ReSet_Lib::bluetooth::bluetooth::{BluetoothAdapter, BluetoothDevice}; use ReSet_Lib::signals::{BluetoothDeviceAdded, BluetoothDeviceChanged, BluetoothDeviceRemoved}; use crate::components::base::listEntry::ListEntry; @@ -30,40 +32,102 @@ unsafe impl Send for BluetoothBox {} unsafe impl Sync for BluetoothBox {} impl BluetoothBox { - pub fn new() -> Self { - Object::builder().build() + pub fn new(listeners: Arc) -> Arc { + let obj: Arc = Arc::new(Object::builder().build()); + setupCallbacks(listeners, obj) } - pub fn setupCallbacks(&self) { - let selfImp = self.imp(); - selfImp.resetVisibility.set_activatable(true); - selfImp - .resetVisibility - .set_action_name(Some("navigation.push")); - selfImp - .resetVisibility - .set_action_target_value(Some(&Variant::from("visibility"))); - - selfImp - .resetBluetoothMainTab - .set_action_name(Some("navigation.pop")); - } + pub fn setupCallbacks(&self) {} } -impl Default for BluetoothBox { - fn default() -> Self { - Self::new() - } +fn setupCallbacks( + listeners: Arc, + bluetooth_box: Arc, +) -> Arc { + let bluetooth_box_ref = bluetooth_box.clone(); + let imp = bluetooth_box.imp(); + // let bluetooth_box_ref = bluetooth_box.clone(); + imp.resetVisibility.set_activatable(true); + imp.resetVisibility.set_action_name(Some("navigation.push")); + imp.resetVisibility + .set_action_target_value(Some(&Variant::from("visibility"))); + + imp.resetBluetoothMainTab + .set_action_name(Some("navigation.pop")); + // TODO add a manual search button here + imp.resetBluetoothSwitch.connect_state_set(move |_, state| { + if !state { + let imp = bluetooth_box_ref.imp(); + for x in imp.resetBluetoothConnectedDevices.observe_children().iter::() { + if let Ok(entry) = x { // todo test this + if let Some(item) = entry.downcast_ref::() { + imp.resetBluetoothAvailableDevices.remove(item); + } + } + }; + listeners.bluetooth_listener.store(false, Ordering::SeqCst); + set_adapter_enabled( + imp.resetCurrentBluetoothAdapter.borrow().path.clone(), + false, + ); + } else { + let imp = bluetooth_box_ref.imp(); + set_adapter_enabled(imp.resetCurrentBluetoothAdapter.borrow().path.clone(), true); + start_bluetooth_listener(listeners.clone(), bluetooth_box_ref.clone()); + } + glib::Propagation::Proceed + }); + bluetooth_box } pub fn populate_conntected_bluetooth_devices(bluetooth_box: Arc) { gio::spawn_blocking(move || { let ref_box = bluetooth_box.clone(); let devices = get_connected_devices(); - + let adapters = get_bluetooth_adapters(); + { + let imp = bluetooth_box.imp(); + let list = imp.resetModelList.write().unwrap(); + let mut model_index = imp.resetModelIndex.write().unwrap(); + let mut map = imp.resetBluetoothAdapters.write().unwrap(); + imp.resetCurrentBluetoothAdapter + .replace(adapters.last().unwrap().clone()); + for (index, adapter) in adapters.into_iter().enumerate() { + list.append(&adapter.alias); + map.insert(adapter.alias.clone(), (adapter, index as u32)); + *model_index += 1; + } + } glib::spawn_future(async move { glib::idle_add_once(move || { let imp = ref_box.imp(); + + let list = imp.resetModelList.read().unwrap(); + imp.resetBluetoothAdapter.set_model(Some(&*list)); + let map = imp.resetBluetoothAdapters.read().unwrap(); + let device = imp.resetCurrentBluetoothAdapter.borrow(); + if let Some(index) = map.get(&device.alias) { + imp.resetBluetoothAdapter.set_selected(index.1); + } + imp.resetBluetoothAdapter.connect_selected_notify( + clone!(@weak imp => move |dropdown| { + let selected = dropdown.selected_item(); + if selected.is_none() { + return; + } + let selected = selected.unwrap(); + let selected = selected.downcast_ref::().unwrap(); + let selected = selected.string().to_string(); + + let device = imp.resetBluetoothAdapters.read().unwrap(); + let device = device.get(&selected); + if device.is_none() { + return; + } + set_bluetooth_adapter(device.unwrap().0.path.clone()); + }), + ); + for device in devices { let path = device.path.clone(); let connected = device.connected; @@ -159,7 +223,6 @@ pub fn start_bluetooth_listener(listeners: Arc, bluetooth_box: Arc, bluetooth_box: Arc() { + if let Ok(entry) = x { // todo test this + if let Some(item) = entry.downcast_ref::() { + imp.resetBluetoothAvailableDevices.remove(item); + } + } + }; }); }); println!("stopping bluetooth listener"); @@ -244,3 +313,43 @@ fn get_connected_devices() -> Vec { } res.unwrap().0 } + +fn get_bluetooth_adapters() -> Vec { + let conn = Connection::new_session().unwrap(); + let proxy = conn.with_proxy( + "org.Xetibo.ReSetDaemon", + "/org/Xetibo/ReSetDaemon", + Duration::from_millis(1000), + ); + let res: Result<(Vec,), Error> = + proxy.method_call("org.Xetibo.ReSetBluetooth", "GetBluetoothAdapters", ()); + if res.is_err() { + return Vec::new(); + } + res.unwrap().0 +} + +fn set_bluetooth_adapter(path: Path<'static>) { + let conn = Connection::new_session().unwrap(); + let proxy = conn.with_proxy( + "org.Xetibo.ReSetDaemon", + "/org/Xetibo/ReSetDaemon", + Duration::from_millis(1000), + ); + let _: Result<(Vec,), Error> = + proxy.method_call("org.Xetibo.ReSetBluetooth", "SetBluetoothAdapter", (path,)); +} + +fn set_adapter_enabled(path: Path<'static>, enabled: bool) { + let conn = Connection::new_session().unwrap(); + let proxy = conn.with_proxy( + "org.Xetibo.ReSetDaemon", + "/org/Xetibo/ReSetDaemon", + Duration::from_millis(1000), + ); + let _: Result<(Vec,), Error> = proxy.method_call( + "org.Xetibo.ReSetBluetooth", + "SetBluetoothAdapterEnabled", + (path, enabled), + ); +} diff --git a/src/components/bluetooth/bluetoothBoxImpl.rs b/src/components/bluetooth/bluetoothBoxImpl.rs index 287cad1..878f23a 100644 --- a/src/components/bluetooth/bluetoothBoxImpl.rs +++ b/src/components/bluetooth/bluetoothBoxImpl.rs @@ -1,12 +1,12 @@ -use adw::ActionRow; +use adw::{ActionRow, ComboRow}; use dbus::Path; -use gtk::prelude::*; use gtk::subclass::prelude::*; -use gtk::{glib, CompositeTemplate, ListBox, Switch}; +use gtk::{glib, CompositeTemplate, ListBox, Switch, Button}; +use gtk::{prelude::*, StringList}; use std::cell::RefCell; use std::collections::HashMap; -use std::sync::Arc; -use ReSet_Lib::bluetooth::bluetooth::BluetoothDevice; +use std::sync::{Arc, RwLock}; +use ReSet_Lib::bluetooth::bluetooth::{BluetoothAdapter, BluetoothDevice}; use crate::components::base::listEntry::ListEntry; use crate::components::bluetooth::bluetoothBox; @@ -22,15 +22,23 @@ pub struct BluetoothBox { #[template_child] pub resetBluetoothSwitch: TemplateChild, #[template_child] - pub resetBluetoothAvailableDevices: TemplateChild, + pub resetBluetoothAvailableDevices: TemplateChild, #[template_child] - pub resetBluetoothConnectedDevices: TemplateChild, + pub resetBluetoothRefreshButton: TemplateChild (3,1,"GtkWidget","height-request","200",None,None,None,None,None,None,None,None,None), @@ -380,14 +390,6 @@ (4,153,"AdwNavigationPage","tag","main",None,None,None,None,None,None,None,None,None), (4,153,"AdwNavigationPage","title","main",None,None,None,None,None,None,None,None,None), (4,154,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), - (4,164,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), - (4,164,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None), - (4,165,"GtkLabel","justify","right",None,None,None,None,None,None,None,None,None), - (4,165,"GtkLabel","label","Available networks",None,None,None,None,None,None,None,None,None), - (4,165,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None), - (4,165,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None), - (4,166,"GtkScrolledWindow","min-content-height","100",None,None,None,None,None,None,None,None,None), - (4,166,"GtkScrolledWindow","propagate-natural-height","True",None,None,None,None,None,None,None,None,None), (4,174,"AdwNavigationPage","tag","saved",None,None,None,None,None,None,None,None,None), (4,174,"AdwNavigationPage","title","saved",None,None,None,None,None,None,None,None,None), (4,175,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), @@ -412,6 +414,8 @@ (4,207,"GtkWidget","halign","end",None,None,None,None,None,None,None,None,None), (4,207,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), (4,207,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None), + (4,208,"AdwPreferencesGroup","title","Available networks",None,None,None,None,None,None,None,None,None), + (4,208,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None), (5,12,"GtkListBoxRow","child",None,None,None,None,None,13,None,None,None,None), (5,13,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None), (5,14,"GtkWidget","width-request","35",None,None,None,None,None,None,None,None,None), @@ -428,12 +432,17 @@ (5,18,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), (5,18,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None), (5,18,"GtkWidget","width-request","200",None,None,None,None,None,None,None,None,None), - (5,19,"GtkWidget","halign","end",None,None,None,None,None,None,None,None,None), - (5,19,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None), (5,20,"GtkButton","has-frame","False",None,None,None,None,None,None,None,None,None), (5,20,"GtkButton","icon-name","document-edit-symbolic",None,None,None,None,None,None,None,None,None), (5,20,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None), (5,20,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None), + (5,22,"GtkLabel","justify","right",None,None,None,None,None,None,None,None,None), + (5,22,"GtkLabel","label","Connected",None,None,None,None,None,None,None,None,None), + (5,22,"GtkLabel","single-line-mode","True",None,None,None,None,None,None,None,None,None), + (5,22,"GtkLabel","xalign","0.0",None,None,None,None,None,None,None,None,None), + (5,22,"GtkWidget","halign","end",None,None,None,None,None,None,None,None,None), + (5,22,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), + (5,22,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None), (6,1,"GtkListBoxRow","child",None,None,None,None,None,2,None,None,None,None), (6,1,"GtkWidget","css-classes","resetSidebarEntry",None,None,None,None,None,None,None,None,None), (6,2,"GtkWidget","margin-bottom","10",None,None,None,None,None,None,None,None,None), @@ -532,34 +541,6 @@ (10,120,"AdwNavigationPage","tag","main",None,None,None,None,None,None,None,None,None), (10,120,"AdwNavigationPage","title","main",None,None,None,None,None,None,None,None,None), (10,121,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), - (10,127,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), - (10,127,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None), - (10,128,"GtkLabel","justify","right",None,None,None,None,None,None,None,None,None), - (10,128,"GtkLabel","label","Available devices",None,None,None,None,None,None,None,None,None), - (10,128,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None), - (10,128,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None), - (10,129,"GtkScrolledWindow","min-content-height","100",None,None,None,None,None,None,None,None,None), - (10,129,"GtkScrolledWindow","propagate-natural-height","True",None,None,None,None,None,None,None,None,None), - (10,131,"GtkListBox","show-separators","True",None,None,None,None,None,None,None,None,None), - (10,131,"GtkWidget","css-classes","boxed-list\n",None,None,None,None,None,None,None,None,None), - (10,131,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None), - (10,131,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None), - (10,131,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None), - (10,131,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None), - (10,132,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), - (10,132,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None), - (10,133,"GtkLabel","justify","right",None,None,None,None,None,None,None,None,None), - (10,133,"GtkLabel","label","Connected devices",None,None,None,None,None,None,None,None,None), - (10,133,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None), - (10,133,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None), - (10,134,"GtkScrolledWindow","min-content-height","100",None,None,None,None,None,None,None,None,None), - (10,134,"GtkScrolledWindow","propagate-natural-height","True",None,None,None,None,None,None,None,None,None), - (10,136,"GtkListBox","show-separators","True",None,None,None,None,None,None,None,None,None), - (10,136,"GtkWidget","css-classes","boxed-list\n",None,None,None,None,None,None,None,None,None), - (10,136,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None), - (10,136,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None), - (10,136,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None), - (10,136,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None), (10,138,"AdwNavigationPage","tag","visibility",None,None,None,None,None,None,None,None,None), (10,138,"AdwNavigationPage","title","visibility",None,None,None,None,None,None,None,None,None), (10,142,"GtkWidget","height-request","40",None,None,None,None,None,None,None,None,None), @@ -589,17 +570,28 @@ (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 Device",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,176,"AdwPreferencesGroup","header-suffix",None,None,None,None,None,177,None,None,None,None), + (10,176,"AdwPreferencesGroup","title","Available Devices",None,None,None,None,None,None,None,None,None), + (10,176,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None), + (10,177,"GtkButton","icon-name","view-refresh-symbolic",None,None,None,None,None,None,None,None,None), + (10,178,"GtkScrolledWindow","min-content-height","100",None,None,None,None,None,None,None,None,None), + (10,178,"GtkScrolledWindow","propagate-natural-height","True",None,None,None,None,None,None,None,None,None), + (10,180,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), + (10,181,"AdwPreferencesGroup","title","Connected Devices",None,None,None,None,None,None,None,None,None), + (10,183,"GtkScrolledWindow","min-content-height","100",None,None,None,None,None,None,None,None,None), + (10,183,"GtkScrolledWindow","propagate-natural-height","True",None,None,None,None,None,None,None,None,None), + (10,185,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), (11,2,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None), (11,3,"GtkImage","icon-name","input-mouse-symbolic",None,None,None,None,None,None,None,None,None), (11,3,"GtkWidget","margin-end","15",None,None,None,None,None,None,None,None,None), (11,5,"GtkButton","has-frame","False",None,None,None,None,None,None,None,None,None), - (11,5,"GtkButton","icon-name","user-trash-symbolic",None,None,None,None,None,None,None,None,None), + (11,5,"GtkButton","icon-name","emblem-system-symbolic",None,None,None,None,None,None,None,None,None), (11,6,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), (11,7,"GtkLabel","ellipsize","end",None,None,None,None,None,None,None,None,None), (11,7,"GtkLabel","label","LoremIpsum Wireless Mouse",None,None,None,None,None,None,None,None,None), @@ -801,6 +793,7 @@ (21,53,"GtkNotebook","scrollable","True",None,None,None,None,None,None,None,None,None), (21,53,"GtkNotebook","show-border","False",None,None,None,None,None,None,None,None,None), (21,54,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), + (21,54,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None), (21,56,"AdwPreferencesRow","title","WiFi Name",None,None,None,None,None,None,None,None,None), (21,56,"GtkWidget","css-classes","property",None,None,None,None,None,None,None,None,None), (21,57,"AdwPreferencesRow","title","MAC-Address",None,None,None,None,None,None,None,None,None), @@ -821,6 +814,7 @@ (21,65,"AdwPreferencesRow","title","Metered Connection",None,None,None,None,None,None,None,None,None), (21,66,"GtkLabel","label","General",None,None,None,None,None,None,None,None,None), (21,67,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), + (21,67,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None), (21,69,"AdwComboRow","model",None,None,None,None,None,70,None,None,None,None), (21,69,"AdwPreferencesRow","title","IPv4 Method",None,None,None,None,None,None,None,None,None), (21,71,"AdwPreferencesRow","title","DNS (separate IP by comma, empty for automatic)",None,None,None,None,None,None,None,None,None), @@ -836,10 +830,12 @@ (21,77,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None), (21,78,"GtkLabel","label","IPv4",None,None,None,None,None,None,None,None,None), (21,79,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), + (21,79,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None), (21,81,"AdwComboRow","model",None,None,None,None,None,82,None,None,None,None), (21,81,"AdwPreferencesRow","title","IPv6 Method",None,None,None,None,None,None,None,None,None), (21,83,"AdwPreferencesRow","title","DNS (separate IP by comma, empty for automatic)",None,None,None,None,None,None,None,None,None), (21,84,"AdwPreferencesRow","title","Gateway",None,None,None,None,None,None,None,None,None), + (21,85,"AdwPreferencesGroup","header-suffix",None,None,None,None,None,101,None,None,None,None), (21,85,"AdwPreferencesGroup","title","Addresses",None,None,None,None,None,None,None,None,None), (21,85,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None), (21,86,"AdwPreferencesGroup","header-suffix",None,None,None,None,None,87,None,None,None,None), @@ -850,35 +846,55 @@ (21,89,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None), (21,90,"GtkLabel","label","IPv6",None,None,None,None,None,None,None,None,None), (21,91,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), - (21,93,"AdwComboRow","model",None,None,None,None,None,94,None,None,None,None), + (21,91,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None), + (21,93,"AdwComboRow","model",None,None,None,None,None,103,None,None,None,None), (21,93,"AdwPreferencesRow","title","Security",None,None,None,None,None,None,None,None,None), - (21,95,"AdwPreferencesRow","title","Username",None,None,None,None,None,None,None,None,None), (21,96,"AdwPreferencesRow","title","Password",None,None,None,None,None,None,None,None,None), (21,97,"GtkLabel","label","Security",None,None,None,None,None,None,None,None,None), (21,98,"GtkButton","label","Apply",None,None,None,None,None,None,None,None,None), (21,98,"GtkWidget","halign","end",None,None,None,None,None,None,None,None,None), (21,98,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None), (21,99,"GtkButton","icon-name","list-add-symbolic",None,None,None,None,None,None,None,None,None), + (21,100,"GtkButton","icon-name","list-add-symbolic",None,None,None,None,None,None,None,None,None), + (21,100,"GtkWidget","margin-start","10",None,None,None,None,None,None,None,None,None), + (21,101,"GtkButton","icon-name","list-add-symbolic",None,None,None,None,None,None,None,None,None), + (21,102,"GtkButton","icon-name","list-add-symbolic",None,None,None,None,None,None,None,None,None), + (21,102,"GtkWidget","margin-start","10",None,None,None,None,None,None,None,None,None), (22,1,"GtkWidget","margin-bottom","2",None,None,None,None,None,None,None,None,None), (22,1,"GtkWidget","margin-top","2",None,None,None,None,None,None,None,None,None), (22,2,"AdwPreferencesRow","title","Add new Address",None,None,None,None,None,None,None,None,None), (22,2,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), - (22,3,"AdwPreferencesRow","title","Address",None,None,None,None,None,None,None,None,None), - (22,4,"AdwPreferencesRow","title","Prefix",None,None,None,None,None,None,None,None,None), (22,5,"GtkButton","icon-name","edit-delete-symbolic",None,None,None,None,None,None,None,None,None), (22,5,"GtkWidget","height-request","55",None,None,None,None,None,None,None,None,None), (22,5,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None), + (22,7,"AdwPreferencesRow","title","Address",None,None,None,None,None,None,None,None,None), + (22,7,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), + (22,8,"AdwPreferencesRow","title","Prefix",None,None,None,None,None,None,None,None,None), + (22,8,"GtkEditable","max-width-chars","5",None,None,None,None,None,None,None,None,None), (23,2,"AdwPreferencesRow","title","Add new Route",None,None,None,None,None,None,None,None,None), (23,2,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), - (23,3,"AdwPreferencesRow","title","Address",None,None,None,None,None,None,None,None,None), - (23,4,"AdwPreferencesRow","title","Netmask",None,None,None,None,None,None,None,None,None), (23,5,"GtkButton","icon-name","edit-delete-symbolic",None,None,None,None,None,None,None,None,None), (23,5,"GtkWidget","height-request","55",None,None,None,None,None,None,None,None,None), (23,5,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None), (23,7,"AdwPreferencesRow","title","Gateway",None,None,None,None,None,None,None,None,None), (23,7,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), (23,8,"AdwPreferencesRow","title","Metric",None,None,None,None,None,None,None,None,None), - (23,8,"GtkEditable","max-width-chars","5",None,None,None,None,None,None,None,None,None) + (23,8,"GtkEditable","max-width-chars","5",None,None,None,None,None,None,None,None,None), + (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), + (24,1,"AdwPreferencesGroup","header-suffix",None,None,None,None,None,4,None,None,None,None), + (24,1,"AdwPreferencesGroup","title","Available Devices",None,None,None,None,None,None,None,None,None), + (24,4,"GtkButton","icon-name","view-refresh-symbolic",None,None,None,None,None,None,None,None,None), + (24,5,"GtkScrolledWindow","min-content-height","100",None,None,None,None,None,None,None,None,None), + (24,5,"GtkScrolledWindow","propagate-natural-height","True",None,None,None,None,None,None,None,None,None), + (24,9,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), + (24,10,"AdwPreferencesRow","title","device 2",None,None,None,None,None,None,None,None,None), + (24,11,"AdwPreferencesRow","title","device 1",None,None,None,None,None,None,None,None,None), + (24,12,"AdwPreferencesRow","title","device 2",None,None,None,None,None,None,None,None,None), + (24,13,"AdwPreferencesRow","title","device 2",None,None,None,None,None,None,None,None,None), + (24,14,"AdwPreferencesRow","title","device 2",None,None,None,None,None,None,None,None,None) (3,42,"GtkWidget",1,1,None,None,None,None,None,None), @@ -908,16 +924,9 @@ (21,82,"GtkStringList",2,5,"Link-Local Only",1,None,None,None,None), (21,82,"GtkStringList",2,6,"Shared to other computers",1,None,None,None,None), (21,82,"GtkStringList",2,7,"Disabled",1,None,None,None,None), - (21,94,"GtkStringList",1,1,None,None,None,None,None,None), - (21,94,"GtkStringList",2,2,"None",1,None,None,None,None), - (21,94,"GtkStringList",2,3,"Enhanced Open",1,None,None,None,None), - (21,94,"GtkStringList",2,4,"WEP 40/128-bit Key (Hex or ASCII)",1,None,None,None,None), - (21,94,"GtkStringList",2,5,"WEP 128-bit Passphrase",1,None,None,None,None), - (21,94,"GtkStringList",2,6,"LEAP",1,None,None,None,None), - (21,94,"GtkStringList",2,7,"Dynamic WEP (802.1X)",1,None,None,None,None), - (21,94,"GtkStringList",2,8,"WPA & WPA2 Personal",1,None,None,None,None), - (21,94,"GtkStringList",2,9,"WPA & WPA2 Enterprise",1,None,None,None,None), - (21,94,"GtkStringList",2,10,"WPA3 Personal",1,None,None,None,None) + (21,103,"GtkStringList",1,1,None,None,None,None,None,None), + (21,103,"GtkStringList",2,2,"None",1,None,None,None,None), + (21,103,"GtkStringList",2,3,"WPA & WPA2 Personal",1,None,None,None,None) (3,42,"GtkWidget",2,2,"name","b"), diff --git a/src/resources/resetWiFi.ui b/src/resources/resetWiFi.ui index a534d1e..2d4137b 100644 --- a/src/resources/resetWiFi.ui +++ b/src/resources/resetWiFi.ui @@ -61,30 +61,9 @@ - + 10 - vertical - - - start - right - Available networks - 5 - - - - - 100 - True - - - - - - - - - + Available networks diff --git a/src/resources/resetWifiAddressEntry.ui b/src/resources/resetWifiAddressEntry.ui index 336b947..9ca5bd2 100644 --- a/src/resources/resetWifiAddressEntry.ui +++ b/src/resources/resetWifiAddressEntry.ui @@ -11,13 +11,19 @@ True Add new Address - - Address - - - - - Prefix + + + + True + Address + + + + + 5 + Prefix + + diff --git a/src/resources/resetWifiEntry.ui b/src/resources/resetWifiEntry.ui index 3f6f6f0..0d329a9 100644 --- a/src/resources/resetWifiEntry.ui +++ b/src/resources/resetWifiEntry.ui @@ -37,6 +37,17 @@ 0.0 + + + end + True + right + Connected + 10 + True + 0.0 + + start @@ -45,12 +56,6 @@ center - - - end - center - - diff --git a/src/resources/resetWifiOptions.ui b/src/resources/resetWifiOptions.ui index 59ac67a..d7fcb49 100644 --- a/src/resources/resetWifiOptions.ui +++ b/src/resources/resetWifiOptions.ui @@ -13,6 +13,7 @@ False + 5 vertical @@ -85,6 +86,7 @@ + 5 vertical @@ -142,6 +144,12 @@ center + + + list-add-symbolic + 10 + + 10 @@ -157,6 +165,7 @@ + 5 vertical @@ -191,6 +200,11 @@ + + + list-add-symbolic + + 10 Addresses @@ -210,6 +224,12 @@ center + + + list-add-symbolic + 10 + + 10 @@ -225,23 +245,17 @@ + 5 vertical - + None - Enhanced Open - WEP 40/128-bit Key (Hex or ASCII) - WEP 128-bit Passphrase - LEAP - Dynamic WEP (802.1X) WPA & WPA2 Personal - WPA & WPA2 Enterprise - WPA3 Personal @@ -249,12 +263,7 @@ - - Username - - - - + Password diff --git a/src/resources/resetWifiRouteEntry.ui b/src/resources/resetWifiRouteEntry.ui index 9afd6ef..374a386 100644 --- a/src/resources/resetWifiRouteEntry.ui +++ b/src/resources/resetWifiRouteEntry.ui @@ -9,13 +9,19 @@ True Add new Route - - Address - - - - - Netmask + + + + True + Address + + + + + 5 + Prefix + +