Initial stackswitcher addition into the headerbar.

This commit is contained in:
Jordan Petridis 2017-12-10 09:53:05 +02:00
parent 851be1fcfb
commit e127941d8a
No known key found for this signature in database
GPG Key ID: CEABAD9F5683B9A6
3 changed files with 23 additions and 7 deletions

View File

@ -112,7 +112,6 @@
<object class="GtkHeaderBar" id="headerbar1"> <object class="GtkHeaderBar" id="headerbar1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="title">Hammond</property>
<property name="has_subtitle">False</property> <property name="has_subtitle">False</property>
<property name="show_close_button">True</property> <property name="show_close_button">True</property>
<child> <child>
@ -131,6 +130,15 @@
</object> </object>
</child> </child>
</object> </object>
</child>
<child>
<object class="GtkStackSwitcher" id="switch">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">center</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
</object>
<packing> <packing>
<property name="position">3</property> <property name="position">3</property>
</packing> </packing>

View File

@ -24,8 +24,8 @@ impl Content {
let podcasts = PopulatedView::new(); let podcasts = PopulatedView::new();
let empty = EmptyView::new(); let empty = EmptyView::new();
stack.add_named(&widget.container, "widget"); stack.add_titled(&widget.container, "widget", "Episodes");
stack.add_named(&podcasts.container, "podcasts"); stack.add_titled(&podcasts.container, "podcasts", "Shows");
stack.add_named(&empty.container, "empty"); stack.add_named(&empty.container, "empty");
Content { Content {
@ -58,7 +58,8 @@ impl Content {
self.stack.remove(&old); self.stack.remove(&old);
self.widget = pdw; self.widget = pdw;
self.stack.add_named(&self.widget.container, "widget"); self.stack
.add_titled(&self.widget.container, "widget", "Episodes");
self.stack.set_visible_child_name(&vis); self.stack.set_visible_child_name(&vis);
old.destroy(); old.destroy();
} }
@ -69,7 +70,8 @@ impl Content {
self.stack.remove(&old); self.stack.remove(&old);
self.podcasts = pop; self.podcasts = pop;
self.stack.add_named(&self.podcasts.container, "podcasts"); self.stack
.add_titled(&self.podcasts.container, "podcasts", "Shows");
self.stack.set_visible_child_name(&vis); self.stack.set_visible_child_name(&vis);
old.destroy(); old.destroy();
} }
@ -200,14 +202,14 @@ impl ContentState<PodcastsView> {
fn replace_widget(stack: &gtk::Stack, pdw: &PodcastWidget) { fn replace_widget(stack: &gtk::Stack, pdw: &PodcastWidget) {
let old = stack.get_child_by_name("widget").unwrap(); let old = stack.get_child_by_name("widget").unwrap();
stack.remove(&old); stack.remove(&old);
stack.add_named(&pdw.container, "widget"); stack.add_titled(&pdw.container, "widget", "Episode");
old.destroy(); old.destroy();
} }
fn replace_podcasts(stack: &gtk::Stack, pop: &PopulatedView) { fn replace_podcasts(stack: &gtk::Stack, pop: &PopulatedView) {
let old = stack.get_child_by_name("podcasts").unwrap(); let old = stack.get_child_by_name("podcasts").unwrap();
stack.remove(&old); stack.remove(&old);
stack.add_named(&pop.container, "podcasts"); stack.add_titled(&pop.container, "podcasts", "Shows");
old.destroy(); old.destroy();
} }

View File

@ -13,6 +13,7 @@ pub struct Header {
home: gtk::Button, home: gtk::Button,
refresh: gtk::Button, refresh: gtk::Button,
add_toggle: gtk::MenuButton, add_toggle: gtk::MenuButton,
switch: gtk::StackSwitcher,
} }
impl Header { impl Header {
@ -23,12 +24,16 @@ impl Header {
let home: gtk::Button = builder.get_object("homebutton").unwrap(); let home: gtk::Button = builder.get_object("homebutton").unwrap();
let refresh: gtk::Button = builder.get_object("refbutton").unwrap(); let refresh: gtk::Button = builder.get_object("refbutton").unwrap();
let add_toggle: gtk::MenuButton = builder.get_object("add-toggle-button").unwrap(); let add_toggle: gtk::MenuButton = builder.get_object("add-toggle-button").unwrap();
let switch: gtk::StackSwitcher = builder.get_object("switch").unwrap();
switch.set_halign(gtk::Align::Center);
switch.show();
Header { Header {
container: header, container: header,
home, home,
refresh, refresh,
add_toggle, add_toggle,
switch,
} }
} }
@ -44,6 +49,7 @@ impl Header {
let add_popover: gtk::Popover = builder.get_object("add-popover").unwrap(); let add_popover: gtk::Popover = builder.get_object("add-popover").unwrap();
let new_url: gtk::Entry = builder.get_object("new-url").unwrap(); let new_url: gtk::Entry = builder.get_object("new-url").unwrap();
let add_button: gtk::Button = builder.get_object("add-button").unwrap(); let add_button: gtk::Button = builder.get_object("add-button").unwrap();
self.switch.set_stack(stack);
new_url.connect_changed(move |url| { new_url.connect_changed(move |url| {
println!("{:?}", url.get_text()); println!("{:?}", url.get_text());