refactor(cosmic): Separate states across views

This commit is contained in:
Michael Aaron Murphy 2022-12-30 17:40:16 +01:00 committed by Ashley Wulber
parent ad0443af3f
commit 0cea2023f8
6 changed files with 278 additions and 108 deletions

View file

@ -3,16 +3,32 @@ use cosmic::{
iced::widget::{column, text},
widget::{list_column, settings, toggler},
};
use super::{Message, Page, Window};
use super::{Page, Window};
impl Window {
pub(super) fn view_bluetooth(&self) -> Element<Message> {
#[derive(Clone, Copy, Debug)]
pub enum Message {
Enable(bool)
}
#[derive(Default)]
pub struct State {
enabled: bool
}
impl State {
pub(super) fn update(&mut self, message: Message) {
match message {
Message::Enable(value) => self.enabled = value,
}
}
pub(super) fn view<'a>(&'a self, window: &'a Window) -> Element<'a, Message> {
settings::view_column(vec![
self.page_title(Page::Bluetooth),
window.page_title(Page::Bluetooth),
column!(
list_column()
.add(settings::item("Bluetooth", toggler(None, self.toggler_value, Message::TogglerToggled))),
.add(settings::item("Bluetooth", toggler(None, self.enabled, Message::Enable))),
text("Now visible as \"TODO\", just kidding")
).spacing(8).into(),