wip: use CosmicContainer

This commit is contained in:
Ashley Wulber 2023-02-27 17:42:17 -05:00 committed by Jeremy Soller
parent b0d6c29ab1
commit becdbb6eb3
11 changed files with 573 additions and 171 deletions

View file

@ -6,7 +6,7 @@ use cosmic::{
iced_native::{subscription, window},
iced_winit::window::{close, drag, minimize, toggle_maximize},
keyboard_nav,
theme::{self, Theme},
theme::{self, Theme, COSMIC_DARK, COSMIC_LIGHT},
widget::{
header_bar, icon, list, nav_bar, nav_bar_toggle, scrollable, segmented_button, settings,
warning, IconSource,
@ -25,7 +25,7 @@ mod bluetooth;
mod demo;
use self::desktop::DesktopPage;
use self::{demo::ThemeMode, desktop::DesktopPage};
mod desktop;
mod editor;
@ -176,7 +176,7 @@ impl Window {
}
#[allow(dead_code)]
#[derive(Clone, Copy, Debug)]
#[derive(Clone, Debug)]
pub enum Message {
Bluetooth(bluetooth::Message),
Close,
@ -390,7 +390,10 @@ impl Application for Window {
Message::Demo(message) => match self.demo.update(message) {
Some(demo::Output::Debug(debug)) => self.debug = debug,
Some(demo::Output::ScalingFactor(factor)) => self.set_scale_factor(factor),
Some(demo::Output::ThemeChanged(theme)) => self.theme = theme,
Some(demo::Output::ThemeChanged(theme)) => match theme {
ThemeMode::Light => self.theme = Theme::light(),
ThemeMode::Dark => self.theme = Theme::dark(),
},
Some(demo::Output::ToggleWarning) => self.toggle_warning(),
None => (),
},
@ -565,6 +568,6 @@ impl Application for Window {
}
fn theme(&self) -> Theme {
self.theme
self.theme.clone()
}
}

View file

@ -28,7 +28,13 @@ pub enum MultiOption {
OptionE,
}
#[derive(Clone, Copy, Debug)]
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum ThemeMode {
Light,
Dark,
}
#[derive(Clone, Debug)]
pub enum Message {
ButtonPressed,
CheckboxToggled(bool),
@ -41,7 +47,7 @@ pub enum Message {
Selection(segmented_button::Entity),
SliderChanged(f32),
SpinButton(spin_button::Message),
ThemeChanged(Theme),
ThemeChanged(ThemeMode),
ToggleWarning,
TogglerToggled(bool),
ViewSwitcher(segmented_button::Entity),
@ -50,7 +56,7 @@ pub enum Message {
pub enum Output {
Debug(bool),
ScalingFactor(f32),
ThemeChanged(Theme),
ThemeChanged(ThemeMode),
ToggleWarning,
}
@ -141,13 +147,19 @@ impl State {
}
pub(super) fn view<'a>(&'a self, window: &'a Window) -> Element<'a, Message> {
let choose_theme = [Theme::Light, Theme::Dark].iter().fold(
let choose_theme = [ThemeMode::Light, ThemeMode::Dark].iter().fold(
row![].spacing(10).align_items(Alignment::Center),
|row, theme| {
row.push(radio(
format!("{:?}", theme),
*theme,
Some(window.theme),
if window.theme.cosmic().is_dark && matches!(theme, ThemeMode::Dark)
|| !window.theme.cosmic().is_dark && matches!(theme, ThemeMode::Light)
{
Some(*theme)
} else {
None
},
Message::ThemeChanged,
))
},