From e94905c9e6c6521b6286487faf306c9cf5c8ee83 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Thu, 4 Dec 2025 15:20:12 -0500 Subject: [PATCH] very minor improvements. I know the AI generated icon is cringe, but it's a placeholder for now. (Doesn't even work on Wayland anyways) Successfully migrated to iced::application for more fine-grained control over settings. Added "all-items" view that breaks things slightly. --- Cargo.toml | 8 ++----- assets/icon_placeholder.png | Bin 0 -> 66750 bytes docs/planned-features.md | 2 +- src/db.rs | 41 ++++++++++++++++++++++++-------- src/html.rs | 23 ------------------ src/main.rs | 1 - src/ui.rs | 46 ++++++++++++++++++++++++++++++------ src/widgets.rs | 19 +++++++++++++++ 8 files changed, 92 insertions(+), 48 deletions(-) create mode 100644 assets/icon_placeholder.png delete mode 100644 src/html.rs diff --git a/Cargo.toml b/Cargo.toml index b75801e..5e6e6d7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,17 +7,13 @@ edition = "2021" iced = { git = "https://github.com/iced-rs/iced", branch = "master", features = ["image", "markdown", "svg"] } reqwest = { version = "0.12", features= ["blocking","socks"]} rss = "2.0" -web-sys = "0.3.70" -mdka = "1.2.10" #Not Sure if this is useful... rusqlite = {version=">=0.34",features=['bundled']} -html2md = "0.2" -regex = "1" +scraper = "0.23.1" directories = "6.0.0" chrono = "0.4.41" rss_content = { git = "https://code.gabe.rocks/gabriel/rss_content", version = "0.1.1" } -bytes = "1.10.1" -scraper = "0.23.1" url = "2.5.4" +#rfd = "0.15.4" (for importing files) [profile.dev] debug=true diff --git a/assets/icon_placeholder.png b/assets/icon_placeholder.png new file mode 100644 index 0000000000000000000000000000000000000000..be693c7390101a5f5f2dcae4818803c9dc619a29 GIT binary patch literal 66750 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 z

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, //date missing! needed for ordering!!! } + +fn row2feed_item(row: &Row) -> FeedItem{ + FeedItem { + item_id: row.get(0).unwrap(), + title: row.get(1).unwrap_or("NO TITLE!".to_owned()), + url: row.get(2).unwrap(), + date: row.get(3).unwrap(), + media: row.get(4).unwrap(), + description: row.get(5).unwrap(), + content: row.get(6).unwrap(), + icon: None, + } +} + +pub fn get_all_items() -> Vec { + let conn = get_db(); + let mut stmt = conn.prepare("select itemID,title,url,date,media,description,content from items").unwrap(); + let items: Result> = stmt.query_map([],|row| { + Ok(row2feed_item(row)) + }).unwrap().collect(); + match items { + Ok(i) => i, + Err(_) => { + panic!("No Items found!") + } + } +} + pub fn get_feed_items(feed_id: usize) -> Vec { let conn = get_db(); let mut stmt = conn.prepare("select itemID,title,url,date,media,description,content from items where feedID = ?1 order by date(date)").unwrap(); let items: Result> = stmt .query_map([feed_id], |row| { - Ok(FeedItem { - item_id: row.get(0).unwrap(), - title: row.get(1).unwrap(), - url: row.get(2).unwrap(), - date: row.get(3).unwrap(), - media: row.get(4).unwrap(), - description: row.get(5).unwrap(), - content: row.get(6).unwrap(), - icon: None, - }) + Ok(row2feed_item(row)) }) .unwrap() .collect(); diff --git a/src/html.rs b/src/html.rs deleted file mode 100644 index 8d307fe..0000000 --- a/src/html.rs +++ /dev/null @@ -1,23 +0,0 @@ -use html2md; -use regex::Regex; - - -/* - Content needs to be processed in chunks. - Separate out content into blocks that can be used by the UI framework - p -> text - a -> link (does this exist?) - img - > image widget - - and so on... -*/ - -/* this works, but... -- images are omitted -- Blockquotes don't display -*/ -pub fn process(content: String) -> String { - let re = Regex::new(r"(?s)]*>.*?").unwrap(); - let cleaned = re.replace_all(&content,""); - html2md::parse_html(&cleaned) -} \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 7b03e47..951ca1c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,6 @@ #[allow(unused)] pub mod net; pub mod ui; -pub mod html; pub mod db; pub mod files; pub mod widgets; diff --git a/src/ui.rs b/src/ui.rs index 8b9d073..79189ba 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -1,10 +1,10 @@ use crate::db::FeedItem; use crate::widgets::content_view; use crate::widgets::media_view; +use crate::widgets::navbar; use super::db; use super::widgets; -use iced::widget::markdown::Url; use iced::widget::row; use iced::widget::scrollable; use iced::widget::text_input; @@ -16,9 +16,18 @@ use iced::{ }; use rss_content::parse_content; use rss_content::Content; +const ICON: &[u8] = include_bytes!("../assets/icon_placeholder.png"); pub fn user_interface() -> iced::Result { - iced::run(update, view) + //iced::run(update, view) + let icon = iced::window::icon::from_file_data(ICON, None).ok(); + let app = iced::application(State::default,update,view) + .title("RSSCar") + .theme(iced::Theme::Dark) + .window(iced::window::Settings{ + icon, ..Default::default() + }); + app.run() } #[derive(Clone, Debug)] @@ -27,6 +36,7 @@ pub enum Page { FeedView, AllItems, ItemView, + CategoryView, Testing, } @@ -59,7 +69,7 @@ pub enum Message { RemoveFeed(usize), LoadItem(usize), FieldUpdated(AppField, String), - LinkClicked(Url), + LinkClicked(String), Done(String), ResetDB, } @@ -144,12 +154,14 @@ fn view(state: &State) -> Element<'_, Message> { Page::FeedView => feed_layout(&state), Page::AllItems => item_list(&state), Page::ItemView => item_view(&state), + Page::CategoryView => category_view(&state), Page::Testing => testing(&state), } } -fn home(_state: &State) -> Element<'_, Message> { +fn home(state: &State) -> Element<'_, Message> { container(column!( + widgets::navbar(state), scrollable(widgets::list_feeds()) .width(iced::Fill) .height(iced::Fill), @@ -193,15 +205,35 @@ fn item_view(state: &State) -> Element<'_, Message> { .into() } -fn item_list(_: &State) -> Element<'_, Message> { - todo!() +fn item_list(state: &State) -> Element<'_, Message> { + container( + column!( + navbar(state), + scrollable( + column( + db::get_all_items().iter().map(|i|{ + widgets::list_item(i.item_id, i.title.clone(), i.description.clone().unwrap_or("".to_owned())) + }).map(iced::Element::from) + ).align_x(iced::Alignment::Center)).width(Fill).spacing(5) + ), + + ).width(Fill).height(Fill).into() } + +fn category_view(state: &State) -> Element<'_,Message> { + column!( + navbar(state) + + ).spacing(5).into() + +} + fn testing(state: &State) -> Element<'_, Message> { column!( text("Dev Panel"), button("Add gabe.rocks").on_press(Message::AddFeed(String::from("https://gabe.rocks/rss"))), button("Add LSN").on_press(Message::AddFeed(String::from( - "https://libresolutions.network/rss" + "https://libresolutions.network/archive/index.xml" ))), row!( text_input("Add a feed", &state.feed_input) diff --git a/src/widgets.rs b/src/widgets.rs index 5e645b6..9b3b730 100644 --- a/src/widgets.rs +++ b/src/widgets.rs @@ -1,7 +1,9 @@ use crate::net; +use crate::ui::Page; use super::db; use super::ui; +use iced::widget::Text; use iced::widget::markdown; use iced::widget::row; use iced::widget::scrollable; @@ -98,6 +100,23 @@ pub fn media_view(state: &'_ ui::State) -> Element<'_, Message> { } } +pub fn navbar (state: &'_ ui::State) -> Element<'_,Message>{ + row!( + button("Home").on_press(Message::ChangePage(Page::Home)), + button("All Items").on_press(Message::ChangePage(Page::AllItems)), + button("Categories").on_press(Message::ChangePage(Page::CategoryView)) + ).spacing(5).padding(5).width(iced::Fill).into() + +} + +pub fn list_item(id: usize,title: String, description: String) -> Column<'static,Message>{ + Column::new() + .push(button(Text::new(title)).on_press(Message::LoadItem(id))) + .push(text(description)) + .align_x(iced::Alignment::Center) + .spacing(5) +} + pub fn content_view(state: &'_ ui::State) -> iced::widget::Scrollable<'_, Message> { let item = state.current_item.clone().unwrap();