diff options
author | metamuffin <yvchraiqi@protonmail.com> | 2022-08-17 08:38:33 +0200 |
---|---|---|
committer | metamuffin <yvchraiqi@protonmail.com> | 2022-08-17 08:38:33 +0200 |
commit | 5e6509163df53788799bb7aa97d07a90bf416eb7 (patch) | |
tree | 902f37c8ffcd7b94a60a230f51418c7b6fb84bc9 /karlgui/src/main.rs | |
parent | aca12bc6d0194364d9e36c455fbcd2390e00d8be (diff) | |
download | karlender-5e6509163df53788799bb7aa97d07a90bf416eb7.tar karlender-5e6509163df53788799bb7aa97d07a90bf416eb7.tar.bz2 karlender-5e6509163df53788799bb7aa97d07a90bf416eb7.tar.zst |
refactor
Diffstat (limited to 'karlgui/src/main.rs')
-rw-r--r-- | karlgui/src/main.rs | 56 |
1 files changed, 38 insertions, 18 deletions
diff --git a/karlgui/src/main.rs b/karlgui/src/main.rs index a85459e..d683a78 100644 --- a/karlgui/src/main.rs +++ b/karlgui/src/main.rs @@ -1,14 +1,14 @@ pub mod client; -pub mod edit; pub mod helper; +pub mod views; use crate::client::Client; -use edit::ShowOrEdit; use eframe::CreationContext; use egui::CentralPanel; use karlcommon::{socket_path, ClientboundPacket, ServerboundPacket, Task}; use log::{error, info}; use std::{os::unix::net::UnixStream, process::exit}; +use views::{calendar::Calendar, edit::ShowAndEdit}; fn main() { env_logger::init(); @@ -19,9 +19,24 @@ fn main() { ) } -struct App { +pub struct Globals { client: Client, - tasks: Vec<ShowOrEdit<Task>>, + tasks: Vec<Task>, +} + +struct App { + g: Globals, + + current_tab: Tab, + + show_and_edit: ShowAndEdit, + calendar: Calendar, +} + +#[derive(PartialEq)] +enum Tab { + ShowAndEdit, + CalendarWeek, } impl App { @@ -41,19 +56,22 @@ impl App { client.send(ServerboundPacket::ListTasks); App { - client, - tasks: vec![], + current_tab: Tab::ShowAndEdit, + g: Globals { + client, + tasks: vec![], + }, + show_and_edit: Default::default(), + calendar: Default::default(), } } pub fn update_network(&mut self) { - for p in self.client.receiver.try_iter() { + for p in self.g.client.receiver.try_iter() { match p { - ClientboundPacket::TaskList(t) => { - self.tasks = t.into_iter().map(|t| ShowOrEdit::new(t, false)).collect() - } + ClientboundPacket::TaskList(t) => self.g.tasks = t, ClientboundPacket::Sync => { - self.client.busy = false; + self.g.client.busy = false; } _ => {} } @@ -65,13 +83,15 @@ impl eframe::App for App { fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { self.update_network(); CentralPanel::default().show(ctx, |ui| { - ui.add_enabled_ui(!self.client.busy, |ui| { - for t in &mut self.tasks { - if t.changed(ui) { - self.client - .send_sync(ServerboundPacket::UpdateTask(t.inner.clone())) - } - ui.separator(); + ui.add_enabled_ui(!self.g.client.busy, |ui| { + ui.horizontal(|ui| { + ui.selectable_value(&mut self.current_tab, Tab::ShowAndEdit, "Tasks"); + ui.selectable_value(&mut self.current_tab, Tab::CalendarWeek, "Calendar: Week"); + }); + ui.separator(); + match self.current_tab { + Tab::ShowAndEdit => self.show_and_edit.ui(ui, &mut self.g), + Tab::CalendarWeek => self.calendar.ui(ui, &mut self.g), } }); }); |