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