// Copyright 2023 System76 // SPDX-License-Identifier: GPL-3.0-only use cosmic::iced::{widget::horizontal_space, Length}; use cosmic::widget::settings; use cosmic_settings_page::Section; use cosmic_settings_page::{self as page, section}; use slotmap::SlotMap; #[derive(Default)] pub struct Page; impl page::Page for Page { fn content( &self, sections: &mut SlotMap>, ) -> Option { Some(vec![ sections.insert(behavior()), sections.insert(multi_behavior()), ]) } fn info(&self) -> page::Info { page::Info::new("workspaces", "preferences-pop-desktop-workspaces-symbolic") .title(fl!("workspaces")) .description(fl!("workspaces", "desc")) } } impl page::AutoBind for Page {} fn behavior() -> Section { Section::default() .title(fl!("workspaces-behavior")) .descriptions(vec![ fl!("workspaces-behavior", "dynamic"), fl!("workspaces-behavior", "fixed"), ]) .view::(|_binder, _page, section| { let descriptions = §ion.descriptions; settings::view_section(§ion.title) .add(settings::item( &descriptions[0], horizontal_space(Length::Fill), )) .add(settings::item( &descriptions[1], horizontal_space(Length::Fill), )) .into() }) } fn multi_behavior() -> Section { Section::default() .title(fl!("workspaces-multi-behavior")) .descriptions(vec![ fl!("workspaces-multi-behavior", "span"), fl!("workspaces-multi-behavior", "separate"), ]) .view::(|_binder, _page, section| { let descriptions = §ion.descriptions; settings::view_section(§ion.title) .add(settings::item( &descriptions[0], horizontal_space(Length::Fill), )) .add(settings::item( &descriptions[1], horizontal_space(Length::Fill), )) .into() }) }