diff --git a/examples/cosmic/Cargo.toml b/examples/cosmic/Cargo.toml index ad7981c..53bf385 100644 --- a/examples/cosmic/Cargo.toml +++ b/examples/cosmic/Cargo.toml @@ -6,4 +6,4 @@ edition = "2021" publish = false [dependencies] -libcosmic = { path = "../..", default-features = false, features = ["debug", "swbuf", "winit"] } +libcosmic = { path = "../..", default-features = false, features = ["debug", "wgpu", "winit"] } diff --git a/examples/cosmic/src/window.rs b/examples/cosmic/src/window.rs index 0134351..7f83977 100644 --- a/examples/cosmic/src/window.rs +++ b/examples/cosmic/src/window.rs @@ -381,19 +381,7 @@ impl Application for Window { ]).into(), Page::Networking(Some(sub_page)) => self.view_unimplemented_sub_page(sub_page), Page::Bluetooth => self.view_bluetooth(), - Page::Desktop(None) => settings::view_column(vec![ - self.page_title(self.page), - column!( - self.sub_page_button(DesktopPage::DesktopOptions), - self.sub_page_button(DesktopPage::Wallpaper), - self.sub_page_button(DesktopPage::Appearance), - self.sub_page_button(DesktopPage::DockAndTopPanel), - self.sub_page_button(DesktopPage::Workspaces), - self.sub_page_button(DesktopPage::Notifications), - ).spacing(16).into() - ]).into(), - Page::Desktop(Some(DesktopPage::DesktopOptions)) => self.view_desktop_options(), - Page::Desktop(Some(sub_page)) => self.view_unimplemented_sub_page(sub_page), + Page::Desktop(desktop_page_opt) => self.view_desktop(desktop_page_opt), Page::InputDevices(None) => settings::view_column(vec![ self.page_title(self.page), column!( diff --git a/examples/cosmic/src/window/desktop.rs b/examples/cosmic/src/window/desktop.rs index 6d8c0a3..4db3709 100644 --- a/examples/cosmic/src/window/desktop.rs +++ b/examples/cosmic/src/window/desktop.rs @@ -1,8 +1,9 @@ use cosmic::{ Element, iced::Length, - iced::widget::horizontal_space, - widget::{settings, toggler}, + iced::widget::{column, container, horizontal_space, image, row, text}, + theme, + widget::{list_column, settings, toggler}, }; use super::{Message, Page, SubPage, Window}; @@ -66,12 +67,34 @@ impl SubPage for DesktopPage { } impl Window { - pub(super) fn view_desktop_options(&self) -> Element { + pub(super) fn view_desktop(&self, desktop_page_opt: Option) -> Element { + match desktop_page_opt { + None => settings::view_column(vec![ + self.page_title(self.page), + column!( + self.sub_page_button(DesktopPage::DesktopOptions), + self.sub_page_button(DesktopPage::Wallpaper), + self.sub_page_button(DesktopPage::Appearance), + self.sub_page_button(DesktopPage::DockAndTopPanel), + self.sub_page_button(DesktopPage::Workspaces), + self.sub_page_button(DesktopPage::Notifications), + ).spacing(16).into() + ]).into(), + Some(DesktopPage::DesktopOptions) => self.view_desktop_options(), + Some(DesktopPage::Wallpaper) => self.view_desktop_wallpaper(), + Some(DesktopPage::Workspaces) => self.view_desktop_workspaces(), + Some(sub_page) => self.view_unimplemented_sub_page(sub_page), + } + } + + fn view_desktop_options(&self) -> Element { settings::view_column(vec![ self.parent_page_button(DesktopPage::DesktopOptions), settings::view_section("Super Key Action") - .add(settings::item("TODO", horizontal_space(Length::Fill))) + .add(settings::item("Launcher", horizontal_space(Length::Fill))) + .add(settings::item("Workspaces", horizontal_space(Length::Fill))) + .add(settings::item("Applications", horizontal_space(Length::Fill))) .into(), settings::view_section("Hot Corner") @@ -89,4 +112,44 @@ impl Window { .into(), ]).into() } + + fn view_desktop_wallpaper(&self) -> Element { + settings::view_column(vec![ + self.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)) + ) + .padding(4) + .style(theme::Container::Box), + horizontal_space(Length::Fill), + ).into(), + + list_column() + .add(settings::item("Same background on all displays", toggler(None, self.toggler_value, Message::TogglerToggled))) + .add(settings::item("Background fit", text("TODO"))) + .add(settings::item("Slideshow", toggler(None, self.toggler_value, Message::TogglerToggled))) + .into(), + ]).into() + } + + fn view_desktop_workspaces(&self) -> Element { + settings::view_column(vec![ + self.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))) + .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))) + .into(), + ]).into() + } }