diff --git a/src/ui/library.rs b/src/ui/library.rs index c83760d..5c67fa5 100644 --- a/src/ui/library.rs +++ b/src/ui/library.rs @@ -460,14 +460,45 @@ impl<'a> Library { })) .center_y(20) .center_x(Length::Fill); - let subtext = container(responsive(|size| { + let subtext = container(responsive(move |size| { let color: Color = if item.background().is_some() { - theme::active().cosmic().accent_text_color().into() + if let Some((library, selected)) = self.selected_item + { + if model.kind == library + && selected == index as i32 + { + theme::active().cosmic().control_0().into() + } else { + theme::active() + .cosmic() + .accent_text_color() + .into() + } + } else { + theme::active() + .cosmic() + .accent_text_color() + .into() + } } else { - theme::active() - .cosmic() - .destructive_text_color() - .into() + if let Some((library, selected)) = self.selected_item + { + if model.kind == library + && selected == index as i32 + { + theme::active().cosmic().control_0().into() + } else { + theme::active() + .cosmic() + .destructive_text_color() + .into() + } + } else { + theme::active() + .cosmic() + .destructive_text_color() + .into() + } }; text::body(elide_text(item.subtext(), size.width)) .center() @@ -498,7 +529,19 @@ impl<'a> Library { { t.cosmic().accent.selected.into() } else { - t.cosmic().button.base.into() + if let Some((library, hovered)) = + self.hovered_item + { + if model.kind == library + && hovered == index as i32 + { + t.cosmic().button.hover.into() + } else { + t.cosmic().button.base.into() + } + } else { + t.cosmic().button.base.into() + } } } else if let Some((library, hovered)) = self.hovered_item @@ -519,6 +562,7 @@ impl<'a> Library { .rounded(t.cosmic().corner_radii.radius_m), ) }) + .padding([3, 0]) .into() } diff --git a/src/ui/presenter.rs b/src/ui/presenter.rs index 5a604b5..5880d8a 100644 --- a/src/ui/presenter.rs +++ b/src/ui/presenter.rs @@ -2,36 +2,36 @@ use miette::{IntoDiagnostic, Result}; use std::{fs::File, io::BufReader, path::PathBuf, sync::Arc}; use cosmic::{ - Task, iced::{ - Background, Border, Color, ContentFit, Font, Length, Shadow, - Vector, alignment::Horizontal, border, font::{Family, Stretch, Style, Weight}, + Background, Border, Color, ContentFit, Font, Length, Shadow, + Vector, }, iced_widget::{ rich_text, scrollable::{ - AbsoluteOffset, Direction, Scrollbar, scroll_to, + scroll_to, AbsoluteOffset, Direction, Scrollbar, }, span, stack, vertical_rule, }, prelude::*, widget::{ - Column, Container, Id, Row, Space, container, image, - mouse_area, responsive, scrollable, text, + container, image, mouse_area, responsive, scrollable, text, + Column, Container, Id, Row, Space, }, + Task, }; -use iced_video_player::{Position, Video, VideoPlayer, gst_pbutils}; +use iced_video_player::{gst_pbutils, Position, Video, VideoPlayer}; use rodio::{Decoder, OutputStream, Sink}; use tracing::{debug, error, info, warn}; use url::Url; use crate::{ - BackgroundKind, core::{service_items::ServiceItem, slide::Slide}, ui::text_svg, + BackgroundKind, }; const REFERENCE_WIDTH: f32 = 1920.0; diff --git a/src/ui/text_svg.rs b/src/ui/text_svg.rs index e8e185a..a2e844a 100644 --- a/src/ui/text_svg.rs +++ b/src/ui/text_svg.rs @@ -290,7 +290,7 @@ impl TextSvg { self.font.name, self.font.size, self.fill, stroke, text); - // debug!(?final_svg); + debug!("starting..."); let resvg_tree = Tree::from_str( &final_svg, &resvg::usvg::Options { @@ -299,15 +299,17 @@ impl TextSvg { }, ) .expect("Woops mama"); - // debug!(?resvg_tree); + debug!("parsed"); let transform = tiny_skia::Transform::default(); let mut pixmap = Pixmap::new(size.width as u32, size.height as u32) .expect("opops"); resvg::render(&resvg_tree, transform, &mut pixmap.as_mut()); // debug!(?pixmap); + debug!("rendered"); let handle = Handle::from_bytes(pixmap.take()); self.handle = Some(handle); + debug!("stored"); self }