cacao/examples/todos_list/app.rs
Esteban Borai 399600d443 fix: 'static lifetime elision for examples
Takes advantage of lifetime elision on some examples where the
rule applies.

Refer: https://doc.rust-lang.org/reference/lifetime-elision.html#static-lifetime-elision
2022-08-25 22:17:52 -04:00

38 lines
1 KiB
Rust

//! Implements the start of the App lifecycle. Handles creating the required menu and window
//! components and message dispatching.
use cacao::appkit::{App, AppDelegate};
use cacao::notification_center::Dispatcher;
use crate::menu::menu;
use crate::storage::{Defaults, Message};
use crate::windows::WindowManager;
/// This handles routing lifecycle events, and maintains our `WindowManager`.
#[derive(Default)]
pub struct TodosApp {
pub window_manager: WindowManager,
}
impl AppDelegate for TodosApp {
/// Sets the menu, activates the app, opens the main window and requests notification
/// permissions.
fn did_finish_launching(&self) {
Defaults::register();
App::set_menu(menu());
App::activate();
self.window_manager.open_main();
}
}
impl Dispatcher for TodosApp {
type Message = Message;
/// Handles a message that came over on the main (UI) thread.
fn on_ui_message(&self, message: Self::Message) {
self.window_manager.on_ui_message(message);
}
}