[Goodies-commits] r6928 - in xfce4-power-manager/trunk: . libxfpm src

Ali Abdallah aliov at xfce.org
Mon Mar 16 23:27:10 CET 2009


Author: aliov
Date: 2009-03-16 22:27:10 +0000 (Mon, 16 Mar 2009)
New Revision: 6928

Added:
   xfce4-power-manager/trunk/src/org.freedesktop.PowerManagement.xml
Modified:
   xfce4-power-manager/trunk/ChangeLog
   xfce4-power-manager/trunk/libxfpm/xfpm-popups.c
   xfce4-power-manager/trunk/libxfpm/xfpm-popups.h
   xfce4-power-manager/trunk/src/Makefile.am
   xfce4-power-manager/trunk/src/xfpm-engine.c
   xfce4-power-manager/trunk/src/xfpm-main.c
   xfce4-power-manager/trunk/src/xfpm-manager.c
Log:
Added freedesktop.PowerManagement power interfaces and methods

Modified: xfce4-power-manager/trunk/ChangeLog
===================================================================
--- xfce4-power-manager/trunk/ChangeLog	2009-03-16 21:27:02 UTC (rev 6927)
+++ xfce4-power-manager/trunk/ChangeLog	2009-03-16 22:27:10 UTC (rev 6928)
@@ -1,4 +1,7 @@
 
+2009-03-16 23:27 Ali aliov at xfce.org 
+	 * : Added freedesktop.PowerManagement power interfaces and methods
+
 2009-03-16 19:06 Ali aliov at xfce.org 
 	 * : Add a weak reference on the adapter object+remove unused signals
 

Modified: xfce4-power-manager/trunk/libxfpm/xfpm-popups.c
===================================================================
--- xfce4-power-manager/trunk/libxfpm/xfpm-popups.c	2009-03-16 21:27:02 UTC (rev 6927)
+++ xfce4-power-manager/trunk/libxfpm/xfpm-popups.c	2009-03-16 22:27:10 UTC (rev 6928)
@@ -1,7 +1,6 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*-
+/*
+ * * Copyright (C) 2008-2009 Ali <aliov at xfce.org>
  *
- * * Copyright (C) 2008 Ali <ali.slackware at gmail.com>
- *
  * Licensed under the GNU General Public License Version 2
  *
  * This program is free software; you can redistribute it and/or modify
@@ -20,12 +19,11 @@
  */
 
 #include <gtk/gtk.h>
+#include <glib.h>
 
-void xfpm_popup_message(const gchar *title,
-                        const gchar *message,
-                        GtkMessageType message_type)
+static GtkWidget *
+xfpm_message_dialog (const gchar *title, const gchar *message, GtkMessageType message_type)
 {
-    
     GtkWidget *dialog;
     
     dialog = gtk_message_dialog_new_with_markup(NULL,
@@ -35,13 +33,45 @@
                                                 "<span size='larger'><b>%s</b></span>",
                                                 title);
                                                 
-    gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(dialog),"%s",message);
+    gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(dialog), "%s", message);
     
+    return dialog;
+}
+
+void xfpm_popup_message(const gchar *title,
+                        const gchar *message,
+                        GtkMessageType message_type)
+{
+    
+    GtkWidget *dialog;
+    
+    dialog = xfpm_message_dialog (title, message, message_type);
+    
     g_signal_connect(dialog,
                      "response",
                      G_CALLBACK(gtk_widget_destroy),
                      NULL);
                      
     gtk_widget_show(dialog);                         
+}                 
+
+void xfpm_info (const gchar *title, const gchar *message )
+{
+    GtkWidget *dialog;
     
-}                 
+    dialog = xfpm_message_dialog (title, message, GTK_MESSAGE_INFO);
+    
+    gtk_dialog_run (GTK_DIALOG(dialog));
+    gtk_widget_destroy (dialog);
+}
+
+void    xfpm_error              (const gchar *title,
+				 const gchar *message)
+{
+    GtkWidget *dialog;
+    
+    dialog = xfpm_message_dialog (title, message, GTK_MESSAGE_ERROR);
+    
+    gtk_dialog_run (GTK_DIALOG(dialog));
+    gtk_widget_destroy (dialog);
+}

Modified: xfce4-power-manager/trunk/libxfpm/xfpm-popups.h
===================================================================
--- xfce4-power-manager/trunk/libxfpm/xfpm-popups.h	2009-03-16 21:27:02 UTC (rev 6927)
+++ xfce4-power-manager/trunk/libxfpm/xfpm-popups.h	2009-03-16 22:27:10 UTC (rev 6928)
@@ -1,7 +1,6 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*-
+/*
+ * * Copyright (C) 2008-2009 Ali <aliov at xfce.org>
  *
- * * Copyright (C) 2008 Ali <ali.slackware at gmail.com>
- *
  * Licensed under the GNU General Public License Version 2
  *
  * This program is free software; you can redistribute it and/or modify
@@ -22,9 +21,15 @@
 #ifndef __XFPM_POPUPS_H
 #define __XFPM_POPUPS_H
 
-void xfpm_popup_message(const gchar *title,
-                        const gchar *message,
-                        GtkMessageType message_type);
+void 	xfpm_popup_message	(const gchar *title,
+				 const gchar *message,
+				 GtkMessageType message_type);
 
 
+void 	xfpm_info 		(const gchar *title, 
+				 const gchar *message);
+				 
+void    xfpm_error              (const gchar *title,
+				 const gchar *message);
+
 #endif /* __XFPM_POPUPS_H */

Modified: xfce4-power-manager/trunk/src/Makefile.am
===================================================================
--- xfce4-power-manager/trunk/src/Makefile.am	2009-03-16 21:27:02 UTC (rev 6927)
+++ xfce4-power-manager/trunk/src/Makefile.am	2009-03-16 22:27:10 UTC (rev 6928)
@@ -5,6 +5,7 @@
 	xfpm-enum-types.h			\
 	xfpm-marshal.c				\
 	xfpm-marshal.h				\
+	org.freedestop.PowerManagement-server.h	\
 	xfce-power-manager-dbus-server.h	\
 	xfce-power-manager-dbus-client.h	\
 	xfpm-main.c				\
@@ -81,6 +82,7 @@
 BUILT_SOURCES = 				\
 	xfce-power-manager-dbus-server.h	\
 	xfce-power-manager-dbus-client.h	\
+	org.freedesktop.PowerManagement-server.h\
 	xfpm-marshal.c				\
 	xfpm-marshal.h				\
 	xfpm-enum-types.c			\
@@ -123,9 +125,12 @@
 xfce-power-manager-dbus-server.h: $(srcdir)/org.xfce.Power.Manager.xml
 	dbus-binding-tool --mode=glib-server --prefix=xfpm_manager $< >$@
 
-xfce-power-manager-dbus-client.h: $(srdir)org.xfce.Power.Manager.xml
+xfce-power-manager-dbus-client.h: $(srcdir)/org.xfce.Power.Manager.xml
 	dbus-binding-tool --mode=glib-client --prefix=xfpm_manager $< >$@
 
+org.freedesktop.PowerManagement-server.h: $(srcdir)/org.freedesktop.PowerManagement.xml
+	dbus-binding-tool --mode=glib-server --prefix=xfpm_engine $< >$@
+
 endif
 
 @INTLTOOL_DESKTOP_RULE@

Added: xfce4-power-manager/trunk/src/org.freedesktop.PowerManagement.xml
===================================================================
--- xfce4-power-manager/trunk/src/org.freedesktop.PowerManagement.xml	                        (rev 0)
+++ xfce4-power-manager/trunk/src/org.freedesktop.PowerManagement.xml	2009-03-16 22:27:10 UTC (rev 6928)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<node name="/org/freedesktop/PowerManagement">
+    <interface name="org.freedesktop.PowerManagement">
+        <annotation name="org.freedesktop.DBus.GLib.CSymbol"
+                    value="xfpm_engine_dbus"/>
+        <annotation name="org.freedesktop.DBus.GLib.ClientCSymbol"
+                    value="xfpm_engine_dbus_client"/>   
+
+    <method name="Hibernate">
+    </method>
+    
+    <method name="Suspend">
+    </method>
+    
+    <method name="CanSuspend">
+      <arg type="b" name="can_suspend" direction="out"/>
+    </method>
+    
+    <method name="CanHibernate">
+      <arg type="b" name="can_hibernate" direction="out"/>
+    </method>
+	
+    </interface>
+</node>

Modified: xfce4-power-manager/trunk/src/xfpm-engine.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-engine.c	2009-03-16 21:27:02 UTC (rev 6927)
+++ xfce4-power-manager/trunk/src/xfpm-engine.c	2009-03-16 22:27:10 UTC (rev 6928)
@@ -67,29 +67,32 @@
 static void xfpm_engine_init       (XfpmEngine *engine);
 static void xfpm_engine_finalize   (GObject *object);
 
+static void xfpm_engine_dbus_class_init  (XfpmEngineClass *klass);
+static void xfpm_engine_dbus_init	 (XfpmEngine *engine);
+
 #define XFPM_ENGINE_GET_PRIVATE(o) \
 (G_TYPE_INSTANCE_GET_PRIVATE((o), XFPM_TYPE_ENGINE, XfpmEnginePrivate))
 
 struct XfpmEnginePrivate
 {
-    XfpmXfconf        *conf;
-    XfpmSupply        *supply;
-    XfpmCpu           *cpu;
-    XfpmButtonXf86    *xf86_button;
-    XfpmLidHal        *lid;
-    XfpmBrightnessHal *brg_hal;
-    XfpmAdapter       *adapter;
-    HalIface          *iface;
+    XfpmXfconf         *conf;
+    XfpmSupply         *supply;
+    XfpmCpu            *cpu;
+    XfpmButtonXf86     *xf86_button;
+    XfpmLidHal         *lid;
+    XfpmBrightnessHal  *brg_hal;
+    XfpmAdapter        *adapter;
+    HalIface           *iface;
 #ifdef HAVE_DPMS
-    XfpmDpms          *dpms;
+    XfpmDpms           *dpms;
 #endif
 
-    GTimer            *button_timer;
+    GTimer             *button_timer;
     
-    guint8             power_management;
-    gboolean           on_battery;
+    guint8              power_management;
+    gboolean            on_battery;
     
-    gboolean           block_shutdown;
+    gboolean            block_shutdown;
     
     /*Configuration */
     XfpmShutdownRequest sleep_button;
@@ -108,6 +111,8 @@
     object_class->finalize = xfpm_engine_finalize;
 
     g_type_class_add_private(klass,sizeof(XfpmEnginePrivate));
+    
+    xfpm_engine_dbus_class_init (klass);
 }
 
 static void
@@ -130,6 +135,8 @@
     engine->priv->brg_hal     = NULL;
     
     engine->priv->power_management = 0;
+    
+    xfpm_engine_dbus_init (engine);
 }
 
 static void
@@ -454,3 +461,96 @@
     
     return engine;
 }
+
+/*
+ * 
+ * DBus server implementation for org.freedesktop.PowerManagement
+ * 
+ */
+
+static gboolean xfpm_engine_dbus_hibernate 	(XfpmEngine *engine,
+						 GError **error);
+					    
+static gboolean xfpm_engine_dbus_suspend 	(XfpmEngine *engine,
+						 GError **error);
+					    
+static gboolean xfpm_engine_dbus_can_hibernate  (XfpmEngine *engine,
+						 gboolean *OUT_can_hibernate,
+						 GError **error);
+
+static gboolean xfpm_engine_dbus_can_suspend  	(XfpmEngine *engine,
+						 gboolean *OUT_can_suspend,
+						 GError **error);
+
+#include "org.freedesktop.PowerManagement-server.h"
+
+static void
+xfpm_engine_dbus_class_init(XfpmEngineClass *klass)
+{
+     dbus_g_object_type_install_info(G_TYPE_FROM_CLASS(klass),
+				    &dbus_glib_xfpm_engine_object_info);
+}
+
+static void
+xfpm_engine_dbus_init (XfpmEngine *engine)
+{
+    DBusGConnection *bus = dbus_g_bus_get (DBUS_BUS_SESSION, NULL);
+    
+    dbus_g_connection_register_g_object (bus,
+					 "/org/freedesktop/PowerManagement",
+					 G_OBJECT(engine));
+}
+
+static gboolean xfpm_engine_dbus_hibernate 	(XfpmEngine *engine,
+						 GError **error)
+{
+    gboolean caller_privilege, can_hibernate;
+    
+    g_object_get (G_OBJECT(engine->priv->iface), 
+		  "caller-privilege", &caller_privilege,
+		  "can-hibernate", &can_hibernate,
+		  NULL);
+		  
+    if ( caller_privilege && can_hibernate )
+	xfpm_engine_shutdown_request (engine, XFPM_DO_HIBERNATE);
+
+    return TRUE;
+}
+					    
+static gboolean xfpm_engine_dbus_suspend 	(XfpmEngine *engine,
+						 GError **error)
+{
+    gboolean caller_privilege, can_suspend;
+    
+    g_object_get (G_OBJECT(engine->priv->iface), 
+		  "caller-privilege", &caller_privilege,
+		  "can-suspend", &can_suspend,
+		  NULL);
+		  
+    if ( caller_privilege && can_suspend )
+	xfpm_engine_shutdown_request (engine, XFPM_DO_SUSPEND);
+    
+    return TRUE;
+}
+					    
+static gboolean xfpm_engine_dbus_can_hibernate  (XfpmEngine *engine,
+						 gboolean *OUT_can_hibernate,
+						 GError **error)
+{
+    g_object_get (G_OBJECT(engine->priv->iface), 
+		  "can-hibernate", OUT_can_hibernate,
+		  NULL);
+		  
+    return TRUE;
+}
+
+static gboolean xfpm_engine_dbus_can_suspend  	(XfpmEngine *engine,
+						 gboolean *OUT_can_suspend,
+						 GError **error)
+{
+    g_object_get (G_OBJECT(engine->priv->iface), 
+		  "can-suspend", OUT_can_suspend,
+		  NULL);
+		  
+    return TRUE;
+}

Modified: xfce4-power-manager/trunk/src/xfpm-main.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-main.c	2009-03-16 21:27:02 UTC (rev 6927)
+++ xfce4-power-manager/trunk/src/xfpm-main.c	2009-03-16 22:27:10 UTC (rev 6928)
@@ -107,11 +107,12 @@
     
     if ( error )
     {
-	gchar *message = g_strdup(_("Unable to connection to the message bus session"));
+	gchar *message = g_strdup(_("Unable to get connection to the message bus session"));
 	message = g_strdup_printf("%s: ",error->message);
-	xfpm_popup_message(_("Xfce power manager"),
-			   message,
-			   GTK_MESSAGE_ERROR);
+	
+	xfpm_error (_("Xfce Power Manager"),
+		    message );
+			   
 	g_error("%s: \n",message);
 	g_print("\n");
 	g_error_free(error);
@@ -166,8 +167,13 @@
 	return EXIT_SUCCESS;
     }
     
-    
-    if (xfpm_dbus_name_has_owner(dbus_g_connection_get_connection(bus), 
+    if (xfpm_dbus_name_has_owner (dbus_g_connection_get_connection(bus), "org.freedesktop.PowerManagement") )
+    {
+	
+	xfpm_info(_("Xfce Power Manager"),
+		  _("Another power manager is already running"));
+    }
+    else if (xfpm_dbus_name_has_owner(dbus_g_connection_get_connection(bus), 
 				      "org.xfce.PowerManager"))
     {
 	g_print (_("Xfce power manager is already running"));
@@ -180,7 +186,7 @@
     	XfpmManager *manager;
     	manager = xfpm_manager_new(bus);
     	xfpm_manager_start(manager);
+	gtk_main();
     }
-    
     return EXIT_SUCCESS;
 }

Modified: xfce4-power-manager/trunk/src/xfpm-manager.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-manager.c	2009-03-16 21:27:02 UTC (rev 6927)
+++ xfce4-power-manager/trunk/src/xfpm-manager.c	2009-03-16 22:27:10 UTC (rev 6928)
@@ -26,6 +26,7 @@
 #include <stdlib.h>
 #include <string.h>
 
+#include <gtk/gtk.h>
 #include <glib.h>
 
 #include <libxfce4util/libxfce4util.h>
@@ -56,8 +57,6 @@
     XfpmEngine *engine;
     
     DBusGConnection *session_bus;
-    
-    GMainLoop *loop;
 };
 
 G_DEFINE_TYPE(XfpmManager, xfpm_manager, G_TYPE_OBJECT)
@@ -78,7 +77,6 @@
     manager->priv = XFPM_MANAGER_GET_PRIVATE(manager);
 
     manager->priv->session_bus   = NULL;
-    manager->priv->loop          = g_main_loop_new(NULL, FALSE);
 }
 
 static void
@@ -91,9 +89,6 @@
     if ( manager->priv->session_bus )
 	dbus_g_connection_unref(manager->priv->session_bus);
 	
-    if ( manager->priv->loop ) 
-	g_main_loop_unref(manager->priv->loop);
-	
     if ( manager->priv->engine )
     	g_object_unref (manager->priv->engine);
 
@@ -103,11 +98,14 @@
 static gboolean
 xfpm_manager_quit (XfpmManager *manager)
 {
-    g_main_loop_quit(manager->priv->loop);
     xfpm_dbus_release_name(dbus_g_connection_get_connection(manager->priv->session_bus),
 			   "org.xfce.PowerManager");
-    
+
+    xfpm_dbus_release_name (dbus_g_connection_get_connection(manager->priv->session_bus),
+			    "org.freedesktop.PowerManagement");
+				  
     g_object_unref(G_OBJECT(manager));
+    gtk_main_quit ();
     return TRUE;
 }
 
@@ -127,15 +125,21 @@
 
 void xfpm_manager_start (XfpmManager *manager)
 {
-    if ( !xfpm_dbus_register_name(dbus_g_connection_get_connection(manager->priv->session_bus),
+    if ( !xfpm_dbus_register_name (dbus_g_connection_get_connection(manager->priv->session_bus),
 				  "org.xfce.PowerManager") ) 
     {
 	g_critical("Unable to reserve bus name\n");
     }
     
+    if (!xfpm_dbus_register_name (dbus_g_connection_get_connection(manager->priv->session_bus),
+				  "org.freedesktop.PowerManagement") )
+    {
+    
+	g_critical ("Unable to reserve bus name\n");
+    }
+    
     manager->priv->engine = xfpm_engine_new ();
     
-    g_main_loop_run(manager->priv->loop);
 }
 
 /*




More information about the Goodies-commits mailing list