use super::db; use super::ui; use iced::widget::markdown; use iced::widget::row; use iced::widget::scrollable; use iced::widget::Column; use iced::Theme; use rss_content::Content; use ui::Message; use rss_content; use iced::{ widget::{button, column, container, text}, Element, }; pub fn list_feeds() -> iced::widget::Column<'static, Message> { let feeds = db::get_feeds(); column( feeds .iter() .map(|f| { row!( button(text(f.title.clone())).on_press(Message::LoadFeed(f.feed_id)), button(text("Remove feed")).on_press(Message::RemoveFeed(f.feed_id)) ) }) .map(Element::from), ) .align_x(iced::Alignment::Start) .spacing(5) .padding(15) } pub fn list_items(feed_id: usize) -> iced::widget::Column<'static,Message> { let items: Vec = db::get_feed_items(feed_id); column( items.iter() .map(|i| { button(text(i.title.clone())).on_press(Message::LoadItem(i.item_id)) }) .map(Element::from), ) .align_x(iced::Alignment::Start) .spacing(5) .padding(15) } pub fn content_area(content: &Vec) -> iced::widget::Container { let mut children: Vec> = Vec::new(); for c in content { match c { Content::MarkdownParsed(p) => { children.push( markdown(p, Theme::Dark).map(Message::LinkClicked) ); } Content::Image(_) => {children.push(text("") .size(32) .into());}, Content::Audio(_) => {children.push(text("