r50 - in trunk/src/target/OM-2007: applications/openmoko-taskmanager qmake
mickey at gta01.hmw-consulting.de
mickey at gta01.hmw-consulting.de
Mon Sep 25 14:50:21 CEST 2006
Author: mickey
Date: 2006-09-25 12:50:20 +0000 (Mon, 25 Sep 2006)
New Revision: 50
Added:
trunk/src/target/OM-2007/applications/openmoko-taskmanager/callbacks.c
trunk/src/target/OM-2007/applications/openmoko-taskmanager/callbacks.h
trunk/src/target/OM-2007/applications/openmoko-taskmanager/main.h
Modified:
trunk/src/target/OM-2007/applications/openmoko-taskmanager/footer.c
trunk/src/target/OM-2007/applications/openmoko-taskmanager/footer.h
trunk/src/target/OM-2007/applications/openmoko-taskmanager/main.c
trunk/src/target/OM-2007/applications/openmoko-taskmanager/openmoko-taskmanager.pro
trunk/src/target/OM-2007/qmake/openmoko-include.pro
Log:
taskmanager application now can change status bar via dbus
Added: trunk/src/target/OM-2007/applications/openmoko-taskmanager/callbacks.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-taskmanager/callbacks.c 2006-09-23 13:43:11 UTC (rev 49)
+++ trunk/src/target/OM-2007/applications/openmoko-taskmanager/callbacks.c 2006-09-25 12:50:20 UTC (rev 50)
@@ -0,0 +1,71 @@
+#include "callbacks.h"
+#include "footer.h"
+#include "main.h"
+
+#include <gtk/gtk.h>
+
+/* footer */
+void footer_leftbutton_clicked(GtkWidget *widget, gpointer my_data)
+{
+ g_debug( "left button clicked" );
+
+ GtkMessageDialog* dialog = gtk_message_dialog_new(GTK_WINDOW(gtk_widget_get_toplevel(widget)),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_CLOSE,
+ "Display Task List Now..." );
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy(GTK_WIDGET(dialog));
+}
+
+void footer_rightbutton_clicked(GtkWidget *widget, gpointer my_data)
+{
+ g_debug( "right button clicked" );
+
+ GtkMessageDialog* dialog = gtk_message_dialog_new(GTK_WINDOW(gtk_widget_get_toplevel(widget)),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_CLOSE,
+ "Flip current/list application now..." );
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy(GTK_WIDGET(dialog));
+}
+
+/* dbus */
+DBusHandlerResult signal_filter(DBusConnection *connection, DBusMessage *message, void *user_data)
+{
+ g_debug( "signal_filter called" );
+ g_debug( "type of message was %d", dbus_message_get_type(message) );
+ g_debug( "path of message was %s", dbus_message_get_path(message) );
+ g_debug( "interface of message was %s", dbus_message_get_interface(message) );
+
+ /* Application object is the user data */
+ Application* app = user_data;
+
+ /* A signal from the bus saying we are about to be disconnected */
+ if (dbus_message_is_signal
+ (message, DBUS_INTERFACE_LOCAL, "Disconnected")) {
+ /* Tell the main loop to quit */
+ g_main_loop_quit(app->loop);
+ /* We have handled this message, don't pass it on */
+ return DBUS_HANDLER_RESULT_HANDLED;
+ }
+ /* A message on our interface */
+ else if (dbus_message_is_signal(message, "org.openmoko.dbus.TaskManager", "push_statusbar_message")) {
+ DBusError error;
+ char *s;
+ dbus_error_init (&error);
+ if (dbus_message_get_args
+ (message, &error, DBUS_TYPE_STRING, &s, DBUS_TYPE_INVALID)) {
+ g_debug("Setting status bar text to '%s", s);
+ footer_set_status( app->footer, s );
+ //FIXME: SIGSEGV, when uncommented. It now leaks! :M:
+ //dbus_free(s);
+ } else {
+ g_print("Ping received, but error getting message: %s", error.message);
+ dbus_error_free (&error);
+ }
+ return DBUS_HANDLER_RESULT_HANDLED;
+ }
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}
Property changes on: trunk/src/target/OM-2007/applications/openmoko-taskmanager/callbacks.c
___________________________________________________________________
Name: svn:eol-style
+ native
Added: trunk/src/target/OM-2007/applications/openmoko-taskmanager/callbacks.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-taskmanager/callbacks.h 2006-09-23 13:43:11 UTC (rev 49)
+++ trunk/src/target/OM-2007/applications/openmoko-taskmanager/callbacks.h 2006-09-25 12:50:20 UTC (rev 50)
@@ -0,0 +1,10 @@
+#include <gtk/gtk.h>
+#include <dbus/dbus.h>
+#include "main.h"
+
+/* footer */
+void footer_leftbutton_clicked(GtkWidget *widget, gpointer my_data);
+void footer_rightbutton_clicked(GtkWidget *widget, gpointer my_data);
+
+/* dbus */
+DBusHandlerResult signal_filter (DBusConnection *connection, DBusMessage *message, void *user_data);
Property changes on: trunk/src/target/OM-2007/applications/openmoko-taskmanager/callbacks.h
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: trunk/src/target/OM-2007/applications/openmoko-taskmanager/footer.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-taskmanager/footer.c 2006-09-23 13:43:11 UTC (rev 49)
+++ trunk/src/target/OM-2007/applications/openmoko-taskmanager/footer.c 2006-09-25 12:50:20 UTC (rev 50)
@@ -37,7 +37,6 @@
static void footer_class_init (FooterClass *klass) /* Class Initialization */
{
- g_printf( "footer_class_init\n" );
footer_signals[FOOTER_SIGNAL] = g_signal_new ("footer",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
@@ -71,12 +70,14 @@
GtkWidget* footer_new() /* Construction */
{
- g_printf( "footer_new\n" );
return GTK_WIDGET(g_object_new(footer_get_type(), NULL));
}
-void footer_clear (Footer *f) /* Destruction */
+void footer_clear(Footer *f) /* Destruction */
{
- g_printf( "footer_clear\n" );
}
+void footer_set_status(Footer *f, const char* s)
+{
+ gtk_statusbar_push( f->statusbar, 1, s );
+}
Modified: trunk/src/target/OM-2007/applications/openmoko-taskmanager/footer.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-taskmanager/footer.h 2006-09-23 13:43:11 UTC (rev 49)
+++ trunk/src/target/OM-2007/applications/openmoko-taskmanager/footer.h 2006-09-25 12:50:20 UTC (rev 50)
@@ -1,5 +1,5 @@
-#ifndef __OPENMOKO_FOOTER_H__
-#define __OPENMOKO_FOOTER_H__
+#ifndef OPENMOKO_FOOTER_H
+#define OPENMOKO_FOOTER_H
#include <glib.h>
#include <glib-object.h>
@@ -36,6 +36,8 @@
GtkWidget* footer_new (void);
void footer_clear (Footer *f);
+void footer_set_status (Footer *f, const char* s);
+
G_END_DECLS
-#endif /* __OPENMOKO_FOOTER_H__ */
+#endif /* OPENMOKO_FOOTER_H */
Modified: trunk/src/target/OM-2007/applications/openmoko-taskmanager/main.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-taskmanager/main.c 2006-09-23 13:43:11 UTC (rev 49)
+++ trunk/src/target/OM-2007/applications/openmoko-taskmanager/main.c 2006-09-25 12:50:20 UTC (rev 50)
@@ -1,19 +1,41 @@
-#include "footer.h"
+#include "main.h"
+#include "callbacks.h"
-#include <gtk/gtk.h>
-
int main( int argc, char **argv )
{
+ Application* app = g_malloc( sizeof(Application) );
+ DBusError error;
+ dbus_error_init(&error);
+
+ app->loop = g_main_loop_new( NULL, FALSE );
+
+ // using the low-level dbus interface here to get the point across
+ // final version should rather create a task manager gobject and hook
+ // into the dbus-glib API
+ app->bus = dbus_bus_get(DBUS_BUS_SESSION, &error);
+ if (!app->bus) {
+ g_warning ("Failed to connect to the D-BUS daemon: %s", error.message);
+ dbus_error_free(&error);
+ return 1;
+ }
+
gtk_init (&argc, &argv);
- GtkWidget* window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
- gtk_widget_show( window );
+ app->window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
+ gtk_widget_show( app->window );
+ app->footer = FOOTER(footer_new());
+ gtk_container_add( GTK_CONTAINER(app->window), GTK_WIDGET(app->footer) );
+ // this violates the privacy concept, but it's a demo for now...
+ g_signal_connect( GTK_WIDGET(app->footer->leftbutton), "clicked", G_CALLBACK(footer_leftbutton_clicked), NULL );
+ g_signal_connect( GTK_WIDGET(app->footer->rightbutton), "clicked", G_CALLBACK(footer_rightbutton_clicked), NULL );
- Footer* footer = footer_new();
- gtk_container_add( GTK_CONTAINER(window), GTK_WIDGET(footer) );
+ gtk_widget_show_all( GTK_WIDGET(app->footer) );
- gtk_widget_show_all( footer );
- gtk_main();
+ dbus_connection_setup_with_g_main(app->bus, NULL);
+ dbus_bus_add_match(app->bus, "type='signal',interface='org.openmoko.dbus.TaskManager'", &error );
+ dbus_connection_add_filter(app->bus, signal_filter, app, NULL );
+ g_main_loop_run( app->loop );
+ g_free( app );
return 0;
}
Added: trunk/src/target/OM-2007/applications/openmoko-taskmanager/main.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-taskmanager/main.h 2006-09-23 13:43:11 UTC (rev 49)
+++ trunk/src/target/OM-2007/applications/openmoko-taskmanager/main.h 2006-09-25 12:50:20 UTC (rev 50)
@@ -0,0 +1,17 @@
+#ifndef MYAPP_MAIN_H
+#define MYAPP_MAIN_H
+
+#include "footer.h"
+#include <glib/gmain.h>
+#include <dbus/dbus.h>
+#include <gtk/gtkwidget.h>
+
+/* Types */
+typedef struct _Application {
+ DBusConnection* bus;
+ GMainLoop* loop;
+ GtkWidget* window;
+ Footer* footer;
+} Application;
+
+#endif /* MAIN_H */
Property changes on: trunk/src/target/OM-2007/applications/openmoko-taskmanager/main.h
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: trunk/src/target/OM-2007/applications/openmoko-taskmanager/openmoko-taskmanager.pro
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-taskmanager/openmoko-taskmanager.pro 2006-09-23 13:43:11 UTC (rev 49)
+++ trunk/src/target/OM-2007/applications/openmoko-taskmanager/openmoko-taskmanager.pro 2006-09-25 12:50:20 UTC (rev 50)
@@ -1,6 +1,10 @@
-HEADERS = footer.h
-SOURCES = footer.c main.c
+HEADERS = footer.h callbacks.h main.h
+SOURCES = footer.c callbacks.c main.c
-PKGCONFIG += gtk+-2.0
+PKGCONFIG += gtk+-2.0 dbus-glib-1
+SERVICES = services.xml
+
+DEFINES += DBUS_API_SUBJECT_TO_CHANGE
+
include ( ../../qmake/openmoko-include.pro )
Modified: trunk/src/target/OM-2007/qmake/openmoko-include.pro
===================================================================
--- trunk/src/target/OM-2007/qmake/openmoko-include.pro 2006-09-23 13:43:11 UTC (rev 49)
+++ trunk/src/target/OM-2007/qmake/openmoko-include.pro 2006-09-25 12:50:20 UTC (rev 50)
@@ -12,3 +12,11 @@
MOC_DIR=.moc/$(PLATFORM)
OBJECTS_DIR=.obj/$(PLATFORM)
+QMAKE_DBUS_CC = dbus-binding-tool
+dbus-binding-tool.commands = $${QMAKE_DBUS_CC} --mode=glib-server ${QMAKE_FILE_IN} >${QMAKE_FILE_OUT}
+dbus-binding-tool.output = $$OUT_PWD/${QMAKE_FILE_BASE}.h
+dbus-binding-tool.input = SERVICES
+dbus-binding-tool.CONFIG = no_link
+dbus-binding-tool.variable_out = HEADERS
+dbus-binding-tool = SERVICES
+QMAKE_EXTRA_UNIX_COMPILERS += dbus-binding-tool
More information about the commitlog
mailing list