cacao/examples/todos_list/todos/mod.rs
2022-07-15 16:13:27 +02:00

50 lines
1.2 KiB
Rust

//! The main Todos window.
use cacao::appkit::window::{Window, WindowDelegate};
use cacao::appkit::toolbar::Toolbar;
use cacao::view::ViewController;
use crate::storage::Message;
mod toolbar;
use toolbar::TodosToolbar;
mod content_view;
use content_view::TodosContentView;
mod list;
pub struct TodosWindow {
pub content: ViewController<TodosContentView>,
pub toolbar: Toolbar<TodosToolbar>,
}
impl TodosWindow {
pub fn new() -> Self {
TodosWindow {
content: ViewController::new(TodosContentView::default()),
toolbar: Toolbar::new("TodosToolbar", TodosToolbar::default())
}
}
pub fn on_message(&self, message: Message) {
if let Some(delegate) = &self.content.view.delegate {
delegate.on_message(message);
}
}
}
impl WindowDelegate for TodosWindow {
const NAME: &'static str = "TodosWindow";
fn did_load(&mut self, window: Window) {
window.set_autosave_name("TodosWindow");
window.set_minimum_content_size(400, 400);
window.set_movable_by_background(true);
window.set_title("Tasks");
window.set_toolbar(&self.toolbar);
window.set_content_view_controller(&self.content);
}
}