add text to events

Signed-off-by: Fabrizio Iannetti <fabrizio.iannetti@gmail.com>
This commit is contained in:
Fabrizio Iannetti 2023-02-11 11:43:24 +01:00
parent dcaf8a8df9
commit e01b2b3ceb
3 changed files with 49 additions and 20 deletions

16
Cargo.lock generated
View File

@ -1049,7 +1049,7 @@ dependencies = [
[[package]] [[package]]
name = "iced" name = "iced"
version = "0.6.0" version = "0.7.0"
dependencies = [ dependencies = [
"iced_core", "iced_core",
"iced_futures", "iced_futures",
@ -1062,11 +1062,11 @@ dependencies = [
[[package]] [[package]]
name = "iced_core" name = "iced_core"
version = "0.6.2" version = "0.7.0"
dependencies = [ dependencies = [
"bitflags", "bitflags",
"instant",
"palette", "palette",
"wasm-timer",
] ]
[[package]] [[package]]
@ -1081,7 +1081,7 @@ dependencies = [
[[package]] [[package]]
name = "iced_graphics" name = "iced_graphics"
version = "0.5.0" version = "0.6.0"
dependencies = [ dependencies = [
"bitflags", "bitflags",
"bytemuck", "bytemuck",
@ -1095,7 +1095,7 @@ dependencies = [
[[package]] [[package]]
name = "iced_native" name = "iced_native"
version = "0.7.0" version = "0.8.0"
dependencies = [ dependencies = [
"iced_core", "iced_core",
"iced_futures", "iced_futures",
@ -1107,7 +1107,7 @@ dependencies = [
[[package]] [[package]]
name = "iced_style" name = "iced_style"
version = "0.5.1" version = "0.6.0"
dependencies = [ dependencies = [
"iced_core", "iced_core",
"once_cell", "once_cell",
@ -1116,7 +1116,7 @@ dependencies = [
[[package]] [[package]]
name = "iced_wgpu" name = "iced_wgpu"
version = "0.7.0" version = "0.8.0"
dependencies = [ dependencies = [
"bitflags", "bitflags",
"bytemuck", "bytemuck",
@ -1135,7 +1135,7 @@ dependencies = [
[[package]] [[package]]
name = "iced_winit" name = "iced_winit"
version = "0.6.0" version = "0.7.0"
dependencies = [ dependencies = [
"iced_futures", "iced_futures",
"iced_graphics", "iced_graphics",

View File

@ -1,12 +1,25 @@
use chrono::NaiveDate; use chrono::NaiveDate;
use std::vec::Vec; use std::vec::Vec;
use std::default::Default; use std::default::Default;
use std::string::String;
#[derive(Clone)]
pub struct Event { pub struct Event {
begin: NaiveDate, pub text: String,
end: NaiveDate, pub begin: NaiveDate,
pub end: NaiveDate,
} }
//impl Clone for Event {
// fn clone(&self) -> Self {
// Event {
// text: self.text.clone(),
// begin: self.begin,
// end: self.end,
// }
// }
//}
//
impl Event { impl Event {
fn is_in_day(&self, day: NaiveDate) -> bool { fn is_in_day(&self, day: NaiveDate) -> bool {
day >= self.begin && day <= self.end day >= self.begin && day <= self.end
@ -23,10 +36,12 @@ impl EventsCollection {
// TODO: hard-coded events // TODO: hard-coded events
events: vec![ events: vec![
Event { Event {
text: String::from("ev_1"),
begin: NaiveDate::from_ymd_opt(2023, 01, 15).unwrap(), begin: NaiveDate::from_ymd_opt(2023, 01, 15).unwrap(),
end: NaiveDate::from_ymd_opt(2023, 01, 16).unwrap(), end: NaiveDate::from_ymd_opt(2023, 01, 16).unwrap(),
}, },
Event { Event {
text: String::from("ev_2"),
begin: NaiveDate::from_ymd_opt(2023, 01, 16).unwrap(), begin: NaiveDate::from_ymd_opt(2023, 01, 16).unwrap(),
end: NaiveDate::from_ymd_opt(2023, 01, 17).unwrap(), end: NaiveDate::from_ymd_opt(2023, 01, 17).unwrap(),
}, },
@ -34,13 +49,13 @@ impl EventsCollection {
} }
} }
pub fn is_any_in_day(&self, day: NaiveDate) -> bool { pub fn is_any_in_day(&self, day: NaiveDate) -> Option<Event> {
for ev_day in &self.events { for ev_day in &self.events {
if ev_day.is_in_day(day) { if ev_day.is_in_day(day) {
return true; return Some(ev_day.clone());
} }
} }
false None
} }
} }

View File

@ -60,7 +60,9 @@ pub struct CalendarParams {
day_today_bg: Color, day_today_bg: Color,
day_text_margin: f32, day_text_margin: f32,
ev_height: f32,
ev_bg: Color, ev_bg: Color,
ev_fontsize: f32
} }
impl CalendarParams { impl CalendarParams {
@ -74,7 +76,9 @@ impl CalendarParams {
day_other_month_fg: Color::from_rgb8(220, 220, 220), day_other_month_fg: Color::from_rgb8(220, 220, 220),
day_weekend_bg: Color::from_rgb8(245, 245, 245), day_weekend_bg: Color::from_rgb8(245, 245, 245),
day_text_margin: 5.0, day_text_margin: 5.0,
ev_bg: Color::from_rgb8(100, 100, 245) ev_height: 20.0,
ev_bg: Color::from_rgb8(200, 245, 200),
ev_fontsize: 16.0
} }
} }
} }
@ -581,23 +585,33 @@ impl<'a> CalendarYearView<'a> {
horizontal_alignment: alignment::Horizontal::Left, horizontal_alignment: alignment::Horizontal::Left,
vertical_alignment: alignment::Vertical::Top, vertical_alignment: alignment::Vertical::Top,
}); });
// render events, if enough space
// render events, if enough space
let day_text_size = renderer.measure(content, font_size as u16, Default::default(), day_bounds.size()); let day_text_size = renderer.measure(content, font_size as u16, Default::default(), day_bounds.size());
let ev_height: f32 = 12.0; let ev_height = self.params.ev_height;
if day_bounds.height - day_text_size.1 > ev_height { if day_bounds.height - day_text_size.1 > ev_height {
if self.events.is_any_in_day(current_day) { if let Some(ev_day) = self.events.is_any_in_day(current_day) {
renderer.fill_quad(renderer::Quad { let ev_bounds = Rectangle {
bounds: Rectangle {
y: y + day_text_size.1, y: y + day_text_size.1,
height: ev_height, height: ev_height,
..day_bounds ..day_bounds
}, };
renderer.fill_quad(renderer::Quad {
bounds: ev_bounds,
border_radius: 0.0.into(), border_radius: 0.0.into(),
border_width: 1.0, border_width: 1.0,
border_color: self.params.day_other_month_fg, border_color: self.params.day_other_month_fg,
}, },
self.params.ev_bg); self.params.ev_bg);
renderer.fill_text(text::Text {
content: ev_day.text.as_str(),
size: self.params.ev_fontsize,
bounds: ev_bounds,
color: fg,
font: Default::default(),
horizontal_alignment: alignment::Horizontal::Left,
vertical_alignment: alignment::Vertical::Top,
});
} }
} }
} }