mirror of
https://github.com/Xetibo/ReSet.git
synced 2025-04-18 18:48:33 +02:00
Merge branch 'dashie' into ina
This commit is contained in:
commit
831baee601
|
@ -1,17 +1,17 @@
|
||||||
use adw::glib;
|
use adw::glib;
|
||||||
use adw::glib::{IsA, Object};
|
use adw::glib::Object;
|
||||||
use gtk::Widget;
|
use gtk::{gdk, Editable, Popover};
|
||||||
|
|
||||||
use super::popupImpl;
|
use super::popupImpl;
|
||||||
|
|
||||||
glib::wrapper! {
|
glib::wrapper! {
|
||||||
pub struct Popup(ObjectSubclass<popupImpl::Popup>)
|
pub struct Popup(ObjectSubclass<popupImpl::Popup>)
|
||||||
@extends adw::Window, gtk::Widget,
|
@extends Popover, gtk::Widget,
|
||||||
@implements gtk::Accessible, gtk::Buildable, gtk::ConstraintTarget, gtk::Orientable;
|
@implements Editable,gdk::Popup, gtk::Accessible, gtk::Buildable, gtk::ConstraintTarget, gtk::Orientable;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Popup {
|
impl Popup {
|
||||||
pub fn new(child: &impl IsA<Widget>) -> Self {
|
pub fn new() -> Self {
|
||||||
let popup: Popup = Object::builder().build();
|
let popup: Popup = Object::builder().build();
|
||||||
// popup.set_child(child);
|
// popup.set_child(child);
|
||||||
popup
|
popup
|
||||||
|
|
|
@ -1,19 +1,41 @@
|
||||||
|
use std::cell::RefCell;
|
||||||
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
use adw::subclass::prelude::{ActionRowImpl, PreferencesRowImpl};
|
||||||
use adw::subclass::window::AdwWindowImpl;
|
use adw::subclass::window::AdwWindowImpl;
|
||||||
|
use gtk::gdk_pixbuf::subclass::prelude::{
|
||||||
|
PixbufAnimationImpl, PixbufAnimationIterImpl, PixbufLoaderImpl,
|
||||||
|
};
|
||||||
|
use gtk::prelude::PopupExt;
|
||||||
use gtk::subclass::prelude::*;
|
use gtk::subclass::prelude::*;
|
||||||
use gtk::{glib, CompositeTemplate};
|
use gtk::{
|
||||||
|
gdk, glib, Button, CompositeTemplate, Entry, EntryBuffer, Label, PasswordEntry,
|
||||||
|
PasswordEntryBuffer, Popover,
|
||||||
|
};
|
||||||
|
|
||||||
use super::popup;
|
use super::popup;
|
||||||
|
|
||||||
#[allow(non_snake_case)]
|
#[allow(non_snake_case)]
|
||||||
#[derive(Default, CompositeTemplate)]
|
#[derive(Default, CompositeTemplate)]
|
||||||
#[template(resource = "/org/Xetibo/ReSet/resetPopup.ui")]
|
#[template(resource = "/org/Xetibo/ReSet/resetPopup.ui")]
|
||||||
pub struct Popup {}
|
pub struct Popup {
|
||||||
|
#[template_child]
|
||||||
|
pub resetPopupLabel: TemplateChild<Label>,
|
||||||
|
#[template_child]
|
||||||
|
pub resetPopupEntry: TemplateChild<PasswordEntry>,
|
||||||
|
#[template_child]
|
||||||
|
pub resetPopupButton: TemplateChild<Button>,
|
||||||
|
pub resetPopupText: Arc<RefCell<PasswordEntryBuffer>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
unsafe impl Send for Popup {}
|
||||||
|
unsafe impl Sync for Popup {}
|
||||||
|
|
||||||
#[glib::object_subclass]
|
#[glib::object_subclass]
|
||||||
impl ObjectSubclass for Popup {
|
impl ObjectSubclass for Popup {
|
||||||
const NAME: &'static str = "resetPopup";
|
const NAME: &'static str = "resetPopup";
|
||||||
type Type = popup::Popup;
|
type Type = popup::Popup;
|
||||||
type ParentType = adw::Window;
|
type ParentType = Popover;
|
||||||
|
|
||||||
fn class_init(klass: &mut Self::Class) {
|
fn class_init(klass: &mut Self::Class) {
|
||||||
klass.bind_template();
|
klass.bind_template();
|
||||||
|
@ -30,12 +52,12 @@ impl ObjectImpl for Popup {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl BoxImpl for Popup {}
|
|
||||||
|
|
||||||
impl WidgetImpl for Popup {}
|
impl WidgetImpl for Popup {}
|
||||||
|
|
||||||
impl AdwWindowImpl for Popup {}
|
|
||||||
|
|
||||||
impl WindowImpl for Popup {}
|
impl WindowImpl for Popup {}
|
||||||
|
|
||||||
|
impl PopoverImpl for Popup {}
|
||||||
|
|
||||||
impl ApplicationWindowImpl for Popup {}
|
impl ApplicationWindowImpl for Popup {}
|
||||||
|
|
||||||
|
impl EditableImpl for Popup {}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#![allow(non_snake_case)]
|
#![allow(non_snake_case)]
|
||||||
|
pub mod savedWifiEntry;
|
||||||
pub mod wifiBox;
|
pub mod wifiBox;
|
||||||
pub mod wifiBoxImpl;
|
pub mod wifiBoxImpl;
|
||||||
pub mod wifiEntry;
|
pub mod wifiEntry;
|
||||||
pub mod wifiEntryImpl;
|
pub mod wifiEntryImpl;
|
||||||
|
pub mod savedWifiEntryImpl;
|
||||||
|
|
46
src/components/wifi/savedWifiEntry.rs
Normal file
46
src/components/wifi/savedWifiEntry.rs
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
use std::sync::Arc;
|
||||||
|
use std::time::Duration;
|
||||||
|
|
||||||
|
use crate::components::wifi::savedWifiEntryImpl;
|
||||||
|
use adw::glib;
|
||||||
|
use adw::glib::Object;
|
||||||
|
use adw::prelude::{ButtonExt, WidgetExt};
|
||||||
|
use dbus::{Error, Path};
|
||||||
|
use dbus::blocking::Connection;
|
||||||
|
use glib::{clone, PropertySet};
|
||||||
|
use glib::subclass::types::ObjectSubclassIsExt;
|
||||||
|
|
||||||
|
glib::wrapper! {
|
||||||
|
pub struct SavedWifiEntry(ObjectSubclass<savedWifiEntryImpl::SavedWifiEntry>)
|
||||||
|
@extends gtk::Box, gtk::Widget,
|
||||||
|
@implements gtk::Accessible, gtk::Buildable, gtk::Actionable, gtk::ConstraintTarget;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl SavedWifiEntry {
|
||||||
|
pub fn new(name: &String, path: Path<'static>) -> Self {
|
||||||
|
let entry: SavedWifiEntry = Object::builder().build();
|
||||||
|
let entryImp = entry.imp();
|
||||||
|
// TODO handle edit
|
||||||
|
entryImp.resetSavedWifiLabel.set_text(name);
|
||||||
|
entryImp.resetConnectionPath.set(path);
|
||||||
|
entryImp.resetDeleteSavedWifiButton.connect_clicked(clone!(@weak entry as entry => move |_| {
|
||||||
|
let conn = Connection::new_session().unwrap();
|
||||||
|
let proxy = conn.with_proxy(
|
||||||
|
"org.xetibo.ReSet",
|
||||||
|
"/org/xetibo/ReSet",
|
||||||
|
Duration::from_millis(1000),
|
||||||
|
);
|
||||||
|
let res: Result<(bool,), Error> = proxy.method_call("org.xetibo.ReSet", "DeleteConnection", (entry.imp().resetConnectionPath.take(),));
|
||||||
|
if res.is_err() || res.unwrap() == (false,) {
|
||||||
|
// TODO handle error -> inform user
|
||||||
|
println!("no worky");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
println!("worked, should be ded");
|
||||||
|
let parent = entry.parent().unwrap();
|
||||||
|
parent.set_visible(false);
|
||||||
|
parent.unparent();
|
||||||
|
}));
|
||||||
|
entry
|
||||||
|
}
|
||||||
|
}
|
52
src/components/wifi/savedWifiEntryImpl.rs
Normal file
52
src/components/wifi/savedWifiEntryImpl.rs
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
use std::cell::RefCell;
|
||||||
|
|
||||||
|
use dbus::Path;
|
||||||
|
use gtk::subclass::prelude::*;
|
||||||
|
use gtk::{glib, Button, CompositeTemplate, Label};
|
||||||
|
|
||||||
|
use super::savedWifiEntry;
|
||||||
|
|
||||||
|
#[allow(non_snake_case)]
|
||||||
|
#[derive(Default, CompositeTemplate)]
|
||||||
|
#[template(resource = "/org/Xetibo/ReSet/resetSavedWifiEntry.ui")]
|
||||||
|
pub struct SavedWifiEntry {
|
||||||
|
#[template_child]
|
||||||
|
pub resetDeleteSavedWifiButton: TemplateChild<Button>,
|
||||||
|
#[template_child]
|
||||||
|
pub resetEditSavedWifiButton: TemplateChild<Button>,
|
||||||
|
#[template_child]
|
||||||
|
pub resetSavedWifiLabel: TemplateChild<Label>,
|
||||||
|
pub resetConnectionPath: RefCell<Path<'static>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
unsafe impl Send for SavedWifiEntry {}
|
||||||
|
unsafe impl Sync for SavedWifiEntry {}
|
||||||
|
|
||||||
|
#[glib::object_subclass]
|
||||||
|
impl ObjectSubclass for SavedWifiEntry {
|
||||||
|
const NAME: &'static str = "resetSavedWifiEntry";
|
||||||
|
type Type = savedWifiEntry::SavedWifiEntry;
|
||||||
|
type ParentType = gtk::Box;
|
||||||
|
|
||||||
|
fn class_init(klass: &mut Self::Class) {
|
||||||
|
klass.bind_template();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn instance_init(obj: &glib::subclass::InitializingObject<Self>) {
|
||||||
|
obj.init_template();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ObjectImpl for SavedWifiEntry {
|
||||||
|
fn constructed(&self) {
|
||||||
|
self.parent_constructed();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl BoxImpl for SavedWifiEntry {}
|
||||||
|
|
||||||
|
impl WidgetImpl for SavedWifiEntry {}
|
||||||
|
|
||||||
|
impl WindowImpl for SavedWifiEntry {}
|
||||||
|
|
||||||
|
impl ApplicationWindowImpl for SavedWifiEntry {}
|
|
@ -6,19 +6,26 @@ use std::time::Duration;
|
||||||
use crate::components::base::listEntry::ListEntry;
|
use crate::components::base::listEntry::ListEntry;
|
||||||
use adw::glib;
|
use adw::glib;
|
||||||
use adw::glib::Object;
|
use adw::glib::Object;
|
||||||
|
use adw::prelude::{BoxExt, ButtonExt, ListBoxRowExt};
|
||||||
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 dbus::Path;
|
use dbus::Path;
|
||||||
use gtk::glib::Variant;
|
use gtk::glib::Variant;
|
||||||
use gtk::prelude::ActionableExt;
|
use gtk::prelude::ActionableExt;
|
||||||
use ReSet_Lib::network::network::AccessPoint;
|
|
||||||
use ReSet_Lib::signals::{AccessPointAdded, AccessPointRemoved};
|
use gtk::{Button, Label, Orientation};
|
||||||
|
use ReSet_Lib::network::network::{AccessPoint, WifiStrength};
|
||||||
|
use ReSet_Lib::signals::{
|
||||||
|
AccessPointAdded, AccessPointRemoved, BluetoothDeviceAdded, BluetoothDeviceRemoved,
|
||||||
|
};
|
||||||
use ReSet_Lib::utils::Events;
|
use ReSet_Lib::utils::Events;
|
||||||
|
|
||||||
use crate::components::wifi::wifiBoxImpl;
|
use crate::components::wifi::wifiBoxImpl;
|
||||||
use crate::components::wifi::wifiEntry::WifiEntry;
|
use crate::components::wifi::wifiEntry::WifiEntry;
|
||||||
|
|
||||||
|
use super::savedWifiEntry::SavedWifiEntry;
|
||||||
|
|
||||||
glib::wrapper! {
|
glib::wrapper! {
|
||||||
pub struct WifiBox(ObjectSubclass<wifiBoxImpl::WifiBox>)
|
pub struct WifiBox(ObjectSubclass<wifiBoxImpl::WifiBox>)
|
||||||
@extends gtk::Box, gtk::Widget,
|
@extends gtk::Box, gtk::Widget,
|
||||||
|
@ -40,18 +47,18 @@ impl WifiBox {
|
||||||
selfImp.resetWifiSwitchRow.set_action_target_value(Some(&Variant::from("saved")))
|
selfImp.resetWifiSwitchRow.set_action_target_value(Some(&Variant::from("saved")))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn donotdisturb() {
|
// pub fn donotdisturb() {
|
||||||
thread::spawn(|| {
|
// thread::spawn(|| {
|
||||||
let conn = Connection::new_session().unwrap();
|
// let conn = Connection::new_session().unwrap();
|
||||||
let proxy = conn.with_proxy(
|
// let proxy = conn.with_proxy(
|
||||||
"org.freedesktop.Notifications",
|
// "org.freedesktop.Notifications",
|
||||||
"/org/freedesktop/Notifications",
|
// "/org/freedesktop/Notifications",
|
||||||
Duration::from_millis(1000),
|
// Duration::from_millis(1000),
|
||||||
);
|
// );
|
||||||
let _: Result<(), Error> =
|
// let _: Result<(), Error> =
|
||||||
proxy.method_call("org.freedesktop.Notifications", "DoNotDisturb", ());
|
// proxy.method_call("org.freedesktop.Notifications", "DoNotDisturb", ());
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn scanForWifi(wifiBox: Arc<WifiBox>) {
|
pub fn scanForWifi(wifiBox: Arc<WifiBox>) {
|
||||||
|
@ -59,7 +66,7 @@ pub fn scanForWifi(wifiBox: Arc<WifiBox>) {
|
||||||
let wifiEntries = wifiBox.imp().wifiEntries.clone();
|
let wifiEntries = wifiBox.imp().wifiEntries.clone();
|
||||||
|
|
||||||
glib::spawn_future_local(async move {
|
glib::spawn_future_local(async move {
|
||||||
let accessPoints = wat().await;
|
let accessPoints = get_access_points().await;
|
||||||
let wifiEntries = wifiEntries.clone();
|
let wifiEntries = wifiEntries.clone();
|
||||||
{
|
{
|
||||||
let mut wifiEntries = wifiEntries.lock().unwrap();
|
let mut wifiEntries = wifiEntries.lock().unwrap();
|
||||||
|
@ -103,7 +110,37 @@ pub fn scanForWifi(wifiBox: Arc<WifiBox>) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
pub async fn wat() -> Vec<AccessPoint> {
|
|
||||||
|
pub fn show_stored_connections(wifiBox: Arc<WifiBox>) {
|
||||||
|
let wifibox_ref = wifiBox.clone();
|
||||||
|
let wifiEntries = wifiBox.imp().savedWifiEntries.clone();
|
||||||
|
|
||||||
|
glib::spawn_future_local(async move {
|
||||||
|
let connections = get_stored_connections().await;
|
||||||
|
let wifiEntries = wifiEntries.clone();
|
||||||
|
{
|
||||||
|
let mut wifiEntries = wifiEntries.lock().unwrap();
|
||||||
|
for connection in connections {
|
||||||
|
// TODO include button for settings
|
||||||
|
let name = &String::from_utf8(connection.1).unwrap_or_else(|_| String::from(""));
|
||||||
|
let entry = ListEntry::new(&SavedWifiEntry::new(name, connection.0));
|
||||||
|
entry.set_activatable(false);
|
||||||
|
wifiEntries.push(entry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
glib::MainContext::default().spawn_local(async move {
|
||||||
|
glib::idle_add_once(move || {
|
||||||
|
let wifiEntries = wifiEntries.lock().unwrap();
|
||||||
|
let selfImp = wifibox_ref.imp();
|
||||||
|
for wifiEntry in wifiEntries.iter() {
|
||||||
|
selfImp.resetStoredWifiList.append(wifiEntry);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn get_access_points() -> Vec<AccessPoint> {
|
||||||
let conn = Connection::new_session().unwrap();
|
let conn = Connection::new_session().unwrap();
|
||||||
let proxy = conn.with_proxy(
|
let proxy = conn.with_proxy(
|
||||||
"org.xetibo.ReSet",
|
"org.xetibo.ReSet",
|
||||||
|
@ -118,3 +155,21 @@ pub async fn wat() -> Vec<AccessPoint> {
|
||||||
let (accessPoints,) = res.unwrap();
|
let (accessPoints,) = res.unwrap();
|
||||||
accessPoints
|
accessPoints
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn get_stored_connections() -> Vec<(Path<'static>, Vec<u8>)> {
|
||||||
|
let conn = Connection::new_session().unwrap();
|
||||||
|
let proxy = conn.with_proxy(
|
||||||
|
"org.xetibo.ReSet",
|
||||||
|
"/org/xetibo/ReSet",
|
||||||
|
Duration::from_millis(1000),
|
||||||
|
);
|
||||||
|
let res: Result<(Vec<(Path<'static>, Vec<u8>)>,), Error> =
|
||||||
|
proxy.method_call("org.xetibo.ReSet", "ListStoredConnections", ());
|
||||||
|
if res.is_err() {
|
||||||
|
println!("we got error...");
|
||||||
|
return Vec::new();
|
||||||
|
}
|
||||||
|
let (connections,) = res.unwrap();
|
||||||
|
dbg!(connections.clone());
|
||||||
|
connections
|
||||||
|
}
|
||||||
|
|
|
@ -26,7 +26,10 @@ pub struct WifiBox {
|
||||||
pub resetWifiList: TemplateChild<ListBox>,
|
pub resetWifiList: TemplateChild<ListBox>,
|
||||||
#[template_child]
|
#[template_child]
|
||||||
pub resetWifiAdvanced: TemplateChild<Button>,
|
pub resetWifiAdvanced: TemplateChild<Button>,
|
||||||
|
#[template_child]
|
||||||
|
pub resetStoredWifiList: TemplateChild<ListBox>,
|
||||||
pub wifiEntries: Arc<Mutex<Vec<ListEntry>>>,
|
pub wifiEntries: Arc<Mutex<Vec<ListEntry>>>,
|
||||||
|
pub savedWifiEntries: Arc<Mutex<Vec<ListEntry>>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe impl Send for WifiBox {}
|
unsafe impl Send for WifiBox {}
|
||||||
|
|
|
@ -1,12 +1,15 @@
|
||||||
|
use crate::components::base::popup::{self, Popup};
|
||||||
use crate::components::wifi::wifiEntryImpl;
|
use crate::components::wifi::wifiEntryImpl;
|
||||||
use adw::glib;
|
use adw::glib;
|
||||||
use adw::glib::{Object, PropertySet};
|
use adw::glib::{Object, PropertySet};
|
||||||
|
use adw::prelude::{ButtonExt, EditableExt, EntryExt, PopoverExt};
|
||||||
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, Cast};
|
||||||
use gtk::prelude::WidgetExt;
|
use gtk::prelude::WidgetExt;
|
||||||
use gtk::GestureClick;
|
use gtk::{AlertDialog, Editable, GestureClick, PasswordEntry, PasswordEntryBuffer, Window};
|
||||||
|
use std::sync::atomic::AtomicBool;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
use ReSet_Lib::network::network::{AccessPoint, WifiStrength};
|
use ReSet_Lib::network::network::{AccessPoint, WifiStrength};
|
||||||
|
@ -75,6 +78,14 @@ impl WifiEntry {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn click_stored_network(entry: Arc<WifiEntry>) {
|
pub fn click_stored_network(entry: Arc<WifiEntry>) {
|
||||||
|
let alert = AlertDialog::builder().build();
|
||||||
|
let root = &entry.root().unwrap();
|
||||||
|
let root = root.downcast_ref::<gtk::Window>();
|
||||||
|
if root.is_none() {
|
||||||
|
println!("ERROR BRO");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let root = root.unwrap();
|
||||||
// TODO handle unknown access point -> should be done by having 2 different categories
|
// TODO handle unknown access point -> should be done by having 2 different categories
|
||||||
let entryImp = entry.imp();
|
let entryImp = entry.imp();
|
||||||
let conn = Connection::new_session().unwrap();
|
let conn = Connection::new_session().unwrap();
|
||||||
|
@ -88,12 +99,14 @@ pub fn click_stored_network(entry: Arc<WifiEntry>) {
|
||||||
let res: Result<(bool,), Error> =
|
let res: Result<(bool,), Error> =
|
||||||
proxy.method_call("org.xetibo.ReSet", "DisconnectFromCurrentAccessPoint", ());
|
proxy.method_call("org.xetibo.ReSet", "DisconnectFromCurrentAccessPoint", ());
|
||||||
if res.is_err() {
|
if res.is_err() {
|
||||||
// TODO handle error
|
alert.set_message("Error on connecting to dbus.");
|
||||||
println!("no worky");
|
alert.show(Some(root));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let (res,) = res.unwrap();
|
let (res,) = res.unwrap();
|
||||||
if res == false {
|
if res == false {
|
||||||
|
alert.set_message("Could not disconnect from access point.");
|
||||||
|
alert.show(Some(root));
|
||||||
} else {
|
} else {
|
||||||
entryImp.resetWifiConnected.get().set_from_icon_name(None);
|
entryImp.resetWifiConnected.get().set_from_icon_name(None);
|
||||||
let mut access_point = entryImp.accessPoint.borrow_mut();
|
let mut access_point = entryImp.accessPoint.borrow_mut();
|
||||||
|
@ -108,14 +121,14 @@ pub fn click_stored_network(entry: Arc<WifiEntry>) {
|
||||||
(access_point,),
|
(access_point,),
|
||||||
);
|
);
|
||||||
if res.is_err() {
|
if res.is_err() {
|
||||||
// TODO handle error
|
alert.set_message("Error on connecting to dbus.");
|
||||||
println!("no worky");
|
alert.show(Some(root));
|
||||||
} else {
|
} else {
|
||||||
let (res,) = res.unwrap();
|
let (res,) = res.unwrap();
|
||||||
if res == false {
|
if res == false {
|
||||||
println!("no worky but it connected");
|
alert.set_message("Could not connect to access point.");
|
||||||
|
alert.show(Some(root));
|
||||||
} else {
|
} else {
|
||||||
println!("worky");
|
|
||||||
entryImp
|
entryImp
|
||||||
.resetWifiConnected
|
.resetWifiConnected
|
||||||
.get()
|
.get()
|
||||||
|
@ -127,5 +140,76 @@ pub fn click_stored_network(entry: Arc<WifiEntry>) {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn click_new_network(entry: Arc<WifiEntry>) {
|
pub fn click_new_network(entry: Arc<WifiEntry>) {
|
||||||
println!("Not implemented yet :)");
|
let connect_new_network =
|
||||||
|
|result: Arc<AtomicBool>, entry: Arc<WifiEntry>, access_point: AccessPoint, password: String| {
|
||||||
|
let entry_ref = entry.clone();
|
||||||
|
let popup = entry.imp().resetWifiPopup.imp();
|
||||||
|
popup.resetPopupLabel.set_text("Connecting...");
|
||||||
|
popup.resetPopupLabel.set_visible(true);
|
||||||
|
popup.resetPopupEntry.set_sensitive(false);
|
||||||
|
popup.resetPopupButton.set_sensitive(false);
|
||||||
|
|
||||||
|
glib::spawn_future_local(async move {
|
||||||
|
let conn = Connection::new_session().unwrap();
|
||||||
|
let proxy = conn.with_proxy(
|
||||||
|
"org.xetibo.ReSet",
|
||||||
|
"/org/xetibo/ReSet",
|
||||||
|
Duration::from_millis(10000),
|
||||||
|
);
|
||||||
|
let res: Result<(bool,), Error> = proxy.method_call(
|
||||||
|
"org.xetibo.ReSet",
|
||||||
|
"ConnectToNewAccessPoint",
|
||||||
|
(access_point, password),
|
||||||
|
);
|
||||||
|
glib::MainContext::default().spawn_local(async move {
|
||||||
|
glib::idle_add_once(move || {
|
||||||
|
if res.is_err() {
|
||||||
|
entry_ref
|
||||||
|
.imp()
|
||||||
|
.resetWifiPopup
|
||||||
|
.imp()
|
||||||
|
.resetPopupLabel
|
||||||
|
.set_text("Could not connect to dbus.");
|
||||||
|
result.store(false, std::sync::atomic::Ordering::SeqCst);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if res.unwrap() == (false,) {
|
||||||
|
entry_ref
|
||||||
|
.imp()
|
||||||
|
.resetWifiPopup
|
||||||
|
.imp()
|
||||||
|
.resetPopupLabel
|
||||||
|
.set_text("Could not connect to access point.");
|
||||||
|
result.store(false, std::sync::atomic::Ordering::SeqCst);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
entry_ref.imp().resetWifiPopup.popdown();
|
||||||
|
result.store(true, std::sync::atomic::Ordering::SeqCst);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
// TODO crate spinner animation and block UI
|
||||||
|
};
|
||||||
|
|
||||||
|
let result = Arc::new(AtomicBool::new(false));
|
||||||
|
let result_ref = result.clone();
|
||||||
|
let result_ref_button = result.clone();
|
||||||
|
let entryImp = entry.imp();
|
||||||
|
let popupImp = entryImp.resetWifiPopup.imp();
|
||||||
|
popupImp
|
||||||
|
.resetPopupEntry
|
||||||
|
.connect_activate(clone!(@weak entry as origEntry, @weak entryImp => move |entry| {
|
||||||
|
connect_new_network(result_ref.clone(), origEntry, entryImp.accessPoint.clone().take(), entry.text().to_string());
|
||||||
|
}));
|
||||||
|
popupImp.resetPopupButton.connect_clicked(
|
||||||
|
clone!(@weak entry as origEntry,@weak entryImp, @weak popupImp => move |_| {
|
||||||
|
let entry = entryImp.resetWifiPopup.imp().resetPopupEntry.text().to_string();
|
||||||
|
connect_new_network(result_ref_button.clone(), origEntry, entryImp.accessPoint.clone().take(), entry);
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
entryImp.resetWifiPopup.popup();
|
||||||
|
println!(
|
||||||
|
"result is {}",
|
||||||
|
result.load(std::sync::atomic::Ordering::SeqCst)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
use std::cell::RefCell;
|
use crate::components::base::popup::Popup;
|
||||||
use ReSet_Lib::network::network::{WifiStrength, AccessPoint};
|
|
||||||
use gtk::{Button, CompositeTemplate, glib, Image, Label, Gesture, GestureClick};
|
|
||||||
use gtk::subclass::prelude::*;
|
|
||||||
use crate::components::wifi::wifiEntry;
|
use crate::components::wifi::wifiEntry;
|
||||||
|
use gtk::subclass::prelude::*;
|
||||||
|
use gtk::{glib, Button, CompositeTemplate, Image, Label};
|
||||||
|
use std::cell::RefCell;
|
||||||
|
use ReSet_Lib::network::network::{AccessPoint, WifiStrength};
|
||||||
|
|
||||||
#[allow(non_snake_case)]
|
#[allow(non_snake_case)]
|
||||||
#[derive(Default, CompositeTemplate)]
|
#[derive(Default, CompositeTemplate)]
|
||||||
|
@ -20,6 +21,8 @@ pub struct WifiEntry {
|
||||||
pub resetWifiConnected: TemplateChild<Image>,
|
pub resetWifiConnected: TemplateChild<Image>,
|
||||||
#[template_child]
|
#[template_child]
|
||||||
pub resetWifiStored: TemplateChild<Image>,
|
pub resetWifiStored: TemplateChild<Image>,
|
||||||
|
#[template_child]
|
||||||
|
pub resetWifiPopup: TemplateChild<Popup>,
|
||||||
pub wifiName: RefCell<String>,
|
pub wifiName: RefCell<String>,
|
||||||
pub wifiStrength: RefCell<WifiStrength>,
|
pub wifiStrength: RefCell<WifiStrength>,
|
||||||
pub accessPoint: RefCell<AccessPoint>,
|
pub accessPoint: RefCell<AccessPoint>,
|
||||||
|
|
|
@ -1,13 +1,17 @@
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use gtk::{FlowBox, Label};
|
|
||||||
use crate::components::audio::audioBox::AudioBox;
|
use crate::components::audio::audioBox::AudioBox;
|
||||||
use crate::components::bluetooth::bluetoothBox::BluetoothBox;
|
|
||||||
use crate::components::base::settingBox::SettingBox;
|
use crate::components::base::settingBox::SettingBox;
|
||||||
use crate::components::wifi::wifiBox::{WifiBox, scanForWifi};
|
use crate::components::bluetooth::bluetoothBox::BluetoothBox;
|
||||||
|
use crate::components::wifi::wifiBox::{scanForWifi, show_stored_connections, WifiBox};
|
||||||
|
use adw::prelude::ButtonExt;
|
||||||
|
use glib::clone;
|
||||||
|
use glib::subclass::types::ObjectSubclassIsExt;
|
||||||
|
use gtk::{FlowBox, Label};
|
||||||
|
|
||||||
pub const HANDLE_CONNECTIVITY_CLICK: fn(FlowBox) = |resetMain: FlowBox| {
|
pub const HANDLE_CONNECTIVITY_CLICK: fn(FlowBox) = |resetMain: FlowBox| {
|
||||||
let wifiBox = Arc::new(WifiBox::new());
|
let wifiBox = Arc::new(WifiBox::new());
|
||||||
|
show_stored_connections(wifiBox.clone());
|
||||||
scanForWifi(wifiBox.clone());
|
scanForWifi(wifiBox.clone());
|
||||||
let wifiBox = SettingBox::new(&*wifiBox, "WiFi");
|
let wifiBox = SettingBox::new(&*wifiBox, "WiFi");
|
||||||
let bluetoothBox = SettingBox::new(&BluetoothBox::new(), "Bluetooth");
|
let bluetoothBox = SettingBox::new(&BluetoothBox::new(), "Bluetooth");
|
||||||
|
@ -61,6 +65,10 @@ pub const HANDLE_MICROPHONE_CLICK: fn(FlowBox) = |resetMain: FlowBox| {
|
||||||
resetMain.set_max_children_per_line(1);
|
resetMain.set_max_children_per_line(1);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pub const HANDLE_HOME: fn(FlowBox) = |resetMain: FlowBox| {
|
||||||
|
resetMain.remove_all();
|
||||||
|
};
|
||||||
|
|
||||||
pub const HANDLE_PERIPHERALS_CLICK: fn(FlowBox) = |resetMain: FlowBox| {
|
pub const HANDLE_PERIPHERALS_CLICK: fn(FlowBox) = |resetMain: FlowBox| {
|
||||||
let label = Label::new(Some("not implemented yet"));
|
let label = Label::new(Some("not implemented yet"));
|
||||||
resetMain.remove_all();
|
resetMain.remove_all();
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
|
||||||
<!-- Created with Cambalache 0.17.0 -->
|
|
||||||
<interface>
|
|
||||||
<requires lib="gtk" version="4.12"/>
|
|
||||||
<requires lib="libadwaita" version="1.0"/>
|
|
||||||
<template class="resetPasswordPopup" parent="AdwWindow">
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<child>
|
|
||||||
<object class="GtkEntry" id="resetWifiPasswordEntry">
|
|
||||||
<property name="activates-default">True</property>
|
|
||||||
<property name="invisible-char-set">True</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="resetWifiPasswordButton">
|
|
||||||
<property name="label">connect</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</template>
|
|
||||||
</interface>
|
|
|
@ -2,19 +2,38 @@
|
||||||
<!-- Created with Cambalache 0.17.0 -->
|
<!-- Created with Cambalache 0.17.0 -->
|
||||||
<interface>
|
<interface>
|
||||||
<requires lib="gtk" version="4.12"/>
|
<requires lib="gtk" version="4.12"/>
|
||||||
<requires lib="libadwaita" version="1.0"/>
|
<template class="resetPopup" parent="GtkPopover">
|
||||||
<template class="resetPopup" parent="AdwWindow">
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
|
<property name="homogeneous">True</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkEntry" id="resetPopopEntry">
|
<object class="GtkLabel" id="resetPopupLabel">
|
||||||
<property name="activates-default">True</property>
|
<property name="visible">False</property>
|
||||||
<property name="invisible-char-set">True</property>
|
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="resetPopopButton">
|
<object class="GtkBox">
|
||||||
|
<child>
|
||||||
|
<object class="GtkPasswordEntry" id="resetPopupEntry">
|
||||||
|
<property name="activates-default">True</property>
|
||||||
|
<property name="margin-bottom">5</property>
|
||||||
|
<property name="margin-end">5</property>
|
||||||
|
<property name="margin-start">5</property>
|
||||||
|
<property name="margin-top">5</property>
|
||||||
|
<property name="placeholder-text">Wifi Password</property>
|
||||||
|
<property name="show-peek-icon">True</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="resetPopupButton">
|
||||||
<property name="label">connect</property>
|
<property name="label">connect</property>
|
||||||
|
<property name="margin-bottom">5</property>
|
||||||
|
<property name="margin-end">5</property>
|
||||||
|
<property name="margin-start">5</property>
|
||||||
|
<property name="margin-top">5</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
|
|
23
src/resources/resetSavedWifiEntry.ui
Normal file
23
src/resources/resetSavedWifiEntry.ui
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!-- Created with Cambalache 0.17.0 -->
|
||||||
|
<interface>
|
||||||
|
<requires lib="gtk" version="4.12"/>
|
||||||
|
<template class="resetSavedWifiEntry" parent="GtkBox">
|
||||||
|
<property name="spacing">5</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="resetDeleteSavedWifiButton">
|
||||||
|
<property name="has-frame">False</property>
|
||||||
|
<property name="icon-name">user-trash-symbolic</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="resetEditSavedWifiButton">
|
||||||
|
<property name="has-frame">False</property>
|
||||||
|
<property name="icon-name">document-edit-symbolic</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="resetSavedWifiLabel"/>
|
||||||
|
</child>
|
||||||
|
</template>
|
||||||
|
</interface>
|
|
@ -11,5 +11,10 @@
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
<property name="width-request">500</property>
|
<property name="width-request">500</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="resetSettingLabel">
|
||||||
|
<property name="css-classes">resetSettingLabel</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
</template>
|
</template>
|
||||||
</interface>
|
</interface>
|
||||||
|
|
|
@ -14,7 +14,8 @@
|
||||||
(13,1,None,"resetMicSourceEntry.ui",None,None,None,None,None,None,None),
|
(13,1,None,"resetMicSourceEntry.ui",None,None,None,None,None,None,None),
|
||||||
(14,2,None,"resetSettingBox.ui",None,None,None,None,None,None,None),
|
(14,2,None,"resetSettingBox.ui",None,None,None,None,None,None,None),
|
||||||
(15,1,None,"resetListBoxRow.ui",None,None,None,None,None,None,None),
|
(15,1,None,"resetListBoxRow.ui",None,None,None,None,None,None,None),
|
||||||
(16,1,None,"resetPopup.ui",None,None,None,None,None,None,None)
|
(16,6,None,"resetPopup.ui",None,None,None,None,None,None,None),
|
||||||
|
(17,1,None,"resetSavedWifiEntry.ui",None,None,None,None,None,None,None)
|
||||||
</ui>
|
</ui>
|
||||||
<object>
|
<object>
|
||||||
(3,1,"AdwApplicationWindow","resetUI",None,None,None,None,-1," <child>\n <object id=\"resetSidebarBreakpoint\" class=\"AdwBreakpoint\">\n </object>\n </child>"),
|
(3,1,"AdwApplicationWindow","resetUI",None,None,None,None,-1," <child>\n <object id=\"resetSidebarBreakpoint\" class=\"AdwBreakpoint\">\n </object>\n </child>"),
|
||||||
|
@ -34,8 +35,8 @@
|
||||||
(3,34,"GtkBox","resetPath",25,None,None,None,3,None),
|
(3,34,"GtkBox","resetPath",25,None,None,None,3,None),
|
||||||
(3,35,"GtkPopoverMenu","resetPopoverMenu",33,None,None,None,-1,None),
|
(3,35,"GtkPopoverMenu","resetPopoverMenu",33,None,None,None,-1,None),
|
||||||
(3,36,"GtkBox",None,35,None,None,None,-1,None),
|
(3,36,"GtkBox",None,35,None,None,None,-1,None),
|
||||||
(3,38,"GtkButton","resetPreferenceButton",36,None,None,None,1,None),
|
(3,38,"GtkButton","resetPreferenceButton",36,None,None,None,2,None),
|
||||||
(3,39,"GtkButton","resetAboutButton",36,None,None,None,2,None),
|
(3,39,"GtkButton","resetAboutButton",36,None,None,None,1,None),
|
||||||
(3,40,"GtkScrolledWindow",None,18,None,None,None,1,None),
|
(3,40,"GtkScrolledWindow",None,18,None,None,None,1,None),
|
||||||
(3,41,"GtkViewport",None,40,None,None,None,None,None),
|
(3,41,"GtkViewport",None,40,None,None,None,None,None),
|
||||||
(3,42,"GtkListBox","resetSidebarList",41,None,None,None,None,None),
|
(3,42,"GtkListBox","resetSidebarList",41,None,None,None,None,None),
|
||||||
|
@ -83,6 +84,7 @@
|
||||||
(5,7,"GtkButton","resetWifiButton",2,None,None,None,4,None),
|
(5,7,"GtkButton","resetWifiButton",2,None,None,None,4,None),
|
||||||
(5,8,"GtkImage","resetWifiConnected",2,None,None,None,3,None),
|
(5,8,"GtkImage","resetWifiConnected",2,None,None,None,3,None),
|
||||||
(5,10,"GtkImage","resetWifiStored",2,None,None,None,2,None),
|
(5,10,"GtkImage","resetWifiStored",2,None,None,None,2,None),
|
||||||
|
(5,11,"resetPopup","resetWifiPopup",2,None,None,None,-1,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","resetSidebarImage",2,None,None,None,None,None),
|
(6,6,"GtkImage","resetSidebarImage",2,None,None,None,None,None),
|
||||||
|
@ -157,10 +159,16 @@
|
||||||
(14,2,"GtkFrame","resetSettingFrame",None,None,None,None,-1,None),
|
(14,2,"GtkFrame","resetSettingFrame",None,None,None,None,-1,None),
|
||||||
(14,3,"GtkLabel","resetSettingLabel",2,None,None,None,-1,None),
|
(14,3,"GtkLabel","resetSettingLabel",2,None,None,None,-1,None),
|
||||||
(15,1,"GtkListBoxRow","resetListBoxRow",None,None,None,None,None,None),
|
(15,1,"GtkListBoxRow","resetListBoxRow",None,None,None,None,None,None),
|
||||||
(16,1,"AdwWindow","resetPopup",None,None,None,None,-1,None),
|
(16,6,"GtkPopover","resetPopup",None,None,None,None,-1,None),
|
||||||
(16,2,"GtkBox",None,1,None,None,None,-1,None),
|
(16,7,"GtkBox",None,6,None,None,None,None,None),
|
||||||
(16,3,"GtkEntry","resetPopopEntry",2,None,None,None,-1,None),
|
(16,10,"GtkBox",None,7,None,None,None,1,None),
|
||||||
(16,4,"GtkButton","resetPopopButton",2,None,None,None,-1,None)
|
(16,11,"GtkPasswordEntry","resetPopupEntry",10,None,None,None,None,None),
|
||||||
|
(16,12,"GtkButton","resetPopupButton",10,None,None,None,1,None),
|
||||||
|
(16,13,"GtkLabel","resetPopupLabel",7,None,None,None,None,None),
|
||||||
|
(17,1,"GtkBox","resetSavedWifiEntry",None,None,None,None,-1,None),
|
||||||
|
(17,2,"GtkLabel","resetSavedWifiLabel",1,None,None,None,2,None),
|
||||||
|
(17,3,"GtkButton","resetEditSavedWifiButton",1,None,None,None,1,None),
|
||||||
|
(17,4,"GtkButton","resetDeleteSavedWifiButton",1,None,None,None,None,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),
|
||||||
|
@ -482,9 +490,26 @@
|
||||||
(14,3,"GtkWidget","css-classes","resetSettingLabel",None,None,None,None,None,None,None,None,None),
|
(14,3,"GtkWidget","css-classes","resetSettingLabel",None,None,None,None,None,None,None,None,None),
|
||||||
(15,1,"GtkListBoxRow","selectable","False",None,None,None,None,None,None,None,None,None),
|
(15,1,"GtkListBoxRow","selectable","False",None,None,None,None,None,None,None,None,None),
|
||||||
(15,1,"GtkWidget","height-request","40",None,None,None,None,None,None,None,None,None),
|
(15,1,"GtkWidget","height-request","40",None,None,None,None,None,None,None,None,None),
|
||||||
(16,3,"GtkEntry","activates-default","True",None,None,None,None,None,None,None,None,None),
|
(16,7,"GtkBox","homogeneous","True",None,None,None,None,None,None,None,None,None),
|
||||||
(16,3,"GtkEntry","invisible-char-set","True",None,None,None,None,None,None,None,None,None),
|
(16,7,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None),
|
||||||
(16,4,"GtkButton","label","connect",None,None,None,None,None,None,None,None,None)
|
(16,11,"GtkPasswordEntry","activates-default","True",None,None,None,None,None,None,None,None,None),
|
||||||
|
(16,11,"GtkPasswordEntry","placeholder-text","Wifi Password",None,None,None,None,None,None,None,None,None),
|
||||||
|
(16,11,"GtkPasswordEntry","show-peek-icon","True",None,None,None,None,None,None,None,None,None),
|
||||||
|
(16,11,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None),
|
||||||
|
(16,11,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None),
|
||||||
|
(16,11,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None),
|
||||||
|
(16,11,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
|
||||||
|
(16,12,"GtkButton","label","connect",None,None,None,None,None,None,None,None,None),
|
||||||
|
(16,12,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None),
|
||||||
|
(16,12,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None),
|
||||||
|
(16,12,"GtkWidget","margin-start","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),
|
||||||
|
(17,1,"GtkBox","spacing","5",None,None,None,None,None,None,None,None,None),
|
||||||
|
(17,3,"GtkButton","has-frame","False",None,None,None,None,None,None,None,None,None),
|
||||||
|
(17,3,"GtkButton","icon-name","document-edit-symbolic",None,None,None,None,None,None,None,None,None),
|
||||||
|
(17,4,"GtkButton","has-frame","False",None,None,None,None,None,None,None,None,None),
|
||||||
|
(17,4,"GtkButton","icon-name","user-trash-symbolic",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),
|
||||||
|
|
|
@ -107,8 +107,6 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="resetWifiAdvanced">
|
<object class="GtkButton" id="resetWifiAdvanced">
|
||||||
<property name="action-name">navigation.push</property>
|
|
||||||
<property name="action-target">'advanced'</property>
|
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
<property name="label">Advanced</property>
|
<property name="label">Advanced</property>
|
||||||
<property name="margin-start">5</property>
|
<property name="margin-start">5</property>
|
||||||
|
@ -147,6 +145,10 @@
|
||||||
<child>
|
<child>
|
||||||
<object class="AdwNavigationPage">
|
<object class="AdwNavigationPage">
|
||||||
<property name="tag">saved</property>
|
<property name="tag">saved</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="homogeneous">True</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
<child>
|
<child>
|
||||||
|
@ -166,6 +168,18 @@
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkListBox" id="resetStoredWifiList">
|
||||||
|
<property name="css-classes">boxed-list</property>
|
||||||
|
<property name="margin-bottom">10</property>
|
||||||
|
<property name="margin-end">5</property>
|
||||||
|
<property name="margin-start">5</property>
|
||||||
|
<property name="show-separators">True</property>
|
||||||
|
<property name="valign">start</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
|
|
|
@ -4,6 +4,9 @@
|
||||||
<requires lib="gtk" version="4.12"/>
|
<requires lib="gtk" version="4.12"/>
|
||||||
<template class="resetWifiEntry" parent="GtkBox">
|
<template class="resetWifiEntry" parent="GtkBox">
|
||||||
<property name="margin-start">5</property>
|
<property name="margin-start">5</property>
|
||||||
|
<child>
|
||||||
|
<object class="resetPopup" id="resetWifiPopup"/>
|
||||||
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
<property name="width-request">35</property>
|
<property name="width-request">35</property>
|
||||||
|
|
|
@ -7,11 +7,13 @@
|
||||||
<file compressed="true" preprocess="xml-stripblanks">resetListBoxRow.ui</file>
|
<file compressed="true" preprocess="xml-stripblanks">resetListBoxRow.ui</file>
|
||||||
<file compressed="true" preprocess="xml-stripblanks">resetWiFi.ui</file>
|
<file compressed="true" preprocess="xml-stripblanks">resetWiFi.ui</file>
|
||||||
<file compressed="true" preprocess="xml-stripblanks">resetWifiEntry.ui</file>
|
<file compressed="true" preprocess="xml-stripblanks">resetWifiEntry.ui</file>
|
||||||
|
<file compressed="true" preprocess="xml-stripblanks">resetSavedWifiEntry.ui</file>
|
||||||
<file compressed="true" preprocess="xml-stripblanks">resetBluetooth.ui</file>
|
<file compressed="true" preprocess="xml-stripblanks">resetBluetooth.ui</file>
|
||||||
<file compressed="true" preprocess="xml-stripblanks">resetBluetoothEntry.ui</file>
|
<file compressed="true" preprocess="xml-stripblanks">resetBluetoothEntry.ui</file>
|
||||||
<file compressed="true" preprocess="xml-stripblanks">resetAudio.ui</file>
|
<file compressed="true" preprocess="xml-stripblanks">resetAudio.ui</file>
|
||||||
<file compressed="true" preprocess="xml-stripblanks">resetAudioSourceEntry.ui</file>
|
<file compressed="true" preprocess="xml-stripblanks">resetAudioSourceEntry.ui</file>
|
||||||
<file compressed="true" preprocess="xml-stripblanks">resetMicrophone.ui</file>
|
<file compressed="true" preprocess="xml-stripblanks">resetMicrophone.ui</file>
|
||||||
<file compressed="true" preprocess="xml-stripblanks">resetMicSourceEntry.ui</file>
|
<file compressed="true" preprocess="xml-stripblanks">resetMicSourceEntry.ui</file>
|
||||||
|
<file compressed="true" preprocess="xml-stripblanks">resetPopup.ui</file>
|
||||||
</gresource>
|
</gresource>
|
||||||
</gresources>
|
</gresources>
|
||||||
|
|
Loading…
Reference in a new issue