From 0bb0035f3c3c1bcf2c3aa8fcb9b4e57611d282ec Mon Sep 17 00:00:00 2001 From: Jordan Petridis Date: Wed, 13 Dec 2017 13:53:15 +0200 Subject: [PATCH] Rework of the Headerbar. Added a stack to switch between a normal and a BackButton view. Also added a centered stack switcher and removed the Home button. Backbutton is not wired yet. --- hammond-gtk/resources/gtk/headerbar.ui | 113 ++++++++++++++++++++++--- hammond-gtk/src/headerbar.rs | 15 +++- 2 files changed, 113 insertions(+), 15 deletions(-) diff --git a/hammond-gtk/resources/gtk/headerbar.ui b/hammond-gtk/resources/gtk/headerbar.ui index fc17ce5..0946f21 100644 --- a/hammond-gtk/resources/gtk/headerbar.ui +++ b/hammond-gtk/resources/gtk/headerbar.ui @@ -1,5 +1,5 @@ - + @@ -109,20 +109,70 @@ - + True False - False - True - + + True + True + True + + + True + False + go-previous-symbolic + + + + + False + False + 0 + + + + + True + False + Show Title + + + + + + True + True + 1 + + + + + False + True + + + True + False + True + + + + + + + + True + False + 5 + + True True False Add a new feed - center - + True False gtk-add @@ -135,26 +185,63 @@ - 1 + False + False + 0 - + True False center True + 0 + False + True + 4 + + + + + True + True + True + + + True + False + open-menu-symbolic + + + + + False + False + end 2 - + + True + False + vertical + + + False + True + end + 3 + + + + True True True - center True True @@ -167,8 +254,10 @@ + False + False end - -1 + 3 diff --git a/hammond-gtk/src/headerbar.rs b/hammond-gtk/src/headerbar.rs index 140eac2..1a8d6b4 100644 --- a/hammond-gtk/src/headerbar.rs +++ b/hammond-gtk/src/headerbar.rs @@ -15,24 +15,33 @@ pub struct Header { refresh: gtk::Button, add_toggle: gtk::MenuButton, switch: gtk::StackSwitcher, + stack: gtk::Stack, } impl Header { pub fn new() -> Header { let builder = gtk::Builder::new_from_resource("/org/gnome/hammond/gtk/headerbar.ui"); - let header: gtk::HeaderBar = builder.get_object("headerbar1").unwrap(); - let refresh: gtk::Button = builder.get_object("refbutton").unwrap(); - let add_toggle: gtk::MenuButton = builder.get_object("add-toggle-button").unwrap(); + let header: gtk::HeaderBar = builder.get_object("headerbar").unwrap(); + 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(); switch.set_halign(gtk::Align::Center); switch.show(); + stack.add_named(&normal_view, "normal_view"); + stack.add_named(&back_view, "back_view"); + stack.set_visible_child_name("normal_view"); + Header { container: header, refresh, add_toggle, switch, + stack, } }