improv(calendar): simplify message handling

This commit is contained in:
Eduardo Flores 2024-03-15 05:39:03 -07:00 committed by Michael Murphy
parent ccb0dbed65
commit 5d600c70c2
2 changed files with 28 additions and 42 deletions

View file

@ -18,9 +18,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
/// Messages that are used specifically by our [`App`].
#[derive(Clone, Debug)]
pub enum Message {
PrevMonth,
NextMonth,
DaySelected(u32),
DateSelected(NaiveDate),
}
/// The [`App`] stores application-specific state.
@ -68,17 +66,13 @@ impl cosmic::Application for App {
/// Handle application events here.
fn update(&mut self, message: Self::Message) -> Command<Self::Message> {
match message {
Message::DaySelected(day) => {
cosmic::widget::calendar::set_day(&mut self.date_selected, day);
}
Message::PrevMonth => {
cosmic::widget::calendar::set_prev_month(&mut self.date_selected);
}
Message::NextMonth => {
cosmic::widget::calendar::set_next_month(&mut self.date_selected);
Message::DateSelected(date) => {
self.date_selected = date;
}
}
println!("Date selected: {:?}", self.date_selected);
Command::none()
}
@ -86,12 +80,8 @@ impl cosmic::Application for App {
fn view(&self) -> Element<Self::Message> {
let mut content = cosmic::widget::column().spacing(12);
let calendar = cosmic::widget::calendar(
&self.date_selected,
Message::PrevMonth,
Message::NextMonth,
|day| Message::DaySelected(day),
);
let calendar =
cosmic::widget::calendar(&self.date_selected, |date| Message::DateSelected(date));
content = content.push(calendar);