From f0b80a90bde6507c0048d14df639cd62d1d8419f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vuka=C5=A1in=20Vojinovi=C4=87?= Date: Wed, 25 Sep 2024 15:49:12 +0200 Subject: [PATCH] improv(networking): match page list item to design Also includes various minor fixes. --- cosmic-settings/src/app.rs | 1 + cosmic-settings/src/pages/networking/mod.rs | 42 ++++++++++++++++-- cosmic-settings/src/widget/mod.rs | 11 ++++- debian/install | 1 + i18n/en/cosmic_settings.ftl | 44 +++++++++---------- justfile | 3 ++ ....system76.CosmicSettings.Bluetooth.desktop | 2 +- ...om.system76.CosmicSettings.Network.desktop | 12 +++++ 8 files changed, 88 insertions(+), 28 deletions(-) create mode 100644 resources/com.system76.CosmicSettings.Network.desktop diff --git a/cosmic-settings/src/app.rs b/cosmic-settings/src/app.rs index 54895ca..c15f2fc 100644 --- a/cosmic-settings/src/app.rs +++ b/cosmic-settings/src/app.rs @@ -931,6 +931,7 @@ impl SettingsApp { page_list.push(crate::widget::page_list_item( sub_page.title.as_str(), sub_page.description.as_str(), + "", &sub_page.icon_name, entity, )) diff --git a/cosmic-settings/src/pages/networking/mod.rs b/cosmic-settings/src/pages/networking/mod.rs index 49aa579..8714793 100644 --- a/cosmic-settings/src/pages/networking/mod.rs +++ b/cosmic-settings/src/pages/networking/mod.rs @@ -81,20 +81,44 @@ impl page::Page for Page { sections: &mut SlotMap>, ) -> Option { crate::slab!(descriptions { - vpn_txt = fl!("connections-and-profiles", variant = "vpn"); + wifi_desc = fl!("connections-and-profiles", variant = "wifi"); + wired_desc = fl!("connections-and-profiles", variant = "wired"); + vpn_desc = fl!("connections-and-profiles", variant = "vpn"); }); let device_list = Section::default().descriptions(descriptions).view::( move |_binder, page, section| { let descs = §ion.descriptions; + let multiple_wifi_adapters = page + .devices + .iter() + .filter(|device| device.device_type == DeviceType::Wifi) + .count() + > 1; + let multiple_wired_adapters = page + .devices + .iter() + .filter(|device| device.device_type == DeviceType::Ethernet) + .count() + > 1; + let wifi_devices = page .devices .iter() .filter(|device| device.device_type == DeviceType::Wifi) .map(|device| { crate::widget::page_list_item( - fl!("wifi", "adapter", id = device.interface.as_str()), + if multiple_wifi_adapters { + fl!("wifi", "adapter", id = device.interface.as_str()) + } else { + fl!("wifi") + }, + if multiple_wifi_adapters { + "" + } else { + &descs[wifi_desc] + }, match device.state { DeviceState::Activated => fl!("network-device-state", "activated"), DeviceState::Config => fl!("network-device-state", "config"), @@ -132,7 +156,16 @@ impl page::Page for Page { .filter(|device| device.device_type == DeviceType::Ethernet) .map(|device| { crate::widget::page_list_item( - fl!("wired", "adapter", id = device.interface.as_str()), + if multiple_wired_adapters { + fl!("wired", "adapter", id = device.interface.as_str()) + } else { + fl!("wired") + }, + if multiple_wired_adapters { + "" + } else { + &descs[wired_desc] + }, match device.state { DeviceState::Activated => fl!("network-device-state", "activated"), DeviceState::Config => fl!("network-device-state", "config"), @@ -169,7 +202,8 @@ impl page::Page for Page { .fold(widget::column(), |column, device| column.push(device)) .push(crate::widget::page_list_item( fl!("vpn"), - &descs[vpn_txt], + &descs[vpn_desc], + "", "preferences-vpn-symbolic", Message::OpenPage { page: page.vpn, diff --git a/cosmic-settings/src/widget/mod.rs b/cosmic-settings/src/widget/mod.rs index 44c1b8e..3eca3db 100644 --- a/cosmic-settings/src/widget/mod.rs +++ b/cosmic-settings/src/widget/mod.rs @@ -121,6 +121,7 @@ pub fn display_container<'a, Message: 'a>(widget: Element<'a, Message>) -> Eleme pub fn page_list_item<'a, Message: 'static + Clone>( title: impl Into>, description: impl Into>, + info: impl Into>, icon: &'a str, message: Message, ) -> Element<'a, Message> { @@ -135,13 +136,21 @@ pub fn page_list_item<'a, Message: 'static + Clone>( let description = description.into(); + let info = info.into(); + if !description.is_empty() { builder = builder.description(description); } builder .icon(icon::from_name(icon).size(20)) - .control(icon::from_name("go-next-symbolic").size(20)) + .control( + row::with_capacity(2) + .padding([8, 0]) // fixed value to set minimum height to 36 + .spacing(space_xxs) + .push(text::body(info)) + .push(icon::from_name("go-next-symbolic").size(20)), + ) .padding([0, space_xxs]) .spacing(space_s) .apply(container) diff --git a/debian/install b/debian/install index 195b638..e38b64e 100644 --- a/debian/install +++ b/debian/install @@ -11,6 +11,7 @@ /usr/share/applications/com.system76.CosmicSettings.Input.desktop /usr/share/applications/com.system76.CosmicSettings.Keyboard.desktop /usr/share/applications/com.system76.CosmicSettings.Mouse.desktop +/usr/share/applications/com.system76.CosmicSettings.Network.desktop /usr/share/applications/com.system76.CosmicSettings.Notifications.desktop /usr/share/applications/com.system76.CosmicSettings.Panel.desktop /usr/share/applications/com.system76.CosmicSettings.Power.desktop diff --git a/i18n/en/cosmic_settings.ftl b/i18n/en/cosmic_settings.ftl index 7630326..e9f0dbe 100644 --- a/i18n/en/cosmic_settings.ftl +++ b/i18n/en/cosmic_settings.ftl @@ -80,6 +80,28 @@ wifi = Wi-Fi online-accounts = Online Accounts .desc = Add accounts, IMAP and SMTP, enterprise logins +# Bluetooth + +bluetooth = Bluetooth + .desc = Manage Bluetooth devices + .status = This system is visible as { $aliases } while Bluetooth settings are open. + .connected = Connected + .connecting = Connecting + .disconnecting = Disconnecting + .connect = Connect + .disconnect = Disconnect + .forget = Forget + .dbus-error = An error has occurred while interacting with DBus: { $why } + .show-device-without-name = Show devices without name + +bluetooth-paired = Previously Connected Devices + .connect = Connect + .battery = { $percentage }% battery + +bluetooth-available = Nearby Devices + +bluetooth-adapters = Bluetooth Adapters + ## Desktop desktop = Desktop @@ -689,25 +711,3 @@ firmware = Firmware users = Users .desc = Authentication and user accounts. - -# Bluetooth - -bluetooth = Bluetooth - .desc = Manage Bluetooth devices - .status = This system is visible as { $aliases } while the Bluetooth settings is open. - .connected = Connected - .connecting = Connecting - .disconnecting = Disconnecting - .connect = Connect - .disconnect = Disconnect - .forget = Forget - .dbus-error = An error has occurred while interacting with DBus: { $why } - .show-device-without-name = Show device without name - -bluetooth-paired = Previously Connected Devices - .connect = Connect - .battery = { $percentage }% battery - -bluetooth-available = Nearby Devices - -bluetooth-adapters = Bluetooth Adapters diff --git a/justfile b/justfile index 28a4a9f..120fe9c 100644 --- a/justfile +++ b/justfile @@ -36,6 +36,7 @@ entry-firmware := appid + '.Firmware.desktop' entry-input := appid + '.Input.desktop' entry-keyboard := appid + '.Keyboard.desktop' entry-mouse := appid + '.Mouse.desktop' +entry-network := appid + '.Network.desktop' entry-notifications := appid + '.Notifications.desktop' entry-panel := appid + '.Panel.desktop' entry-power := appid + '.Power.desktop' @@ -70,6 +71,7 @@ install-desktop-entries: install -Dm0644 'resources/{{entry-input}}' '{{appdir}}/{{entry-input}}' install -Dm0644 'resources/{{entry-keyboard}}' '{{appdir}}/{{entry-keyboard}}' install -Dm0644 'resources/{{entry-mouse}}' '{{appdir}}/{{entry-mouse}}' + install -Dm0644 'resources/{{entry-network}}' '{{appdir}}/{{entry-network}}' install -Dm0644 'resources/{{entry-notifications}}' '{{appdir}}/{{entry-notifications}}' install -Dm0644 'resources/{{entry-panel}}' '{{appdir}}/{{entry-panel}}' install -Dm0644 'resources/{{entry-power}}' '{{appdir}}/{{entry-power}}' @@ -116,6 +118,7 @@ uninstall: '{{appdir}}/{{entry-input}}' \ '{{appdir}}/{{entry-keyboard}}' \ '{{appdir}}/{{entry-mouse}}' \ + '{{appdir}}/{{entry-network}}' \ '{{appdir}}/{{entry-notifications}}' \ '{{appdir}}/{{entry-panel}}' \ '{{appdir}}/{{entry-power}}' \ diff --git a/resources/com.system76.CosmicSettings.Bluetooth.desktop b/resources/com.system76.CosmicSettings.Bluetooth.desktop index 85c6027..9fdaa4f 100644 --- a/resources/com.system76.CosmicSettings.Bluetooth.desktop +++ b/resources/com.system76.CosmicSettings.Bluetooth.desktop @@ -8,5 +8,5 @@ Categories=COSMIC Keywords=COSMIC NoDisplay=true OnlyShowIn=COSMIC -Icon=bluetooth +Icon=preferences-bluetooth StartupNotify=true diff --git a/resources/com.system76.CosmicSettings.Network.desktop b/resources/com.system76.CosmicSettings.Network.desktop new file mode 100644 index 0000000..2c03022 --- /dev/null +++ b/resources/com.system76.CosmicSettings.Network.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Name=Network & Wireless +Comment=Manage network connections +Type=Settings +Exec=cosmic-settings network +Terminal=false +Categories=COSMIC +Keywords=COSMIC +NoDisplay=true +OnlyShowIn=COSMIC +Icon=preferences-network-and-wireless +StartupNotify=true