[maemo-commits] [maemo-commits] r12719 - in projects/haf/trunk/hildon-desktop: . src

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Wed Jul 11 16:43:34 EEST 2007
Author: moimart
Date: 2007-07-11 16:43:32 +0300 (Wed, 11 Jul 2007)
New Revision: 12719

Added:
   projects/haf/trunk/hildon-desktop/src/hd-marshalers.list
Modified:
   projects/haf/trunk/hildon-desktop/ChangeLog
   projects/haf/trunk/hildon-desktop/src/Makefile.am
   projects/haf/trunk/hildon-desktop/src/hd-panel-window-dialog.c
   projects/haf/trunk/hildon-desktop/src/statusbar.xml
Log:
2007-07-11  Moises Martinez  <moises.martinez at nokia.com>

        * src/Makefile.am:
        - Added marshaler for container's signal
        * src/hd-marshalers.list:
        - New marshaler for hd-panel-window-dialog.c
        * src/hd-panel-window-dialog.c:
        (hd_panel_window_dialog_notify_condition),
        (hd_panel_window_dialog_cadd), (hd_panel_window_dialog_queued),
        (hd_panel_window_dialog_constructor),
        (hd_panel_window_dialog_class_init):
        - Moved signal to gobject code to get advantage of dbus binding.
        - Connect only if the object hasn't been connected before.
        * src/statusbar.xml:
        - added signal



Modified: projects/haf/trunk/hildon-desktop/ChangeLog
===================================================================
--- projects/haf/trunk/hildon-desktop/ChangeLog	2007-07-11 13:40:05 UTC (rev 12718)
+++ projects/haf/trunk/hildon-desktop/ChangeLog	2007-07-11 13:43:32 UTC (rev 12719)
@@ -1,3 +1,19 @@
+2007-07-11  Moises Martinez  <moises.martinez at nokia.com>
+
+	* src/Makefile.am:
+	- Added marshaler for container's signal
+	* src/hd-marshalers.list:
+	- New marshaler for hd-panel-window-dialog.c
+	* src/hd-panel-window-dialog.c:
+	(hd_panel_window_dialog_notify_condition),
+	(hd_panel_window_dialog_cadd), (hd_panel_window_dialog_queued),
+	(hd_panel_window_dialog_constructor),
+	(hd_panel_window_dialog_class_init):
+	- Moved signal to gobject code to get advantage of dbus binding.
+	- Connect only if the object hasn't been connected before.
+	* src/statusbar.xml:
+	- added signal
+
 2007-07-10  Johan Bilien  <johan.bilien at nokia.com>
 
 	* libhildondesktop/hildon-home-area.c: Fixed compiler warning

Modified: projects/haf/trunk/hildon-desktop/src/Makefile.am
===================================================================
--- projects/haf/trunk/hildon-desktop/src/Makefile.am	2007-07-11 13:40:05 UTC (rev 12718)
+++ projects/haf/trunk/hildon-desktop/src/Makefile.am	2007-07-11 13:43:32 UTC (rev 12719)
@@ -2,7 +2,7 @@
 pkgincludedir = $(includedir)/hildon-desktop/hildon-desktop
 pkgconfig_DATA = hildon-desktop.pc
 pkginclude_HEADERS = hd-plugin-loader.h \
-		     hd-config.h
+		     hd-config.h 
 
 bin_PROGRAMS = hd-hung-app-handler hildon-desktop
 
@@ -112,6 +112,7 @@
 	$(OTHERS_BUTTON_SOURCES)     \
 	hd-desktop.c                 \
 	hd-desktop.h                 \
+	hd-marshalers.c		     \
 	hd-select-plugins-dialog.c   \
 	hd-select-plugins-dialog.h   \
 	hd-panel-window.c            \
@@ -137,6 +138,13 @@
                             hd-applications-menu-settings-l10n.h \
                             hd-applications-menu-settings.c
 
+hd-marshalers.c:
+	$(LIBTOOL) --mode=execute $(GLIB_GENMARSHAL) hd-marshalers.list --body --header >> hd-marshalers.c
+
+hd-marshalers.h:
+	$(LIBTOOL) --mode=execute $(GLIB_GENMARSHAL) hd-marshalers.list --header >| hd-marshalers.h
+		
+
 EXTRA_DIST = statusbar.xml
 
 CLEANFILES = *~ $(BUILT_SOURCES)

Added: projects/haf/trunk/hildon-desktop/src/hd-marshalers.list
===================================================================
--- projects/haf/trunk/hildon-desktop/src/hd-marshalers.list	2007-07-11 13:40:05 UTC (rev 12718)
+++ projects/haf/trunk/hildon-desktop/src/hd-marshalers.list	2007-07-11 13:43:32 UTC (rev 12719)
@@ -0,0 +1 @@
+VOID:STRING,BOOLEAN

Modified: projects/haf/trunk/hildon-desktop/src/hd-panel-window-dialog.c
===================================================================
--- projects/haf/trunk/hildon-desktop/src/hd-panel-window-dialog.c	2007-07-11 13:40:05 UTC (rev 12718)
+++ projects/haf/trunk/hildon-desktop/src/hd-panel-window-dialog.c	2007-07-11 13:43:32 UTC (rev 12719)
@@ -38,14 +38,26 @@
 #include "hd-panel-window-dialog.h"
 #include "hd-panel-window-dialog-service.h"
 
+#include "hd-marshalers.h"
+
 #define HD_PANEL_WINDOW_DIALOG_GET_PRIVATE(obj) \
         (G_TYPE_INSTANCE_GET_PRIVATE ((obj), HD_TYPE_PANEL_WINDOW_DIALOG, HDPanelWindowDialogPrivate))
 
+enum
+{
+  HD_WD_UPDATE_SB,
+  HD_WD_SIGNALS
+};  
+
+static gint hd_wd_signals [HD_WD_SIGNALS];
+
 G_DEFINE_TYPE (HDPanelWindowDialog, hd_panel_window_dialog, HILDON_DESKTOP_TYPE_PANEL_WINDOW_DIALOG);
 
 struct _HDPanelWindowDialogPrivate
 {
   DBusGConnection *connection;
+
+  GHashTable *plugins;
 };
 
 #undef HD_PANEL_WINDOW_DIALOG_NEW_THEME
@@ -99,46 +111,38 @@
 static void 
 hd_panel_window_dialog_notify_condition (GObject *object, 
 		                         gboolean condition, 
-					 gpointer user_data)
+					 HDPanelWindowDialog *window)
 {
-  HDPanelWindowDialog *window;
-  HildonDesktopItem *item;
-  DBusMessage *message;
-  const gchar *id;
-  
-  window = HD_PANEL_WINDOW_DIALOG (user_data);
-  item = HILDON_DESKTOP_ITEM (object);
-  
-  id = hildon_desktop_item_get_id (item);
-  
-  message = dbus_message_new_signal ("/org/hildon/Statusbar",
-                                     "org.hildon.Statusbar",
-                                     "update-status");
+  g_signal_emit_by_name (window, "update-status", HILDON_DESKTOP_ITEM (object)->id, condition);
+}
 
-  dbus_message_append_args (message,
-                            DBUS_TYPE_STRING, &id,
-                            DBUS_TYPE_BOOLEAN, &condition,
-                            DBUS_TYPE_INVALID);
+static void
+hd_panel_window_dialog_cadd (HildonDesktopPanelExpandable *container,
+		      	     GtkWidget *widget,
+		      	     gpointer object)
+{	
+  gulong *previous_id = NULL, *signal_id  = g_new0 (gulong,1);
 
-  dbus_connection_send (dbus_g_connection_get_connection (window->priv->connection), 
-        	        message, 
-        		NULL);
-  
-  dbus_message_unref (message);
+  previous_id = g_object_get_data (G_OBJECT (widget), "signal-id");
+
+  if (previous_id)
+    return;	  
+	
+  *signal_id = g_signal_connect (G_OBJECT (widget),
+              		         "notify::condition",
+                      		 G_CALLBACK (hd_panel_window_dialog_notify_condition),
+                      		 object);
+
+  g_object_set_data_full (G_OBJECT (widget), "signal-id", signal_id, g_free);
 }
 
 static void
-hd_panel_window_dialog_cadd (HildonDesktopPanelExpandable *container,
-		      GtkWidget *widget,
-		      gpointer user_data)
+hd_panel_window_dialog_queued (HildonDesktopPanelExpandable *container,
+		      	       GtkWidget *widget,
+		      	       gpointer object)
 {
   gtk_widget_set_name (widget, HD_PANEL_WINDOW_DIALOG_BUTTON_NAME);
   gtk_widget_set_name (GTK_BIN (widget)->child, HD_PANEL_WINDOW_DIALOG_BUTTON_NAME);
-
-  g_signal_connect (G_OBJECT (widget),
-		    "notify::condition",
-		    G_CALLBACK (hd_panel_window_dialog_notify_condition),
-		    user_data);
 }
 
 static void 
@@ -170,9 +174,19 @@
 
   g_signal_connect (G_OBJECT (HILDON_DESKTOP_WINDOW (object)->container), 
                     "queued-button",
+                    G_CALLBACK (hd_panel_window_dialog_queued),
+                    object);
+
+  g_signal_connect (G_OBJECT (HILDON_DESKTOP_WINDOW (object)->container), 
+                    "add",
                     G_CALLBACK (hd_panel_window_dialog_cadd),
                     object);
 
+  g_signal_connect (G_OBJECT (HILDON_DESKTOP_WINDOW (object)->container), 
+                    "remove",
+                    G_CALLBACK (hd_panel_window_dialog_cadd),
+                    object);
+  
   g_signal_connect (G_OBJECT (hdwm),
 		    "fullscreen",
 		    G_CALLBACK (hd_panel_window_dialog_fullscreen),
@@ -205,6 +219,16 @@
 #endif
 
   g_type_class_add_private (window_class, sizeof (HDPanelWindowDialogPrivate));
+
+  hd_wd_signals[HD_WD_UPDATE_SB] =
+    g_signal_new ("update-status",
+  		  G_OBJECT_CLASS_TYPE (object_class),
+		  G_SIGNAL_RUN_LAST,
+		  0, NULL, NULL,
+		  g_cclosure_user_marshal_VOID__STRING_BOOLEAN,
+ 		  G_TYPE_NONE,
+		  2, G_TYPE_STRING, G_TYPE_BOOLEAN);
+  
 }
 
 static void

Modified: projects/haf/trunk/hildon-desktop/src/statusbar.xml
===================================================================
--- projects/haf/trunk/hildon-desktop/src/statusbar.xml	2007-07-11 13:40:05 UTC (rev 12718)
+++ projects/haf/trunk/hildon-desktop/src/statusbar.xml	2007-07-11 13:43:32 UTC (rev 12719)
@@ -10,6 +10,11 @@
       <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="hd_panel_window_dialog_refresh_items_status"/>
     </method>
 
+    <signal name="UpdateStatus">
+     <arg type="s" name="id"/>
+     <arg type="b" name="status"/>	    
+    </signal>
+
   </interface>
 
 </node>


More information about the maemo-commits mailing list