improv: rearrange pages to match design

This commit is contained in:
git-f0x 2024-08-02 21:18:11 +02:00 committed by Ashley Wulber
parent 34d2b82376
commit 3d75343958
7 changed files with 47 additions and 92 deletions

View file

@ -61,7 +61,8 @@ impl SettingsApp {
PageCommands::Appearance => self.pages.page_id::<desktop::appearance::Page>(),
PageCommands::Bluetooth => None,
PageCommands::DateTime => self.pages.page_id::<time::date::Page>(),
PageCommands::DesktopPanel => self.pages.page_id::<desktop::options::Page>(),
PageCommands::Panel => self.pages.page_id::<desktop::panel::Page>(),
PageCommands::Dock => self.pages.page_id::<desktop::dock::Page>(),
PageCommands::Displays => self.pages.page_id::<display::Page>(),
PageCommands::Firmware => self.pages.page_id::<system::firmware::Page>(),
PageCommands::Keyboard => self.pages.page_id::<input::keyboard::Page>(),
@ -74,6 +75,9 @@ impl SettingsApp {
PageCommands::Touchpad => self.pages.page_id::<input::touchpad::Page>(),
PageCommands::Users => self.pages.page_id::<system::users::Page>(),
PageCommands::Wallpaper => self.pages.page_id::<desktop::wallpaper::Page>(),
PageCommands::WindowManagement => {
self.pages.page_id::<desktop::window_management::Page>()
}
PageCommands::Workspaces => self.pages.page_id::<desktop::workspaces::Page>(),
}
}
@ -311,16 +315,16 @@ impl cosmic::Application for SettingsApp {
page::update!(self.pages, message, desktop::Page);
}
crate::pages::Message::DesktopOptions(message) => {
page::update!(self.pages, message, desktop::options::Page);
}
crate::pages::Message::DesktopWallpaper(message) => {
if let Some(page) = self.pages.page_mut::<desktop::wallpaper::Page>() {
return page.update(message).map(Into::into);
}
}
crate::pages::Message::WindowManagement(message) => {
page::update!(self.pages, message, desktop::window_management::Page);
}
crate::pages::Message::DesktopWorkspaces(message) => {
page::update!(self.pages, message, desktop::workspaces::Page);
}

View file

@ -46,8 +46,10 @@ pub enum PageCommands {
Bluetooth,
/// DateTime settings page
DateTime,
/// Desktop and panel settings page
DesktopPanel,
/// Panel settings page
Panel,
/// Dock settings page
Dock,
/// Displays settings page
Displays,
/// Firmware settings page
@ -72,6 +74,8 @@ pub enum PageCommands {
Users,
/// Wallpaper settings page
Wallpaper,
/// Window management page
WindowManagement,
/// Workspaces settings page
Workspaces,
}

View file

@ -3,9 +3,9 @@
pub mod appearance;
pub mod dock;
pub mod options;
pub mod panel;
pub mod wallpaper;
pub mod window_management;
pub mod workspaces;
use cosmic::{config::CosmicTk, cosmic_config::CosmicConfigEntry};
@ -46,9 +46,11 @@ impl page::Page<crate::pages::Message> for Page {
impl page::AutoBind<crate::pages::Message> for Page {
fn sub_pages(page: page::Insert<crate::pages::Message>) -> page::Insert<crate::pages::Message> {
page.sub_page::<options::Page>()
.sub_page::<wallpaper::Page>()
page.sub_page::<wallpaper::Page>()
.sub_page::<appearance::Page>()
.sub_page::<panel::Page>()
.sub_page::<dock::Page>()
.sub_page::<window_management::Page>()
.sub_page::<workspaces::Page>()
}
}

View file

@ -127,7 +127,7 @@ impl page::Page<crate::pages::Message> for Page {
}
fn info(&self) -> page::Info {
page::Info::new("panel", "preferences-dock-symbolic")
page::Info::new("panel", "preferences-panel-symbolic")
.title(fl!("panel"))
.description(fl!("panel", "desc"))
}

View file

@ -2,9 +2,7 @@
// SPDX-License-Identifier: GPL-3.0-only
use cosmic::{
iced::Length,
theme,
widget::{self, button, container, horizontal_space, icon, row, settings, toggler},
widget::{self, settings, toggler},
Apply, Element,
};
@ -65,23 +63,20 @@ impl page::Page<crate::pages::Message> for Page {
Some(vec![
sections.insert(super_key_action()),
sections.insert(window_controls()),
sections.insert(panel_dock_links()),
])
}
fn info(&self) -> page::Info {
page::Info::new("desktop-panel-options", "video-display-symbolic")
.title(fl!("desktop-panel-options"))
.description(fl!("desktop-panel-options", "desc"))
page::Info::new(
"window-management",
"preferences-window-management-symbolic",
)
.title(fl!("window-management"))
.description(fl!("window-management", "desc"))
}
}
impl page::AutoBind<crate::pages::Message> for Page {
fn sub_pages(page: page::Insert<crate::pages::Message>) -> page::Insert<crate::pages::Message> {
page.sub_page::<super::panel::Page>()
.sub_page::<super::dock::Page>()
}
}
impl page::AutoBind<crate::pages::Message> for Page {}
pub fn super_key_action() -> Section<crate::pages::Message> {
let mut descriptions = Slab::new();
@ -105,7 +100,7 @@ pub fn super_key_action() -> Section<crate::pages::Message> {
)),
)
.apply(Element::from)
.map(crate::pages::Message::DesktopOptions)
.map(crate::pages::Message::WindowManagement)
})
}
@ -146,61 +141,6 @@ pub fn window_controls() -> Section<crate::pages::Message> {
})
}
pub fn panel_dock_links() -> Section<crate::pages::Message> {
Section::default()
.title(fl!("desktop-panels-and-applets"))
.view::<Page>(move |binder, _page, section| {
// TODO probably a way of getting the entity and its info
let mut settings = settings::view_section(&section.title);
if let Some((panel_entity, panel_info)) =
binder.info.iter().find(|(_, v)| v.id == "panel")
{
let control = row::with_children(vec![
horizontal_space(Length::Fill).into(),
icon::from_name("go-next-symbolic").size(16).into(),
]);
settings = settings.add(
settings::item::builder(panel_info.title.clone())
.description(panel_info.description.clone())
.control(control)
.spacing(16)
.apply(container)
.style(theme::Container::List)
.apply(button)
.style(theme::Button::Transparent)
.on_press(crate::pages::Message::Page(panel_entity)),
);
}
settings = if let Some((dock_entity, dock_info)) =
binder.info.iter().find(|(_, v)| v.id == "dock")
{
let control = row::with_children(vec![
horizontal_space(Length::Fill).into(),
icon::from_name("go-next-symbolic").size(16).into(),
]);
settings.add(
settings::item::builder(dock_info.title.clone())
.description(dock_info.description.clone())
.control(control)
.spacing(16)
.apply(container)
.style(theme::Container::List)
.apply(button)
.style(theme::Button::Transparent)
.on_press(crate::pages::Message::Page(dock_entity)),
)
} else {
settings
};
Element::from(settings)
})
}
fn super_key_active_config() -> Option<usize> {
let super_binding = Binding::new(shortcuts::Modifiers::new().logo(), None);

View file

@ -19,8 +19,8 @@ pub enum Message {
CustomShortcuts(input::keyboard::shortcuts::custom::Message),
DateAndTime(time::date::Message),
Desktop(desktop::Message),
DesktopOptions(desktop::options::Message),
DesktopWallpaper(desktop::wallpaper::Message),
WindowManagement(desktop::window_management::Message),
DesktopWorkspaces(desktop::workspaces::Message),
Displays(display::Message),
Dock(desktop::dock::Message),

View file

@ -142,19 +142,10 @@ dock = Dock
hot-corner = Hot Corner
.top-left-corner = Enable top-left hot corner for Workspaces
super-key = Super key
.launcher = Open Launcher
.workspaces = Open Workspaces
.applications = Open Applications
top-panel = Top Panel
.workspaces = Show Workspaces Button
.applications = Show Applications Button
window-controls = Window Controls
.minimize = Show Minimize Button
.maximize = Show Maximize Button
## Desktop: Panel
panel = Panel
@ -233,6 +224,20 @@ x-hours = { $number ->
*[other] { $number } hours
}
## Desktop: Window management
window-management = Window management
.desc = Super key action, window control options, and additional window tiling options.
super-key = Super key
.launcher = Open Launcher
.workspaces = Open Workspaces
.applications = Open Applications
window-controls = Window Controls
.minimize = Show minimize button
.maximize = Show maximize button
## Desktop: Workspaces
workspaces = Workspaces
@ -565,10 +570,10 @@ switch-to-prev-workspace = Switch to prev workspace
open-application-library = Open Application Library
open-workspaces-view = Open Workspaces Overview
## Power
## Power
power = Power
.desc = Manage power settings
.desc = Manage power settings
power-mode = Power Mode
.performance = High performance