Headerbar: Factor out the Update Indicator widget.

This commit is contained in:
Jordan Petridis 2018-06-27 18:51:56 +03:00
parent 5d6fbb6f04
commit b0fc9ef05e
No known key found for this signature in database
GPG Key ID: CEABAD9F5683B9A6

View File

@ -24,11 +24,32 @@ pub struct Header {
switch: gtk::StackSwitcher, switch: gtk::StackSwitcher,
back: gtk::Button, back: gtk::Button,
show_title: gtk::Label, show_title: gtk::Label,
update_box: gtk::Box,
update_label: gtk::Label,
update_spinner: gtk::Spinner,
menu_button: gtk::MenuButton, menu_button: gtk::MenuButton,
app_menu: MenuModel, app_menu: MenuModel,
updater: UpdateIndicator,
}
#[derive(Debug, Clone)]
struct UpdateIndicator {
container: gtk::Box,
text: gtk::Label,
spinner: gtk::Spinner,
}
impl UpdateIndicator {
fn show(&self) {
self.spinner.start();
self.spinner.show();
self.container.show();
self.text.show();
}
fn hide(&self) {
self.spinner.stop();
self.spinner.hide();
self.container.hide();
self.text.hide();
}
} }
impl Default for Header { impl Default for Header {
@ -47,17 +68,21 @@ impl Default for Header {
let menu_button = builder.get_object("menu_button").unwrap(); let menu_button = builder.get_object("menu_button").unwrap();
let app_menu = menus.get_object("menu").unwrap(); let app_menu = menus.get_object("menu").unwrap();
let updater = UpdateIndicator {
container: update_box,
text: update_label,
spinner: update_spinner,
};
Header { Header {
container: header, container: header,
add_toggle, add_toggle,
switch, switch,
back, back,
show_title, show_title,
update_box,
update_label,
update_spinner,
menu_button, menu_button,
app_menu, app_menu,
updater,
} }
} }
} }
@ -142,17 +167,11 @@ impl Header {
} }
pub fn show_update_notification(&self) { pub fn show_update_notification(&self) {
self.update_spinner.start(); self.updater.show();
self.update_box.show();
self.update_spinner.show();
self.update_label.show();
} }
pub fn hide_update_notification(&self) { pub fn hide_update_notification(&self) {
self.update_spinner.stop(); self.updater.hide();
self.update_box.hide();
self.update_spinner.hide();
self.update_label.hide();
} }
pub fn open_menu(&self) { pub fn open_menu(&self) {