From 77c13cb732a6ebc9fcfc642d7657cd933558faa0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 19 Dec 2022 15:45:43 -0700 Subject: [PATCH] Align navbar with new designs --- examples/cosmic/src/window.rs | 233 +++++++++++++--------------------- 1 file changed, 91 insertions(+), 142 deletions(-) diff --git a/examples/cosmic/src/window.rs b/examples/cosmic/src/window.rs index 16dd5ba8..cbb99484 100644 --- a/examples/cosmic/src/window.rs +++ b/examples/cosmic/src/window.rs @@ -149,77 +149,24 @@ impl Application for Window { let content = responsive(|size| { let condensed = size.width < 900.0; - // cosmic::navbar![ - // nav_text_button("network-wireless", "Network & Wireless", condensed) - // .on_press(Message::Page(0)) - // .style(if self.page == 0 { - // ButtonTheme::Primary - // } else { - // ButtonTheme::Text - // }), - // nav_text_button("preferences-desktop", "Bluetooth", condensed) - // .on_press(Message::Page(1)) - // .style(if self.page == 1 { - // ButtonTheme::Primary - // } else { - // ButtonTheme::Text - // }), - // nav_text_button("system-software-update", "Personalization", condensed) - // .on_press(Message::Page(2)) - // .style(if self.page == 2 { - // ButtonTheme::Primary - // } else { - // ButtonTheme::Text - // }), - // ] - - let sidebar: Element<_> = nav_bar() - .source(BTreeMap::from([ - ( - nav_bar_section() - .title("Network & Wireless") - .icon("network-wireless"), - vec![nav_bar_page("Wi-Fi")], - ), - ( - nav_bar_section().title("Bluetooth").icon("cs-bluetooth"), - vec![nav_bar_page("Devices")], - ), - ( - nav_bar_section() - .title("Personalization") - .icon("applications-system"), - vec![ - nav_bar_page("Desktop Session"), - nav_bar_page("Wallpaper"), - nav_bar_page("Appearance"), - nav_bar_page("Dock & Top Panel"), - nav_bar_page("Workspaces"), - nav_bar_page("Notifications"), - ], - ), - ( - nav_bar_section() - .title("Input Devices") - .icon("input-keyboard"), - vec![nav_bar_page("Keyboard")], - ), - ( - nav_bar_section().title("Displays").icon("cs-display"), - vec![nav_bar_page("Keyboard")], - ), - ( - nav_bar_section().title("Power & Battery").icon("battery"), - vec![nav_bar_page("Status")], - ), - ( - nav_bar_section().title("Sound").icon("sound"), - vec![nav_bar_page("Volume")], - ), - ])) - .active(self.sidebar_toggled) - .condensed(condensed) - .into(); + let sidebar: Element<_> = iced::widget::container( + iced::widget::column!( + cosmic::nav_button!("network-wireless-symbolic", "Wi-Fi", condensed, self.page == 0) + .on_press(Message::Page(0)), + cosmic::nav_button!("network-wired-symbolic", "Networking", condensed, self.page == 1) + .on_press(Message::Page(1)), + cosmic::nav_button!("bluetooth-active-symbolic", "Bluetooth", condensed, self.page == 2) + .on_press(Message::Page(2)), + cosmic::nav_button!("preferences-desktop-wallpaper-symbolic", "Desktop", condensed, self.page == 3) + .on_press(Message::Page(3)), + ) + .spacing(14) + ) + .height(Length::Fill) + .padding(11) + .max_width(300) + .style(theme::Container::Custom(cosmic::widget::nav_bar::nav_bar_sections_style)) + .into(); let choose_theme = [Theme::Light, Theme::Dark].iter().fold( row![].spacing(10).align_items(Alignment::Center), @@ -233,77 +180,79 @@ impl Application for Window { }, ); - let content: Element<_> = settings::view_column(vec![ - settings::view_section("Debug") - .add(settings::item("Debug theme", choose_theme)) - .add(settings::item( - "Debug layout", - toggler(String::from("Debug layout"), self.debug, Message::Debug) - )) - .into(), - settings::view_section("Buttons") - .add(settings::item_row(vec![ - button(ButtonTheme::Primary) - .text("Primary") - .on_press(Message::ButtonPressed) - .into(), - button(ButtonTheme::Secondary) - .text("Secondary") - .on_press(Message::ButtonPressed) - .into(), - button(ButtonTheme::Positive) - .text("Positive") - .on_press(Message::ButtonPressed) - .into(), - button(ButtonTheme::Destructive) - .text("Destructive") - .on_press(Message::ButtonPressed) - .into(), - button(ButtonTheme::Text) - .text("Text") - .on_press(Message::ButtonPressed) - .into() - ])) - .add(settings::item_row(vec![ - button(ButtonTheme::Primary).text("Primary").into(), - button(ButtonTheme::Secondary).text("Secondary").into(), - button(ButtonTheme::Positive).text("Positive").into(), - button(ButtonTheme::Destructive).text("Destructive").into(), - button(ButtonTheme::Text).text("Text").into(), - ])) - .into(), - settings::view_section("Controls") - .add(settings::item("Toggler", toggler(None, self.toggler_value, Message::TogglerToggled))) - .add(settings::item( - "Pick List (TODO)", - pick_list( - vec!["Option 1", "Option 2", "Option 3", "Option 4",], - self.pick_list_selected, - Message::PickListSelected - ) - .padding([8, 0, 8, 16]) - )) - .add(settings::item( - "Slider", - slider(0.0..=100.0, self.slider_value, Message::SliderChanged) - .width(Length::Units(250)) - )) - .add(settings::item( - "Progress", - progress_bar(0.0..=100.0, self.slider_value) - .width(Length::Units(250)) - .height(Length::Units(4)) - )) - .add(settings::item_row(vec![ - checkbox("Checkbox", self.checkbox_value, Message::CheckboxToggled).into() - ])) - .add(settings::item( - format!("Spin Button (Range {}:{})", self.spin_button.min, self.spin_button.max), - self.spin_button.view(Message::SpinButton), - )) - .into() - ]) - .into(); + let content: Element<_> = match self.page { + _ => settings::view_column(vec![ + settings::view_section("Debug") + .add(settings::item("Debug theme", choose_theme)) + .add(settings::item( + "Debug layout", + toggler(String::from("Debug layout"), self.debug, Message::Debug) + )) + .into(), + settings::view_section("Buttons") + .add(settings::item_row(vec![ + button(ButtonTheme::Primary) + .text("Primary") + .on_press(Message::ButtonPressed) + .into(), + button(ButtonTheme::Secondary) + .text("Secondary") + .on_press(Message::ButtonPressed) + .into(), + button(ButtonTheme::Positive) + .text("Positive") + .on_press(Message::ButtonPressed) + .into(), + button(ButtonTheme::Destructive) + .text("Destructive") + .on_press(Message::ButtonPressed) + .into(), + button(ButtonTheme::Text) + .text("Text") + .on_press(Message::ButtonPressed) + .into() + ])) + .add(settings::item_row(vec![ + button(ButtonTheme::Primary).text("Primary").into(), + button(ButtonTheme::Secondary).text("Secondary").into(), + button(ButtonTheme::Positive).text("Positive").into(), + button(ButtonTheme::Destructive).text("Destructive").into(), + button(ButtonTheme::Text).text("Text").into(), + ])) + .into(), + settings::view_section("Controls") + .add(settings::item("Toggler", toggler(None, self.toggler_value, Message::TogglerToggled))) + .add(settings::item( + "Pick List (TODO)", + pick_list( + vec!["Option 1", "Option 2", "Option 3", "Option 4",], + self.pick_list_selected, + Message::PickListSelected + ) + .padding([8, 0, 8, 16]) + )) + .add(settings::item( + "Slider", + slider(0.0..=100.0, self.slider_value, Message::SliderChanged) + .width(Length::Units(250)) + )) + .add(settings::item( + "Progress", + progress_bar(0.0..=100.0, self.slider_value) + .width(Length::Units(250)) + .height(Length::Units(4)) + )) + .add(settings::item_row(vec![ + checkbox("Checkbox", self.checkbox_value, Message::CheckboxToggled).into() + ])) + .add(settings::item( + format!("Spin Button (Range {}:{})", self.spin_button.min, self.spin_button.max), + self.spin_button.view(Message::SpinButton), + )) + .into() + ]) + .into(), + }; let mut widgets = Vec::with_capacity(2);