Renamed stack children.

This commit is contained in:
Jordan Petridis 2017-12-01 05:32:47 +02:00
parent dcc541d832
commit 3fca086d14
No known key found for this signature in database
GPG Key ID: CEABAD9F5683B9A6
4 changed files with 18 additions and 16 deletions

View File

@ -18,6 +18,8 @@ pub struct Content {
}
#[derive(Debug)]
#[allow(dead_code)]
// TODO: find a way to wrap gtk::Stack into a State machine.
pub enum ContentState {
Widget(PodcastWidget),
Empty(EmptyView),
@ -49,12 +51,12 @@ impl Content {
self.stack
.set_transition_type(gtk::StackTransitionType::SlideLeftRight);
self.stack.add_named(&self.widget.container, "pdw"); // Rename into "widget"
self.stack.add_named(&self.podcasts.container, "fb_parent"); // Rename into "podcasts"
self.stack.add_named(&self.empty.container, "empty"); // Rename into "empty"
self.stack.add_named(&self.widget.container, "widget");
self.stack.add_named(&self.podcasts.container, "podcasts");
self.stack.add_named(&self.empty.container, "empty");
// FIXME: needs actuall logic
self.stack.set_visible_child_name("fb_parent")
self.stack.set_visible_child_name("podcasts")
}
fn init(&self) {

View File

@ -62,8 +62,8 @@ impl Header {
// and add a StackSwitcher when more views are added.
self.home.connect_clicked(clone!(stack => move |_| {
let vis = stack.get_visible_child_name().unwrap();
stack.set_visible_child_name("fb_parent");
if vis != "pdw" {
stack.set_visible_child_name("podcasts");
if vis != "widget" {
update_podcasts_view(&stack);
}
}));

View File

@ -132,13 +132,13 @@ impl PodcastChild {
}
fn on_flowbox_child_activate(stack: &gtk::Stack, parent: &Podcast) {
let old = stack.get_child_by_name("pdw").unwrap();
let old = stack.get_child_by_name("widget").unwrap();
let pdw = PodcastWidget::new();
pdw.init(stack, parent);
stack.remove(&old);
stack.add_named(&pdw.container, "pdw");
stack.set_visible_child_name("pdw");
stack.add_named(&pdw.container, "widget");
stack.set_visible_child_name("widget");
// aggresive memory cleanup
// probably not needed
@ -147,17 +147,17 @@ fn on_flowbox_child_activate(stack: &gtk::Stack, parent: &Podcast) {
pub fn update_podcasts_view(stack: &gtk::Stack) {
let vis = stack.get_visible_child_name().unwrap();
let old = stack.get_child_by_name("fb_parent").unwrap();
let old = stack.get_child_by_name("podcasts").unwrap();
stack.remove(&old);
let pdw = PopulatedView::new();
pdw.init(stack);
stack.add_named(&pdw.container, "fb_parent");
stack.add_named(&pdw.container, "podcasts");
let flowbox = &pdw.flowbox;
if vis == "empty" && !flowbox.get_children().is_empty() {
stack.set_visible_child_name("fb_parent");
} else if vis == "fb_parent" && flowbox.get_children().is_empty() {
stack.set_visible_child_name("podcasts");
} else if vis == "podcasts" && flowbox.get_children().is_empty() {
stack.set_visible_child_name("empty");
} else {
// preserve the visible widget

View File

@ -103,7 +103,7 @@ fn on_unsub_button_clicked(stack: &gtk::Stack, pd: &Podcast, unsub_button: &gtk:
}
};
}
stack.set_visible_child_name("fb_parent");
stack.set_visible_child_name("podcasts");
update_podcasts_view(stack);
}
@ -115,13 +115,13 @@ fn on_played_button_clicked(stack: &gtk::Stack, pd: &Podcast) {
// Note: Stack manipulation
pub fn update_podcast_widget(stack: &gtk::Stack, pd: &Podcast) {
let old = stack.get_child_by_name("pdw").unwrap();
let old = stack.get_child_by_name("widget").unwrap();
let pdw = PodcastWidget::new();
pdw.init(stack, pd);
let vis = stack.get_visible_child_name().unwrap();
stack.remove(&old);
stack.add_named(&pdw.container, "pdw");
stack.add_named(&pdw.container, "widget");
stack.set_visible_child_name(&vis);
old.destroy();
}