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]]
|
||||
name = "iced"
|
||||
version = "0.6.0"
|
||||
version = "0.7.0"
|
||||
dependencies = [
|
||||
"iced_core",
|
||||
"iced_futures",
|
||||
|
@ -1062,11 +1062,11 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "iced_core"
|
||||
version = "0.6.2"
|
||||
version = "0.7.0"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"instant",
|
||||
"palette",
|
||||
"wasm-timer",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1081,7 +1081,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "iced_graphics"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"bytemuck",
|
||||
|
@ -1095,7 +1095,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "iced_native"
|
||||
version = "0.7.0"
|
||||
version = "0.8.0"
|
||||
dependencies = [
|
||||
"iced_core",
|
||||
"iced_futures",
|
||||
|
@ -1107,7 +1107,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "iced_style"
|
||||
version = "0.5.1"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"iced_core",
|
||||
"once_cell",
|
||||
|
@ -1116,7 +1116,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "iced_wgpu"
|
||||
version = "0.7.0"
|
||||
version = "0.8.0"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"bytemuck",
|
||||
|
@ -1135,7 +1135,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "iced_winit"
|
||||
version = "0.6.0"
|
||||
version = "0.7.0"
|
||||
dependencies = [
|
||||
"iced_futures",
|
||||
"iced_graphics",
|
||||
|
|
|
@ -1,12 +1,25 @@
|
|||
use chrono::NaiveDate;
|
||||
use std::vec::Vec;
|
||||
use std::default::Default;
|
||||
use std::string::String;
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct Event {
|
||||
begin: NaiveDate,
|
||||
end: NaiveDate,
|
||||
pub text: String,
|
||||
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 {
|
||||
fn is_in_day(&self, day: NaiveDate) -> bool {
|
||||
day >= self.begin && day <= self.end
|
||||
|
@ -23,10 +36,12 @@ impl EventsCollection {
|
|||
// TODO: hard-coded events
|
||||
events: vec![
|
||||
Event {
|
||||
text: String::from("ev_1"),
|
||||
begin: NaiveDate::from_ymd_opt(2023, 01, 15).unwrap(),
|
||||
end: NaiveDate::from_ymd_opt(2023, 01, 16).unwrap(),
|
||||
},
|
||||
Event {
|
||||
text: String::from("ev_2"),
|
||||
begin: NaiveDate::from_ymd_opt(2023, 01, 16).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 {
|
||||
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_text_margin: f32,
|
||||
|
||||
ev_height: f32,
|
||||
ev_bg: Color,
|
||||
ev_fontsize: f32
|
||||
}
|
||||
|
||||
impl CalendarParams {
|
||||
|
@ -74,7 +76,9 @@ impl CalendarParams {
|
|||
day_other_month_fg: Color::from_rgb8(220, 220, 220),
|
||||
day_weekend_bg: Color::from_rgb8(245, 245, 245),
|
||||
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,
|
||||
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 ev_height: f32 = 12.0;
|
||||
let ev_height = self.params.ev_height;
|
||||
if day_bounds.height - day_text_size.1 > ev_height {
|
||||
if self.events.is_any_in_day(current_day) {
|
||||
renderer.fill_quad(renderer::Quad {
|
||||
bounds: Rectangle {
|
||||
if let Some(ev_day) = self.events.is_any_in_day(current_day) {
|
||||
let ev_bounds = Rectangle {
|
||||
y: y + day_text_size.1,
|
||||
height: ev_height,
|
||||
..day_bounds
|
||||
},
|
||||
};
|
||||
renderer.fill_quad(renderer::Quad {
|
||||
bounds: ev_bounds,
|
||||
border_radius: 0.0.into(),
|
||||
border_width: 1.0,
|
||||
border_color: self.params.day_other_month_fg,
|
||||
},
|
||||
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