From fc761a963d8ae6ba2bd1186d7b969cb088191af3 Mon Sep 17 00:00:00 2001 From: Jordan Petridis Date: Wed, 1 Nov 2017 17:36:47 +0200 Subject: [PATCH] Replaced description labels with TextViews. --- TODO.md | 2 +- hammond-gtk/gtk/episode_widget.ui | 43 ++++++++++++++---------------- hammond-gtk/gtk/podcast_widget.ui | 34 ++++++++++++++--------- hammond-gtk/src/widgets/episode.rs | 10 ++++--- hammond-gtk/src/widgets/podcast.rs | 8 ++++-- 5 files changed, 54 insertions(+), 43 deletions(-) diff --git a/TODO.md b/TODO.md index 141e42e..d9ff048 100644 --- a/TODO.md +++ b/TODO.md @@ -10,7 +10,7 @@ **Would be nice:** -- [ ] Possibly Convert description labels to textview. +- [x] Possibly Convert description labels to textview. - [ ] Make Podcast cover fetchng and loading not block the execution of the program at startup. - [ ] Re-design EpisodeWidget. - [ ] Lazy evaluate episode loading based on the podcast_widget's view scrolling. diff --git a/hammond-gtk/gtk/episode_widget.ui b/hammond-gtk/gtk/episode_widget.ui index 1cd47e3..fdfacf7 100644 --- a/hammond-gtk/gtk/episode_widget.ui +++ b/hammond-gtk/gtk/episode_widget.ui @@ -11,23 +11,26 @@ 5 5 - - delete_button + True True end center + 5 + 5 True False - gtk-delete + gtk-media-play + True False False + 5 end 0 @@ -60,26 +63,23 @@ - + + delete_button True True end center - 5 - 5 True False - gtk-media-play - True + gtk-delete False False - 5 end 0 @@ -161,21 +161,18 @@ True True in - 60 - 400 + 100 + 600 + True + True - + True - False - - - True - False - True - True - True - - + True + 5 + False + word-char + False @@ -189,7 +186,7 @@ - True + False True 1 diff --git a/hammond-gtk/gtk/podcast_widget.ui b/hammond-gtk/gtk/podcast_widget.ui index 2cd5eb8..fb206d1 100644 --- a/hammond-gtk/gtk/podcast_widget.ui +++ b/hammond-gtk/gtk/podcast_widget.ui @@ -136,23 +136,31 @@ Warn: This will delete downloaded content associated with this Podcast. False - True + False 0 - + True - False - True - True - word-char - end - 30 - 5 + True + in + 200 + 200 + True + True + + + True + True + False + word-char + False + + - False + True True 1 @@ -160,21 +168,21 @@ Warn: This will delete downloaded content associated with this Podcast. False - True + False 1 False - True + False 0 False - True + False 1 diff --git a/hammond-gtk/src/widgets/episode.rs b/hammond-gtk/src/widgets/episode.rs index e572000..5a54a35 100644 --- a/hammond-gtk/src/widgets/episode.rs +++ b/hammond-gtk/src/widgets/episode.rs @@ -17,7 +17,7 @@ use std::path::Path; use glib; use gtk; use gtk::prelude::*; -use gtk::ContainerExt; +use gtk::{ContainerExt, TextBufferExt}; // http://gtk-rs.org/tuto/closures // FIXME: Atm this macro is copied into every module. @@ -57,11 +57,11 @@ fn epidose_widget(db: &Database, episode: &mut Episode, pd_title: &str) -> gtk:: let unplayed_button: gtk::Button = builder.get_object("mark_unplayed_button").unwrap(); let title_label: gtk::Label = builder.get_object("title_label").unwrap(); - let desc_label: gtk::Label = builder.get_object("desc_label").unwrap(); + // let desc_label: gtk::Label = builder.get_object("desc_label").unwrap(); let expander: gtk::Expander = builder.get_object("expand_desc").unwrap(); + let desc_text_view: gtk::TextView = builder.get_object("desc_text_view").unwrap(); title_label.set_xalign(0.0); - desc_label.set_xalign(0.0); if let Some(t) = episode.title() { title_label.set_text(t); @@ -72,7 +72,9 @@ fn epidose_widget(db: &Database, episode: &mut Episode, pd_title: &str) -> gtk:: expander.connect_activate(move |_| { let plain_text = strip_html_tags(&d).join(" "); - desc_label.set_text(plain_text.trim()) + // TODO: handle unwrap + let buff = desc_text_view.get_buffer().unwrap(); + buff.set_text(plain_text.trim()); }); } diff --git a/hammond-gtk/src/widgets/podcast.rs b/hammond-gtk/src/widgets/podcast.rs index a46f51d..254ac74 100644 --- a/hammond-gtk/src/widgets/podcast.rs +++ b/hammond-gtk/src/widgets/podcast.rs @@ -38,7 +38,8 @@ pub fn podcast_widget(db: &Database, stack: >k::Stack, pd: &Podcast) -> gtk::B let cover: gtk::Image = pd_widget_buidler.get_object("cover").unwrap(); let title_label: gtk::Label = pd_widget_buidler.get_object("title_label").unwrap(); - let desc_label: gtk::Label = pd_widget_buidler.get_object("description_label").unwrap(); + // let desc_label: gtk::Label = pd_widget_buidler.get_object("description_label").unwrap(); + let desc_text_view: gtk::TextView = pd_widget_buidler.get_object("desc_text_view").unwrap(); let view: gtk::Viewport = pd_widget_buidler.get_object("view").unwrap(); let unsub_button: gtk::Button = pd_widget_buidler.get_object("unsub_button").unwrap(); let played_button: gtk::Button = pd_widget_buidler @@ -56,7 +57,10 @@ pub fn podcast_widget(db: &Database, stack: >k::Stack, pd: &Podcast) -> gtk::B view.add(&l); } - desc_label.set_text(pd.description()); + { + let buff = desc_text_view.get_buffer().unwrap(); + buff.set_text(pd.description()); + } let img = get_pixbuf_from_path(pd.image_uri(), pd.title()); if let Some(i) = img {