diff --git a/src/core/presentations.rs b/src/core/presentations.rs index cb6a5e4..bf47b5b 100644 --- a/src/core/presentations.rs +++ b/src/core/presentations.rs @@ -1,13 +1,13 @@ use cosmic::widget::image::Handle; use crisp::types::{Keyword, Symbol, Value}; use miette::{IntoDiagnostic, Result}; -use mupdf::{Colorspace, Document, Matrix, Page}; +use mupdf::{Colorspace, Document, Matrix}; use serde::{Deserialize, Serialize}; use sqlx::{ pool::PoolConnection, prelude::FromRow, query, sqlite::SqliteRow, Row, Sqlite, SqliteConnection, SqlitePool, }; -use std::{path::PathBuf, sync::Arc}; +use std::path::PathBuf; use tracing::{debug, error}; use crate::{Background, Slide, SlideBuilder, TextAlignment}; diff --git a/src/core/service_items.rs b/src/core/service_items.rs index da6267d..91a1e82 100644 --- a/src/core/service_items.rs +++ b/src/core/service_items.rs @@ -1,12 +1,10 @@ use std::borrow::Cow; use std::cmp::Ordering; use std::ops::Deref; -use std::sync::{Arc, Mutex}; use cosmic::iced::clipboard::mime::{AllowedMimeTypes, AsMimeTypes}; use crisp::types::{Keyword, Symbol, Value}; use miette::{IntoDiagnostic, Result}; -use resvg::usvg::fontdb; use serde::{Deserialize, Serialize}; use tracing::{debug, error}; @@ -260,7 +258,7 @@ impl From<&Song> for ServiceItem { kind: ServiceItemKind::Song(song.clone()), database_id: song.id, title: song.title.clone(), - slides: slides.into(), + slides: slides, ..Default::default() } } else { @@ -281,7 +279,7 @@ impl From<&Video> for ServiceItem { kind: ServiceItemKind::Video(video.clone()), database_id: video.id, title: video.title.clone(), - slides: slides.into(), + slides: slides, ..Default::default() } } else { @@ -302,7 +300,7 @@ impl From<&Image> for ServiceItem { kind: ServiceItemKind::Image(image.clone()), database_id: image.id, title: image.title.clone(), - slides: slides.into(), + slides: slides, ..Default::default() } } else { @@ -325,7 +323,7 @@ impl From<&Presentation> for ServiceItem { ), database_id: presentation.id, title: presentation.title.clone(), - slides: slides.into(), + slides: slides, ..Default::default() }, Err(e) => { diff --git a/src/core/slide.rs b/src/core/slide.rs index bf897ff..b857afa 100644 --- a/src/core/slide.rs +++ b/src/core/slide.rs @@ -3,19 +3,14 @@ use cosmic::widget::image::Handle; use crisp::types::{Keyword, Symbol, Value}; use iced_video_player::Video; use miette::{miette, Result}; -use resvg::usvg::fontdb; use serde::{Deserialize, Serialize}; use std::{ fmt::Display, path::{Path, PathBuf}, - sync::Arc, }; use tracing::error; -use crate::ui::{ - pdf::PdfViewer, - text_svg::{self, TextSvg}, -}; +use crate::ui::text_svg::TextSvg; use super::songs::Song; @@ -310,7 +305,7 @@ impl Slide { } pub fn text_alignment(&self) -> TextAlignment { - self.text_alignment.clone() + self.text_alignment } pub fn font_size(&self) -> i32 { diff --git a/src/main.rs b/src/main.rs index 930a524..9027860 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,7 +7,7 @@ use cosmic::app::{Core, Settings, Task}; use cosmic::iced::alignment::Vertical; use cosmic::iced::keyboard::{Key, Modifiers}; use cosmic::iced::window::{Mode, Position}; -use cosmic::iced::{self, event, window, Color, Length, Point}; +use cosmic::iced::{self, event, window, Length, Point}; use cosmic::iced_futures::Subscription; use cosmic::iced_widget::{column, row, stack}; use cosmic::theme; @@ -40,7 +40,7 @@ use ui::song_editor::{self, SongEditor}; use ui::EditorMode; use crate::core::kinds::ServiceItemKind; -use crate::ui::text_svg::{self, shadow, stroke, TextSvg}; +use crate::ui::text_svg::{self}; pub mod core; pub mod lisp; @@ -985,7 +985,7 @@ impl cosmic::Application for App { } Message::Search(query) => { self.search_query = query.clone(); - return self.search(query); + self.search(query) } Message::UpdateSearchResults(items) => { self.search_results = items; @@ -1206,14 +1206,14 @@ where fn search(&self, query: String) -> Task { if let Some(library) = self.library.clone() { - return Task::perform( + Task::perform( async move { library.search_items(query).await }, |items| { cosmic::Action::App(Message::UpdateSearchResults( items, )) }, - ); + ) } else { Task::none() } @@ -1378,7 +1378,7 @@ where .data_received_for::(|item| { item.map_or_else( || Message::None, - |item| Message::AppendServiceItem(item), + Message::AppendServiceItem, ) }) .on_finish( @@ -1396,7 +1396,7 @@ where ] .padding(10) .spacing(10); - let mut container = Container::new(column) + let container = Container::new(column) // .height(Length::Fill) .style(nav_bar_style); diff --git a/src/ui/library.rs b/src/ui/library.rs index b8a9e8d..d8b18be 100644 --- a/src/ui/library.rs +++ b/src/ui/library.rs @@ -264,7 +264,8 @@ impl<'a> Library { let video_library = self.library_item(&self.video_library); let presentation_library = self.library_item(&self.presentation_library); - let column = column![ + + column![ text::heading("Library").center().width(Length::Fill), cosmic::iced::widget::horizontal_rule(1), song_library, @@ -275,8 +276,7 @@ impl<'a> Library { .height(Length::Fill) .padding(10) .spacing(10) - .into(); - column + .into() } pub fn library_item( @@ -481,25 +481,23 @@ impl<'a> Library { .accent_text_color() .into() } - } else { - if let Some((library, selected)) = self.selected_item + } else if let Some((library, selected)) = self.selected_item + { + if model.kind == library + && selected == index as i32 { - if model.kind == library - && selected == index as i32 - { - theme::active().cosmic().control_0().into() - } else { - theme::active() - .cosmic() - .destructive_text_color() - .into() - } + 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() @@ -529,20 +527,18 @@ impl<'a> Library { && selected == index as i32 { t.cosmic().accent.selected.into() - } else { - if let Some((library, hovered)) = - self.hovered_item + } else if let Some((library, hovered)) = + self.hovered_item + { + if model.kind == library + && hovered == index as i32 { - if model.kind == library - && hovered == index as i32 - { - t.cosmic().button.hover.into() - } else { - t.cosmic().button.base.into() - } + 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 diff --git a/src/ui/presenter.rs b/src/ui/presenter.rs index cb42d95..74b77d0 100644 --- a/src/ui/presenter.rs +++ b/src/ui/presenter.rs @@ -3,23 +3,18 @@ use std::{fs::File, io::BufReader, path::PathBuf, sync::Arc}; use cosmic::{ iced::{ - alignment::Horizontal, - border, font::{Family, Stretch, Style, Weight}, Background, Border, Color, ContentFit, Font, Length, Shadow, Vector, }, iced_widget::{ - rich_text, scrollable::{ scroll_to, AbsoluteOffset, Direction, Scrollbar, - }, - span, stack, vertical_rule, + }, stack, vertical_rule, }, prelude::*, widget::{ - container, image, mouse_area, responsive, scrollable, text, - Column, Container, Id, Image, Row, Space, + container, image, mouse_area, responsive, scrollable, text, Container, Id, Row, Space, }, Task, }; @@ -33,8 +28,6 @@ use crate::{ BackgroundKind, }; -use crate::ui::pdf::PdfViewer; - const REFERENCE_WIDTH: f32 = 1920.0; const REFERENCE_HEIGHT: f32 = 1080.0; @@ -448,7 +441,7 @@ impl Presenter { ); let container = slide_view( - &slide, + slide, &self.video, font, true, @@ -799,13 +792,11 @@ pub(crate) fn slide_view<'a>( .center_x(width) .center_y(size.height) .clip(true) - .into() } else { Container::new(Space::new(0.0, 0.0)) .center_x(width) .center_y(size.height) .clip(true) - .into() } } BackgroundKind::Html => todo!(), diff --git a/src/ui/slide_editor.rs b/src/ui/slide_editor.rs index 018e936..c430d29 100644 --- a/src/ui/slide_editor.rs +++ b/src/ui/slide_editor.rs @@ -2,11 +2,10 @@ use std::{io, path::PathBuf}; use cosmic::{ iced::{Color, Font, Length, Size}, - prelude::*, widget::{ self, canvas::{self, Program, Stroke}, - container, Canvas, + container, }, Renderer, }; diff --git a/src/ui/song_editor.rs b/src/ui/song_editor.rs index 943379c..e656ce1 100644 --- a/src/ui/song_editor.rs +++ b/src/ui/song_editor.rs @@ -10,8 +10,7 @@ use cosmic::{ iced_widget::row, theme, widget::{ - button, column, combo_box, container, horizontal_space, icon, - scrollable, text, text_editor, text_input, + button, column, combo_box, container, horizontal_space, icon, text, text_editor, text_input, }, Element, Task, }; @@ -21,11 +20,10 @@ use tracing::{debug, error}; use crate::{ core::{service_items::ServiceTrait, songs::Song}, - ui::slide_editor::{self, SlideEditor}, + ui::slide_editor::SlideEditor, Background, BackgroundKind, }; -use super::presenter::slide_view; #[derive(Debug)] pub struct SongEditor { @@ -329,7 +327,6 @@ impl SongEditor { self.slide_state .view(Font::with_name("Quicksand Bold")) .map(|_s| Message::None) - .into() } fn left_column(&self) -> Element { diff --git a/src/ui/text_svg.rs b/src/ui/text_svg.rs index 9c06e2c..6e65a4c 100644 --- a/src/ui/text_svg.rs +++ b/src/ui/text_svg.rs @@ -1,7 +1,6 @@ use std::{ fmt::Display, hash::{Hash, Hasher}, - io::Read, path::PathBuf, sync::Arc, }; @@ -13,7 +12,7 @@ use cosmic::{ ContentFit, Length, Size, }, prelude::*, - widget::{container, image::Handle, Image}, + widget::{image::Handle, Image}, }; use rapidhash::v3::rapidhash_v3; use resvg::{ @@ -312,7 +311,7 @@ impl TextSvg { debug!("text string built..."); let resvg_tree = Tree::from_data( - &final_svg.as_bytes(), + final_svg.as_bytes(), &resvg::usvg::Options { fontdb: Arc::clone(&self.fontdb), ..Default::default() @@ -385,7 +384,7 @@ pub fn text_svg_generator( slide: &mut crate::core::slide::Slide, fontdb: Arc, ) { - if slide.text().len() > 0 { + if !slide.text().is_empty() { let text_svg = TextSvg::new(slide.text()) .alignment(slide.text_alignment()) .fill("#fff")