Added PodcasWidget and prototype stack switch on flowbox_child activation.

This commit is contained in:
Jordan Petridis 2017-10-14 21:59:34 +03:00
parent 648ac9f63f
commit 430b8c3995
No known key found for this signature in database
GPG Key ID: CEABAD9F5683B9A6
2 changed files with 17 additions and 3 deletions

View File

@ -29,7 +29,7 @@
<property name="default_width">1000</property> <property name="default_width">1000</property>
<property name="default_height">600</property> <property name="default_height">600</property>
<child> <child>
<object class="GtkStack"> <object class="GtkStack" id="stack1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<child> <child>
@ -86,6 +86,9 @@
<property name="title" translatable="yes">page0</property> <property name="title" translatable="yes">page0</property>
</packing> </packing>
</child> </child>
<child>
<placeholder/>
</child>
</object> </object>
</child> </child>
<child type="titlebar"> <child type="titlebar">

View File

@ -45,8 +45,6 @@ fn create_flowbox_child(title: &str, image_uri: Option<&str>) -> gtk::FlowBoxChi
}; };
let fbc = gtk::FlowBoxChild::new(); let fbc = gtk::FlowBoxChild::new();
fbc.connect_activate(|_| println!("Hello World!, child activated"));
fbc.add(&box_); fbc.add(&box_);
fbc fbc
} }
@ -101,12 +99,19 @@ fn main() {
hammond_data::init().unwrap(); hammond_data::init().unwrap();
let glade_src = include_str!("../gtk/foo.ui"); let glade_src = include_str!("../gtk/foo.ui");
// Adapted from gnome-music AlbumWidget
let pd_widget = include_str!("../gtk/podcast_widget.ui");
let header_src = include_str!("../gtk/headerbar.ui"); let header_src = include_str!("../gtk/headerbar.ui");
let builder = gtk::Builder::new_from_string(glade_src); let builder = gtk::Builder::new_from_string(glade_src);
let header_build = gtk::Builder::new_from_string(header_src); let header_build = gtk::Builder::new_from_string(header_src);
let pd_widget = gtk::Builder::new_from_string(pd_widget);
// Get the main window // Get the main window
let window: gtk::Window = builder.get_object("window1").unwrap(); let window: gtk::Window = builder.get_object("window1").unwrap();
// Get the Stack
let stack: gtk::Stack = builder.get_object("stack1").unwrap();
let pd_widget: gtk::Box = pd_widget.get_object("podcast_widget").unwrap();
stack.add(&pd_widget);
// Get the headerbar // Get the headerbar
let header: gtk::HeaderBar = header_build.get_object("headerbar1").unwrap(); let header: gtk::HeaderBar = header_build.get_object("headerbar1").unwrap();
window.set_titlebar(&header); window.set_titlebar(&header);
@ -143,6 +148,12 @@ fn main() {
let image_uri = pd_model.get_value(&iter, 5).get::<String>(); let image_uri = pd_model.get_value(&iter, 5).get::<String>();
let f = create_flowbox_child(&title, image_uri.as_ref().map(|s| s.as_str())); let f = create_flowbox_child(&title, image_uri.as_ref().map(|s| s.as_str()));
let stack_clone = stack.clone();
let pd_widget_clone = pd_widget.clone();
f.connect_activate(move |_| {
stack_clone.set_visible_child(&pd_widget_clone);
println!("Hello World!, child activated");
});
flowbox.add(&f); flowbox.add(&f);
if !pd_model.iter_next(&iter) { if !pd_model.iter_next(&iter) {