From 75687acf2fe9290ef8805a7810e169362ef300f2 Mon Sep 17 00:00:00 2001 From: Victoria Brekenfeld Date: Tue, 3 Jan 2023 21:35:35 +0100 Subject: [PATCH] chore: apply cargo fmt --- examples/cosmic-sctk/src/window.rs | 38 +++-- examples/cosmic/src/window.rs | 53 +++--- examples/cosmic/src/window/bluetooth.rs | 25 +-- examples/cosmic/src/window/demo.rs | 160 +++++++++--------- examples/cosmic/src/window/desktop.rs | 126 +++++++++----- .../cosmic/src/window/system_and_accounts.rs | 20 +-- src/ext.rs | 2 +- src/lib.rs | 2 +- src/theme/mod.rs | 40 ++--- src/widget/aspect_ratio.rs | 23 +-- src/widget/button.rs | 13 +- src/widget/header_bar.rs | 14 +- src/widget/icon.rs | 32 ++-- src/widget/list/column.rs | 8 +- src/widget/list/mod.rs | 2 +- src/widget/mod.rs | 14 +- src/widget/nav_button.rs | 7 +- src/widget/navigation/navbar.rs | 52 +++--- src/widget/rectangle_tracker/subscription.rs | 14 +- src/widget/scrollable.rs | 6 +- src/widget/separator.rs | 2 +- src/widget/settings/mod.rs | 5 +- 22 files changed, 373 insertions(+), 285 deletions(-) diff --git a/examples/cosmic-sctk/src/window.rs b/examples/cosmic-sctk/src/window.rs index 7c43cfe..4e9b028 100644 --- a/examples/cosmic-sctk/src/window.rs +++ b/examples/cosmic-sctk/src/window.rs @@ -2,18 +2,26 @@ // SPDX-License-Identifier: MPL-2.0 use cosmic::{ - iced_native::window, - iced::{widget::{ - column, container, horizontal_space, pick_list, progress_bar, radio, row, slider, - }, wayland::window::{start_drag_window, toggle_maximize}}, - iced::{self, wayland::{SurfaceIdWrapper, window::set_mode_window}, Alignment, Application, Command, Length}, + iced::{ + self, + wayland::{window::set_mode_window, SurfaceIdWrapper}, + Alignment, Application, Command, Length, + }, + iced::{ + wayland::window::{start_drag_window, toggle_maximize}, + widget::{ + column, container, horizontal_space, pick_list, progress_bar, radio, row, slider, + }, + }, iced_lazy::responsive, + iced_native::window, theme::{self, Theme}, widget::{ - button, header_bar, nav_bar, nav_bar_page, nav_bar_section, nav_button, scrollable, - settings, toggler, rectangle_tracker::{RectangleTracker, rectangle_tracker_subscription, RectangleUpdate}, + button, header_bar, nav_bar, nav_bar_page, nav_bar_section, nav_button, + rectangle_tracker::{rectangle_tracker_subscription, RectangleTracker, RectangleUpdate}, + scrollable, settings, toggler, }, - Element, ElementExt + Element, ElementExt, }; use std::{collections::BTreeMap, vec}; use theme::Button as ButtonTheme; @@ -70,7 +78,7 @@ pub enum Message { Minimize, Maximize, InputChanged, - Rectangle(RectangleUpdate) + Rectangle(RectangleUpdate), } impl Application for Window { @@ -115,8 +123,12 @@ impl Application for Window { Message::RowSelected(row) => println!("Selected row {row}"), Message::InputChanged => {} Message::Rectangle(r) => match r { - RectangleUpdate::Rectangle(r) => {dbg!(r);}, - RectangleUpdate::Init(t) => {self.rectangle_tracker.replace(t);}, + RectangleUpdate::Rectangle(r) => { + dbg!(r); + } + RectangleUpdate::Init(t) => { + self.rectangle_tracker.replace(t); + } }, } @@ -235,8 +247,8 @@ impl Application for Window { }, ); let secondary = button(ButtonTheme::Secondary) - .text("Secondary") - .on_press(Message::ButtonPressed); + .text("Secondary") + .on_press(Message::ButtonPressed); let secondary = if let Some(tracker) = self.rectangle_tracker.as_ref() { tracker.container(0, secondary).into() diff --git a/examples/cosmic/src/window.rs b/examples/cosmic/src/window.rs index 60e12d1..8fb61da 100644 --- a/examples/cosmic/src/window.rs +++ b/examples/cosmic/src/window.rs @@ -189,7 +189,10 @@ impl Window { self.page = page; } - fn parent_page_button + 'static>(&self, sub_page: impl SubPage) -> Element { + fn parent_page_button + 'static>( + &self, + sub_page: impl SubPage, + ) -> Element { let page = sub_page.parent_page(); column!( iced::widget::Button::new(row!( @@ -208,7 +211,10 @@ impl Window { .into() } - fn sub_page_button + 'static>(&self, sub_page: impl SubPage) -> Element { + fn sub_page_button + 'static>( + &self, + sub_page: impl SubPage, + ) -> Element { iced::widget::Button::new( container( settings::item_row(vec![ @@ -244,7 +250,10 @@ impl Window { ]).into() } - fn view_unimplemented_sub_page<'a, Message: Clone + From + 'static>(&'a self, sub_page: impl SubPage) -> Element<'a, Message> { + fn view_unimplemented_sub_page<'a, Message: Clone + From + 'static>( + &'a self, + sub_page: impl SubPage, + ) -> Element<'a, Message> { settings::view_column(vec![ self.parent_page_button(sub_page), text("We haven't created that panel yet, and/or it is using a similar idea as current Pop! designs.").into(), @@ -273,7 +282,10 @@ impl Application for Window { // Configures the demo view switcher. let key = window.demo.view_switcher.insert("Controls", DemoView::TabA); window.demo.view_switcher.activate(key); - window.demo.view_switcher.insert("Segmented Button", DemoView::TabB); + window + .demo + .view_switcher + .insert("Segmented Button", DemoView::TabB); window.demo.view_switcher.insert("Tab C", DemoView::TabC); // Configures the demo selection button. @@ -282,7 +294,6 @@ impl Application for Window { window.demo.selection.insert("Choice B", ()); window.demo.selection.insert("Choice C", ()); - (window, Command::none()) } @@ -318,19 +329,15 @@ impl Application for Window { Message::Bluetooth(message) => { self.bluetooth.update(message); } - Message::Demo(message) => { - match self.demo.update(message) { - Some(demo::Output::Debug(debug)) => self.debug = debug, - Some(demo::Output::ThemeChanged(theme)) => self.theme = theme, - None => (), - } - } - Message::Desktop(message) => { - match self.desktop.update(message) { - Some(desktop::Output::Page(page)) => self.page(page), - None => (), - } - } + Message::Demo(message) => match self.demo.update(message) { + Some(demo::Output::Debug(debug)) => self.debug = debug, + Some(demo::Output::ThemeChanged(theme)) => self.theme = theme, + None => (), + }, + Message::Desktop(message) => match self.desktop.update(message) { + Some(desktop::Output::Page(page)) => self.page(page), + None => (), + }, Message::ToggleSidebar => self.sidebar_toggled = !self.sidebar_toggled, Message::ToggleSidebarCondensed => { self.sidebar_toggled_condensed = !self.sidebar_toggled_condensed @@ -343,7 +350,6 @@ impl Application for Window { Message::InputChanged => {} Message::CondensedViewToggle(_) => {} - } Command::none() @@ -451,11 +457,12 @@ impl Application for Window { .into(), ]) .into(), - Page::Networking(Some(sub_page)) => { - self.view_unimplemented_sub_page(sub_page) - } + Page::Networking(Some(sub_page)) => self.view_unimplemented_sub_page(sub_page), Page::Bluetooth => self.bluetooth.view(self).map(Message::Bluetooth), - Page::Desktop(desktop_page_opt) => self.desktop.view(self, desktop_page_opt).map(Message::Desktop), + Page::Desktop(desktop_page_opt) => self + .desktop + .view(self, desktop_page_opt) + .map(Message::Desktop), Page::InputDevices(None) => settings::view_column(vec![ self.page_title(self.page), column!( diff --git a/examples/cosmic/src/window/bluetooth.rs b/examples/cosmic/src/window/bluetooth.rs index cd89681..44fe7d6 100644 --- a/examples/cosmic/src/window/bluetooth.rs +++ b/examples/cosmic/src/window/bluetooth.rs @@ -1,18 +1,18 @@ +use super::{Page, Window}; use cosmic::{ - Element, iced::widget::{column, text}, widget::{list_column, settings, toggler}, + Element, }; -use super::{Page, Window}; #[derive(Clone, Copy, Debug)] pub enum Message { - Enable(bool) + Enable(bool), } #[derive(Default)] pub struct State { - enabled: bool + enabled: bool, } impl State { @@ -25,16 +25,19 @@ impl State { pub(super) fn view<'a>(&'a self, window: &'a Window) -> Element<'a, Message> { settings::view_column(vec![ window.page_title(Page::Bluetooth), - column!( - list_column() - .add(settings::item("Bluetooth", toggler(None, self.enabled, Message::Enable))), + list_column().add(settings::item( + "Bluetooth", + toggler(None, self.enabled, Message::Enable) + )), text("Now visible as \"TODO\", just kidding") - ).spacing(8).into(), - + ) + .spacing(8) + .into(), settings::view_section("Devices") .add(settings::item("No devices found", text(""))) - .into() - ]).into() + .into(), + ]) + .into() } } diff --git a/examples/cosmic/src/window/demo.rs b/examples/cosmic/src/window/demo.rs index 71c2500..f111719 100644 --- a/examples/cosmic/src/window/demo.rs +++ b/examples/cosmic/src/window/demo.rs @@ -2,12 +2,22 @@ use cosmic::{ iced::widget::{checkbox, pick_list, progress_bar, radio, row, slider}, iced::{Alignment, Length}, theme::{Button as ButtonTheme, Theme}, - widget::{button, settings, toggler, spin_button::{SpinButtonModel, SpinMessage}}, + widget::{ + button, settings, + spin_button::{SpinButtonModel, SpinMessage}, + toggler, + }, Element, }; -use cosmic::widget::segmented_button::{self, cosmic::{horizontal_segmented_selection, horizontal_view_switcher, vertical_segmented_selection, vertical_view_switcher}}; use super::{Page, Window}; +use cosmic::widget::segmented_button::{ + self, + cosmic::{ + horizontal_segmented_selection, horizontal_view_switcher, vertical_segmented_selection, + vertical_view_switcher, + }, +}; pub enum DemoView { TabA, @@ -32,7 +42,7 @@ pub enum Message { pub enum Output { Debug(bool), - ThemeChanged(Theme) + ThemeChanged(Theme), } #[derive(Default)] @@ -166,86 +176,84 @@ impl State { ]) .padding(0) .into(), - Some(DemoView::TabB) => { - settings::view_column(vec![ - cosmic::iced::widget::text("Selection") - .font(cosmic::font::FONT_SEMIBOLD) - .into(), - cosmic::iced::widget::text("Horizontal").into(), - horizontal_segmented_selection(&self.selection) - .on_activate(Message::Selection) - .into(), - cosmic::iced::widget::text("Horizontal With Spacing").into(), - horizontal_segmented_selection(&self.selection) - .spacing(8) - .on_activate(Message::Selection) - .into(), - cosmic::iced::widget::text("Vertical").into(), - vertical_segmented_selection(&self.selection) - .on_activate(Message::Selection) - .into(), - cosmic::iced::widget::text("Vertical With Spacing").into(), - cosmic::iced::widget::row(vec![ - vertical_segmented_selection(&self.selection) - .spacing(8) - .on_activate(Message::Selection) - .width(Length::FillPortion(1)) - .into(), - vertical_segmented_selection(&self.selection) - .spacing(8) - .on_activate(Message::Selection) - .width(Length::FillPortion(1)) - .into(), - vertical_segmented_selection(&self.selection) - .spacing(8) - .on_activate(Message::Selection) - .width(Length::FillPortion(1)) - .into(), - ]) - .spacing(12) - .width(Length::Fill) + Some(DemoView::TabB) => settings::view_column(vec![ + cosmic::iced::widget::text("Selection") + .font(cosmic::font::FONT_SEMIBOLD) .into(), - cosmic::iced::widget::text("View Switcher") - .font(cosmic::font::FONT_SEMIBOLD) - .into(), - cosmic::iced::widget::text("Horizontal").into(), - horizontal_view_switcher(&self.selection) - .on_activate(Message::Selection) - .into(), - cosmic::iced::widget::text("Horizontal With Spacing").into(), - horizontal_view_switcher(&self.selection) + cosmic::iced::widget::text("Horizontal").into(), + horizontal_segmented_selection(&self.selection) + .on_activate(Message::Selection) + .into(), + cosmic::iced::widget::text("Horizontal With Spacing").into(), + horizontal_segmented_selection(&self.selection) + .spacing(8) + .on_activate(Message::Selection) + .into(), + cosmic::iced::widget::text("Vertical").into(), + vertical_segmented_selection(&self.selection) + .on_activate(Message::Selection) + .into(), + cosmic::iced::widget::text("Vertical With Spacing").into(), + cosmic::iced::widget::row(vec![ + vertical_segmented_selection(&self.selection) .spacing(8) .on_activate(Message::Selection) + .width(Length::FillPortion(1)) .into(), - cosmic::iced::widget::text("Vertical").into(), - vertical_view_switcher(&self.selection) + vertical_segmented_selection(&self.selection) + .spacing(8) .on_activate(Message::Selection) + .width(Length::FillPortion(1)) + .into(), + vertical_segmented_selection(&self.selection) + .spacing(8) + .on_activate(Message::Selection) + .width(Length::FillPortion(1)) .into(), - cosmic::iced::widget::text("Vertical With Spacing").into(), - cosmic::iced::widget::row(vec![ - vertical_view_switcher(&self.selection) - .spacing(8) - .on_activate(Message::Selection) - .width(Length::FillPortion(1)) - .into(), - vertical_view_switcher(&self.selection) - .spacing(8) - .on_activate(Message::Selection) - .width(Length::FillPortion(1)) - .into(), - vertical_view_switcher(&self.selection) - .spacing(8) - .on_activate(Message::Selection) - .width(Length::FillPortion(1)) - .into(), - ]) - .spacing(12) - .width(Length::Fill) - .into() ]) - .padding(0) - .into() - } + .spacing(12) + .width(Length::Fill) + .into(), + cosmic::iced::widget::text("View Switcher") + .font(cosmic::font::FONT_SEMIBOLD) + .into(), + cosmic::iced::widget::text("Horizontal").into(), + horizontal_view_switcher(&self.selection) + .on_activate(Message::Selection) + .into(), + cosmic::iced::widget::text("Horizontal With Spacing").into(), + horizontal_view_switcher(&self.selection) + .spacing(8) + .on_activate(Message::Selection) + .into(), + cosmic::iced::widget::text("Vertical").into(), + vertical_view_switcher(&self.selection) + .on_activate(Message::Selection) + .into(), + cosmic::iced::widget::text("Vertical With Spacing").into(), + cosmic::iced::widget::row(vec![ + vertical_view_switcher(&self.selection) + .spacing(8) + .on_activate(Message::Selection) + .width(Length::FillPortion(1)) + .into(), + vertical_view_switcher(&self.selection) + .spacing(8) + .on_activate(Message::Selection) + .width(Length::FillPortion(1)) + .into(), + vertical_view_switcher(&self.selection) + .spacing(8) + .on_activate(Message::Selection) + .width(Length::FillPortion(1)) + .into(), + ]) + .spacing(12) + .width(Length::Fill) + .into(), + ]) + .padding(0) + .into(), Some(DemoView::TabC) => { settings::view_column(vec![settings::view_section("Tab C") .add(cosmic::iced::widget::text("Nothing here yet").width(Length::Fill)) diff --git a/examples/cosmic/src/window/desktop.rs b/examples/cosmic/src/window/desktop.rs index 2abcd29..685176e 100644 --- a/examples/cosmic/src/window/desktop.rs +++ b/examples/cosmic/src/window/desktop.rs @@ -1,9 +1,9 @@ use cosmic::{ - Element, - iced::Length, iced::widget::{column, container, horizontal_space, image, row, svg, text}, + iced::Length, theme, widget::{list_column, settings, toggler}, + Element, }; use super::{Page, SubPage, Window}; @@ -74,7 +74,9 @@ impl SubPage for DesktopPage { Appearance => "Accent colors and COSMIC theming", DockAndTopPanel => "Customize size, positions, and more for Dock and Top Panel.", Workspaces => "Set workspace number, behavior, and placement.", - Notifications => "Do Not Disturb, lockscreen notifications, and per-application settings.", + Notifications => { + "Do Not Disturb, lockscreen notifications, and per-application settings." + } } } @@ -114,7 +116,11 @@ impl State { None } - pub(super) fn view<'a>(&'a self, window: &'a Window, desktop_page_opt: Option) -> Element<'a, Message> { + pub(super) fn view<'a>( + &'a self, + window: &'a Window, + desktop_page_opt: Option, + ) -> Element<'a, Message> { match desktop_page_opt { None => settings::view_column(vec![ window.page_title(window.page), @@ -125,7 +131,9 @@ impl State { window.sub_page_button(DesktopPage::DockAndTopPanel), window.sub_page_button(DesktopPage::Workspaces), window.sub_page_button(DesktopPage::Notifications), - ).spacing(16).into() + ) + .spacing(16) + .into(), ]) .into(), Some(DesktopPage::DesktopOptions) => self.view_desktop_options(window), @@ -138,27 +146,50 @@ impl State { fn view_desktop_options<'a>(&'a self, window: &'a Window) -> Element<'a, Message> { settings::view_column(vec![ window.parent_page_button(DesktopPage::DesktopOptions), - settings::view_section("Super Key Action") .add(settings::item("Launcher", horizontal_space(Length::Fill))) .add(settings::item("Workspaces", horizontal_space(Length::Fill))) - .add(settings::item("Applications", horizontal_space(Length::Fill))) + .add(settings::item( + "Applications", + horizontal_space(Length::Fill), + )) .into(), - settings::view_section("Hot Corner") - .add(settings::item("Enable top-left hot corner for Workspaces", toggler(None, self.top_left_hot_corner, Message::TopLeftHotCorner))) + .add(settings::item( + "Enable top-left hot corner for Workspaces", + toggler(None, self.top_left_hot_corner, Message::TopLeftHotCorner), + )) .into(), - settings::view_section("Top Panel") - .add(settings::item("Show Workspaces Button", toggler(None, self.show_workspaces_button, Message::ShowWorkspacesButton))) - .add(settings::item("Show Applications Button", toggler(None, self.show_applications_button, Message::ShowApplicationsButton))) + .add(settings::item( + "Show Workspaces Button", + toggler( + None, + self.show_workspaces_button, + Message::ShowWorkspacesButton, + ), + )) + .add(settings::item( + "Show Applications Button", + toggler( + None, + self.show_applications_button, + Message::ShowApplicationsButton, + ), + )) .into(), - settings::view_section("Window Controls") - .add(settings::item("Show Minimize Button", toggler(None, self.show_minimize_button, Message::ShowMinimizeButton))) - .add(settings::item("Show Maximize Button", toggler(None, self.show_maximize_button, Message::ShowMaximizeButton))) + .add(settings::item( + "Show Minimize Button", + toggler(None, self.show_minimize_button, Message::ShowMinimizeButton), + )) + .add(settings::item( + "Show Maximize Button", + toggler(None, self.show_maximize_button, Message::ShowMaximizeButton), + )) .into(), - ]).into() + ]) + .into() } fn view_desktop_wallpaper<'a>(&'a self, window: &'a Window) -> Element<'a, Message> { @@ -186,55 +217,70 @@ impl State { for chunk in image_paths.chunks(4) { let mut image_row = Vec::with_capacity(chunk.len()); for image_path in chunk.iter() { - image_row.push( - if image_path.ends_with(".svg") { - svg(svg::Handle::from_path(image_path)).width(Length::Units(150)).into() - } else { - image(image_path).width(Length::Units(150)).into() - } - ); + image_row.push(if image_path.ends_with(".svg") { + svg(svg::Handle::from_path(image_path)) + .width(Length::Units(150)) + .into() + } else { + image(image_path).width(Length::Units(150)).into() + }); } image_column.push(row(image_row).spacing(16).into()); } settings::view_column(vec![ window.parent_page_button(DesktopPage::Wallpaper), - row!( horizontal_space(Length::Fill), container( - image( - "/usr/share/backgrounds/pop/kate-hazen-COSMIC-desktop-wallpaper.png" - ).width(Length::Units(300)) + image("/usr/share/backgrounds/pop/kate-hazen-COSMIC-desktop-wallpaper.png") + .width(Length::Units(300)) ) .padding(4) .style(theme::Container::Box), horizontal_space(Length::Fill), - ).into(), - + ) + .into(), list_column() - .add(settings::item("Same background on all displays", toggler(None, self.same_background, Message::SameBackground))) + .add(settings::item( + "Same background on all displays", + toggler(None, self.same_background, Message::SameBackground), + )) .add(settings::item("Background fit", text("TODO"))) - .add(settings::item("Slideshow", toggler(None, self.slideshow, Message::Slideshow))) + .add(settings::item( + "Slideshow", + toggler(None, self.slideshow, Message::Slideshow), + )) .into(), - column(image_column).spacing(16).into(), - ]).into() + ]) + .into() } fn view_desktop_workspaces<'a>(&'a self, window: &'a Window) -> Element<'a, Message> { settings::view_column(vec![ window.parent_page_button(DesktopPage::Wallpaper), - settings::view_section("Workspace Behavior") - .add(settings::item("Dynamic workspaces", horizontal_space(Length::Fill))) - .add(settings::item("Fixed Number of Workspaces", horizontal_space(Length::Fill))) + .add(settings::item( + "Dynamic workspaces", + horizontal_space(Length::Fill), + )) + .add(settings::item( + "Fixed Number of Workspaces", + horizontal_space(Length::Fill), + )) .into(), - settings::view_section("Multi-monitor Behavior") - .add(settings::item("Workspaces Span Displays", horizontal_space(Length::Fill))) - .add(settings::item("Displays Have Separate Workspaces", horizontal_space(Length::Fill))) + .add(settings::item( + "Workspaces Span Displays", + horizontal_space(Length::Fill), + )) + .add(settings::item( + "Displays Have Separate Workspaces", + horizontal_space(Length::Fill), + )) .into(), - ]).into() + ]) + .into() } } diff --git a/examples/cosmic/src/window/system_and_accounts.rs b/examples/cosmic/src/window/system_and_accounts.rs index 2f44d5d..7047b19 100644 --- a/examples/cosmic/src/window/system_and_accounts.rs +++ b/examples/cosmic/src/window/system_and_accounts.rs @@ -1,8 +1,8 @@ use cosmic::{ - Element, - iced::Length, iced::widget::{horizontal_space, row, text}, + iced::Length, widget::{icon, list_column, settings}, + Element, }; use super::{Message, Page, SubPage, Window}; @@ -60,17 +60,15 @@ impl State { pub(super) fn view<'a>(&'a self, window: &'a Window) -> Element<'a, Message> { settings::view_column(vec![ window.parent_page_button(SystemAndAccountsPage::About), - row!( horizontal_space(Length::Fill), icon("distributor-logo", 78), horizontal_space(Length::Fill), - ).into(), - + ) + .into(), list_column() .add(settings::item("Device name", text("TODO"))) .into(), - settings::view_section("Hardware") .add(settings::item("Hardware model", text("TODO"))) .add(settings::item("Memory", text("TODO"))) @@ -78,17 +76,19 @@ impl State { .add(settings::item("Graphics", text("TODO"))) .add(settings::item("Disk Capacity", text("TODO"))) .into(), - settings::view_section("Operating System") .add(settings::item("Operating system", text("TODO"))) - .add(settings::item("Operating system architecture", text("TODO"))) + .add(settings::item( + "Operating system architecture", + text("TODO"), + )) .add(settings::item("Desktop environment", text("TODO"))) .add(settings::item("Windowing system", text("TODO"))) .into(), - settings::view_section("Related settings") .add(settings::item("Get support", text("TODO"))) .into(), - ]).into() + ]) + .into() } } diff --git a/src/ext.rs b/src/ext.rs index 1897d57..12e5285 100644 --- a/src/ext.rs +++ b/src/ext.rs @@ -16,4 +16,4 @@ impl<'a, Message: 'static> ElementExt for crate::Element<'a, Message> { self } } -} \ No newline at end of file +} diff --git a/src/lib.rs b/src/lib.rs index 8318e81..53fbfe5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -31,6 +31,6 @@ pub fn settings() -> iced::Settings { iced::Font::External { bytes, .. } => Some(bytes), }, default_text_size: 18, - .. iced::Settings::default() + ..iced::Settings::default() } } diff --git a/src/theme/mod.rs b/src/theme/mod.rs index df11093..8b33e42 100644 --- a/src/theme/mod.rs +++ b/src/theme/mod.rs @@ -136,7 +136,7 @@ pub enum Button { Transparent, Custom { active: fn(&Theme) -> button::Appearance, - hover: fn(&Theme) -> button::Appearance + hover: fn(&Theme) -> button::Appearance, }, } @@ -161,7 +161,7 @@ impl Button { Button::LinkActive => &cosmic.secondary.component, Button::Transparent => &TRANSPARENT_COMPONENT, Button::Deactivated => &cosmic.secondary.component, - Button::Custom { .. } => &TRANSPARENT_COMPONENT + Button::Custom { .. } => &TRANSPARENT_COMPONENT, } } } @@ -170,7 +170,7 @@ impl button::StyleSheet for Theme { type Style = Button; fn active(&self, style: &Self::Style) -> button::Appearance { - if let Button::Custom {active, ..} = style { + if let Button::Custom { active, .. } = style { return active(self); } @@ -196,7 +196,7 @@ impl button::StyleSheet for Theme { } fn hovered(&self, style: &Self::Style) -> button::Appearance { - if let Button::Custom {hover, ..} = style { + if let Button::Custom { hover, .. } = style { return hover(self); } @@ -207,7 +207,7 @@ impl button::StyleSheet for Theme { background: match style { Button::Link => None, Button::LinkActive => Some(Background::Color(cosmic.divider.into())), - _ => Some(Background::Color(cosmic.hover.into())) + _ => Some(Background::Color(cosmic.hover.into())), }, ..active } @@ -234,11 +234,7 @@ impl Default for Checkbox { impl checkbox::StyleSheet for Theme { type Style = Checkbox; - fn active( - &self, - style: &Self::Style, - is_checked: bool, - ) -> checkbox::Appearance { + fn active(&self, style: &Self::Style, is_checked: bool) -> checkbox::Appearance { let palette = self.extended_palette(); match style { @@ -269,11 +265,7 @@ impl checkbox::StyleSheet for Theme { } } - fn hovered( - &self, - style: &Self::Style, - is_checked: bool, - ) -> checkbox::Appearance { + fn hovered(&self, style: &Self::Style, is_checked: bool) -> checkbox::Appearance { let palette = self.extended_palette(); match style { @@ -421,9 +413,7 @@ impl slider::StyleSheet for Theme { fn hovered(&self, style: &Self::Style) -> slider::Appearance { let mut style = self.active(style); - style.handle.shape = slider::HandleShape::Circle { - radius: 16.0 - }; + style.handle.shape = slider::HandleShape::Circle { radius: 16.0 }; style.handle.border_width = 6.0; style.handle.border_color = match self { Theme::Dark => Color::from_rgba8(0xFF, 0xFF, 0xFF, 0.1), @@ -529,11 +519,7 @@ impl radio::StyleSheet for Theme { impl toggler::StyleSheet for Theme { type Style = (); - fn active( - &self, - _style: &Self::Style, - is_active: bool, - ) -> toggler::Appearance { + fn active(&self, _style: &Self::Style, is_active: bool) -> toggler::Appearance { let palette = self.palette(); toggler::Appearance { @@ -556,11 +542,7 @@ impl toggler::StyleSheet for Theme { } } - fn hovered( - &self, - style: &Self::Style, - is_active: bool, - ) -> toggler::Appearance { + fn hovered(&self, style: &Self::Style, is_active: bool) -> toggler::Appearance { //TODO: grab colors from palette match self { Theme::Dark => toggler::Appearance { @@ -578,7 +560,7 @@ impl toggler::StyleSheet for Theme { Color::from_rgb8(0x54, 0x54, 0x54) }, ..self.active(style, is_active) - } + }, } } } diff --git a/src/widget/aspect_ratio.rs b/src/widget/aspect_ratio.rs index 796b0e4..682c0c2 100644 --- a/src/widget/aspect_ratio.rs +++ b/src/widget/aspect_ratio.rs @@ -1,5 +1,5 @@ -use iced::Size; use iced::widget::Container; +use iced::Size; use iced_native::alignment; use iced_native::event::{self, Event}; use iced_native::layout; @@ -13,7 +13,7 @@ pub use iced_style::container::{Appearance, StyleSheet}; pub fn aspect_ratio_container<'a, Message: 'static, T>( content: T, - ratio: f32 + ratio: f32, ) -> AspectRatio<'a, Message, crate::Renderer> where T: Into>, @@ -40,13 +40,16 @@ where Renderer::Theme: StyleSheet, { fn constrain_limits(&self, size: Size) -> Size { - let Size { mut width, mut height } = size; + let Size { + mut width, + mut height, + } = size; if size.width / size.height > self.ratio { width = self.ratio * height; } else { height = width / self.ratio; } - Size { width, height } + Size { width, height } } } @@ -137,8 +140,7 @@ where } } -impl<'a, Message, Renderer> Widget - for AspectRatio<'a, Message, Renderer> +impl<'a, Message, Renderer> Widget for AspectRatio<'a, Message, Renderer> where Renderer: iced_native::Renderer, Renderer::Theme: StyleSheet, @@ -160,7 +162,10 @@ where } fn layout(&self, renderer: &Renderer, limits: &layout::Limits) -> layout::Node { - let custom_limits = layout::Limits::new(self.constrain_limits(limits.min()), self.constrain_limits(limits.max())); + let custom_limits = layout::Limits::new( + self.constrain_limits(limits.min()), + self.constrain_limits(limits.max()), + ); self.container.layout(renderer, &custom_limits) } @@ -239,9 +244,7 @@ where Renderer: 'a + iced_native::Renderer, Renderer::Theme: StyleSheet, { - fn from( - column: AspectRatio<'a, Message, Renderer>, - ) -> Element<'a, Message, Renderer> { + fn from(column: AspectRatio<'a, Message, Renderer>) -> Element<'a, Message, Renderer> { Element::new(column) } } diff --git a/src/widget/button.rs b/src/widget/button.rs index 7193077..d94aa10 100644 --- a/src/widget/button.rs +++ b/src/widget/button.rs @@ -7,7 +7,10 @@ use iced::widget; /// A button widget with COSMIC styling #[must_use] pub const fn button(style: theme::Button) -> Button { - Button { style, message: None } + Button { + style, + message: None, + } } /// A button widget with COSMIC styling @@ -25,7 +28,12 @@ impl Button { } /// A button with an icon. - pub fn icon(self, style: theme::Svg, icon: &str, size: u16) -> widget::Button { + pub fn icon( + self, + style: theme::Svg, + icon: &str, + size: u16, + ) -> widget::Button { self.custom(vec![super::icon(icon, size).style(style).into()]) } @@ -47,4 +55,3 @@ impl Button { } } } - diff --git a/src/widget/header_bar.rs b/src/widget/header_bar.rs index 854153a..d7d7f1c 100644 --- a/src/widget/header_bar.rs +++ b/src/widget/header_bar.rs @@ -1,10 +1,10 @@ // Copyright 2022 System76 // SPDX-License-Identifier: MPL-2.0 +use crate::{theme, Element}; use apply::Apply; use derive_setters::Setters; use iced::{self, widget, Length}; -use crate::{theme, Element}; #[must_use] pub fn header_bar<'a, Message>() -> HeaderBar<'a, Message> { @@ -36,7 +36,7 @@ pub struct HeaderBar<'a, Message> { #[setters(strip_option)] center: Option>, #[setters(strip_option)] - end: Option> + end: Option>, } impl<'a, Message: Clone + 'static> HeaderBar<'a, Message> { @@ -45,11 +45,17 @@ impl<'a, Message: Clone + 'static> HeaderBar<'a, Message> { let mut packed: Vec> = Vec::with_capacity(4); if let Some(start) = self.start.take() { - packed.push(widget::container(start).align_x(iced::alignment::Horizontal::Left).into()); + packed.push( + widget::container(start) + .align_x(iced::alignment::Horizontal::Left) + .into(), + ); } packed.push(if let Some(center) = self.center.take() { - widget::container(center).align_x(iced::alignment::Horizontal::Center).into() + widget::container(center) + .align_x(iced::alignment::Horizontal::Center) + .into() } else { self.title_widget() }); diff --git a/src/widget/icon.rs b/src/widget/icon.rs index e1564e0..5ffe22b 100644 --- a/src/widget/icon.rs +++ b/src/widget/icon.rs @@ -3,14 +3,16 @@ //! Lazily-generated SVG icon widget for Iced. +use crate::{Element, Renderer}; +use derive_setters::Setters; use iced::{ widget::{svg, Image}, - Length, ContentFit, + ContentFit, Length, }; -use std::{borrow::Cow, collections::hash_map::DefaultHasher, ffi::OsStr, hash::Hasher, path::Path}; use std::hash::Hash; -use derive_setters::Setters; -use crate::{Element, Renderer}; +use std::{ + borrow::Cow, collections::hash_map::DefaultHasher, ffi::OsStr, hash::Hasher, path::Path, +}; #[derive(Debug, Hash)] pub enum IconSource<'a> { @@ -65,7 +67,6 @@ pub struct Icon<'a> { #[setters(strip_option)] height: Option, force_svg: bool, - } /// A lazily-generated icon. @@ -79,7 +80,7 @@ pub fn icon<'a>(name: impl Into>, size: u16) -> Icon<'a> { style: crate::theme::Svg::default(), theme: Cow::Borrowed("Pop"), width: None, - force_svg: false + force_svg: false, } } @@ -88,8 +89,8 @@ impl<'a> Icon<'a> { fn into_element(self) -> Element<'a, Message> { if let IconSource::Embedded(mut image) = self.name { image = image - .width(self.width.unwrap_or(Length::Units(self.size))) - .height(self.height.unwrap_or(Length::Units(self.size))); + .width(self.width.unwrap_or(Length::Units(self.size))) + .height(self.height.unwrap_or(Length::Units(self.size))); if let Some(content_fit) = self.content_fit { image = image.content_fit(content_fit); } @@ -115,19 +116,23 @@ impl<'a> Icon<'a> { .find() } else { icon - }.map(Cow::from) - }, + } + .map(Cow::from) + } IconSource::Embedded(_) => unimplemented!(), }; - let is_svg = self.force_svg || icon.as_ref().map_or(true, |path| path.extension() == Some(OsStr::new("svg"))); + let is_svg = self.force_svg + || icon + .as_ref() + .map_or(true, |path| path.extension() == Some(OsStr::new("svg"))); if is_svg { let handle = if let Some(path) = icon { svg::Handle::from_path(path) } else { eprintln!("icon '{:?}' size {} not found", &self.name, self.size); - svg::Handle::from_memory(Vec::new()) + svg::Handle::from_memory(Vec::new()) }; let mut widget = svg::Svg::::new(handle) @@ -150,7 +155,8 @@ impl<'a> Icon<'a> { } image.into() } - }).into() + }) + .into() } } diff --git a/src/widget/list/column.rs b/src/widget/list/column.rs index 5ae11c3..f39fa0f 100644 --- a/src/widget/list/column.rs +++ b/src/widget/list/column.rs @@ -1,9 +1,9 @@ // Copyright 2022 System76 // SPDX-License-Identifier: MPL-2.0 -use apply::Apply; -use crate::{Element, theme}; use crate::widget::horizontal_rule; +use crate::{theme, Element}; +use apply::Apply; use iced::{Background, Color}; #[must_use] @@ -17,7 +17,9 @@ pub struct ListColumn<'a, Message> { impl<'a, Message: 'static> Default for ListColumn<'a, Message> { fn default() -> Self { - Self { children: Vec::with_capacity(4) } + Self { + children: Vec::with_capacity(4), + } } } diff --git a/src/widget/list/mod.rs b/src/widget/list/mod.rs index 28d473c..f7170d1 100644 --- a/src/widget/list/mod.rs +++ b/src/widget/list/mod.rs @@ -4,5 +4,5 @@ pub mod column; // mod item; -pub use self::column::{ListColumn, list_column}; +pub use self::column::{list_column, ListColumn}; // pub use self::item::{ListItem, list_item}; diff --git a/src/widget/mod.rs b/src/widget/mod.rs index c840e3f..c881453 100644 --- a/src/widget/mod.rs +++ b/src/widget/mod.rs @@ -5,16 +5,16 @@ mod button; pub use button::*; mod header_bar; -pub use header_bar::{HeaderBar, header_bar}; +pub use header_bar::{header_bar, HeaderBar}; mod icon; -pub use self::icon::{Icon, icon, IconSource}; +pub use self::icon::{icon, Icon, IconSource}; pub mod list; pub use self::list::*; pub mod nav_button; -pub use self::nav_button::{NavButton, nav_button}; +pub use self::nav_button::{nav_button, NavButton}; pub mod navigation; pub use navigation::*; @@ -24,10 +24,8 @@ pub use toggler::toggler; pub mod segmented_button; pub use segmented_button::{ - HorizontalSegmentedButton, + horizontal_segmented_button, vertical_segmented_button, HorizontalSegmentedButton, VerticalSegmentedButton, - horizontal_segmented_button, - vertical_segmented_button }; pub mod settings; @@ -39,8 +37,8 @@ pub mod separator; pub use separator::{horizontal_rule, vertical_rule}; pub mod spin_button; -pub use spin_button::{SpinButton, spin_button}; +pub use spin_button::{spin_button, SpinButton}; pub mod rectangle_tracker; -pub mod aspect_ratio; \ No newline at end of file +pub mod aspect_ratio; diff --git a/src/widget/nav_button.rs b/src/widget/nav_button.rs index d9ae288..de2ba30 100644 --- a/src/widget/nav_button.rs +++ b/src/widget/nav_button.rs @@ -1,10 +1,10 @@ // Copyright 2022 System76 // SPDX-License-Identifier: MPL-2.0 +use crate::{theme, Element}; use apply::Apply; use derive_setters::Setters; use iced::{alignment::Vertical, Length}; -use crate::{Element, theme}; #[derive(Setters)] pub struct NavButton<'a, Message> { @@ -54,9 +54,10 @@ impl<'a, Message: 'static + Clone> From> for Element<'a, widget = widget.on_press(message); } - widget.apply(iced::widget::container) + widget + .apply(iced::widget::container) .center_y() .height(Length::Fill) .into() } -} \ No newline at end of file +} diff --git a/src/widget/navigation/navbar.rs b/src/widget/navigation/navbar.rs index 19d14e9..327c24f 100644 --- a/src/widget/navigation/navbar.rs +++ b/src/widget/navigation/navbar.rs @@ -174,35 +174,43 @@ impl<'a, Message> Component for NavBar<'a, Message> { let nav_bar: Element = container(if self.condensed && state.selected_page.is_some() { - row![container(scrollable(column(pages) + row![container(scrollable( + column(pages) .spacing(10) .padding(10) .max_width(200) .width(Length::Units(200)) - .height(Length::Shrink))) - .height(Length::Fill) - .style(theme::Container::Custom(nav_bar_pages_style))] + .height(Length::Shrink) + )) + .height(Length::Fill) + .style(theme::Container::Custom(nav_bar_pages_style))] } else if !state.section_active || self.condensed && state.selected_page.is_none() { - row![scrollable(column(sections) - .spacing(10) - .padding(10) - .max_width(100) - .align_items(Alignment::Center) - .height(Length::Shrink))] - } else { - row![ - scrollable(column(sections) + row![scrollable( + column(sections) .spacing(10) .padding(10) .max_width(100) .align_items(Alignment::Center) - .height(Length::Shrink)), - container(scrollable(column(pages) - .spacing(10) - .padding(10) - .max_width(200) - .width(Length::Units(200)) - .height(Length::Shrink))) + .height(Length::Shrink) + )] + } else { + row![ + scrollable( + column(sections) + .spacing(10) + .padding(10) + .max_width(100) + .align_items(Alignment::Center) + .height(Length::Shrink) + ), + container(scrollable( + column(pages) + .spacing(10) + .padding(10) + .max_width(200) + .width(Length::Units(200)) + .height(Length::Shrink) + )) .height(Length::Fill) .style(theme::Container::Custom(nav_bar_pages_style)), ] @@ -217,9 +225,7 @@ impl<'a, Message> Component for NavBar<'a, Message> { } } -impl<'a, Message: 'static> From> - for Element<'a, Message, Renderer> -{ +impl<'a, Message: 'static> From> for Element<'a, Message, Renderer> { fn from(nav_bar: NavBar<'a, Message>) -> Self { iced_lazy::component(nav_bar) } diff --git a/src/widget/rectangle_tracker/subscription.rs b/src/widget/rectangle_tracker/subscription.rs index 94c53eb..80e6ff3 100644 --- a/src/widget/rectangle_tracker/subscription.rs +++ b/src/widget/rectangle_tracker/subscription.rs @@ -5,7 +5,7 @@ use iced::{ }, subscription, Rectangle, }; -use std::{fmt::Debug, hash::Hash, collections::HashMap}; +use std::{collections::HashMap, fmt::Debug, hash::Hash}; use super::RectangleTracker; @@ -38,11 +38,14 @@ async fn start_listening match rx.next().await { - Some(u) => - { + Some(u) => { if let Some(prev) = map.get(&u.0) { let new = u.1; - if prev.width != new.width || prev.height != new.height || prev.x != new.x || prev.y != new.y { + if prev.width != new.width + || prev.height != new.height + || prev.x != new.x + || prev.y != new.y + { map.insert(u.0, new); return ( Some((id, RectangleUpdate::Rectangle(u))), @@ -57,8 +60,7 @@ async fn start_listening (None, State::Finished), }, State::Finished => iced::futures::future::pending().await, diff --git a/src/widget/scrollable.rs b/src/widget/scrollable.rs index e205a2e..26f75d6 100644 --- a/src/widget/scrollable.rs +++ b/src/widget/scrollable.rs @@ -4,8 +4,10 @@ use crate::{Element, Renderer}; use iced::widget; -pub fn scrollable<'a, Message>(element: impl Into>) -> widget::Scrollable<'a, Message, Renderer> { +pub fn scrollable<'a, Message>( + element: impl Into>, +) -> widget::Scrollable<'a, Message, Renderer> { widget::scrollable(element) .scrollbar_width(8) .scroller_width(8) -} \ No newline at end of file +} diff --git a/src/widget/separator.rs b/src/widget/separator.rs index 9d1a676..3ace551 100644 --- a/src/widget/separator.rs +++ b/src/widget/separator.rs @@ -23,4 +23,4 @@ fn separator_style(theme: &Theme) -> widget::rule::Appearance { radius: 0.0, fill_mode: widget::rule::FillMode::Padded(10), } -} \ No newline at end of file +} diff --git a/src/widget/settings/mod.rs b/src/widget/settings/mod.rs index 2584a33..e21236d 100644 --- a/src/widget/settings/mod.rs +++ b/src/widget/settings/mod.rs @@ -13,8 +13,5 @@ use iced::widget::{column, Column}; /// A column with a predefined style for creating a settings panel #[must_use] pub fn view_column(children: Vec>) -> Column { - column(children) - .spacing(24) - .padding([0, 24]) - .max_width(678) + column(children).spacing(24).padding([0, 24]).max_width(678) }