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