HeaderBar Refactor.
Removed the Headerbar stack. Removed the ShowTitle. Fixed StackSwitcher centering. Set the Headerbar button valignment to center instead of fill.
This commit is contained in:
parent
fe136c8dbe
commit
9d07ba24b8
@ -109,93 +109,66 @@
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkBox" id="back_view">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="back_button">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="icon_name">go-previous-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child type="center">
|
||||
<object class="GtkLabel" id="show_title">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Show Title</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSeparator">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack_type">end</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkHeaderBar" id="headerbar">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="show_close_button">True</property>
|
||||
<child type="title">
|
||||
<object class="GtkStack" id="headerbar_stack">
|
||||
<child>
|
||||
<object class="GtkMenuButton" id="add_toggle_button">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Add a new feed</property>
|
||||
<property name="valign">center</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
<object class="GtkImage" id="add-button-image2">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="icon_name">list-add-symbolic</property>
|
||||
<property name="icon_size">1</property>
|
||||
</object>
|
||||
</child>
|
||||
<style>
|
||||
<class name="image-button"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkBox" id="normal_view">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="spacing">5</property>
|
||||
<child>
|
||||
<object class="GtkSeparator">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<object class="GtkButton" id="back_button">
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="no_show_all">True</property>
|
||||
<property name="tooltip_text" translatable="yes">Back</property>
|
||||
<property name="valign">center</property>
|
||||
<child>
|
||||
<object class="GtkImage" id="back-button-image">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="icon_name">go-previous-symbolic</property>
|
||||
<property name="icon_size">1</property>
|
||||
</object>
|
||||
</child>
|
||||
<style>
|
||||
<class name="image-button"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack_type">end</property>
|
||||
<property name="position">0</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child type="title">
|
||||
<object class="GtkStackSwitcher" id="switch">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuButton" id="menu">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="valign">center</property>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
@ -205,10 +178,7 @@
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="pack_type">end</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
@ -216,6 +186,7 @@
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="always_show_image">True</property>
|
||||
<child>
|
||||
@ -227,48 +198,8 @@
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="pack_type">end</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuButton" id="add_toggle_button">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Add a new feed</property>
|
||||
<child>
|
||||
<object class="GtkImage" id="add-button-image1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="icon_name">list-add-symbolic</property>
|
||||
<property name="icon_size">1</property>
|
||||
</object>
|
||||
</child>
|
||||
<style>
|
||||
<class name="image-button"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child type="center">
|
||||
<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="icon_size">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">4</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
|
||||
@ -15,9 +15,8 @@ pub struct Header {
|
||||
refresh: gtk::Button,
|
||||
add_toggle: gtk::MenuButton,
|
||||
switch: gtk::StackSwitcher,
|
||||
stack: gtk::Stack,
|
||||
back_button: gtk::Button,
|
||||
show_title: gtk::Label,
|
||||
// show_title: gtk::Label,
|
||||
}
|
||||
|
||||
impl Header {
|
||||
@ -28,42 +27,21 @@ impl Header {
|
||||
let refresh: gtk::Button = builder.get_object("ref_button").unwrap();
|
||||
let add_toggle: gtk::MenuButton = builder.get_object("add_toggle_button").unwrap();
|
||||
let switch: gtk::StackSwitcher = builder.get_object("switch").unwrap();
|
||||
let stack: gtk::Stack = builder.get_object("headerbar_stack").unwrap();
|
||||
let normal_view: gtk::Box = builder.get_object("normal_view").unwrap();
|
||||
let back_view: gtk::Box = builder.get_object("back_view").unwrap();
|
||||
let back_button: gtk::Button = builder.get_object("back_button").unwrap();
|
||||
let show_title: gtk::Label = builder.get_object("show_title").unwrap();
|
||||
|
||||
let stack = stack.clone();
|
||||
back_button.connect_clicked(clone!(stack => move |_| {
|
||||
stack.set_visible_child_name("normal_view");
|
||||
}));
|
||||
// let show_title: gtk::Label = builder.get_object("show_title").unwrap();
|
||||
|
||||
switch.set_halign(gtk::Align::Center);
|
||||
switch.show();
|
||||
|
||||
stack.add_named(&normal_view, "normal_view");
|
||||
stack.add_named(&back_view, "back_view");
|
||||
stack.set_transition_type(gtk::StackTransitionType::Crossfade);
|
||||
stack.set_visible_child_name("normal_view");
|
||||
|
||||
Rc::new(Header {
|
||||
container: header,
|
||||
refresh,
|
||||
add_toggle,
|
||||
switch,
|
||||
stack,
|
||||
back_button,
|
||||
show_title,
|
||||
})
|
||||
}
|
||||
|
||||
// pub fn new_initialized(content: Rc<Content>) -> Rc<Header> {
|
||||
// let header = Header::new();
|
||||
// header.init(content);
|
||||
// header
|
||||
// }
|
||||
|
||||
pub fn init(&self, content: Rc<Content>) {
|
||||
let builder = gtk::Builder::new_from_resource("/org/gnome/hammond/gtk/headerbar.ui");
|
||||
|
||||
@ -90,25 +68,32 @@ impl Header {
|
||||
utils::refresh_feed(content.clone(), None, None);
|
||||
}));
|
||||
|
||||
let stack = self.stack.clone();
|
||||
let switch = &self.switch;
|
||||
let add_toggle = &self.add_toggle;
|
||||
self.back_button
|
||||
.connect_clicked(clone!(content => move |_| {
|
||||
content.shows.stack.set_visible_child_full("podcasts", gtk::StackTransitionType::SlideLeft);
|
||||
stack.set_visible_child_name("normal_view")
|
||||
.connect_clicked(clone!(content, switch, add_toggle => move |back| {
|
||||
switch.show();
|
||||
add_toggle.show();
|
||||
back.hide();
|
||||
content.shows.stack.set_visible_child_full("podcasts", gtk::StackTransitionType::SlideRight);
|
||||
}));
|
||||
}
|
||||
|
||||
pub fn switch_to_normal(&self) {
|
||||
self.stack.set_visible_child_name("normal_view")
|
||||
}
|
||||
|
||||
pub fn switch_to_back(&self) {
|
||||
self.stack.set_visible_child_name("back_view")
|
||||
self.switch.hide();
|
||||
self.add_toggle.hide();
|
||||
self.back_button.show();
|
||||
}
|
||||
|
||||
pub fn set_show_title(&self, title: &str) {
|
||||
self.show_title.set_text(title)
|
||||
pub fn switch_to_normal(&self) {
|
||||
self.switch.show();
|
||||
self.add_toggle.show();
|
||||
self.back_button.hide();
|
||||
}
|
||||
|
||||
// pub fn set_show_title(&self, title: &str) {
|
||||
// self.show_title.set_text(title)
|
||||
// }
|
||||
}
|
||||
|
||||
fn on_add_bttn_clicked(content: Rc<Content>, entry: >k::Entry) {
|
||||
|
||||
@ -62,7 +62,7 @@ impl ShowsPopulated {
|
||||
let pd = dbqueries::get_podcast_from_id(id).unwrap();
|
||||
|
||||
show.replace_widget(&pd);
|
||||
header.set_show_title(pd.title());
|
||||
// header.set_show_title(pd.title());
|
||||
header.switch_to_back();
|
||||
show.switch_widget_animated();
|
||||
}));
|
||||
|
||||
Loading…
Reference in New Issue
Block a user