r2993 - in trunk/src/target/OM-2007.2/applications/openmoko-browser2: . src

zecke at sita.openmoko.org zecke at sita.openmoko.org
Tue Sep 18 03:40:37 CEST 2007


Author: zecke
Date: 2007-09-18 03:40:35 +0200 (Tue, 18 Sep 2007)
New Revision: 2993

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-browser2/ChangeLog
   trunk/src/target/OM-2007.2/applications/openmoko-browser2/src/browser-data.h
   trunk/src/target/OM-2007.2/applications/openmoko-browser2/src/current-page.c
   trunk/src/target/OM-2007.2/applications/openmoko-browser2/src/current-page.h
Log:
2007-09-17 Holger Hans Peter Freyther <zecke at selfish.org>

        Start implementing set_current_page to allow switching
        the page. Stop/Reload is currently not implementable as
        WebKit/Gtk+ has no way to signalize if the load is done.

        * src/browser-data.h:
        * src/current-page.c:
        (current_back_clicked_closure):
        (current_forward_clicked_closure):
        (current_add_bookmark_clicked_closure):
        (setup_current_page):
        (set_current_page):
        * src/current-page.h:


Modified: trunk/src/target/OM-2007.2/applications/openmoko-browser2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-browser2/ChangeLog	2007-09-18 01:40:33 UTC (rev 2992)
+++ trunk/src/target/OM-2007.2/applications/openmoko-browser2/ChangeLog	2007-09-18 01:40:35 UTC (rev 2993)
@@ -1,5 +1,20 @@
 2007-09-17  Holger Hans Peter Freyther  <zecke at selfish.org>
 
+        Start implementing set_current_page to allow switching
+        the page. Stop/Reload is currently not implementable as
+        WebKit/Gtk+ has no way to signalize if the load is done.
+
+        * src/browser-data.h:
+        * src/current-page.c:
+        (current_back_clicked_closure):
+        (current_forward_clicked_closure):
+        (current_add_bookmark_clicked_closure):
+        (setup_current_page):
+        (set_current_page):
+        * src/current-page.h:
+
+2007-09-17  Holger Hans Peter Freyther  <zecke at selfish.org>
+
         Use g_new0 to initialize the BrowserData.
 
         * src/main.c:

Modified: trunk/src/target/OM-2007.2/applications/openmoko-browser2/src/browser-data.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-browser2/src/browser-data.h	2007-09-18 01:40:33 UTC (rev 2992)
+++ trunk/src/target/OM-2007.2/applications/openmoko-browser2/src/browser-data.h	2007-09-18 01:40:35 UTC (rev 2993)
@@ -58,6 +58,15 @@
      */
     WebKitGtkPage* pagesOverviewPage;
     WebKitGtkPage* bookmarkPage;
+
+
+    /*
+     * Current
+     */
+    GtkToolItem* currentBack;
+    GtkToolItem* currentForward;
+    GtkToolItem* currentStop;
+    GtkToolItem* currentAdd;
 };
 
 #endif

Modified: trunk/src/target/OM-2007.2/applications/openmoko-browser2/src/current-page.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-browser2/src/current-page.c	2007-09-18 01:40:33 UTC (rev 2992)
+++ trunk/src/target/OM-2007.2/applications/openmoko-browser2/src/current-page.c	2007-09-18 01:40:35 UTC (rev 2993)
@@ -28,13 +28,19 @@
 #include "current-page.h"
 
 #include <moko-finger-scroll.h>
+#include <webkitgtkframe.h>
+#include <webkitgtkpage.h>
 
 static void current_back_clicked_closure(GtkWidget* button, struct BrowserData* data)
 {
+    g_return_if_fail (data->currentPage);
+    webkit_gtk_page_go_backward(data->currentPage->webKitPage);
 }
 
 static void current_forward_clicked_closure(GtkWidget* button, struct BrowserData* data)
 {
+    g_return_if_fail (data->currentPage);
+    webkit_gtk_page_go_forward(data->currentPage->webKitPage);
 }
 
 static void current_stop_reload_clicked_closure(GtkWidget* button, struct BrowserData* data)
@@ -43,42 +49,74 @@
 
 static void current_add_bookmark_clicked_closure(GtkWidget* button, struct BrowserData* data)
 {
+    g_return_if_fail (data->currentPage);
+    g_print ("Location to bookmark: %s\n", webkit_gtk_frame_get_title (webkit_gtk_page_get_main_frame (data->currentPage->webKitPage)));
 }
 
+static void current_progress_changed(WebKitGtkPage* page, int prog, struct BrowserData* data)
+{
+}
+
 void setup_current_page(GtkBox* box, struct BrowserData* data)
 {
     GtkWidget* toolbar = gtk_toolbar_new ();
     gtk_box_pack_start (box, toolbar, FALSE, FALSE, 0);
 
 
-    GtkToolItem* toolitem;
-    toolitem = gtk_tool_button_new_from_stock (GTK_STOCK_GO_BACK);
-    gtk_tool_item_set_expand (GTK_TOOL_ITEM (toolitem), TRUE);
-    g_signal_connect (toolitem, "clicked", G_CALLBACK(current_back_clicked_closure), data);
-    gtk_widget_set_sensitive (GTK_WIDGET(toolitem), FALSE);
-    gtk_toolbar_insert (GTK_TOOLBAR (toolbar), toolitem, 0);
+    data->currentBack = gtk_tool_button_new_from_stock (GTK_STOCK_GO_BACK);
+    gtk_tool_item_set_expand (GTK_TOOL_ITEM (data->currentBack), TRUE);
+    g_signal_connect (data->currentBack, "clicked", G_CALLBACK(current_back_clicked_closure), data);
+    gtk_widget_set_sensitive (GTK_WIDGET(data->currentBack), FALSE);
+    gtk_toolbar_insert (GTK_TOOLBAR (toolbar), data->currentBack, 0);
     gtk_toolbar_insert (GTK_TOOLBAR(toolbar), gtk_separator_tool_item_new (), 1);
 
-    toolitem = gtk_tool_button_new_from_stock (GTK_STOCK_GO_FORWARD);
-    gtk_tool_item_set_expand (GTK_TOOL_ITEM (toolitem), TRUE);
-    g_signal_connect (toolitem, "clicked", G_CALLBACK(current_forward_clicked_closure), data);
-    gtk_widget_set_sensitive (GTK_WIDGET(toolitem), FALSE);
-    gtk_toolbar_insert (GTK_TOOLBAR (toolbar), toolitem, 2);
+    data->currentForward = gtk_tool_button_new_from_stock (GTK_STOCK_GO_FORWARD);
+    gtk_tool_item_set_expand (GTK_TOOL_ITEM (data->currentForward), TRUE);
+    g_signal_connect (data->currentForward, "clicked", G_CALLBACK(current_forward_clicked_closure), data);
+    gtk_widget_set_sensitive (GTK_WIDGET(data->currentForward), FALSE);
+    gtk_toolbar_insert (GTK_TOOLBAR (toolbar), data->currentForward, 2);
     gtk_toolbar_insert (GTK_TOOLBAR(toolbar), gtk_separator_tool_item_new (), 3);
 
-    toolitem = gtk_tool_button_new_from_stock (GTK_STOCK_STOP);
-    gtk_tool_item_set_expand (GTK_TOOL_ITEM (toolitem), TRUE);
-    g_signal_connect (toolitem, "clicked", G_CALLBACK(current_stop_reload_clicked_closure), data);
-    gtk_widget_set_sensitive (GTK_WIDGET(toolitem), FALSE);
-    gtk_toolbar_insert (GTK_TOOLBAR (toolbar), toolitem, 4);
+    data->currentStop = gtk_tool_button_new_from_stock (GTK_STOCK_STOP);
+    gtk_tool_item_set_expand (GTK_TOOL_ITEM (data->currentStop), TRUE);
+    g_signal_connect (data->currentStop, "clicked", G_CALLBACK(current_stop_reload_clicked_closure), data);
+    gtk_widget_set_sensitive (GTK_WIDGET(data->currentStop), FALSE);
+    gtk_toolbar_insert (GTK_TOOLBAR (toolbar), data->currentStop, 4);
     gtk_toolbar_insert (GTK_TOOLBAR(toolbar), gtk_separator_tool_item_new (), 5);
 
-    toolitem = gtk_tool_button_new_from_stock (GTK_STOCK_ADD);
-    gtk_tool_item_set_expand (GTK_TOOL_ITEM (toolitem), TRUE);
-    g_signal_connect (toolitem, "clicked", G_CALLBACK(current_add_bookmark_clicked_closure), data);
-    gtk_widget_set_sensitive (GTK_WIDGET(toolitem), FALSE);
-    gtk_toolbar_insert (GTK_TOOLBAR (toolbar), toolitem, 6);
+    data->currentAdd = gtk_tool_button_new_from_stock (GTK_STOCK_ADD);
+    gtk_tool_item_set_expand (GTK_TOOL_ITEM (data->currentAdd), TRUE);
+    g_signal_connect (data->currentAdd, "clicked", G_CALLBACK(current_add_bookmark_clicked_closure), data);
+    gtk_widget_set_sensitive (GTK_WIDGET(data->currentAdd), FALSE);
+    gtk_toolbar_insert (GTK_TOOLBAR (toolbar), data->currentAdd, 6);
 
     data->currentFingerScroll = moko_finger_scroll_new ();
     gtk_box_pack_start (box, data->currentFingerScroll, TRUE, TRUE, 0);
 }
+
+/*
+ * The current page changed
+ */
+void set_current_page(struct BrowserPage* page, struct BrowserData* data)
+{
+    if (page == data->currentPage)
+        return;
+
+    if (data->currentPage)
+        g_signal_handlers_disconnect_by_func(data->currentPage->webKitPage, (gpointer)current_progress_changed, data);
+
+    if (!page) {
+        data->currentPage = NULL;
+    } else {
+        data->currentPage = page;
+        g_signal_connect(data->currentPage->webKitPage, "load-progress-changed", G_CALLBACK(current_progress_changed), data);
+
+        /*
+         * Update the GtkToolItems
+         */
+        gtk_widget_set_sensitive (GTK_WIDGET (data->currentBack), webkit_gtk_page_can_go_backward (data->currentPage->webKitPage));
+        gtk_widget_set_sensitive (GTK_WIDGET (data->currentForward), webkit_gtk_page_can_go_forward (data->currentPage->webKitPage));
+        gtk_widget_set_sensitive (GTK_WIDGET (data->currentAdd), webkit_gtk_frame_get_title (webkit_gtk_page_get_main_frame (data->currentPage->webKitPage)) != NULL);
+        /* XXX ### FIXME TODO check if we should show stop/reload */
+    }
+}

Modified: trunk/src/target/OM-2007.2/applications/openmoko-browser2/src/current-page.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-browser2/src/current-page.h	2007-09-18 01:40:33 UTC (rev 2992)
+++ trunk/src/target/OM-2007.2/applications/openmoko-browser2/src/current-page.h	2007-09-18 01:40:35 UTC (rev 2993)
@@ -30,5 +30,6 @@
 #include "browser-data.h"
 
 void setup_current_page(GtkBox* box, struct BrowserData* data);
+void set_current_page(struct BrowserPage* page, struct BrowserData* data);
 
 #endif





More information about the commitlog mailing list