diff --git a/src/WebWindow.vala b/src/WebWindow.vala index 173e566..54da055 100644 --- a/src/WebWindow.vala +++ b/src/WebWindow.vala @@ -36,6 +36,8 @@ namespace Webpin { //widgets private WebApp web_app; + Gtk.Spinner spinner; + public WebWindow (string webapp_name, string webapp_uri) { set_wmclass(webapp_uri, webapp_uri); @@ -44,6 +46,11 @@ namespace Webpin { var headerbar = new Gtk.HeaderBar (); headerbar.title = webapp_name; headerbar.show_close_button = true; + + spinner = new Gtk.Spinner (); + spinner.set_size_request (16, 16); + headerbar.pack_end (spinner); + //style if (web_app.ui_color != "none") { try { @@ -97,6 +104,14 @@ namespace Webpin { } }); + web_app.request_begin.connect (() => { + spinner.active = true; + }); + + web_app.request_finished.connect (() => { + spinner.active = false; + }); + add(web_app); show_all(); } diff --git a/src/Widgets/WebApp.vala b/src/Widgets/WebApp.vala index c301c4a..4d797b4 100644 --- a/src/Widgets/WebApp.vala +++ b/src/Widgets/WebApp.vala @@ -40,6 +40,9 @@ namespace Webpin { public signal void external_request (WebKit.NavigationAction action); public signal void theme_color_changed(string color); + public signal void request_begin (); + public signal void request_finished (); + public WebApp (string webapp_name, string app_url) { @@ -73,7 +76,7 @@ namespace Webpin { spinner.active = true; spinner.halign = Gtk.Align.CENTER; spinner.valign = Gtk.Align.CENTER; - spinner.set_size_request (24, 24); + spinner.set_size_request (32, 32); container = new Gtk.Box(Gtk.Orientation.VERTICAL, 0); container.halign = Gtk.Align.FILL; container.valign = Gtk.Align.FILL; @@ -118,6 +121,7 @@ namespace Webpin { //update theme color if changed app_view.load_changed.connect ( (load_event) => { + request_begin (); if (load_event == WebKit.LoadEvent.FINISHED) { debug ("determine color"); determine_theme_color.begin(); @@ -174,7 +178,11 @@ namespace Webpin { if (file != null) file.edit_propertie ("WebpinThemeColor", ui_color); } - container.set_visible(false); + if(container.visible) { + container.visible = false; + } + + request_finished (); } } }