From 770dffa7291eb3953034294bdedcd53e07959271 Mon Sep 17 00:00:00 2001 From: Lucy Date: Wed, 9 Feb 2022 17:23:36 -0500 Subject: [PATCH] Use `ListBox`es for the available and current networks --- .../src/ui/available_wifi.rs | 19 +++++++++++-------- .../src/ui/current_networks.rs | 17 +++++++++-------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/applets/cosmic-applet-network/src/ui/available_wifi.rs b/applets/cosmic-applet-network/src/ui/available_wifi.rs index 5481334e..c55e0d1b 100644 --- a/applets/cosmic-applet-network/src/ui/available_wifi.rs +++ b/applets/cosmic-applet-network/src/ui/available_wifi.rs @@ -9,32 +9,34 @@ use futures_util::StreamExt; use gtk4::{ glib::{self, clone, source::PRIORITY_DEFAULT, MainContext, Sender}, prelude::*, - Align, Image, Separator, + Align, Image, ListBox, ListBoxRow, Separator, }; use std::{cell::RefCell, rc::Rc}; use zbus::Connection; pub fn add_available_wifi(target: >k4::Box, separator: Separator) { - let ap_entries = Rc::>>::default(); + let ap_entries = Rc::>>::default(); let (tx, rx) = MainContext::channel::>(PRIORITY_DEFAULT); task::spawn(async move { if let Err(err) = scan_for_wifi(tx).await { eprintln!("scan_for_wifi failed: {}", err); } }); + let wifi_list = ListBox::new(); rx.attach( None, - clone!(@strong ap_entries, @weak target, @weak separator, => @default-return Continue(true), move |aps| { - build_aps_list(ap_entries.clone(), target, aps); + clone!(@strong ap_entries, @weak wifi_list, @weak separator, => @default-return Continue(true), move |aps| { + build_aps_list(ap_entries.clone(), &wifi_list, aps); separator.set_visible(!ap_entries.borrow().is_empty()); Continue(true) }), ); + target.append(&wifi_list); } fn build_aps_list( - ap_entries: Rc>>, - target: gtk4::Box, + ap_entries: Rc>>, + target: &ListBox, aps: Vec, ) { let mut ap_entries = ap_entries.borrow_mut(); @@ -51,8 +53,9 @@ fn build_aps_list( } } ap_entry.align_child(Align::Start); // view! seems to reorder everything in alphabetical order, but align_child must always come after set_child - target.append(&ap_entry); - ap_entries.push(ap_entry); + let entry = ListBoxRow::builder().child(&ap_entry).build(); + target.append(&entry); + ap_entries.push(entry); } } diff --git a/applets/cosmic-applet-network/src/ui/current_networks.rs b/applets/cosmic-applet-network/src/ui/current_networks.rs index e7eed76d..b1d3db4a 100644 --- a/applets/cosmic-applet-network/src/ui/current_networks.rs +++ b/applets/cosmic-applet-network/src/ui/current_networks.rs @@ -9,31 +9,31 @@ use cosmic_dbus_networkmanager::{ use gtk4::{ glib::{self, clone, source::PRIORITY_DEFAULT, MainContext, Sender}, prelude::*, - Image, Orientation, + Image, ListBox, ListBoxRow, Orientation, }; use std::{cell::RefCell, net::IpAddr, rc::Rc}; use zbus::Connection; pub fn add_current_networks(target: >k4::Box) { - let our_box = gtk4::Box::new(Orientation::Vertical, 8); - let entries = Rc::>>::default(); + let networks_list = ListBox::new(); + let entries = Rc::>>::default(); let (tx, rx) = MainContext::channel::>(PRIORITY_DEFAULT); crate::task::spawn(handle_devices(tx)); rx.attach( None, - clone!(@weak our_box, @strong entries => @default-return Continue(true), move |connections| { + clone!(@weak networks_list, @strong entries => @default-return Continue(true), move |connections| { let mut entries = entries.borrow_mut(); - display_active_connections(connections, &our_box, &mut *entries); + display_active_connections(connections, &networks_list, &mut *entries); Continue(true) }), ); - target.append(&our_box); + target.append(&networks_list); } fn display_active_connections( connections: Vec, - target: >k4::Box, - entries: &mut Vec, + target: &ListBox, + entries: &mut Vec, ) { for old_entry in entries.drain(..) { target.remove(&old_entry); @@ -54,6 +54,7 @@ fn display_active_connections( wpa_flags, } => todo!(), }; + let entry = ListBoxRow::builder().child(&entry).build(); target.append(&entry); entries.push(entry); }