diff --git a/src/app.rs b/src/app.rs index 47939e4..7508c1e 100644 --- a/src/app.rs +++ b/src/app.rs @@ -21,6 +21,8 @@ use iced::{ Element, Length, widget::{ + column, + container, Column, Container, text, @@ -56,7 +58,9 @@ pub struct CalendarApp { controls: Controls, grid_state: pane_grid::State, main_pane: pane_grid::Pane, + split_value: f32, events: EventsCollection, + calendars: std::vec::Vec, } impl Default for CalendarApp { @@ -69,7 +73,9 @@ impl Default for CalendarApp { controls: Controls::default(), grid_state, main_pane, + split_value: 0.20, events: EventsCollection::default(), + calendars: std::vec::Vec::new(), } } } @@ -77,9 +83,13 @@ impl Default for CalendarApp { impl CalendarApp { pub fn with_files(calendar_paths: std::vec::Vec) -> Self { let view_date = Utc::now().date_naive(); + let calendars = calendar_paths.iter() + .map(|path| {std::string::String::from(path.file_name().unwrap().to_str().unwrap_or("<>"))}) + .collect(); let mut app = CalendarApp { view_date, events: EventsCollection::new(), + calendars, ..CalendarApp::default() }; for calendar_path in calendar_paths { @@ -115,6 +125,7 @@ impl CalendarApp { self.toggle_sidebar(); }, Message::Resized(pane_grid::ResizeEvent { split, ratio }) => { + self.split_value = ratio; self.grid_state.resize(split, ratio); }, } @@ -129,7 +140,10 @@ impl CalendarApp { // no sidebar: split the main pane (calendar) and move the new pane to the left if let Some((new_pane, split)) = self.grid_state.split(pane_grid::Axis::Vertical, self.main_pane, PaneGridState{pane_type: PaneType::Sidebar}) { self.grid_state.move_to_edge(new_pane, pane_grid::Edge::Left); - self.grid_state.resize(split, 0.25); + let root = self.grid_state.layout(); + if let pane_grid::Node::Split { id, axis: _, ratio: _, a: _, b: _ } = root { + self.grid_state.resize(*id, self.split_value); + } }; } } @@ -152,7 +166,13 @@ impl CalendarApp { } fn get_sidebar_view(&self) -> Container { - Container::new(text("TODO")) + //container(self.calendars.iter().map(|name| {text(name.as_str())})) + let mut col = column!("Calendars:") + .align_x(Alignment::Start); + for calendar_name in &self.calendars { + col = col.push(text(calendar_name.as_str())); + } + container(col) } pub fn view(&self) -> Element {