From ed7b814e62944276672e8d347147035d0b3d5a29 Mon Sep 17 00:00:00 2001 From: takotori Date: Mon, 20 Nov 2023 17:52:07 +0100 Subject: [PATCH] Add Wifi Options (UI only) --- Cargo.toml | 2 +- src/components/wifi/mod.rs | 4 + src/components/wifi/wifiAddressEntry.rs | 34 ++ src/components/wifi/wifiAddressEntryImpl.rs | 47 +++ src/components/wifi/wifiBox.rs | 9 +- src/components/wifi/wifiEntry.rs | 2 +- src/components/wifi/wifiOptions.rs | 163 ++++++++- src/components/wifi/wifiOptionsImpl.rs | 38 +- src/components/wifi/wifiRouteEntry.rs | 38 ++ src/components/wifi/wifiRouteEntryImpl.rs | 51 +++ src/resources/resetUI.cmb | 313 ++++++++--------- src/resources/resetWifiAddressEntry.ui | 30 ++ src/resources/resetWifiOptions.ui | 370 ++++++-------------- src/resources/resetWifiRouteEntry.ui | 46 +++ src/resources/resources.gresource.xml | 2 + 15 files changed, 702 insertions(+), 447 deletions(-) create mode 100644 src/components/wifi/wifiAddressEntry.rs create mode 100644 src/components/wifi/wifiAddressEntryImpl.rs create mode 100644 src/components/wifi/wifiRouteEntry.rs create mode 100644 src/components/wifi/wifiRouteEntryImpl.rs create mode 100644 src/resources/resetWifiAddressEntry.ui create mode 100644 src/resources/resetWifiRouteEntry.ui diff --git a/Cargo.toml b/Cargo.toml index 98ee8cf..52b92d7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ description = "A wip universal Linux settings application." [dependencies] reset_daemon = "0.1.9" -ReSet-Lib = "0.3.5" +ReSet-Lib = "0.3.8" 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/mod.rs b/src/components/wifi/mod.rs index 1802c4c..8d59124 100644 --- a/src/components/wifi/mod.rs +++ b/src/components/wifi/mod.rs @@ -7,3 +7,7 @@ pub mod wifiEntry; pub mod wifiEntryImpl; pub mod wifiOptions; pub mod wifiOptionsImpl; +pub mod wifiAddressEntry; +pub mod wifiAddressEntryImpl; +pub mod wifiRouteEntry; +pub mod wifiRouteEntryImpl; \ No newline at end of file diff --git a/src/components/wifi/wifiAddressEntry.rs b/src/components/wifi/wifiAddressEntry.rs new file mode 100644 index 0000000..ca651ae --- /dev/null +++ b/src/components/wifi/wifiAddressEntry.rs @@ -0,0 +1,34 @@ +use adw::glib; +use adw::glib::Object; +use adw::prelude::PreferencesRowExt; +use glib::subclass::prelude::ObjectSubclassIsExt; +use gtk::prelude::EditableExt; +use ReSet_Lib::network::connection::Address; + +use crate::components::wifi::wifiAddressEntryImpl; +use crate::components::wifi::wifiOptions::getValueFromKey; + +glib::wrapper! { + pub struct WifiAddressEntry(ObjectSubclass) + @extends gtk::Box, gtk::Widget, + @implements gtk::Accessible, gtk::Buildable, gtk::ConstraintTarget, gtk::Orientable; +} + +impl WifiAddressEntry { + pub fn new(address: Option<&Address>) -> Self { + let entry: WifiAddressEntry = Object::builder().build(); + + if let Some(address) = address { + let entryImp = entry.imp(); + let map = address.to_map(); + + let addr = getValueFromKey(&map, "address"); + let prefix = getValueFromKey(&map, "prefix-length"); + + entryImp.resetAddressAddress.set_text(&*addr); + entryImp.resetAddressNetmask.set_text(&*prefix); + entryImp.resetAddressRow.set_title(&*format!("{}, {}", addr, prefix)); + } + entry + } +} diff --git a/src/components/wifi/wifiAddressEntryImpl.rs b/src/components/wifi/wifiAddressEntryImpl.rs new file mode 100644 index 0000000..1e48982 --- /dev/null +++ b/src/components/wifi/wifiAddressEntryImpl.rs @@ -0,0 +1,47 @@ +use adw::{EntryRow, ExpanderRow}; +use crate::components::wifi::{wifiAddressEntry}; +use gtk::subclass::prelude::*; +use gtk::{glib, CompositeTemplate, Button}; + +#[allow(non_snake_case)] +#[derive(Default, CompositeTemplate)] +#[template(resource = "/org/Xetibo/ReSet/resetWifiAddressEntry.ui")] +pub struct WifiAddressEntryImpl { + #[template_child] + pub resetAddressRow: TemplateChild, + #[template_child] + pub resetAddressAddress: TemplateChild, + #[template_child] + pub resetAddressNetmask: TemplateChild, + #[template_child] + pub resetAddressRemove: TemplateChild