Move desktop views into separate file

This commit is contained in:
Jeremy Soller 2022-12-21 14:21:51 -07:00
parent 4ba38dc25d
commit 8c78f23902
No known key found for this signature in database
GPG key ID: 87F211AF2BE4C2FE
3 changed files with 69 additions and 18 deletions

View file

@ -6,4 +6,4 @@ edition = "2021"
publish = false publish = false
[dependencies] [dependencies]
libcosmic = { path = "../..", default-features = false, features = ["debug", "swbuf", "winit"] } libcosmic = { path = "../..", default-features = false, features = ["debug", "wgpu", "winit"] }

View file

@ -381,19 +381,7 @@ 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.view_bluetooth(), Page::Bluetooth => self.view_bluetooth(),
Page::Desktop(None) => settings::view_column(vec![ Page::Desktop(desktop_page_opt) => self.view_desktop(desktop_page_opt),
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::InputDevices(None) => settings::view_column(vec![ Page::InputDevices(None) => settings::view_column(vec![
self.page_title(self.page), self.page_title(self.page),
column!( column!(

View file

@ -1,8 +1,9 @@
use cosmic::{ use cosmic::{
Element, Element,
iced::Length, iced::Length,
iced::widget::horizontal_space, iced::widget::{column, container, horizontal_space, image, row, text},
widget::{settings, toggler}, theme,
widget::{list_column, settings, toggler},
}; };
use super::{Message, Page, SubPage, Window}; use super::{Message, Page, SubPage, Window};
@ -66,12 +67,34 @@ impl SubPage for DesktopPage {
} }
impl Window { impl Window {
pub(super) fn view_desktop_options(&self) -> Element<Message> { pub(super) fn view_desktop(&self, desktop_page_opt: Option<DesktopPage>) -> Element<Message> {
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<Message> {
settings::view_column(vec![ settings::view_column(vec![
self.parent_page_button(DesktopPage::DesktopOptions), self.parent_page_button(DesktopPage::DesktopOptions),
settings::view_section("Super Key Action") 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(), .into(),
settings::view_section("Hot Corner") settings::view_section("Hot Corner")
@ -89,4 +112,44 @@ impl Window {
.into(), .into(),
]).into() ]).into()
} }
fn view_desktop_wallpaper(&self) -> Element<Message> {
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<Message> {
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()
}
} }