Use common open browser method for show website menu buttons
authorPhilipp Zabel <philipp.zabel@gmail.com>
Fri, 6 Aug 2010 16:22:28 +0000 (18:22 +0200)
committerPhilipp Zabel <philipp.zabel@gmail.com>
Fri, 6 Aug 2010 16:22:28 +0000 (18:22 +0200)
Adds a menu to the lift list window.

src/lift-detail-window.vala
src/lift-list-window.vala

index e519fda..b621417 100644 (file)
@@ -20,10 +20,6 @@ using Gtk;
 using Hildon;
 
 public class LiftDetailWindow : StackableWindow {
-       private const string BROWSER_SERVICE = "com.nokia.osso_browser";
-       private const string BROWSER_PATH = "/com/nokia/osso_browser";
-       private const string BROWSER_IF = "com.nokia.osso_browser";
-
        private const string CALENDAR_SERVICE = "com.nokia.calendar";
        private const string CALENDAR_PATH = "/com/nokia/calendar";
        private const string CALENDAR_IF = "com.nokia.calendar";
@@ -348,17 +344,7 @@ public class LiftDetailWindow : StackableWindow {
        }
 
        void on_goto_website_clicked () {
-               var url = "http://mitfahrclub.adac.de" + lift.href;
-
-               try {
-                       var conn = DBus.Bus.get (DBus.BusType.SESSION);
-
-                       dynamic DBus.Object browser = conn.get_object (BROWSER_SERVICE, BROWSER_PATH, BROWSER_IF);
-                       browser.open_new_window (url, false);
-               } catch (Error e) {
-                       stderr.printf ("Error: %s\n", e.message);
-                       Banner.show_information (this, null, _("Failed to open browser."));
-               }
+               BeifahrerProgram.open_browser (this, adac.get_lift_details_url (lift));
        }
 
        bool on_image_eventbox_button_pressed (Gdk.EventButton event) {
index 4e82d9a..e4c5ae2 100644 (file)
@@ -30,6 +30,9 @@ public class LiftListWindow : StackableWindow {
        Label no_lifts;
        GConf.Client gconf;
        bool preload = false;
+       string url;
+
+       Gtk.Button goto_website;
 
        public LiftListWindow (AdacMitfahrclub _adac) {
                adac = _adac;
@@ -38,6 +41,11 @@ public class LiftListWindow : StackableWindow {
        construct {
                set_title ("Beifahrer");
 
+               var menu = new AppMenu ();
+               goto_website = new Gtk.Button.with_label (_("Show website"));
+               menu.append (goto_website);
+               set_main_menu (menu);
+
                gconf = GConf.Client.get_default ();
                store = new ListStore (6, typeof (string), typeof (string), typeof (string), typeof (string), typeof (string), typeof (Lift));
 
@@ -113,6 +121,7 @@ public class LiftListWindow : StackableWindow {
 
                tree.row_activated.connect (this.on_row_activated);
                Gdk.Screen.get_default ().size_changed.connect (this.on_orientation_changed);
+               goto_website.clicked.connect (on_goto_website_clicked);
        }
 
        public async void find_lifts (string city_from, int radius_from, string city_to, int radius_to, Date date, int tolerance = 0) {
@@ -120,6 +129,10 @@ public class LiftListWindow : StackableWindow {
                set_title ("%s - %s".printf (city_from, city_to));
                Hildon.gtk_window_set_progress_indicator (this, 1);
 
+               url = adac.get_lift_list_url (city_from, radius_from, city_to, radius_to, date, tolerance);
+               if (url == null)
+                       return;
+               goto_website.show ();
                var lift_list = yield adac.get_lift_list (city_from, radius_from, city_to, radius_to, date, tolerance);
                foreach (Lift lift in lift_list) {
                        string icon_name = null;
@@ -164,6 +177,10 @@ public class LiftListWindow : StackableWindow {
                Hildon.gtk_window_set_progress_indicator (this, 0);
        }
 
+       void on_goto_website_clicked () {
+               BeifahrerProgram.open_browser (this, url);
+       }
+
        private void on_row_activated (TreeView tree, TreePath /*_*/path, TreeViewColumn column) {
                TreeModel model = tree.model;
                TreeIter iter;