add text to events
Signed-off-by: Fabrizio Iannetti <fabrizio.iannetti@gmail.com>
This commit is contained in:
parent
dcaf8a8df9
commit
e01b2b3ceb
|
@ -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",
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue