From 32cd24fc7b7d69a691552e58a593f63ed93764d2 Mon Sep 17 00:00:00 2001 From: Jordan Petridis Date: Mon, 18 Dec 2017 18:20:40 +0200 Subject: [PATCH] EpisodesView: Added glade files and initial yak shaving. --- hammond-gtk/resources/gtk/episode_widget.ui | 6 +- hammond-gtk/resources/gtk/episodes_view.ui | 82 +++++++++++++++++++ .../resources/gtk/episodes_view_widget.ui | 25 ++++++ hammond-gtk/resources/gtk/show_widget.ui | 46 ++++++----- hammond-gtk/resources/resources.xml | 2 + hammond-gtk/src/content.rs | 7 +- hammond-gtk/src/views/episodes.rs | 46 +++++++++++ hammond-gtk/src/widgets/episode.rs | 6 +- hammond-gtk/src/widgets/show.rs | 4 - 9 files changed, 190 insertions(+), 34 deletions(-) create mode 100644 hammond-gtk/resources/gtk/episodes_view.ui create mode 100644 hammond-gtk/resources/gtk/episodes_view_widget.ui diff --git a/hammond-gtk/resources/gtk/episode_widget.ui b/hammond-gtk/resources/gtk/episode_widget.ui index dbf6a43..e7cf0a5 100644 --- a/hammond-gtk/resources/gtk/episode_widget.ui +++ b/hammond-gtk/resources/gtk/episode_widget.ui @@ -15,6 +15,7 @@ True False + center vertical 5 @@ -261,8 +262,8 @@ - False - True + True + False 5 0 @@ -275,6 +276,7 @@ False True 5 + end 1 diff --git a/hammond-gtk/resources/gtk/episodes_view.ui b/hammond-gtk/resources/gtk/episodes_view.ui new file mode 100644 index 0000000..8e8f3ab --- /dev/null +++ b/hammond-gtk/resources/gtk/episodes_view.ui @@ -0,0 +1,82 @@ + + + + + + True + False + vertical + + + True + True + in + + + True + False + + + True + False + center + + + True + False + vertical + + + + + + True + False + 0 + + + + + 600 + True + False + center + vertical + + + + + + False + True + 1 + + + + + True + False + vertical + + + + + + True + False + 2 + + + + + + + + + True + True + 0 + + + + diff --git a/hammond-gtk/resources/gtk/episodes_view_widget.ui b/hammond-gtk/resources/gtk/episodes_view_widget.ui new file mode 100644 index 0000000..a8ec5f9 --- /dev/null +++ b/hammond-gtk/resources/gtk/episodes_view_widget.ui @@ -0,0 +1,25 @@ + + + + + + True + False + + + True + False + 102 + image-x-generic-symbolic + + + False + True + 0 + + + + + + + diff --git a/hammond-gtk/resources/gtk/show_widget.ui b/hammond-gtk/resources/gtk/show_widget.ui index cc3c9b4..ead850a 100644 --- a/hammond-gtk/resources/gtk/show_widget.ui +++ b/hammond-gtk/resources/gtk/show_widget.ui @@ -78,6 +78,26 @@ False vertical 10 + + + True + False + start + end + Show description + True + 57 + + + + + + False + False + end + 1 + + True @@ -128,6 +148,9 @@ True center center + False @@ -145,27 +168,6 @@ 0 - - - True - False - start - center - Show description - True - word-char - 55 - - - - - - True - True - end - 1 - - True @@ -176,7 +178,7 @@ False - True + False 0 diff --git a/hammond-gtk/resources/resources.xml b/hammond-gtk/resources/resources.xml index cb87ca4..0c91cd0 100644 --- a/hammond-gtk/resources/resources.xml +++ b/hammond-gtk/resources/resources.xml @@ -4,6 +4,8 @@ gtk/episode_widget.ui gtk/show_widget.ui gtk/empty_view.ui + gtk/episodes_view.ui + gtk/episodes_view_widget.ui gtk/shows_view.ui gtk/shows_child.ui gtk/headerbar.ui diff --git a/hammond-gtk/src/content.rs b/hammond-gtk/src/content.rs index adc4cb6..3bdf019 100644 --- a/hammond-gtk/src/content.rs +++ b/hammond-gtk/src/content.rs @@ -6,6 +6,7 @@ use hammond_data::dbqueries; use views::shows::ShowsPopulated; use views::empty::EmptyView; +use views::episodes::EpisodesView; use widgets::show::ShowWidget; use headerbar::Header; @@ -155,14 +156,14 @@ struct EpisodeStack { impl EpisodeStack { fn new() -> Rc { - let _pop = RecentEpisodes {}; + let episodes = EpisodesView::default(); let empty = EmptyView::new(); let stack = gtk::Stack::new(); - // stack.add_named(&pop.container, "populated"); + stack.add_named(&episodes.container, "episodes"); stack.add_named(&empty.container, "empty"); // FIXME: - stack.set_visible_child_name("empty"); + stack.set_visible_child_name("episodes"); Rc::new(EpisodeStack { // empty, diff --git a/hammond-gtk/src/views/episodes.rs b/hammond-gtk/src/views/episodes.rs index 8b13789..e8eb3da 100644 --- a/hammond-gtk/src/views/episodes.rs +++ b/hammond-gtk/src/views/episodes.rs @@ -1 +1,47 @@ +use gtk; +use gtk::prelude::*; +use widgets::episode::EpisodeWidget; + +#[derive(Debug, Clone)] +pub struct EpisodesView { + pub container: gtk::Box, + frame_parent: gtk::Box, +} + +impl Default for EpisodesView { + fn default() -> Self { + let builder = gtk::Builder::new_from_resource("/org/gnome/hammond/gtk/episodes_view.ui"); + let container: gtk::Box = builder.get_object("container").unwrap(); + let frame_parent: gtk::Box = builder.get_object("frame_parent").unwrap(); + + EpisodesView { + container, + frame_parent, + } + } +} + +#[derive(Debug, Clone)] +struct EpisodesViewWidget { + container: gtk::Box, + image: gtk::Image, + episode: gtk::Box, +} + +impl Default for EpisodesViewWidget { + fn default() -> Self { + let builder = + gtk::Builder::new_from_resource("/org/gnome/hammond/gtk/episodes_view_widget.ui"); + let container: gtk::Box = builder.get_object("container").unwrap(); + let image: gtk::Image = builder.get_object("cover").unwrap(); + let ep = EpisodeWidget::default(); + container.add(&ep.container); + + EpisodesViewWidget { + container, + image, + episode: ep.container, + } + } +} diff --git a/hammond-gtk/src/widgets/episode.rs b/hammond-gtk/src/widgets/episode.rs index fd9888d..8beb2b0 100644 --- a/hammond-gtk/src/widgets/episode.rs +++ b/hammond-gtk/src/widgets/episode.rs @@ -32,9 +32,9 @@ type Foo = RefCell< thread_local!(static GLOBAL: Foo = RefCell::new(None)); -#[derive(Debug)] -struct EpisodeWidget { - container: gtk::Box, +#[derive(Debug, Clone)] +pub struct EpisodeWidget { + pub container: gtk::Box, play: gtk::Button, delete: gtk::Button, download: gtk::Button, diff --git a/hammond-gtk/src/widgets/show.rs b/hammond-gtk/src/widgets/show.rs index c232661..7a30a63 100644 --- a/hammond-gtk/src/widgets/show.rs +++ b/hammond-gtk/src/widgets/show.rs @@ -40,10 +40,6 @@ impl Default for ShowWidget { let link: gtk::Button = builder.get_object("link_button").unwrap(); let settings: gtk::MenuButton = builder.get_object("settings_button").unwrap(); - unsub - .get_style_context() - .map(|c| c.add_class("destructive-action")); - ShowWidget { container, cover,