aboutsummaryrefslogtreecommitdiff
path: root/karlgui/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'karlgui/src/main.rs')
-rw-r--r--karlgui/src/main.rs56
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),
}
});
});