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

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Tue Jul 10 14:14:06 EEST 2007
Author: lucasr
Date: 2007-07-10 14:14:03 +0300 (Tue, 10 Jul 2007)
New Revision: 12707

Added:
   projects/haf/trunk/hildon-desktop/src/statusbar.xml
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/hd-panel-window-dialog.h
   projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c
Log:
2007-07-10  Lucas Rocha  <lucas.rocha at nokia.com>

	* src/Makefile.am, src/hd-panel-window-dialog.[ch]
	(hd_panel_window_dialog_notify_condition),
	(hd_panel_window_dialog_cadd),
	(hd_panel_window_dialog_constructor),
	(hd_panel_window_dialog_class_init), (hd_panel_window_dialog_init),
	(hd_panel_window_dialog_refresh_items_status): add a D-Bus interface
	to Statusbar in order to be able to refresh the items status from
	plugins settings applet. 
	* src/statusbar.xml: Statusbar D-Bus API definition.


Modified: projects/haf/trunk/hildon-desktop/ChangeLog
===================================================================
--- projects/haf/trunk/hildon-desktop/ChangeLog	2007-07-10 06:57:08 UTC (rev 12706)
+++ projects/haf/trunk/hildon-desktop/ChangeLog	2007-07-10 11:14:03 UTC (rev 12707)
@@ -1,3 +1,15 @@
+2007-07-10  Lucas Rocha  <lucas.rocha at nokia.com>
+
+	* src/Makefile.am, src/hd-panel-window-dialog.[ch]
+	(hd_panel_window_dialog_notify_condition),
+	(hd_panel_window_dialog_cadd),
+	(hd_panel_window_dialog_constructor),
+	(hd_panel_window_dialog_class_init), (hd_panel_window_dialog_init),
+	(hd_panel_window_dialog_refresh_items_status): add a D-Bus interface
+	to Statusbar in order to be able to refresh the items status from
+	plugins settings applet. 
+	* src/statusbar.xml: Statusbar D-Bus API definition.
+
 2007-07-10  Johan Bilien  <johan.bilien at nokia.com>
 
 	* configure.ac: 0.0.23

Modified: projects/haf/trunk/hildon-desktop/src/Makefile.am
===================================================================
--- projects/haf/trunk/hildon-desktop/src/Makefile.am	2007-07-10 06:57:08 UTC (rev 12706)
+++ projects/haf/trunk/hildon-desktop/src/Makefile.am	2007-07-10 11:14:03 UTC (rev 12707)
@@ -9,6 +9,13 @@
 hd_hung_app_handler_SOURCES = hd-hung-app-handler.c
 hd_hung_app_handler_LDADD = $(XLIBS_LIBS)
 
+hd-panel-window-dialog-service.h: statusbar.xml
+	dbus-binding-tool --prefix=hd_panel_window_dialog_service --mode=glib-server --output=hd-panel-window-dialog-service.h $<
+
+
+BUILT_SOURCES = \
+	hd-panel-window-dialog-service.h
+
 hildon_desktop_CPPFLAGS = \
 	$(HILDON_CFLAGS)             					   \
 	$(HILDON_FM_CFLAGS)             				   \
@@ -130,6 +137,6 @@
                             hd-applications-menu-settings-l10n.h \
                             hd-applications-menu-settings.c
 
-EXTRA_DIST = notification-manager.xml
+EXTRA_DIST = statusbar.xml
 
 CLEANFILES = *~ $(BUILT_SOURCES)

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-10 06:57:08 UTC (rev 12706)
+++ projects/haf/trunk/hildon-desktop/src/hd-panel-window-dialog.c	2007-07-10 11:14:03 UTC (rev 12707)
@@ -29,18 +29,30 @@
 #include <glib.h>
 #include <glib-object.h>
 #include <gtk/gtk.h>
+#include <dbus/dbus.h>
+#include <dbus/dbus-glib-lowlevel.h>
+#include <dbus/dbus-glib-bindings.h>
 
 #include <libhildondesktop/hildon-desktop-panel-expandable.h>
 #include <libhildonwm/hd-wm.h>
 #include "hd-panel-window-dialog.h"
+#include "hd-panel-window-dialog-service.h"
 
 #define HD_PANEL_WINDOW_DIALOG_GET_PRIVATE(obj) \
-        (G_TYPE_INSTANCE_GET_PRIVATE ((obj), HD_TYPE_PANEL_WINDOW, HDPanelWindowDialogPrivate))
+        (G_TYPE_INSTANCE_GET_PRIVATE ((obj), HD_TYPE_PANEL_WINDOW_DIALOG, HDPanelWindowDialogPrivate))
 
 G_DEFINE_TYPE (HDPanelWindowDialog, hd_panel_window_dialog, HILDON_DESKTOP_TYPE_PANEL_WINDOW_DIALOG);
 
+struct _HDPanelWindowDialogPrivate
+{
+  DBusGConnection *connection;
+};
+
 #undef HD_PANEL_WINDOW_DIALOG_NEW_THEME
 
+#define STATUSBAR_DBUS_NAME  "org.hildon.Statusbar" 
+#define STATUSBAR_DBUS_PATH  "/org/hildon/Statusbar"
+
 #define HD_PANEL_WINDOW_DIALOG_NAME_TOP     "hildon-status-bar-panel-top"
 #define HD_PANEL_WINDOW_DIALOG_NAME_BOTTOM  "hildon-status-bar-panel-bottom"
 #define HD_PANEL_WINDOW_DIALOG_NAME_LEFT    "hildon-status-bar-panel-left"
@@ -84,6 +96,37 @@
 }
 #endif
 
+static void 
+hd_panel_window_dialog_notify_condition (GObject *object, 
+		                         gboolean condition, 
+					 gpointer user_data)
+{
+  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");
+
+  dbus_message_append_args (message,
+                            DBUS_TYPE_STRING, &id,
+                            DBUS_TYPE_BOOLEAN, &condition,
+                            DBUS_TYPE_INVALID);
+
+  dbus_connection_send (dbus_g_connection_get_connection (window->priv->connection), 
+        	        message, 
+        		NULL);
+  
+  dbus_message_unref (message);
+}
+
 static void
 hd_panel_window_dialog_cadd (HildonDesktopPanelExpandable *container,
 		      GtkWidget *widget,
@@ -91,6 +134,11 @@
 {
   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 
@@ -123,7 +171,7 @@
   g_signal_connect (G_OBJECT (HILDON_DESKTOP_WINDOW (object)->container), 
                     "queued-button",
                     G_CALLBACK (hd_panel_window_dialog_cadd),
-                    NULL);
+                    object);
 
   g_signal_connect (G_OBJECT (hdwm),
 		    "fullscreen",
@@ -155,12 +203,77 @@
 #ifdef HD_PANEL_WINDOW_DIALOG_NEW_THEME
   panel_window_class->orientation_changed = hd_panel_window_dialog_orientation_changed;
 #endif
+
+  g_type_class_add_private (window_class, sizeof (HDPanelWindowDialogPrivate));
 }
 
 static void
 hd_panel_window_dialog_init (HDPanelWindowDialog *window)
 {
+  DBusGProxy *bus_proxy;
+  GError *error = NULL;
+  guint result;
+  
+  window->priv = HD_PANEL_WINDOW_DIALOG_GET_PRIVATE (window);
+
 #ifndef HD_PANEL_WINDOW_DIALOG_NEW_THEME
   gtk_widget_set_name (GTK_WIDGET (window), "HildonStatusBar");
 #endif
+
+  window->priv->connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
+
+  if (error != NULL)
+  {
+    g_warning ("Failed to open connection to bus: %s\n",
+               error->message);
+    
+    g_error_free (error);
+
+    return;
+  }
+
+  bus_proxy = dbus_g_proxy_new_for_name (window->priv->connection,
+  					 DBUS_SERVICE_DBUS,
+  					 DBUS_PATH_DBUS,
+  					 DBUS_INTERFACE_DBUS);
+ 
+  if (!org_freedesktop_DBus_request_name (bus_proxy,
+                                          STATUSBAR_DBUS_NAME,
+                                          DBUS_NAME_FLAG_DO_NOT_QUEUE,
+                                          &result, 
+                                          &error))
+  {
+    g_warning ("Could not register name: %s", error->message);
+
+    g_error_free (error);
+    
+    return;
+  }
+
+  g_object_unref (bus_proxy);
+
+  if (result == DBUS_REQUEST_NAME_REPLY_EXISTS) return;
+  
+  dbus_g_object_type_install_info (HD_TYPE_PANEL_WINDOW_DIALOG,
+                                   &dbus_glib_hd_panel_window_dialog_service_object_info);
+ 
+  dbus_g_connection_register_g_object (window->priv->connection,
+                                       STATUSBAR_DBUS_PATH,
+                                       G_OBJECT (window));
 }
+
+gboolean
+hd_panel_window_dialog_refresh_items_status (HDPanelWindowDialog *window)
+{
+  HildonDesktopPanel *panel;
+
+  panel = HILDON_DESKTOP_PANEL (HILDON_DESKTOP_WINDOW (window)->container);
+
+  hildon_desktop_panel_refresh_items_status (panel);
+
+  g_debug ("=======================================================");
+  g_debug ("                   REFRESH ITEMS STATUS                ");
+  g_debug ("=======================================================");
+  
+  return TRUE;
+}

Modified: projects/haf/trunk/hildon-desktop/src/hd-panel-window-dialog.h
===================================================================
--- projects/haf/trunk/hildon-desktop/src/hd-panel-window-dialog.h	2007-07-10 06:57:08 UTC (rev 12706)
+++ projects/haf/trunk/hildon-desktop/src/hd-panel-window-dialog.h	2007-07-10 11:14:03 UTC (rev 12707)
@@ -44,6 +44,8 @@
 struct _HDPanelWindowDialog 
 {
   HildonDesktopPanelWindowDialog parent;
+
+  HDPanelWindowDialogPrivate *priv;
 };
 
 struct _HDPanelWindowDialogClass
@@ -51,8 +53,10 @@
   HildonDesktopPanelWindowDialogClass parent_class;
 };
 
-GType  hd_panel_window_dialog_get_type  (void);
+GType     hd_panel_window_dialog_get_type               (void);
 
+gboolean  hd_panel_window_dialog_refresh_items_status   (HDPanelWindowDialog *window);
+
 G_END_DECLS
 
 #endif /*__HD_PANEL_WINDOW_DIALOG_H__*/

Modified: projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c
===================================================================
--- projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c	2007-07-10 06:57:08 UTC (rev 12706)
+++ projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c	2007-07-10 11:14:03 UTC (rev 12707)
@@ -1692,7 +1692,7 @@
   hd_switcher_menu_check_content (switcher); 
 
   gtk_widget_queue_draw (GTK_WIDGET (switcher->priv->menu_applications));
-}	
+}
 
 static void 
 hd_switcher_menu_add_info_cb (HDWM *hdwm, 

Added: projects/haf/trunk/hildon-desktop/src/statusbar.xml
===================================================================
--- projects/haf/trunk/hildon-desktop/src/statusbar.xml	2007-07-10 06:57:08 UTC (rev 12706)
+++ projects/haf/trunk/hildon-desktop/src/statusbar.xml	2007-07-10 11:14:03 UTC (rev 12707)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<node name="/org/hildon/Statusbar">
+
+  <interface name="org.hildon.Statusbar">
+                
+    <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="HDPanelWindowDialog"/>
+
+    <method name="RefreshItemsStatus">
+      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="hd_panel_window_dialog_refresh_items_status"/>
+    </method>
+
+  </interface>
+
+</node>


More information about the maemo-commits mailing list