mirror of
https://github.com/Xetibo/ReSet.git
synced 2025-04-08 22:52:01 +02:00
Implement password
This commit is contained in:
parent
c5fb9611c9
commit
593c6b7627
|
@ -84,7 +84,7 @@ impl WifiEntry {
|
|||
let selfImp = self.imp();
|
||||
selfImp.resetWifiEditButton.connect_clicked(clone!(@ weak selfImp, @ weak wifiBox => move |_| {
|
||||
let _option = getConnectionSettings(selfImp.accessPoint.borrow().associated_connection.clone());
|
||||
wifiBox.resetWifiNavigation.push(&*WifiOptions::new(_option));
|
||||
wifiBox.resetWifiNavigation.push(&*WifiOptions::new(_option, selfImp.accessPoint.borrow().dbus_path.clone()));
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,13 +1,18 @@
|
|||
use std::net::{Ipv4Addr, Ipv6Addr};
|
||||
use std::str::FromStr;
|
||||
use std::sync::Arc;
|
||||
use std::time::Duration;
|
||||
|
||||
use adw::glib;
|
||||
use adw::{gio, glib};
|
||||
use adw::glib::Object;
|
||||
use adw::prelude::{ActionRowExt, ComboRowExt, PreferencesGroupExt};
|
||||
use adw::subclass::prelude::ObjectSubclassIsExt;
|
||||
use dbus::{Error, Path};
|
||||
use dbus::arg::PropMap;
|
||||
use glib::{clone, PropertySet};
|
||||
use gtk::prelude::{ButtonExt, EditableExt, WidgetExt};
|
||||
use ReSet_Lib::network::connection::{Connection, DNSMethod4, DNSMethod6, Enum, TypeSettings};
|
||||
use ReSet_Lib::network::network::AccessPoint;
|
||||
use IpProtocol::{IPv4, IPv6};
|
||||
use ReSet_Lib::network::connection::{Connection, DNSMethod4, DNSMethod6, Enum, TypeSettings};
|
||||
|
||||
|
@ -26,11 +31,11 @@ unsafe impl Send for WifiOptions {}
|
|||
unsafe impl Sync for WifiOptions {}
|
||||
|
||||
impl WifiOptions {
|
||||
pub fn new(connection: Connection) -> Arc<Self> {
|
||||
pub fn new(connection: Connection, accessPoint: Path<'static>) -> Arc<Self> {
|
||||
let wifiOption: Arc<WifiOptions> = Arc::new(Object::builder().build());
|
||||
wifiOption.imp().connection.set(connection);
|
||||
wifiOption.initializeUI();
|
||||
setupCallbacks(&wifiOption);
|
||||
setupCallbacks(&wifiOption, accessPoint);
|
||||
wifiOption
|
||||
}
|
||||
|
||||
|
@ -48,13 +53,8 @@ impl WifiOptions {
|
|||
ip6RouteLength = conn.ipv4.route_data.len();
|
||||
|
||||
// General
|
||||
|
||||
selfImp
|
||||
.resetWifiAutoConnect
|
||||
.set_active(conn.settings.autoconnect);
|
||||
selfImp
|
||||
.resetWifiMetered
|
||||
.set_active(conn.settings.metered != -1);
|
||||
selfImp.resetWifiAutoConnect.set_active(conn.settings.autoconnect);
|
||||
selfImp.resetWifiMetered.set_active(conn.settings.metered != -1);
|
||||
match &conn.device {
|
||||
TypeSettings::WIFI(wifi) => {
|
||||
selfImp.resetWifiLinkSpeed.set_visible(false);
|
||||
|
@ -63,10 +63,9 @@ impl WifiOptions {
|
|||
selfImp.resetWifiDNS.set_visible(false);
|
||||
selfImp.resetWifiGateway.set_visible(false);
|
||||
selfImp.resetWifiLastUsed.set_visible(true);
|
||||
selfImp.resetWifiMac.set_subtitle(&wifi.cloned_mac_address);
|
||||
selfImp
|
||||
.resetWifiName
|
||||
.set_subtitle(&String::from_utf8(wifi.ssid.clone()).unwrap_or_default());
|
||||
selfImp.resetWifiMac.set_subtitle(&*wifi.cloned_mac_address);
|
||||
selfImp.resetWifiName.set_subtitle(&*String::from_utf8(wifi.ssid.clone())
|
||||
.unwrap_or(String::default()));
|
||||
}
|
||||
TypeSettings::ETHERNET(ethernet) => {
|
||||
selfImp.resetWifiLinkSpeed.set_visible(true);
|
||||
|
@ -75,55 +74,47 @@ impl WifiOptions {
|
|||
selfImp.resetWifiDNS.set_visible(true);
|
||||
selfImp.resetWifiGateway.set_visible(true);
|
||||
selfImp.resetWifiLastUsed.set_visible(false);
|
||||
selfImp
|
||||
.resetWifiMac
|
||||
.set_subtitle(ðernet.cloned_mac_address);
|
||||
selfImp
|
||||
.resetWifiLinkSpeed
|
||||
.set_subtitle(ðernet.speed.to_string());
|
||||
selfImp.resetWifiMac.set_subtitle(&*ethernet.cloned_mac_address);
|
||||
selfImp.resetWifiLinkSpeed.set_subtitle(&*ethernet.speed.to_string());
|
||||
}
|
||||
TypeSettings::VPN(_vpn) => {}
|
||||
TypeSettings::None => {}
|
||||
};
|
||||
// IPv4
|
||||
selfImp
|
||||
.resetIP4Method
|
||||
.set_selected(conn.ipv4.dns_method.to_i32() as u32);
|
||||
selfImp.resetIP4Method.set_selected(conn.ipv4.dns_method.to_i32() as u32);
|
||||
self.setIP4Visibility(conn.ipv4.dns_method.to_i32() as u32);
|
||||
|
||||
let ipv4Dns: Vec<String> = conn
|
||||
.ipv4
|
||||
.dns
|
||||
.iter()
|
||||
.map(|addr| {
|
||||
addr.iter()
|
||||
.map(|octet| octet.to_string())
|
||||
.collect::<Vec<String>>()
|
||||
.join(".")
|
||||
})
|
||||
.collect();
|
||||
let ipv4Dns: Vec<String> = conn.ipv4.dns.iter().map(|addr| {
|
||||
addr.iter().map(|octet| octet.to_string()).collect::<Vec<String>>().join(".")
|
||||
}).collect();
|
||||
selfImp.resetIP4DNS.set_text(&ipv4Dns.join(", "));
|
||||
selfImp.resetIP4Gateway.set_text(&conn.ipv4.gateway);
|
||||
// IPv6
|
||||
selfImp
|
||||
.resetIP6Method
|
||||
.set_selected(conn.ipv6.dns_method.to_i32() as u32);
|
||||
selfImp.resetIP6Method.set_selected(conn.ipv6.dns_method.to_i32() as u32);
|
||||
self.setIP6Visibility(conn.ipv6.dns_method.to_i32() as u32);
|
||||
|
||||
let ipv6Dns: Vec<String> = conn
|
||||
.ipv6
|
||||
.dns
|
||||
.iter()
|
||||
.map(|addr| {
|
||||
addr.iter()
|
||||
.map(|octet| octet.to_string())
|
||||
.collect::<Vec<String>>()
|
||||
.join(":")
|
||||
})
|
||||
.collect();
|
||||
let ipv6Dns: Vec<String> = conn.ipv6.dns.iter().map(|addr| {
|
||||
addr.iter().map(|octet| octet.to_string()).collect::<Vec<String>>().join(":")
|
||||
}).collect();
|
||||
selfImp.resetIP6DNS.set_text(&ipv6Dns.join(", "));
|
||||
selfImp.resetIP6Gateway.set_text(&conn.ipv6.gateway);
|
||||
dbg!(conn);
|
||||
|
||||
// Security
|
||||
if let TypeSettings::WIFI(wifi) = &conn.device {
|
||||
match wifi.security_settings.key_management.as_str() {
|
||||
"none" => {
|
||||
selfImp.resetWifiSecurityDropdown.set_selected(0);
|
||||
selfImp.resetWifiPassword.set_visible(false);
|
||||
selfImp.resetWifiPassword.set_text("");
|
||||
}
|
||||
"wpa-psk" => {
|
||||
selfImp.resetWifiSecurityDropdown.set_selected(1);
|
||||
selfImp.resetWifiPassword.set_visible(true);
|
||||
selfImp.resetWifiPassword.set_text(&wifi.security_settings.psk);
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
}
|
||||
// IPv4
|
||||
for i in 0..ip4AddressLength {
|
||||
|
@ -150,24 +141,22 @@ impl WifiOptions {
|
|||
|
||||
for i in 0..ip6RouteLength {
|
||||
let route = &WifiRouteEntry::new(Some(i), selfImp.connection.clone(), IPv6);
|
||||
selfImp.resetIP6RoutesGroup.add(route)
|
||||
selfImp.resetIP6RoutesGroup.add(route);
|
||||
}
|
||||
let route = &WifiRouteEntry::new(None, selfImp.connection.clone(), IPv6);
|
||||
selfImp.resetIP6RoutesGroup.add(route)
|
||||
selfImp.resetIP6RoutesGroup.add(route);
|
||||
// Security
|
||||
}
|
||||
|
||||
pub fn setIP4Visibility(&self, method: u32) {
|
||||
let selfImp = self.imp();
|
||||
match method {
|
||||
0 => {
|
||||
// auto
|
||||
0 => { // auto
|
||||
selfImp.resetIP4AddressGroup.set_visible(false);
|
||||
selfImp.resetIP4RoutesGroup.set_visible(true);
|
||||
selfImp.resetIP4Gateway.set_visible(false);
|
||||
}
|
||||
1 => {
|
||||
// manual
|
||||
1 => { // manual
|
||||
selfImp.resetIP4AddressGroup.set_visible(true);
|
||||
selfImp.resetIP4RoutesGroup.set_visible(true);
|
||||
selfImp.resetIP4Gateway.set_visible(true);
|
||||
|
@ -183,14 +172,12 @@ impl WifiOptions {
|
|||
pub fn setIP6Visibility(&self, method: u32) {
|
||||
let selfImp = self.imp();
|
||||
match method {
|
||||
0 | 1 => {
|
||||
// auto, dhcp
|
||||
0 | 1 => { // auto, dhcp
|
||||
selfImp.resetIP6AddressGroup.set_visible(false);
|
||||
selfImp.resetIP6RoutesGroup.set_visible(true);
|
||||
selfImp.resetIP6Gateway.set_visible(false);
|
||||
}
|
||||
2 => {
|
||||
// manual
|
||||
2 => { // manual
|
||||
selfImp.resetIP6AddressGroup.set_visible(true);
|
||||
selfImp.resetIP6RoutesGroup.set_visible(true);
|
||||
selfImp.resetIP6Gateway.set_visible(true);
|
||||
|
@ -204,122 +191,154 @@ impl WifiOptions {
|
|||
}
|
||||
}
|
||||
|
||||
fn setupCallbacks(wifiOptions: &Arc<WifiOptions>) {
|
||||
fn setupCallbacks(wifiOptions: &Arc<WifiOptions>, path: Path<'static>) {
|
||||
let imp = wifiOptions.imp();
|
||||
|
||||
// General
|
||||
imp.resetWifiAutoConnect
|
||||
.connect_active_notify(clone!(@weak imp => move |x| {
|
||||
imp.connection.borrow_mut().settings.autoconnect = x.is_active();
|
||||
}));
|
||||
imp.resetWifiMetered
|
||||
.connect_active_notify(clone!(@weak imp => move |x| {
|
||||
imp.connection.borrow_mut().settings.metered = if x.is_active() { 1 } else { 2 };
|
||||
}));
|
||||
imp.wifiOptionsApplyButton
|
||||
.connect_clicked(clone!(@weak imp => move |_| {
|
||||
let prop = imp.connection.borrow().convert_to_propmap();
|
||||
// todo send to daemon somehow
|
||||
}));
|
||||
imp.resetWifiAutoConnect.connect_active_notify(clone!(@weak imp => move |x| {
|
||||
imp.connection.borrow_mut().settings.autoconnect = x.is_active();
|
||||
}));
|
||||
imp.resetWifiMetered.connect_active_notify(clone!(@weak imp => move |x| {
|
||||
imp.connection.borrow_mut().settings.metered = if x.is_active() { 1 } else { 2 };
|
||||
}));
|
||||
imp.wifiOptionsApplyButton.connect_clicked(clone!(@weak imp => move |_| {
|
||||
let prop = imp.connection.borrow().convert_to_propmap();
|
||||
setConnectionSettings(path.clone(), prop);
|
||||
}));
|
||||
// IPv4
|
||||
let wifiOptionsIP4 = wifiOptions.clone();
|
||||
imp.resetIP4Method
|
||||
.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);
|
||||
wifiOptionsIP4.setIP4Visibility(selected);
|
||||
}));
|
||||
imp.resetIP4Method.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);
|
||||
wifiOptionsIP4.setIP4Visibility(selected);
|
||||
}));
|
||||
|
||||
imp.resetIP4DNS
|
||||
.connect_changed(clone!(@weak imp => move |entry| {
|
||||
let dnsInput = entry.text();
|
||||
let mut conn = imp.connection.borrow_mut();
|
||||
conn.ipv4.dns.clear();
|
||||
if dnsInput.is_empty() {
|
||||
imp.resetIP4DNS.connect_changed(clone!(@weak imp => move |entry| {
|
||||
let dnsInput = entry.text();
|
||||
let mut conn = imp.connection.borrow_mut();
|
||||
conn.ipv4.dns.clear();
|
||||
if dnsInput.is_empty() {
|
||||
imp.resetIP4DNS.remove_css_class("error");
|
||||
return;
|
||||
}
|
||||
for dnsEntry in dnsInput.as_str().split(',').map(|s| s.trim()) {
|
||||
if let Ok(addr) = Ipv4Addr::from_str(dnsEntry) {
|
||||
imp.resetIP4DNS.remove_css_class("error");
|
||||
return;
|
||||
}
|
||||
for dnsEntry in dnsInput.as_str().split(',').map(|s| s.trim()) {
|
||||
if let Ok(addr) = Ipv4Addr::from_str(dnsEntry) {
|
||||
imp.resetIP4DNS.remove_css_class("error");
|
||||
conn.ipv4.dns.push(addr.octets().to_vec());
|
||||
} else {
|
||||
imp.resetIP4DNS.add_css_class("error");
|
||||
}
|
||||
}
|
||||
}));
|
||||
imp.resetIP4AddressAddButton
|
||||
.connect_clicked(clone!(@weak imp => move |_| {
|
||||
let address = &WifiAddressEntry::new(None, imp.connection.clone(), IpProtocol::IPv4);
|
||||
imp.resetIP4AddressGroup.add(address);
|
||||
}));
|
||||
|
||||
imp.resetIP4Gateway
|
||||
.connect_changed(clone!(@weak imp => move |entry| {
|
||||
let gatewayInput = entry.text();
|
||||
let mut conn = imp.connection.borrow_mut();
|
||||
conn.ipv4.gateway.clear();
|
||||
if gatewayInput.is_empty() {
|
||||
imp.resetIP4Gateway.remove_css_class("error");
|
||||
return;
|
||||
}
|
||||
if Ipv4Addr::from_str(gatewayInput.as_str()).is_ok() {
|
||||
imp.resetIP4Gateway.remove_css_class("error");
|
||||
conn.ipv4.gateway = gatewayInput.to_string();
|
||||
conn.ipv4.dns.push(addr.octets().to_vec());
|
||||
} else {
|
||||
imp.resetIP4Gateway.add_css_class("error");
|
||||
imp.resetIP4DNS.add_css_class("error");
|
||||
}
|
||||
}));
|
||||
}
|
||||
}));
|
||||
imp.resetIP4AddressAddButton.connect_clicked(clone!(@weak imp => move |_| {
|
||||
let address = &WifiAddressEntry::new(None, imp.connection.clone(), IpProtocol::IPv4);
|
||||
imp.resetIP4AddressGroup.add(address);
|
||||
}));
|
||||
|
||||
imp.resetIP4Gateway.connect_changed(clone!(@weak imp => move |entry| {
|
||||
let gatewayInput = entry.text();
|
||||
let mut conn = imp.connection.borrow_mut();
|
||||
conn.ipv4.gateway.clear();
|
||||
if gatewayInput.is_empty() {
|
||||
imp.resetIP4Gateway.remove_css_class("error");
|
||||
return;
|
||||
}
|
||||
if let Ok(_) = Ipv4Addr::from_str(gatewayInput.as_str()) {
|
||||
imp.resetIP4Gateway.remove_css_class("error");
|
||||
conn.ipv4.gateway = gatewayInput.to_string();
|
||||
} else {
|
||||
imp.resetIP4Gateway.add_css_class("error");
|
||||
}
|
||||
}));
|
||||
// IPv6
|
||||
let wifiOptionsIP6 = wifiOptions.clone();
|
||||
imp.resetIP6Method
|
||||
.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);
|
||||
wifiOptionsIP6.setIP6Visibility(selected);
|
||||
}));
|
||||
imp.resetIP6Method.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);
|
||||
wifiOptionsIP6.setIP6Visibility(selected);
|
||||
}));
|
||||
|
||||
imp.resetIP6DNS
|
||||
.connect_changed(clone!(@weak imp => move |entry| {
|
||||
let dnsInput = entry.text();
|
||||
let mut conn = imp.connection.borrow_mut();
|
||||
conn.ipv6.dns.clear();
|
||||
if dnsInput.is_empty() {
|
||||
imp.resetIP6DNS.connect_changed(clone!(@weak imp => move |entry| {
|
||||
let dnsInput = entry.text();
|
||||
let mut conn = imp.connection.borrow_mut();
|
||||
conn.ipv6.dns.clear();
|
||||
if dnsInput.is_empty() {
|
||||
imp.resetIP6DNS.remove_css_class("error");
|
||||
return;
|
||||
}
|
||||
for dnsEntry in dnsInput.as_str().split(',').map(|s| s.trim()) {
|
||||
if let Ok(addr) = Ipv6Addr::from_str(dnsEntry) {
|
||||
imp.resetIP6DNS.remove_css_class("error");
|
||||
return;
|
||||
}
|
||||
for dnsEntry in dnsInput.as_str().split(',').map(|s| s.trim()) {
|
||||
if let Ok(addr) = Ipv6Addr::from_str(dnsEntry) {
|
||||
imp.resetIP6DNS.remove_css_class("error");
|
||||
conn.ipv6.dns.push(addr.octets().to_vec());
|
||||
} else {
|
||||
imp.resetIP6DNS.add_css_class("error");
|
||||
}
|
||||
}
|
||||
}));
|
||||
imp.resetIP6AddressAddButton
|
||||
.connect_clicked(clone!(@weak imp => move |_| {
|
||||
let address = &WifiAddressEntry::new(None, imp.connection.clone(), IpProtocol::IPv4);
|
||||
imp.resetIP6AddressGroup.add(address);
|
||||
}));
|
||||
|
||||
imp.resetIP6Gateway
|
||||
.connect_changed(clone!(@weak imp => move |entry| {
|
||||
let gatewayInput = entry.text();
|
||||
let mut conn = imp.connection.borrow_mut();
|
||||
conn.ipv6.gateway.clear();
|
||||
if gatewayInput.is_empty() {
|
||||
imp.resetIP6Gateway.remove_css_class("error");
|
||||
return;
|
||||
}
|
||||
if Ipv6Addr::from_str(gatewayInput.as_str()).is_ok() {
|
||||
imp.resetIP6Gateway.remove_css_class("error");
|
||||
conn.ipv6.gateway = gatewayInput.to_string();
|
||||
conn.ipv6.dns.push(addr.octets().to_vec());
|
||||
} else {
|
||||
imp.resetIP6Gateway.add_css_class("error");
|
||||
imp.resetIP6DNS.add_css_class("error");
|
||||
}
|
||||
}));
|
||||
}
|
||||
}));
|
||||
imp.resetIP6AddressAddButton.connect_clicked(clone!(@weak imp => move |_| {
|
||||
let address = &WifiAddressEntry::new(None, imp.connection.clone(), IpProtocol::IPv4);
|
||||
imp.resetIP6AddressGroup.add(address);
|
||||
}));
|
||||
|
||||
imp.resetIP6Gateway.connect_changed(clone!(@weak imp => move |entry| {
|
||||
let gatewayInput = entry.text();
|
||||
let mut conn = imp.connection.borrow_mut();
|
||||
conn.ipv6.gateway.clear();
|
||||
if gatewayInput.is_empty() {
|
||||
imp.resetIP6Gateway.remove_css_class("error");
|
||||
return;
|
||||
}
|
||||
if let Ok(_) = Ipv6Addr::from_str(gatewayInput.as_str()) {
|
||||
imp.resetIP6Gateway.remove_css_class("error");
|
||||
conn.ipv6.gateway = gatewayInput.to_string();
|
||||
} else {
|
||||
imp.resetIP6Gateway.add_css_class("error");
|
||||
}
|
||||
}));
|
||||
|
||||
// Security
|
||||
imp.resetWifiSecurityDropdown.connect_selected_notify(clone!(@weak imp => move |dropdown| {
|
||||
let selected = dropdown.selected();
|
||||
let mut conn = imp.connection.borrow_mut();
|
||||
|
||||
match (selected, &mut conn.device) {
|
||||
(0 , TypeSettings::WIFI(wifi)) => { // None
|
||||
imp.resetWifiPassword.set_visible(false);
|
||||
wifi.security_settings.key_management = String::from("none");
|
||||
wifi.security_settings.authentication_algorithm = String::from("open");
|
||||
},
|
||||
(1 , TypeSettings::WIFI(wifi)) => { // WPA/WPA2 Personal
|
||||
imp.resetWifiPassword.set_visible(true);
|
||||
wifi.security_settings.key_management = String::from("wpa-psk");
|
||||
wifi.security_settings.authentication_algorithm = String::from("");
|
||||
},
|
||||
(_, _) => {}
|
||||
}
|
||||
}));
|
||||
|
||||
imp.resetWifiPassword.connect_changed(clone!(@weak imp => move |entry| {
|
||||
let passwordInput = entry.text();
|
||||
let mut conn = imp.connection.borrow_mut();
|
||||
if let TypeSettings::WIFI(wifi) = &mut conn.device {
|
||||
wifi.security_settings.psk = passwordInput.to_string();
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
fn setConnectionSettings(path: Path<'static>, prop: PropMap) {
|
||||
gio::spawn_blocking(move || {
|
||||
let conn = dbus::blocking::Connection::new_session().unwrap();
|
||||
let proxy = conn.with_proxy(
|
||||
"org.Xetibo.ReSetDaemon",
|
||||
"/org/Xetibo/ReSetDaemon",
|
||||
Duration::from_millis(1000),
|
||||
);
|
||||
let _: Result<(bool,), Error> = proxy.method_call(
|
||||
"org.Xetibo.ReSetWireless",
|
||||
"SetConnectionSettings",
|
||||
(path, prop),
|
||||
);
|
||||
});
|
||||
}
|
|
@ -1,11 +1,12 @@
|
|||
use crate::components::wifi::wifiOptions;
|
||||
use adw::subclass::prelude::NavigationPageImpl;
|
||||
use adw::{ActionRow, ComboRow, EntryRow, NavigationPage, PreferencesGroup, SwitchRow};
|
||||
use adw::{ActionRow, ComboRow, EntryRow, NavigationPage, PasswordEntryRow, PreferencesGroup, SwitchRow};
|
||||
use gtk::subclass::prelude::*;
|
||||
use gtk::{glib, Button, CompositeTemplate};
|
||||
use std::cell::RefCell;
|
||||
use std::rc::Rc;
|
||||
use ReSet_Lib::network::connection::Connection;
|
||||
use ReSet_Lib::network::network::AccessPoint;
|
||||
|
||||
#[allow(non_snake_case)]
|
||||
#[derive(Default, CompositeTemplate)]
|
||||
|
@ -63,6 +64,10 @@ pub struct WifiOptions {
|
|||
#[template_child]
|
||||
pub resetIP6RouteAddButton: TemplateChild<Button>,
|
||||
// Security
|
||||
#[template_child]
|
||||
pub resetWifiSecurityDropdown: TemplateChild<ComboRow>,
|
||||
#[template_child]
|
||||
pub resetWifiPassword: TemplateChild<PasswordEntryRow>,
|
||||
// Misc
|
||||
#[template_child]
|
||||
pub wifiOptionsApplyButton: TemplateChild<Button>,
|
||||
|
|
|
@ -294,16 +294,15 @@
|
|||
(21,90,"GtkLabel",None,53,None,"tab",None,5,None),
|
||||
(21,91,"GtkBox",None,53,None,None,None,6,None),
|
||||
(21,92,"AdwPreferencesGroup",None,91,None,None,None,None,None),
|
||||
(21,93,"AdwComboRow",None,92,None,None,None,None,None),
|
||||
(21,94,"GtkStringList",None,93,None,None,None,None,None),
|
||||
(21,95,"AdwEntryRow",None,92,None,None,None,1,None),
|
||||
(21,96,"AdwPasswordEntryRow",None,92,None,None,None,2,None),
|
||||
(21,93,"AdwComboRow","resetWifiSecurityDropdown",92,None,None,None,None,None),
|
||||
(21,96,"AdwPasswordEntryRow","resetWifiPassword",92,None,None,None,1,None),
|
||||
(21,97,"GtkLabel",None,53,None,"tab",None,7,None),
|
||||
(21,98,"GtkButton","wifiOptionsApplyButton",52,None,None,None,1,None),
|
||||
(21,99,"GtkButton","resetIP4AddressAddButton",73,None,None,None,-1,None),
|
||||
(21,100,"GtkButton","resetIP4RouteAddButton",75,None,None,None,2,None),
|
||||
(21,101,"GtkButton","resetIP6AddressAddButton",85,None,None,None,-1,None),
|
||||
(21,102,"GtkButton","resetIP6RouteAddButton",87,None,None,None,2,None),
|
||||
(21,103,"GtkStringList",None,93,None,None,None,-1,None),
|
||||
(22,1,"GtkBox","resetWifiAddressEntry",None,None,None,None,-1,None),
|
||||
(22,2,"AdwExpanderRow","resetAddressRow",1,None,None,None,-1,None),
|
||||
(22,5,"GtkButton","resetAddressRemove",1,None,None,None,-1,None),
|
||||
|
@ -806,6 +805,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),
|
||||
|
@ -826,6 +826,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),
|
||||
|
@ -841,6 +842,7 @@
|
|||
(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),
|
||||
|
@ -856,9 +858,9 @@
|
|||
(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),
|
||||
|
@ -923,16 +925,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)
|
||||
</object_data>
|
||||
<object_data_arg>
|
||||
(3,42,"GtkWidget",2,2,"name","b"),
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
<property name="show-border">False</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="margin-top">5</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
|
@ -85,6 +86,7 @@
|
|||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="margin-top">5</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
|
@ -163,6 +165,7 @@
|
|||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="margin-top">5</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
|
@ -242,23 +245,17 @@
|
|||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="margin-top">5</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<child>
|
||||
<object class="AdwComboRow">
|
||||
<object class="AdwComboRow" id="resetWifiSecurityDropdown">
|
||||
<property name="model">
|
||||
<object class="GtkStringList">
|
||||
<items>
|
||||
<item>None</item>
|
||||
<item>Enhanced Open</item>
|
||||
<item>WEP 40/128-bit Key (Hex or ASCII)</item>
|
||||
<item>WEP 128-bit Passphrase</item>
|
||||
<item>LEAP</item>
|
||||
<item>Dynamic WEP (802.1X)</item>
|
||||
<item>WPA & WPA2 Personal</item>
|
||||
<item>WPA & WPA2 Enterprise</item>
|
||||
<item>WPA3 Personal</item>
|
||||
</items>
|
||||
</object>
|
||||
</property>
|
||||
|
@ -266,12 +263,7 @@
|
|||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwEntryRow">
|
||||
<property name="title">Username</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwPasswordEntryRow">
|
||||
<object class="AdwPasswordEntryRow" id="resetWifiPassword">
|
||||
<property name="title">Password</property>
|
||||
</object>
|
||||
</child>
|
||||
|
|
Loading…
Reference in a new issue