From f9f49285c5ecc76d3edfb0a54ffab53c2e296d7f Mon Sep 17 00:00:00 2001 From: Joris Date: Sat, 26 Feb 2022 18:57:55 +0100 Subject: Apply linter advices --- src/app/calendar.rs | 189 ---------------------------------------------------- 1 file changed, 189 deletions(-) delete mode 100644 src/app/calendar.rs (limited to 'src/app/calendar.rs') diff --git a/src/app/calendar.rs b/src/app/calendar.rs deleted file mode 100644 index 11eb893..0000000 --- a/src/app/calendar.rs +++ /dev/null @@ -1,189 +0,0 @@ -use gtk4 as gtk; - -use async_channel::Sender; -use chrono::{Datelike, NaiveDate}; -use gtk::glib; -use gtk::prelude::*; -use std::collections::HashMap; - -use crate::{app::update, app::update::Msg, app::App, model::event, model::event::Event}; - -static DAYS: [&str; 7] = ["LUN", "MAR", "MER", "JEU", "VEN", "SAM", "DIM"]; -static MONTHES: [&str; 12] = [ - "Jan", "Fév", "Mar", "Avr", "Mai", "Juin", "Juil", "Aoû", "Sep", "Oct", "Nov", "Déc", -]; - -pub fn create( - tx: Sender, - today: NaiveDate, - start_date: NaiveDate, - end_date: NaiveDate, - events: &Vec, - repeated_events: &Vec, -) -> gtk::Grid { - let grid = gtk::Grid::builder().build(); - - for col in 0..7 { - grid.attach(&day_title(col), col, 0, 1, 1); - } - - let repetitions = event::repetitions_between(repeated_events, start_date, end_date); - attach_days(tx, &grid, start_date, today, events, &repetitions); - - grid -} - -fn attach_days( - tx: Sender, - grid: >k::Grid, - start_date: NaiveDate, - today: NaiveDate, - events: &Vec, - repetitions: &HashMap>, -) { - let mut d = start_date; - for row in 1..5 { - for col in 0..7 { - grid.attach( - &day_entry(tx.clone(), d, today, events, repetitions), - col, - row, - 1, - 1, - ); - d = d.succ(); - } - } -} - -pub fn refresh_date(app: &App, date: NaiveDate, repetitions: &HashMap>) { - let d = date.signed_duration_since(app.start_date).num_days(); - - let col = (d % 7) as i32; - let row = 1 + (d / 7) as i32; - - app.grid.attach( - &day_entry(app.tx.clone(), date, app.today, &app.events, repetitions), - col, - row, - 1, - 1, - ) -} - -fn day_title(col: i32) -> gtk::Box { - let vbox = gtk::Box::builder() - .orientation(gtk::Orientation::Vertical) - .build(); - - vbox.add_css_class("g-Calendar__DayTitle"); - - let label = gtk::Label::builder().label(DAYS[col as usize]).build(); - - vbox.append(&label); - - vbox -} - -pub fn day_entry( - tx: Sender, - date: NaiveDate, - today: NaiveDate, - events: &Vec, - repetitions: &HashMap>, -) -> gtk::ScrolledWindow { - let vbox = gtk::Box::builder() - .orientation(gtk::Orientation::Vertical) - .build(); - - vbox.add_css_class("g-Calendar__Day"); - - let gesture = gtk::GestureClick::new(); - gesture.connect_pressed(glib::clone!(@strong tx => move |_, n, _, _| { - if n == 2 { - update::send(tx.clone(), Msg::ShowAddForm { date }); - } - })); - vbox.add_controller(&gesture); - - if date == today { - vbox.add_css_class("g-Calendar__Day--Today"); - } - - vbox.append(&day_label(date)); - - let mut events = events - .iter() - .filter(|e| e.date == date) - .collect::>(); - let repeated_events = repetitions.get(&date).map(|e| e.clone()).unwrap_or(vec![]); - events.extend(repeated_events.iter()); - events.sort_by_key(|e| e.start); - - if !events.is_empty() { - vbox.append(&day_events(tx, events)); - } - - let scrolled_window = gtk::ScrolledWindow::builder() - .hscrollbar_policy(gtk::PolicyType::Never) - .hexpand(true) - .vexpand(true) - .child(&vbox) - .build(); - - scrolled_window -} - -fn day_label(date: NaiveDate) -> gtk::Label { - let label = gtk::Label::builder() - .label(&format!( - "{} {}", - date.day(), - MONTHES[date.month0() as usize] - )) - .halign(gtk::Align::Start) - .build(); - - label.add_css_class("g-Calendar__DayNumber"); - - label -} - -fn day_events(tx: Sender, events: Vec<&Event>) -> gtk::Box { - let vbox = gtk::Box::builder() - .orientation(gtk::Orientation::Vertical) - .build(); - - for event in events { - let hbox = gtk::Box::builder() - .orientation(gtk::Orientation::Horizontal) - .hexpand(true) - .build(); - - let gesture = gtk::GestureClick::new(); - gesture.connect_pressed( - glib::clone!(@strong event, @strong tx => move |gesture, n, _, _| { - gesture.set_state(gtk::EventSequenceState::Claimed); - if n == 2 { - update::send(tx.clone(), Msg::ShowUpdateForm { event: event.clone() }); - } - }), - ); - hbox.add_controller(&gesture); - - hbox.add_css_class("g-Calendar__DayEvent"); - - let event_txt = &event.pprint(); - let label = gtk::Label::builder() - .label(&event_txt) - .ellipsize(gtk::pango::EllipsizeMode::End) - .tooltip_text(&event_txt) - .halign(gtk::Align::Start) - .build(); - - hbox.append(&label); - vbox.append(&hbox); - } - - vbox -} -- cgit v1.2.3