[maemo-commits] [maemo-commits] r12707 - in projects/haf/trunk/hildon-desktop: . src
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Tue Jul 10 14:14:06 EEST 2007
- Previous message: [maemo-commits] r12706 - projects/haf/hafbuildbot
- Next message: [maemo-commits] r12708 - projects/haf/trunk/hildon-help/src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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>
- Previous message: [maemo-commits] r12706 - projects/haf/hafbuildbot
- Next message: [maemo-commits] r12708 - projects/haf/trunk/hildon-help/src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]