diff --git a/src/components/base/cardEntry.rs b/src/components/base/cardEntry.rs index 016e390..4ecb67e 100644 --- a/src/components/base/cardEntry.rs +++ b/src/components/base/cardEntry.rs @@ -59,18 +59,6 @@ impl CardEntry { let factory = &SignalListItemFactory::new(); factory.connect_setup(|_, item| { let item = item.downcast_ref::().unwrap(); - - let value = item.property_value("selected"); - let value2 = item.property_value("item"); - - let result = value.get::().unwrap(); - - dbg!(result); - - for x in item.list_properties() { - - } - let label = gtk::Label::new(None); label.set_halign(Align::Start); item.property_expression("item") @@ -79,7 +67,6 @@ impl CardEntry { item.set_child(Some(&label)); }); entry.set_factory(Some(factory)); - } entry } diff --git a/src/components/wifi/savedWifiEntry.rs b/src/components/wifi/savedWifiEntry.rs index 390dcf2..51c40dc 100644 --- a/src/components/wifi/savedWifiEntry.rs +++ b/src/components/wifi/savedWifiEntry.rs @@ -9,16 +9,18 @@ use dbus::{Error, Path}; use glib::subclass::types::ObjectSubclassIsExt; use glib::{clone, PropertySet}; use gtk::gio; +use gtk::prelude::ListBoxRowExt; glib::wrapper! { pub struct SavedWifiEntry(ObjectSubclass) - @extends gtk::Box, gtk::Widget, - @implements gtk::Accessible, gtk::Buildable, gtk::Actionable, gtk::ConstraintTarget; + @extends adw::ActionRow, gtk::Widget, + @implements gtk::Accessible, gtk::Buildable, gtk::Actionable, gtk::ConstraintTarget, gtk::ListBoxRow; } impl SavedWifiEntry { pub fn new(name: &String, path: Path<'static>) -> Self { let entry: SavedWifiEntry = Object::builder().build(); + entry.set_activatable(false); let entryImp = entry.imp(); // TODO handle edit entryImp.resetSavedWifiLabel.set_text(name); diff --git a/src/components/wifi/savedWifiEntryImpl.rs b/src/components/wifi/savedWifiEntryImpl.rs index 45b9898..baef5f9 100644 --- a/src/components/wifi/savedWifiEntryImpl.rs +++ b/src/components/wifi/savedWifiEntryImpl.rs @@ -1,4 +1,7 @@ use std::cell::RefCell; +use adw::ActionRow; +use adw::subclass::preferences_row::PreferencesRowImpl; +use adw::subclass::prelude::ActionRowImpl; use dbus::Path; use gtk::subclass::prelude::*; @@ -26,7 +29,7 @@ unsafe impl Sync for SavedWifiEntry {} impl ObjectSubclass for SavedWifiEntry { const NAME: &'static str = "resetSavedWifiEntry"; type Type = savedWifiEntry::SavedWifiEntry; - type ParentType = gtk::Box; + type ParentType = ActionRow; fn class_init(klass: &mut Self::Class) { klass.bind_template(); @@ -43,7 +46,11 @@ impl ObjectImpl for SavedWifiEntry { } } -impl BoxImpl for SavedWifiEntry {} +impl PreferencesRowImpl for SavedWifiEntry {} + +impl ListBoxRowImpl for SavedWifiEntry {} + +impl ActionRowImpl for SavedWifiEntry {} impl WidgetImpl for SavedWifiEntry {} diff --git a/src/components/wifi/wifiBox.rs b/src/components/wifi/wifiBox.rs index 2f0cd6f..c7d0349 100644 --- a/src/components/wifi/wifiBox.rs +++ b/src/components/wifi/wifiBox.rs @@ -10,7 +10,7 @@ use crate::components::base::listEntry::ListEntry; use crate::components::base::utils::Listeners; use adw::glib; use adw::glib::Object; -use adw::prelude::ListBoxRowExt; +use adw::prelude::{ListBoxRowExt, PreferencesGroupExt}; use adw::subclass::prelude::ObjectSubclassIsExt; use dbus::arg::{AppendAll, ReadAll, RefArg}; use dbus::blocking::Connection; @@ -48,6 +48,7 @@ impl WifiBox { pub fn setupCallbacks(&self) { let selfImp = self.imp(); + selfImp.resetSavedNetworks.set_activatable(true); selfImp .resetSavedNetworks .set_action_name(Some("navigation.push")); @@ -76,9 +77,9 @@ pub fn scanForWifi(listeners: Arc, wifiBox: Arc) { let selfImp = wifibox_ref.imp(); for accessPoint in accessPoints { let ssid = accessPoint.ssid.clone(); - let entry = Arc::new(ListEntry::new(&*WifiEntry::new(accessPoint, selfImp))); + let entry = WifiEntry::new(accessPoint, selfImp); wifiEntries.insert(ssid, entry.clone()); - selfImp.resetWifiList.append(&*entry); + selfImp.resetWifiList.add(&*entry); } }); }); @@ -124,10 +125,9 @@ pub fn scanForWifi(listeners: Arc, wifiBox: Arc) { if wifiEntries.get(&ssid).is_some() { return; } - let entry = - Arc::new(ListEntry::new(&*WifiEntry::new(access_point.0, wifiBoxImpl.imp()))); + let entry = WifiEntry::new(access_point.0, wifiBoxImpl.imp()); wifiEntries.insert(ssid, entry.clone()); - wifiBoxImpl.imp().resetWifiList.append(&*entry); + wifiBoxImpl.imp().resetWifiList.add(&*entry); }); }); } @@ -163,9 +163,8 @@ pub fn show_stored_connections(wifiBox: Arc) { // 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); - selfImp.resetStoredWifiList.append(&entry); + let entry = SavedWifiEntry::new(name, connection.0); + selfImp.resetStoredWifiList.add(&entry); } }); }); diff --git a/src/components/wifi/wifiBoxImpl.rs b/src/components/wifi/wifiBoxImpl.rs index 8d15cbe..a4e3030 100644 --- a/src/components/wifi/wifiBoxImpl.rs +++ b/src/components/wifi/wifiBoxImpl.rs @@ -4,7 +4,7 @@ use gtk::subclass::prelude::*; use gtk::{glib, CompositeTemplate, ListBox, Switch}; use std::collections::HashMap; use std::sync::{Arc, Mutex}; -use adw::NavigationView; +use adw::{ActionRow, ComboRow, NavigationView, PreferencesGroup}; use crate::components::base::listEntry::ListEntry; use crate::components::wifi::wifiEntry::WifiEntry; @@ -16,18 +16,20 @@ pub struct WifiBox { #[template_child] pub resetWifiNavigation: TemplateChild, #[template_child] - pub resetWifiDetails: TemplateChild, + pub resetWifiDetails: TemplateChild, #[template_child] - pub resetSavedNetworks: TemplateChild, + pub resetWiFiDevice: TemplateChild, + #[template_child] + pub resetSavedNetworks: TemplateChild, #[template_child] pub resetWifiSwitch: TemplateChild, #[template_child] - pub resetWifiList: TemplateChild, + pub resetWifiList: TemplateChild, #[template_child] - pub resetStoredWifiList: TemplateChild, + pub resetStoredWifiList: TemplateChild, #[template_child] pub resetAvailableNetworks: TemplateChild, - pub wifiEntries: Arc, Arc>>>, + pub wifiEntries: Arc, Arc>>>, pub savedWifiEntries: Arc>>, } diff --git a/src/components/wifi/wifiEntry.rs b/src/components/wifi/wifiEntry.rs index 12582f9..87d09da 100644 --- a/src/components/wifi/wifiEntry.rs +++ b/src/components/wifi/wifiEntry.rs @@ -4,7 +4,7 @@ use std::time::Duration; use adw::glib; use adw::glib::{Object, PropertySet}; -use adw::prelude::{ButtonExt, EditableExt, PopoverExt}; +use adw::prelude::{ActionRowExt, ButtonExt, EditableExt, PopoverExt}; use adw::subclass::prelude::ObjectSubclassIsExt; use dbus::blocking::Connection; use dbus::{Error, Path}; @@ -22,8 +22,8 @@ use super::savedWifiEntry::SavedWifiEntry; glib::wrapper! { pub struct WifiEntry(ObjectSubclass) - @extends gtk::Box, gtk::Widget, - @implements gtk::Accessible, gtk::Buildable, gtk::Actionable, gtk::ConstraintTarget; + @extends adw::ActionRow, gtk::Widget, + @implements gtk::Accessible, gtk::Buildable, gtk::Actionable, gtk::ConstraintTarget, gtk::ListBoxRow; } unsafe impl Send for WifiEntry {} @@ -66,8 +66,9 @@ impl WifiEntry { *wifiName = String::from(name); } entryImp.accessPoint.set(access_point); - let gesture = GestureClick::new(); - gesture.connect_released(clone!(@weak entryImp => move |_, _, _, _| { + + entry.set_activatable(true); + entry.connect_activated(clone!(@weak entryImp => move |_| { let access_point = entryImp.accessPoint.borrow(); if access_point.connected { click_disconnect(); @@ -77,7 +78,6 @@ impl WifiEntry { click_new_network(new_entry.clone()); } })); - entry.add_controller(gesture); entry.setupCallbacks(wifiBox); entry } diff --git a/src/components/wifi/wifiEntryImpl.rs b/src/components/wifi/wifiEntryImpl.rs index 2d58aaa..cc44c09 100644 --- a/src/components/wifi/wifiEntryImpl.rs +++ b/src/components/wifi/wifiEntryImpl.rs @@ -3,11 +3,11 @@ use crate::components::wifi::wifiEntry; use gtk::subclass::prelude::*; use gtk::{glib, Button, CompositeTemplate, Image, Label}; use std::cell::RefCell; -use std::sync::Arc; +use adw::ActionRow; +use adw::subclass::preferences_row::PreferencesRowImpl; +use adw::subclass::prelude::ActionRowImpl; use ReSet_Lib::network::network::{AccessPoint, WifiStrength}; -use super::wifiBox::WifiBox; - #[allow(non_snake_case)] #[derive(Default, CompositeTemplate)] #[template(resource = "/org/Xetibo/ReSet/resetWifiEntry.ui")] @@ -36,7 +36,7 @@ unsafe impl Sync for WifiEntry {} impl ObjectSubclass for WifiEntry { const NAME: &'static str = "resetWifiEntry"; type Type = wifiEntry::WifiEntry; - type ParentType = gtk::Box; + type ParentType = ActionRow; fn class_init(klass: &mut Self::Class) { klass.bind_template(); @@ -53,7 +53,11 @@ impl ObjectImpl for WifiEntry { } } -impl BoxImpl for WifiEntry {} +impl PreferencesRowImpl for WifiEntry {} + +impl ListBoxRowImpl for WifiEntry {} + +impl ActionRowImpl for WifiEntry {} impl WidgetImpl for WifiEntry {} diff --git a/src/components/wifi/wifiOptions.rs b/src/components/wifi/wifiOptions.rs index 404219f..1dfb17a 100644 --- a/src/components/wifi/wifiOptions.rs +++ b/src/components/wifi/wifiOptions.rs @@ -34,12 +34,12 @@ impl WifiOptions { selfImp.resetWifiName.set_subtitle(&*conn.settings.name); selfImp.resetWifiAutoConnect.set_active(conn.settings.autoconnect); selfImp.resetWifiMetered.set_active(if conn.settings.metered != -1 { true } else { false }); - // match conn.device.borrow() { - // TypeSettings::WIFI(wifi) => {} - // TypeSettings::ETHERNET(ethernet) => {} - // TypeSettings::VPN(vpn) => {} - // TypeSettings::None => {} - // }; + match &conn.device { + TypeSettings::WIFI(wifi) => {} + TypeSettings::ETHERNET(ethernet) => {} + TypeSettings::VPN(vpn) => {} + TypeSettings::None => {} + }; // IPv4 selfImp.resetIP4Method.set_selected(conn.ipv4.dns_method.to_i32() as u32); self.setIP4Visibility(conn.ipv4.dns_method.to_i32() as u32); diff --git a/src/components/window/windowImpl.rs b/src/components/window/windowImpl.rs index 662a3b2..c468dcc 100644 --- a/src/components/window/windowImpl.rs +++ b/src/components/window/windowImpl.rs @@ -30,8 +30,6 @@ pub struct Window { #[template_child] pub resetSideBarToggle: TemplateChild