some ui tweaks
Some checks are pending
/ test (push) Waiting to run

This commit is contained in:
Chris Cochrun 2025-09-02 15:27:38 -05:00
parent 4792304d8b
commit d6b4cc6297
3 changed files with 63 additions and 17 deletions

View file

@ -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()
}

View file

@ -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;

View file

@ -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
}