From b27fb36048a91a179096255f41d6833f30f45e6b Mon Sep 17 00:00:00 2001 From: mkljczk Date: Thu, 30 Jan 2025 12:30:47 +0100 Subject: [PATCH 1/2] Only display WPS hint when WPS push button mode is available Signed-off-by: mkljczk --- cosmic-applet-network/src/app.rs | 40 ++++++++++--------- .../src/network_manager/available_wifi.rs | 8 +++- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/cosmic-applet-network/src/app.rs b/cosmic-applet-network/src/app.rs index 0a23761c..16b35ae2 100644 --- a/cosmic-applet-network/src/app.rs +++ b/cosmic-applet-network/src/app.rs @@ -977,26 +977,28 @@ impl cosmic::Application for CosmicNetworkApplet { .spacing(12), ); content = content.push(id); - let col = padded_control( - column![ - text::body(fl!("enter-password")), - text_input("", password) - .on_input(Message::Password) - .on_paste(Message::Password) - .on_submit(Message::SubmitPassword) - .password(), - container(text::body(fl!("router-wps-button"))).padding(8), - row![ - button::standard(fl!("cancel")) - .on_press(Message::CancelNewConnection), - button::suggested(fl!("connect")).on_press(Message::SubmitPassword) - ] - .spacing(24) + let mut enter_password_col = column![ + text::body(fl!("enter-password")), + text_input("", password) + .on_input(Message::Password) + .on_paste(Message::Password) + .on_submit(Message::SubmitPassword) + .password(), + ]; + if access_point.wps_push { + enter_password_col = enter_password_col + .push(container(text::body(fl!("router-wps-button"))).padding(8)); + } + enter_password_col = enter_password_col.push( + row![ + button::standard(fl!("cancel")).on_press(Message::CancelNewConnection), + button::suggested(fl!("connect")).on_press(Message::SubmitPassword) ] - .spacing(8) - .align_x(Alignment::Center), - ) - .align_x(Alignment::Center); + .spacing(24), + ); + let col = + padded_control(enter_password_col.spacing(8).align_x(Alignment::Center)) + .align_x(Alignment::Center); content = content.push(col); } NewConnectionState::Waiting(access_point) => { diff --git a/cosmic-applet-network/src/network_manager/available_wifi.rs b/cosmic-applet-network/src/network_manager/available_wifi.rs index 2b979bbc..57d06ea8 100644 --- a/cosmic-applet-network/src/network_manager/available_wifi.rs +++ b/cosmic-applet-network/src/network_manager/available_wifi.rs @@ -1,6 +1,9 @@ // SPDX-License-Identifier: GPL-3.0-or-later -use cosmic_dbus_networkmanager::{device::wireless::WirelessDevice, interface::enums::DeviceState}; +use cosmic_dbus_networkmanager::{ + device::wireless::WirelessDevice, + interface::enums::{ApFlags, DeviceState}, +}; use futures_util::StreamExt; use itertools::Itertools; @@ -33,6 +36,7 @@ pub async fn handle_wireless_device( let mut aps = HashMap::::new(); for ap in access_points { let ssid = String::from_utf8_lossy(&ap.ssid().await?.clone()).into_owned(); + let wps_push = ap.flags().await?.contains(ApFlags::WPS_PBC); let strength = ap.strength().await?; if let Some(access_point) = aps.get(&ssid) { if access_point.strength > strength { @@ -51,6 +55,7 @@ pub async fn handle_wireless_device( .as_ref() .and_then(|str_addr| HwAddress::from_str(str_addr)) .unwrap_or_default(), + wps_push, }, ); } @@ -69,4 +74,5 @@ pub struct AccessPoint { pub working: bool, pub path: ObjectPath<'static>, pub hw_address: HwAddress, + pub wps_push: bool, } From 96de0fe4d79936168cd7d1e3b5080e07da7811a6 Mon Sep 17 00:00:00 2001 From: mkljczk Date: Thu, 30 Jan 2025 12:55:05 +0100 Subject: [PATCH 2/2] Use push_maybe Signed-off-by: mkljczk --- cosmic-applet-network/src/app.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/cosmic-applet-network/src/app.rs b/cosmic-applet-network/src/app.rs index 16b35ae2..d152d17e 100644 --- a/cosmic-applet-network/src/app.rs +++ b/cosmic-applet-network/src/app.rs @@ -977,19 +977,20 @@ impl cosmic::Application for CosmicNetworkApplet { .spacing(12), ); content = content.push(id); - let mut enter_password_col = column![ + let enter_password_col = column![ text::body(fl!("enter-password")), text_input("", password) .on_input(Message::Password) .on_paste(Message::Password) .on_submit(Message::SubmitPassword) .password(), - ]; - if access_point.wps_push { - enter_password_col = enter_password_col - .push(container(text::body(fl!("router-wps-button"))).padding(8)); - } - enter_password_col = enter_password_col.push( + ] + .push_maybe( + access_point + .wps_push + .then(|| container(text::body(fl!("router-wps-button"))).padding(8)), + ) + .push( row![ button::standard(fl!("cancel")).on_press(Message::CancelNewConnection), button::suggested(fl!("connect")).on_press(Message::SubmitPassword)