mirror of
https://github.com/Xetibo/ReSet.git
synced 2025-04-15 17:38:33 +02:00
Merge pull request #76 from Xetibo/ina
make wifi entries consistent with other entries
This commit is contained in:
commit
8d9d5762a9
|
@ -6,7 +6,7 @@ description = "A wip universal Linux settings application."
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
reset_daemon = "0.4.6"
|
reset_daemon = "0.4.6"
|
||||||
re_set-lib = "0.6.5"
|
re_set-lib = "0.6.6"
|
||||||
adw = { version = "0.5.3", package = "libadwaita", features = ["v1_4"] }
|
adw = { version = "0.5.3", package = "libadwaita", features = ["v1_4"] }
|
||||||
dbus = "0.9.7"
|
dbus = "0.9.7"
|
||||||
gtk = { version = "0.7.3", package = "gtk4", features = ["v4_12"] }
|
gtk = { version = "0.7.3", package = "gtk4", features = ["v4_12"] }
|
||||||
|
|
|
@ -4,18 +4,18 @@ use crate::components::wifi::saved_wifi_entry_impl;
|
||||||
use crate::components::wifi::wifi_box_impl::WifiBox;
|
use crate::components::wifi::wifi_box_impl::WifiBox;
|
||||||
use adw::glib;
|
use adw::glib;
|
||||||
use adw::glib::Object;
|
use adw::glib::Object;
|
||||||
use adw::prelude::{ButtonExt, WidgetExt};
|
use adw::prelude::{ActionRowExt, ButtonExt, PreferencesRowExt, WidgetExt};
|
||||||
use dbus::blocking::Connection;
|
use dbus::blocking::Connection;
|
||||||
use dbus::{Error, Path};
|
use dbus::{Error, Path};
|
||||||
use glib::subclass::types::ObjectSubclassIsExt;
|
use glib::subclass::types::ObjectSubclassIsExt;
|
||||||
use glib::{clone, PropertySet};
|
use glib::{clone, PropertySet};
|
||||||
use gtk::gio;
|
use gtk::{Align, Button, gio, Orientation};
|
||||||
use gtk::prelude::ListBoxRowExt;
|
use gtk::prelude::{BoxExt, ListBoxRowExt};
|
||||||
|
|
||||||
glib::wrapper! {
|
glib::wrapper! {
|
||||||
pub struct SavedWifiEntry(ObjectSubclass<saved_wifi_entry_impl::SavedWifiEntry>)
|
pub struct SavedWifiEntry(ObjectSubclass<saved_wifi_entry_impl::SavedWifiEntry>)
|
||||||
@extends adw::ActionRow, gtk::Widget,
|
@extends adw::ActionRow, gtk::Widget,
|
||||||
@implements gtk::Accessible, gtk::Buildable, gtk::Actionable, gtk::ConstraintTarget, gtk::ListBoxRow;
|
@implements gtk::Accessible, gtk::Buildable, gtk::Actionable, gtk::ConstraintTarget, adw::PreferencesRow, gtk::ListBoxRow;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl SavedWifiEntry {
|
impl SavedWifiEntry {
|
||||||
|
@ -24,7 +24,24 @@ impl SavedWifiEntry {
|
||||||
entry.set_activatable(false);
|
entry.set_activatable(false);
|
||||||
let entry_imp = entry.imp();
|
let entry_imp = entry.imp();
|
||||||
|
|
||||||
entry_imp.reset_edit_saved_wifi_button.connect_clicked(
|
entry.set_title(name);
|
||||||
|
entry_imp.reset_connection_path.set(path);
|
||||||
|
|
||||||
|
let edit_button = Button::builder()
|
||||||
|
.icon_name("document-edit-symbolic")
|
||||||
|
.valign(Align::Center)
|
||||||
|
.build();
|
||||||
|
let delete_button = Button::builder()
|
||||||
|
.icon_name("user-trash-symbolic")
|
||||||
|
.valign(Align::Center)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
let suffix_box = gtk::Box::new(Orientation::Horizontal, 5);
|
||||||
|
suffix_box.append(&edit_button);
|
||||||
|
suffix_box.append(&delete_button);
|
||||||
|
entry.add_suffix(&suffix_box);
|
||||||
|
|
||||||
|
edit_button.connect_clicked(
|
||||||
clone!(@ weak entry_imp, @ weak wifi_box => move |_| {
|
clone!(@ weak entry_imp, @ weak wifi_box => move |_| {
|
||||||
// TODO accesspoint has to be saved somewhere i guess
|
// TODO accesspoint has to be saved somewhere i guess
|
||||||
// let _option = getConnectionSettings(entryImp.accessPoint.borrow().associated_connection.clone());
|
// let _option = getConnectionSettings(entryImp.accessPoint.borrow().associated_connection.clone());
|
||||||
|
@ -32,9 +49,7 @@ impl SavedWifiEntry {
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
entry_imp.reset_saved_wifi_label.set_text(name);
|
delete_button.connect_clicked(
|
||||||
entry_imp.reset_connection_path.set(path);
|
|
||||||
entry_imp.reset_delete_saved_wifi_button.connect_clicked(
|
|
||||||
clone!(@weak entry as entry => move |_| {
|
clone!(@weak entry as entry => move |_| {
|
||||||
delete_connection(entry.imp().reset_connection_path.take());
|
delete_connection(entry.imp().reset_connection_path.take());
|
||||||
// TODO handle error
|
// TODO handle error
|
||||||
|
|
|
@ -13,12 +13,6 @@ use super::saved_wifi_entry;
|
||||||
#[derive(Default, CompositeTemplate)]
|
#[derive(Default, CompositeTemplate)]
|
||||||
#[template(resource = "/org/Xetibo/ReSet/resetSavedWifiEntry.ui")]
|
#[template(resource = "/org/Xetibo/ReSet/resetSavedWifiEntry.ui")]
|
||||||
pub struct SavedWifiEntry {
|
pub struct SavedWifiEntry {
|
||||||
#[template_child]
|
|
||||||
pub reset_delete_saved_wifi_button: TemplateChild<Button>,
|
|
||||||
#[template_child]
|
|
||||||
pub reset_edit_saved_wifi_button: TemplateChild<Button>,
|
|
||||||
#[template_child]
|
|
||||||
pub reset_saved_wifi_label: TemplateChild<Label>,
|
|
||||||
pub reset_connection_path: RefCell<Path<'static>>,
|
pub reset_connection_path: RefCell<Path<'static>>,
|
||||||
pub access_point: RefCell<AccessPoint>,
|
pub access_point: RefCell<AccessPoint>,
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ use crate::components::base::utils::Listeners;
|
||||||
use crate::components::utils::set_combo_row_ellipsis;
|
use crate::components::utils::set_combo_row_ellipsis;
|
||||||
use adw::glib;
|
use adw::glib;
|
||||||
use adw::glib::Object;
|
use adw::glib::Object;
|
||||||
use adw::prelude::{ComboRowExt, ListBoxRowExt, PreferencesGroupExt};
|
use adw::prelude::{ComboRowExt, ListBoxRowExt, PreferencesGroupExt, PreferencesRowExt};
|
||||||
use adw::subclass::prelude::ObjectSubclassIsExt;
|
use adw::subclass::prelude::ObjectSubclassIsExt;
|
||||||
use dbus::blocking::Connection;
|
use dbus::blocking::Connection;
|
||||||
use dbus::message::SignalArgs;
|
use dbus::message::SignalArgs;
|
||||||
|
@ -17,7 +17,7 @@ use dbus::Path;
|
||||||
use glib::{clone, Cast, PropertySet};
|
use glib::{clone, Cast, PropertySet};
|
||||||
use gtk::glib::Variant;
|
use gtk::glib::Variant;
|
||||||
use gtk::prelude::{ActionableExt, WidgetExt};
|
use gtk::prelude::{ActionableExt, WidgetExt};
|
||||||
use gtk::{gio, StringObject};
|
use gtk::{gio, StringObject, StringList};
|
||||||
use re_set_lib::network::network_structures::{AccessPoint, WifiDevice, WifiStrength};
|
use re_set_lib::network::network_structures::{AccessPoint, WifiDevice, WifiStrength};
|
||||||
use re_set_lib::signals::{AccessPointAdded, WifiDeviceChanged};
|
use re_set_lib::signals::{AccessPointAdded, WifiDeviceChanged};
|
||||||
use re_set_lib::signals::{AccessPointChanged, AccessPointRemoved};
|
use re_set_lib::signals::{AccessPointChanged, AccessPointRemoved};
|
||||||
|
@ -68,6 +68,9 @@ fn setup_callbacks(listeners: Arc<Listeners>, wifi_box: Arc<WifiBox>) -> Arc<Wif
|
||||||
clone!(@weak imp => @default-return glib::Propagation::Proceed, move |_, value| {
|
clone!(@weak imp => @default-return glib::Propagation::Proceed, move |_, value| {
|
||||||
set_wifi_enabled(value);
|
set_wifi_enabled(value);
|
||||||
if !value {
|
if !value {
|
||||||
|
imp.reset_wifi_devices.write().unwrap().clear();
|
||||||
|
*imp.reset_model_list.write().unwrap() = StringList::new(&[]);
|
||||||
|
*imp.reset_model_index.write().unwrap() = 0;
|
||||||
let mut map = imp.wifi_entries.lock().unwrap();
|
let mut map = imp.wifi_entries.lock().unwrap();
|
||||||
for entry in map.iter() {
|
for entry in map.iter() {
|
||||||
imp.reset_wifi_list.remove(&*(*entry.1));
|
imp.reset_wifi_list.remove(&*(*entry.1));
|
||||||
|
@ -377,12 +380,11 @@ pub fn start_event_listener(listeners: Arc<Listeners>, wifi_box: Arc<WifiBox>) {
|
||||||
let name_opt = String::from_utf8(ssid).unwrap_or_else(|_| String::from(""));
|
let name_opt = String::from_utf8(ssid).unwrap_or_else(|_| String::from(""));
|
||||||
let name = name_opt.as_str();
|
let name = name_opt.as_str();
|
||||||
entry_imp.wifi_strength.set(strength);
|
entry_imp.wifi_strength.set(strength);
|
||||||
entry_imp.reset_wifi_label.get().set_text(name);
|
entry.set_title(name);
|
||||||
entry_imp.reset_wifi_encrypted.set_visible(false);
|
|
||||||
// TODO handle encryption thing
|
// TODO handle encryption thing
|
||||||
entry_imp
|
entry_imp
|
||||||
.reset_wifi_strength
|
.reset_wifi_strength
|
||||||
.get()
|
.borrow()
|
||||||
.set_from_icon_name(match strength {
|
.set_from_icon_name(match strength {
|
||||||
WifiStrength::Excellent => {
|
WifiStrength::Excellent => {
|
||||||
Some("network-wireless-signal-excellent-symbolic")
|
Some("network-wireless-signal-excellent-symbolic")
|
||||||
|
@ -392,14 +394,14 @@ pub fn start_event_listener(listeners: Arc<Listeners>, wifi_box: Arc<WifiBox>) {
|
||||||
WifiStrength::None => Some("network-wireless-signal-none-symbolic"),
|
WifiStrength::None => Some("network-wireless-signal-none-symbolic"),
|
||||||
});
|
});
|
||||||
if !ir.access_point.stored {
|
if !ir.access_point.stored {
|
||||||
entry_imp.reset_wifi_edit_button.set_sensitive(false);
|
entry_imp.reset_wifi_edit_button.borrow().set_sensitive(false);
|
||||||
}
|
}
|
||||||
if ir.access_point.dbus_path
|
if ir.access_point.dbus_path
|
||||||
== imp.reset_current_wifi_device.borrow().active_access_point
|
== imp.reset_current_wifi_device.borrow().active_access_point
|
||||||
{
|
{
|
||||||
entry_imp.reset_wifi_connected.set_text("Connected");
|
entry_imp.reset_wifi_connected.borrow().set_text("Connected");
|
||||||
} else {
|
} else {
|
||||||
entry_imp.reset_wifi_connected.set_text("");
|
entry_imp.reset_wifi_connected.borrow().set_text("");
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
let mut wifi_name = entry_imp.wifi_name.borrow_mut();
|
let mut wifi_name = entry_imp.wifi_name.borrow_mut();
|
||||||
|
@ -430,9 +432,9 @@ pub fn start_event_listener(listeners: Arc<Listeners>, wifi_box: Arc<WifiBox>) {
|
||||||
let mut connected = imp.connected.borrow_mut();
|
let mut connected = imp.connected.borrow_mut();
|
||||||
*connected = imp.access_point.borrow().dbus_path == current_device.path;
|
*connected = imp.access_point.borrow().dbus_path == current_device.path;
|
||||||
if *connected {
|
if *connected {
|
||||||
imp.reset_wifi_connected.set_text("Connected");
|
imp.reset_wifi_connected.borrow().set_text("Connected");
|
||||||
} else {
|
} else {
|
||||||
imp.reset_wifi_connected.set_text("");
|
imp.reset_wifi_connected.borrow().set_text("");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,16 +1,17 @@
|
||||||
|
use std::ops::Deref;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
use crate::components::wifi::utils::get_connection_settings;
|
use crate::components::wifi::utils::get_connection_settings;
|
||||||
use adw::glib;
|
use adw::glib;
|
||||||
use adw::glib::{Object, PropertySet};
|
use adw::glib::{Object, PropertySet};
|
||||||
use adw::prelude::{ActionRowExt, ButtonExt, EditableExt, PopoverExt};
|
use adw::prelude::{ActionRowExt, ButtonExt, EditableExt, PopoverExt, PreferencesRowExt};
|
||||||
use adw::subclass::prelude::ObjectSubclassIsExt;
|
use adw::subclass::prelude::ObjectSubclassIsExt;
|
||||||
use dbus::blocking::Connection;
|
use dbus::blocking::Connection;
|
||||||
use dbus::Error;
|
use dbus::Error;
|
||||||
use glib::clone;
|
use glib::clone;
|
||||||
use gtk::gio;
|
use gtk::{Align, Button, gio, Image, Orientation};
|
||||||
use gtk::prelude::{ListBoxRowExt, WidgetExt};
|
use gtk::prelude::{BoxExt, ListBoxRowExt, WidgetExt};
|
||||||
use re_set_lib::network::network_structures::{AccessPoint, WifiStrength};
|
use re_set_lib::network::network_structures::{AccessPoint, WifiStrength};
|
||||||
|
|
||||||
use crate::components::wifi::wifi_box_impl::WifiBox;
|
use crate::components::wifi::wifi_box_impl::WifiBox;
|
||||||
|
@ -20,7 +21,7 @@ use crate::components::wifi::wifi_options::WifiOptions;
|
||||||
glib::wrapper! {
|
glib::wrapper! {
|
||||||
pub struct WifiEntry(ObjectSubclass<wifi_entry_impl::WifiEntry>)
|
pub struct WifiEntry(ObjectSubclass<wifi_entry_impl::WifiEntry>)
|
||||||
@extends adw::ActionRow, gtk::Widget,
|
@extends adw::ActionRow, gtk::Widget,
|
||||||
@implements gtk::Accessible, gtk::Buildable, gtk::Actionable, gtk::ConstraintTarget, gtk::ListBoxRow;
|
@implements gtk::Accessible, gtk::Buildable, gtk::Actionable, gtk::ConstraintTarget, adw::PreferencesRow, gtk::ListBoxRow;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe impl Send for WifiEntry {}
|
unsafe impl Send for WifiEntry {}
|
||||||
|
@ -37,24 +38,41 @@ impl WifiEntry {
|
||||||
let name_opt = String::from_utf8(ssid).unwrap_or_else(|_| String::from(""));
|
let name_opt = String::from_utf8(ssid).unwrap_or_else(|_| String::from(""));
|
||||||
let name = name_opt.as_str();
|
let name = name_opt.as_str();
|
||||||
entry_imp.wifi_strength.set(strength);
|
entry_imp.wifi_strength.set(strength);
|
||||||
entry_imp.reset_wifi_label.get().set_text(name);
|
entry.set_title(name);
|
||||||
entry_imp.reset_wifi_encrypted.set_visible(false);
|
|
||||||
entry_imp.connected.set(connected);
|
entry_imp.connected.set(connected);
|
||||||
|
entry_imp.reset_wifi_edit_button.replace(Button::builder()
|
||||||
|
.icon_name("document-edit-symbolic")
|
||||||
|
.valign(Align::Center)
|
||||||
|
.build());
|
||||||
|
|
||||||
// TODO handle encryption thing
|
// TODO handle encryption thing
|
||||||
entry_imp
|
let wifi_strength = Image::builder().icon_name(match strength {
|
||||||
.reset_wifi_strength
|
WifiStrength::Excellent => "network-wireless-signal-excellent-symbolic",
|
||||||
.get()
|
WifiStrength::Ok => "network-wireless-signal-ok-symbolic",
|
||||||
.set_from_icon_name(match strength {
|
WifiStrength::Weak => "network-wireless-signal-weak-symbolic",
|
||||||
WifiStrength::Excellent => Some("network-wireless-signal-excellent-symbolic"),
|
WifiStrength::None => "network-wireless-signal-none-symbolic",
|
||||||
WifiStrength::Ok => Some("network-wireless-signal-ok-symbolic"),
|
}).build();
|
||||||
WifiStrength::Weak => Some("network-wireless-signal-weak-symbolic"),
|
|
||||||
WifiStrength::None => Some("network-wireless-signal-none-symbolic"),
|
let prefix_box = gtk::Box::new(Orientation::Horizontal, 0);
|
||||||
});
|
prefix_box.append(&wifi_strength);
|
||||||
|
prefix_box.append(&Image::builder()
|
||||||
|
.icon_name("system-lock-screen-symbolic")
|
||||||
|
.valign(Align::End)
|
||||||
|
.pixel_size(9)
|
||||||
|
.margin_bottom(12)
|
||||||
|
.build());
|
||||||
|
entry.add_prefix(&prefix_box);
|
||||||
|
|
||||||
|
let suffix_box = gtk::Box::new(Orientation::Horizontal, 5);
|
||||||
|
suffix_box.append(entry_imp.reset_wifi_connected.borrow().deref());
|
||||||
|
suffix_box.append(entry_imp.reset_wifi_edit_button.borrow().deref());
|
||||||
|
entry.add_suffix(&suffix_box);
|
||||||
|
|
||||||
if !access_point.stored {
|
if !access_point.stored {
|
||||||
entry_imp.reset_wifi_edit_button.set_sensitive(false);
|
entry_imp.reset_wifi_edit_button.borrow().set_sensitive(false);
|
||||||
}
|
}
|
||||||
if connected {
|
if connected {
|
||||||
entry_imp.reset_wifi_connected.set_text("Connected");
|
entry_imp.reset_wifi_connected.borrow().set_text("Connected");
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
let mut wifi_name = entry_imp.wifi_name.borrow_mut();
|
let mut wifi_name = entry_imp.wifi_name.borrow_mut();
|
||||||
|
@ -79,7 +97,7 @@ impl WifiEntry {
|
||||||
|
|
||||||
pub fn setup_callbacks(&self, wifi_box: &WifiBox) {
|
pub fn setup_callbacks(&self, wifi_box: &WifiBox) {
|
||||||
let self_imp = self.imp();
|
let self_imp = self.imp();
|
||||||
self_imp.reset_wifi_edit_button.connect_clicked(clone!(@ weak self_imp, @ weak wifi_box => move |_| {
|
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());
|
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().dbus_path.clone()));
|
||||||
}));
|
}));
|
||||||
|
@ -106,7 +124,7 @@ pub fn click_disconnect(entry: Arc<WifiEntry>) {
|
||||||
imp.connected.replace(false);
|
imp.connected.replace(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
imp.reset_wifi_connected.set_text("");
|
imp.reset_wifi_connected.borrow().set_text("");
|
||||||
imp.connected.replace(false);
|
imp.connected.replace(false);
|
||||||
glib::spawn_future(async move {
|
glib::spawn_future(async move {
|
||||||
glib::idle_add_once(move || {
|
glib::idle_add_once(move || {
|
||||||
|
@ -146,7 +164,7 @@ pub fn click_stored_network(entry: Arc<WifiEntry>) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let imp = entry_ref.imp();
|
let imp = entry_ref.imp();
|
||||||
imp.reset_wifi_connected.set_text("Connected");
|
imp.reset_wifi_connected.borrow().set_text("Connected");
|
||||||
imp.connected.replace(true);
|
imp.connected.replace(true);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -198,8 +216,8 @@ pub fn click_new_network(entry: Arc<WifiEntry>) {
|
||||||
}
|
}
|
||||||
let imp = entry_ref.imp();
|
let imp = entry_ref.imp();
|
||||||
imp.reset_wifi_popup.popdown();
|
imp.reset_wifi_popup.popdown();
|
||||||
imp.reset_wifi_edit_button.set_sensitive(true);
|
imp.reset_wifi_edit_button.borrow().set_sensitive(true);
|
||||||
imp.reset_wifi_connected.set_text("Connected");
|
imp.reset_wifi_connected.borrow().set_text("Connected");
|
||||||
imp.connected.replace(true);
|
imp.connected.replace(true);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -11,18 +11,12 @@ use std::cell::RefCell;
|
||||||
#[derive(Default, CompositeTemplate)]
|
#[derive(Default, CompositeTemplate)]
|
||||||
#[template(resource = "/org/Xetibo/ReSet/resetWifiEntry.ui")]
|
#[template(resource = "/org/Xetibo/ReSet/resetWifiEntry.ui")]
|
||||||
pub struct WifiEntry {
|
pub struct WifiEntry {
|
||||||
#[template_child]
|
|
||||||
pub reset_wifi_strength: TemplateChild<Image>,
|
|
||||||
#[template_child]
|
|
||||||
pub reset_wifi_encrypted: TemplateChild<Image>,
|
|
||||||
#[template_child]
|
|
||||||
pub reset_wifi_label: TemplateChild<Label>,
|
|
||||||
#[template_child]
|
|
||||||
pub reset_wifi_edit_button: TemplateChild<Button>,
|
|
||||||
#[template_child]
|
|
||||||
pub reset_wifi_connected: TemplateChild<Label>,
|
|
||||||
#[template_child]
|
#[template_child]
|
||||||
pub reset_wifi_popup: TemplateChild<Popup>,
|
pub reset_wifi_popup: TemplateChild<Popup>,
|
||||||
|
pub reset_wifi_strength: RefCell<Image>,
|
||||||
|
pub reset_wifi_encrypted: RefCell<Image>,
|
||||||
|
pub reset_wifi_connected: RefCell<Label>,
|
||||||
|
pub reset_wifi_edit_button: RefCell<Button>,
|
||||||
pub wifi_name: RefCell<String>,
|
pub wifi_name: RefCell<String>,
|
||||||
pub wifi_strength: RefCell<WifiStrength>,
|
pub wifi_strength: RefCell<WifiStrength>,
|
||||||
pub access_point: RefCell<AccessPoint>,
|
pub access_point: RefCell<AccessPoint>,
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
use std::collections::HashMap;
|
||||||
use std::net::{Ipv4Addr, Ipv6Addr};
|
use std::net::{Ipv4Addr, Ipv6Addr};
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
@ -375,7 +376,7 @@ fn setup_callbacks(wifi_options: &Arc<WifiOptions>, path: Path<'static>) {
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_connection_settings(path: Path<'static>, prop: PropMap) {
|
fn set_connection_settings(path: Path<'static>, prop: HashMap<String, PropMap>) {
|
||||||
gio::spawn_blocking(move || {
|
gio::spawn_blocking(move || {
|
||||||
let conn = dbus::blocking::Connection::new_session().unwrap();
|
let conn = dbus::blocking::Connection::new_session().unwrap();
|
||||||
let proxy = conn.with_proxy(
|
let proxy = conn.with_proxy(
|
||||||
|
|
|
@ -1,40 +1,8 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<!-- Created with Cambalache 0.17.0 -->
|
<!-- Created with Cambalache 0.17.0 -->
|
||||||
<interface>
|
<interface>
|
||||||
<requires lib="gtk" version="4.12"/>
|
|
||||||
<requires lib="libadwaita" version="1.0"/>
|
<requires lib="libadwaita" version="1.0"/>
|
||||||
<template class="resetSavedWifiEntry" parent="AdwActionRow">
|
<template class="resetSavedWifiEntry" parent="AdwActionRow">
|
||||||
<property name="activatable">False</property>
|
<property name="activatable">False</property>
|
||||||
<property name="child">
|
|
||||||
<object class="GtkBox">
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel" id="reset_saved_wifi_label">
|
|
||||||
<property name="ellipsize">end</property>
|
|
||||||
<property name="hexpand">True</property>
|
|
||||||
<property name="label">LoremIpsumInternet</property>
|
|
||||||
<property name="margin-end">10</property>
|
|
||||||
<property name="single-line-mode">True</property>
|
|
||||||
<property name="width-request">200</property>
|
|
||||||
<property name="xalign">0.0</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="reset_edit_saved_wifi_button">
|
|
||||||
<property name="halign">end</property>
|
|
||||||
<property name="has-frame">False</property>
|
|
||||||
<property name="hexpand">True</property>
|
|
||||||
<property name="icon-name">document-edit-symbolic</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="reset_delete_saved_wifi_button">
|
|
||||||
<property name="halign">start</property>
|
|
||||||
<property name="has-frame">False</property>
|
|
||||||
<property name="icon-name">user-trash-symbolic</property>
|
|
||||||
<property name="valign">center</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</property>
|
|
||||||
</template>
|
</template>
|
||||||
</interface>
|
</interface>
|
||||||
|
|
|
@ -21,7 +21,8 @@
|
||||||
(20,None,None,"resetCardEntry.ui",None,None,None,None,None,None,None),
|
(20,None,None,"resetCardEntry.ui",None,None,None,None,None,None,None),
|
||||||
(21,1,None,"resetWifiOptions.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),
|
(22,1,None,"resetWifiAddressEntry.ui",None,None,None,None,None,None,None),
|
||||||
(23,1,None,"resetWifiRouteEntry.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)
|
||||||
</ui>
|
</ui>
|
||||||
<ui_library>
|
<ui_library>
|
||||||
(21,"gtk","4.12",None),
|
(21,"gtk","4.12",None),
|
||||||
|
@ -70,14 +71,7 @@
|
||||||
(4,207,"GtkImage",None,206,None,None,None,None,None),
|
(4,207,"GtkImage",None,206,None,None,None,None,None),
|
||||||
(4,208,"AdwPreferencesGroup","reset_wifi_list",154,None,None,None,1,None),
|
(4,208,"AdwPreferencesGroup","reset_wifi_list",154,None,None,None,1,None),
|
||||||
(5,12,"AdwActionRow","resetWifiEntry",None,None,None,None,-1,None),
|
(5,12,"AdwActionRow","resetWifiEntry",None,None,None,None,-1,None),
|
||||||
(5,13,"GtkBox",None,12,None,None,None,None,None),
|
(5,13,"resetPopup","reset_wifi_popup",12,None,None,None,None,None),
|
||||||
(5,14,"GtkBox",None,13,None,None,None,None,None),
|
|
||||||
(5,15,"GtkImage","reset_wifi_strength",14,None,None,None,None,None),
|
|
||||||
(5,16,"GtkImage","reset_wifi_encrypted",14,None,None,None,1,None),
|
|
||||||
(5,18,"GtkLabel","reset_wifi_label",13,None,None,None,1,None),
|
|
||||||
(5,20,"GtkButton","reset_wifi_edit_button",13,None,None,None,3,None),
|
|
||||||
(5,21,"resetPopup","reset_wifi_popup",13,None,None,None,4,None),
|
|
||||||
(5,22,"GtkLabel","reset_wifi_connected",13,None,None,None,2,None),
|
|
||||||
(6,1,"GtkListBoxRow","resetSidebarEntry",None,None,None,None,None,None),
|
(6,1,"GtkListBoxRow","resetSidebarEntry",None,None,None,None,None,None),
|
||||||
(6,2,"GtkBox",None,1,None,None,None,-1,None),
|
(6,2,"GtkBox",None,1,None,None,None,-1,None),
|
||||||
(6,6,"GtkImage","reset_sidebar_image",2,None,None,None,None,None),
|
(6,6,"GtkImage","reset_sidebar_image",2,None,None,None,None,None),
|
||||||
|
@ -213,10 +207,6 @@
|
||||||
(16,12,"GtkButton","reset_popup_button",10,None,None,None,1,None),
|
(16,12,"GtkButton","reset_popup_button",10,None,None,None,1,None),
|
||||||
(16,13,"GtkLabel","reset_popup_label",7,None,None,None,None,None),
|
(16,13,"GtkLabel","reset_popup_label",7,None,None,None,None,None),
|
||||||
(17,5,"AdwActionRow","resetSavedWifiEntry",None,None,None,None,None,None),
|
(17,5,"AdwActionRow","resetSavedWifiEntry",None,None,None,None,None,None),
|
||||||
(17,7,"GtkBox",None,5,None,None,None,None,None),
|
|
||||||
(17,11,"GtkLabel","reset_saved_wifi_label",7,None,None,None,None,None),
|
|
||||||
(17,12,"GtkButton","reset_delete_saved_wifi_button",7,None,None,None,2,None),
|
|
||||||
(17,14,"GtkButton","reset_edit_saved_wifi_button",7,None,None,None,1,None),
|
|
||||||
(18,13,"AdwPreferencesGroup","resetSinkEntry",None,None,None,None,None,None),
|
(18,13,"AdwPreferencesGroup","resetSinkEntry",None,None,None,None,None,None),
|
||||||
(18,14,"AdwActionRow","reset_sink_name",13,None,None,None,None,None),
|
(18,14,"AdwActionRow","reset_sink_name",13,None,None,None,None,None),
|
||||||
(18,15,"GtkCheckButton","reset_selected_sink",14,None,None,None,None,None),
|
(18,15,"GtkCheckButton","reset_selected_sink",14,None,None,None,None,None),
|
||||||
|
@ -307,7 +297,11 @@
|
||||||
(23,8,"AdwEntryRow","reset_route_metric",6,None,None,None,1,None),
|
(23,8,"AdwEntryRow","reset_route_metric",6,None,None,None,1,None),
|
||||||
(23,9,"GtkBox",None,2,None,None,None,None,None),
|
(23,9,"GtkBox",None,2,None,None,None,None,None),
|
||||||
(23,10,"AdwEntryRow","reset_route_address",9,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)
|
(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)
|
||||||
</object>
|
</object>
|
||||||
<object_property>
|
<object_property>
|
||||||
(3,1,"GtkWidget","height-request","200",None,None,None,None,None,None,None,None,None),
|
(3,1,"GtkWidget","height-request","200",None,None,None,None,None,None,None,None,None),
|
||||||
|
@ -398,32 +392,6 @@
|
||||||
(4,207,"GtkWidget","margin-end","5",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,"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),
|
(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),
|
|
||||||
(5,15,"GtkImage","icon-name","network-wireless-signal-excellent-symbolic",None,None,None,None,None,None,None,None,None),
|
|
||||||
(5,16,"GtkImage","icon-name","system-lock-screen-symbolic",None,None,None,None,None,None,None,None,None),
|
|
||||||
(5,16,"GtkImage","pixel-size","9",None,None,None,None,None,None,None,None,None),
|
|
||||||
(5,16,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None),
|
|
||||||
(5,16,"GtkWidget","margin-bottom","6",None,None,None,None,None,None,None,None,None),
|
|
||||||
(5,16,"GtkWidget","valign","end",None,None,None,None,None,None,None,None,None),
|
|
||||||
(5,18,"GtkLabel","ellipsize","end",None,None,None,None,None,None,None,None,None),
|
|
||||||
(5,18,"GtkLabel","label","LoremIpsumInternet",None,None,None,None,None,None,None,None,None),
|
|
||||||
(5,18,"GtkLabel","single-line-mode","True",None,None,None,None,None,None,None,None,None),
|
|
||||||
(5,18,"GtkLabel","xalign","0.0",None,None,None,None,None,None,None,None,None),
|
|
||||||
(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,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","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,"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,1,"GtkWidget","css-classes","resetSidebarEntry",None,None,None,None,None,None,None,None,None),
|
||||||
(6,1,"GtkWidget","margin-bottom","2",None,None,None,None,None,None,None,None,None),
|
(6,1,"GtkWidget","margin-bottom","2",None,None,None,None,None,None,None,None,None),
|
||||||
|
@ -733,22 +701,6 @@
|
||||||
(16,12,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
|
(16,12,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
|
||||||
(16,13,"GtkWidget","visible","False",None,None,None,None,None,None,None,None,None),
|
(16,13,"GtkWidget","visible","False",None,None,None,None,None,None,None,None,None),
|
||||||
(17,5,"GtkListBoxRow","activatable","False",None,None,None,None,None,None,None,None,None),
|
(17,5,"GtkListBoxRow","activatable","False",None,None,None,None,None,None,None,None,None),
|
||||||
(17,5,"GtkListBoxRow","child",None,None,None,None,None,7,None,None,None,None),
|
|
||||||
(17,11,"GtkLabel","ellipsize","end",None,None,None,None,None,None,None,None,None),
|
|
||||||
(17,11,"GtkLabel","label","LoremIpsumInternet",None,None,None,None,None,None,None,None,None),
|
|
||||||
(17,11,"GtkLabel","single-line-mode","True",None,None,None,None,None,None,None,None,None),
|
|
||||||
(17,11,"GtkLabel","xalign","0.0",None,None,None,None,None,None,None,None,None),
|
|
||||||
(17,11,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
|
|
||||||
(17,11,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None),
|
|
||||||
(17,11,"GtkWidget","width-request","200",None,None,None,None,None,None,None,None,None),
|
|
||||||
(17,12,"GtkButton","has-frame","False",None,None,None,None,None,None,None,None,None),
|
|
||||||
(17,12,"GtkButton","icon-name","user-trash-symbolic",None,None,None,None,None,None,None,None,None),
|
|
||||||
(17,12,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None),
|
|
||||||
(17,12,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None),
|
|
||||||
(17,14,"GtkButton","has-frame","False",None,None,None,None,None,None,None,None,None),
|
|
||||||
(17,14,"GtkButton","icon-name","document-edit-symbolic",None,None,None,None,None,None,None,None,None),
|
|
||||||
(17,14,"GtkWidget","halign","end",None,None,None,None,None,None,None,None,None),
|
|
||||||
(17,14,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
|
|
||||||
(18,14,"AdwActionRow","title-lines","3",None,None,None,None,None,None,None,None,None),
|
(18,14,"AdwActionRow","title-lines","3",None,None,None,None,None,None,None,None,None),
|
||||||
(18,14,"AdwPreferencesRow","title","aaaaaaaaaaaaaaa",None,None,None,None,None,None,None,None,None),
|
(18,14,"AdwPreferencesRow","title","aaaaaaaaaaaaaaa",None,None,None,None,None,None,None,None,None),
|
||||||
(18,14,"GtkWidget","css-classes","audioRow",None,None,None,None,None,None,None,None,None),
|
(18,14,"GtkWidget","css-classes","audioRow",None,None,None,None,None,None,None,None,None),
|
||||||
|
@ -898,7 +850,22 @@
|
||||||
(23,10,"AdwPreferencesRow","title","Address",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,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,"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)
|
(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)
|
||||||
</object_property>
|
</object_property>
|
||||||
<object_data>
|
<object_data>
|
||||||
(3,42,"GtkWidget",1,1,None,None,None,None,None,None),
|
(3,42,"GtkWidget",1,1,None,None,None,None,None,None),
|
||||||
|
|
|
@ -1,64 +1,10 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<!-- Created with Cambalache 0.17.0 -->
|
<!-- Created with Cambalache 0.17.0 -->
|
||||||
<interface>
|
<interface>
|
||||||
<requires lib="gtk" version="4.12"/>
|
|
||||||
<requires lib="libadwaita" version="1.0"/>
|
<requires lib="libadwaita" version="1.0"/>
|
||||||
<template class="resetWifiEntry" parent="AdwActionRow">
|
<template class="resetWifiEntry" parent="AdwActionRow">
|
||||||
<property name="child">
|
<child>
|
||||||
<object class="GtkBox">
|
<object class="resetPopup" id="reset_wifi_popup"/>
|
||||||
<property name="margin-start">5</property>
|
</child>
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="width-request">35</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage" id="reset_wifi_strength">
|
|
||||||
<property name="icon-name">network-wireless-signal-excellent-symbolic</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage" id="reset_wifi_encrypted">
|
|
||||||
<property name="halign">start</property>
|
|
||||||
<property name="icon-name">system-lock-screen-symbolic</property>
|
|
||||||
<property name="margin-bottom">6</property>
|
|
||||||
<property name="pixel-size">9</property>
|
|
||||||
<property name="valign">end</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel" id="reset_wifi_label">
|
|
||||||
<property name="ellipsize">end</property>
|
|
||||||
<property name="hexpand">True</property>
|
|
||||||
<property name="label">LoremIpsumInternet</property>
|
|
||||||
<property name="margin-end">10</property>
|
|
||||||
<property name="single-line-mode">True</property>
|
|
||||||
<property name="width-request">200</property>
|
|
||||||
<property name="xalign">0.0</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel" id="reset_wifi_connected">
|
|
||||||
<property name="halign">end</property>
|
|
||||||
<property name="hexpand">True</property>
|
|
||||||
<property name="justify">right</property>
|
|
||||||
<property name="margin-end">10</property>
|
|
||||||
<property name="single-line-mode">True</property>
|
|
||||||
<property name="xalign">0.0</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="reset_wifi_edit_button">
|
|
||||||
<property name="halign">start</property>
|
|
||||||
<property name="has-frame">False</property>
|
|
||||||
<property name="icon-name">document-edit-symbolic</property>
|
|
||||||
<property name="valign">center</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="resetPopup" id="reset_wifi_popup"/>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</property>
|
|
||||||
</template>
|
</template>
|
||||||
</interface>
|
</interface>
|
||||||
|
|
Loading…
Reference in a new issue