diff --git a/src/model/events.rs b/src/model/events.rs index 8e6165f..94c5713 100644 --- a/src/model/events.rs +++ b/src/model/events.rs @@ -95,6 +95,10 @@ impl EventsCollection { } events_in_day } + + pub fn sort(&mut self) { + self.events.sort_by_key(|event| event.begin); + } } impl Default for EventsCollection { diff --git a/src/model/ical_bridge.rs b/src/model/ical_bridge.rs index 7e7e2d6..bfb9de0 100644 --- a/src/model/ical_bridge.rs +++ b/src/model/ical_bridge.rs @@ -39,5 +39,7 @@ pub fn load_calendar(calendar_path: &std::path::Path, events: &mut EventsCollect _ => (), } } + + events.sort(); } diff --git a/src/ui/calendar.rs b/src/ui/calendar.rs index d37b668..0f23efc 100644 --- a/src/ui/calendar.rs +++ b/src/ui/calendar.rs @@ -131,17 +131,20 @@ fn render_events_in_row( // update event bars for cell in row_grid { ev_y = y; + println!("col={}", cell.pos_x); for ev_bar in ev_bars.iter_mut() { if ev_bar.ev.begin == current_day || (ev_bar.ev.begin < first_day && current_day == first_day) { // start of event ev_bar.bounds.x = cell.x; ev_bar.bounds.y = ev_y; + println!("start[{}] y={}", ev_bar.ev.text, ev_y); } if ev_bar.ev.end == current_day { // end of event -> set width ev_bar.bounds.width = cell.x + cell.width - ev_bar.bounds.x; } if ev_bar.ev.is_in_day(current_day) { + println!("ev_y {}->{}", ev_y, ev_y+ ev_height); ev_y += ev_height; } }