[Goodies-commits] r7158 - in xfce4-power-manager/trunk: . libxfpm settings src
Ali Abdallah
aliov at xfce.org
Fri Apr 10 21:29:14 CEST 2009
Author: aliov
Date: 2009-04-10 19:29:14 +0000 (Fri, 10 Apr 2009)
New Revision: 7158
Modified:
xfce4-power-manager/trunk/ChangeLog
xfce4-power-manager/trunk/configure.ac.in
xfce4-power-manager/trunk/libxfpm/xfpm-common.c
xfce4-power-manager/trunk/settings/xfpm-settings.c
xfce4-power-manager/trunk/settings/xfpm-settings.glade
xfce4-power-manager/trunk/src/xfpm-button-hal.c
xfce4-power-manager/trunk/src/xfpm-button-xf86.c
xfce4-power-manager/trunk/src/xfpm-button.c
xfce4-power-manager/trunk/src/xfpm-config.h
xfce4-power-manager/trunk/src/xfpm-engine.c
xfce4-power-manager/trunk/src/xfpm-enum-glib.h
xfce4-power-manager/trunk/src/xfpm-enum.h
xfce4-power-manager/trunk/src/xfpm-manager.c
xfce4-power-manager/trunk/src/xfpm-session.c
xfce4-power-manager/trunk/src/xfpm-session.h
xfce4-power-manager/trunk/src/xfpm-shutdown.c
xfce4-power-manager/trunk/src/xfpm-shutdown.h
xfce4-power-manager/trunk/src/xfpm-xfconf.c
Log:
Added handler for power button+added option to ask the session manager to its show the exit dialog
Modified: xfce4-power-manager/trunk/ChangeLog
===================================================================
--- xfce4-power-manager/trunk/ChangeLog 2009-04-10 17:54:03 UTC (rev 7157)
+++ xfce4-power-manager/trunk/ChangeLog 2009-04-10 19:29:14 UTC (rev 7158)
@@ -1,4 +1,7 @@
+2009-04-10 21:29 Ali aliov at xfce.org
+ * : Added handler for power button+added option to ask the session manager to its show the exit dialog
+
2009-04-10 19:53 Ali aliov at xfce.org
* : Change the session restart style to if running when we are exiting
Modified: xfce4-power-manager/trunk/configure.ac.in
===================================================================
--- xfce4-power-manager/trunk/configure.ac.in 2009-04-10 17:54:03 UTC (rev 7157)
+++ xfce4-power-manager/trunk/configure.ac.in 2009-04-10 19:29:14 UTC (rev 7158)
@@ -98,6 +98,19 @@
AC_SUBST([DPMS_LIBS])
#=======================================================#
+# Check for XF86_XK_Suspend && Hibernate #
+#=======================================================#
+
+AC_CHECK_DECL(XF86XK_Suspend,have_XF86XK_Suspend=1,have_XF86XK_Suspend=0,[#include <X11/XF86keysym.h>])
+if test "x${ac_cv_have_decl_XF86XK_Suspend}" != "xno"; then
+ AC_DEFINE(HAVE_XF86XK_SUSPEND, 1, [Define if XF86XK_Suspend is available])
+fi
+AC_CHECK_DECL(XF86XK_Hibernate,have_XF86XK_Hibernate=1,have_XF86XK_Hibernate=0,[#include <X11/XF86keysym.h>])
+if test "x${ac_cv_have_decl_XF86XK_Hibernate}" != "xno"; then
+ AC_DEFINE(HAVE_XF86XK_HIBERNATE, 1, [Define if XF86XK_Hibernate is available])
+fi
+
+#=======================================================#
# Panel plugins ? #
#=======================================================#
AC_ARG_ENABLE([panel_plugins],
Modified: xfce4-power-manager/trunk/libxfpm/xfpm-common.c
===================================================================
--- xfce4-power-manager/trunk/libxfpm/xfpm-common.c 2009-04-10 17:54:03 UTC (rev 7157)
+++ xfce4-power-manager/trunk/libxfpm/xfpm-common.c 2009-04-10 19:29:14 UTC (rev 7158)
@@ -77,6 +77,8 @@
return "Hibernate";
else if ( val == 3)
return "Shutdown";
+ else if ( val == 4)
+ return "Ask";
return "Invalid";
}
@@ -89,8 +91,10 @@
return 1;
else if (xfpm_strequal("Hibernate", string) )
return 2;
- else if (xfpm_strequal("Shutdown", string) )
+ else if (xfpm_strequal ("Shutdown", string) )
return 3;
+ else if (xfpm_strequal ("Ask", string) )
+ return 4;
return -1; /* error here */
}
Modified: xfce4-power-manager/trunk/settings/xfpm-settings.c
===================================================================
--- xfce4-power-manager/trunk/settings/xfpm-settings.c 2009-04-10 17:54:03 UTC (rev 7157)
+++ xfce4-power-manager/trunk/settings/xfpm-settings.c 2009-04-10 19:29:14 UTC (rev 7158)
@@ -152,6 +152,30 @@
}
static void
+set_hibernate_changed_cb (GtkWidget *w, XfconfChannel *channel)
+{
+ GtkTreeModel *model;
+ GtkTreeIter selected_row;
+ gint value = 0;
+
+ if (!gtk_combo_box_get_active_iter (GTK_COMBO_BOX (w), &selected_row))
+ return;
+
+ model = gtk_combo_box_get_model (GTK_COMBO_BOX(w));
+
+ gtk_tree_model_get(model,
+ &selected_row,
+ 1,
+ &value,
+ -1);
+
+ if (!xfconf_channel_set_string (channel, HIBERNATE_SWITCH_CFG, xfpm_int_to_shutdown_string(value) ) )
+ {
+ g_critical ("Cannot set value for property %s\n", HIBERNATE_SWITCH_CFG);
+ }
+}
+
+static void
power_save_toggled_cb (GtkWidget *w, XfconfChannel *channel)
{
gboolean val = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(w));
@@ -812,6 +836,9 @@
gtk_list_store_append (list_store, &iter);
gtk_list_store_set (list_store, &iter, 0, _("Shutdown"), 1, 3, -1);
+ gtk_list_store_append (list_store, &iter);
+ gtk_list_store_set (list_store, &iter, 0, _("Ask"), 1, 4, -1);
+
g_signal_connect (power, "changed",
G_CALLBACK(set_power_changed_cb), channel);
@@ -839,7 +866,65 @@
g_free (default_power_value);
+ /*
+ * Hibernate button
+ */
+ list_store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
+ GtkWidget *hibernate = glade_xml_get_widget (xml, "hibernate-combox");
+ if (!user_privilege )
+ {
+ gtk_widget_set_sensitive (hibernate, FALSE);
+ gtk_widget_set_tooltip_text (hibernate, _("Hibernate and suspend operations not permitted"));
+ }
+
+ gtk_combo_box_set_model (GTK_COMBO_BOX(hibernate), GTK_TREE_MODEL(list_store));
+ gtk_list_store_append (list_store, &iter);
+ gtk_list_store_set (list_store, &iter, 0, _("Nothing"), 1, 0, -1);
+
+ if ( can_suspend )
+ {
+ gtk_list_store_append (list_store, &iter);
+ gtk_list_store_set (list_store, &iter, 0, _("Suspend"), 1, 1, -1);
+ }
+
+ if ( can_hibernate )
+ {
+ gtk_list_store_append (list_store, &iter);
+ gtk_list_store_set (list_store, &iter, 0, _("Hibernate"), 1, 2, -1);
+ }
+
+ gtk_list_store_append (list_store, &iter);
+ gtk_list_store_set (list_store, &iter, 0, _("Ask"), 1, 4, -1);
+
+ g_signal_connect (hibernate, "changed",
+ G_CALLBACK(set_hibernate_changed_cb), channel);
+
+ gchar *default_hibernate_value = xfconf_channel_get_string (channel, HIBERNATE_SWITCH_CFG, "Nothing");
+ gint hibernate_val_int = xfpm_shutdown_string_to_int (default_hibernate_value );
+
+ if ( G_UNLIKELY (hibernate_val_int == -1) )
+ {
+ g_warning ("Invalid value %s for property %s\n", default_hibernate_value, POWER_SWITCH_CFG);
+ hibernate_val_int = 0;
+ }
+ for ( valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (list_store), &iter);
+ valid;
+ valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (list_store), &iter) )
+ {
+ gint list_value;
+ gtk_tree_model_get (GTK_TREE_MODEL (list_store), &iter,
+ 1, &list_value, -1);
+ if ( hibernate_val_int == list_value )
+ {
+ gtk_combo_box_set_active_iter (GTK_COMBO_BOX (hibernate), &iter);
+ break;
+ }
+ }
+
+ g_free (default_hibernate_value);
+
+
/*
* Sleep button
*/
@@ -867,6 +952,10 @@
gtk_list_store_append (list_store, &iter);
gtk_list_store_set (list_store, &iter, 0, _("Hibernate"), 1, 2, -1);
}
+
+ gtk_list_store_append (list_store, &iter);
+ gtk_list_store_set (list_store, &iter, 0, _("Ask"), 1, 4, -1);
+
g_signal_connect (sleep, "changed",
G_CALLBACK(set_sleep_changed_cb), channel);
Modified: xfce4-power-manager/trunk/settings/xfpm-settings.glade
===================================================================
--- xfce4-power-manager/trunk/settings/xfpm-settings.glade 2009-04-10 17:54:03 UTC (rev 7157)
+++ xfce4-power-manager/trunk/settings/xfpm-settings.glade 2009-04-10 19:29:14 UTC (rev 7158)
@@ -57,7 +57,7 @@
<child>
<widget class="GtkTable" id="table3">
<property name="visible">True</property>
- <property name="n_rows">3</property>
+ <property name="n_rows">4</property>
<property name="n_columns">2</property>
<property name="column_spacing">10</property>
<property name="row_spacing">10</property>
@@ -139,9 +139,9 @@
<widget class="GtkHBox" id="hbox3">
<property name="visible">True</property>
<child>
- <widget class="GtkLabel" id="label3">
+ <widget class="GtkLabel" id="label4">
<property name="visible">True</property>
- <property name="label" translatable="yes">When sleep button is pressed:</property>
+ <property name="label" translatable="yes">When hibernate button is pressed:</property>
</widget>
<packing>
<property name="expand">False</property>
@@ -158,7 +158,7 @@
<widget class="GtkHBox" id="hbox4">
<property name="visible">True</property>
<child>
- <widget class="GtkComboBox" id="sleep-combox">
+ <widget class="GtkComboBox" id="hibernate-combox">
<property name="visible">True</property>
<property name="items" translatable="yes">Nothing</property>
</widget>
@@ -175,6 +175,46 @@
<property name="bottom_attach">3</property>
</packing>
</child>
+ <child>
+ <widget class="GtkHBox" id="hbox5">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">When sleep button is pressed:</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox6">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkComboBox" id="sleep-combox">
+ <property name="visible">True</property>
+ <property name="items" translatable="yes">Nothing</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="expand">False</property>
@@ -982,7 +1022,7 @@
<property name="visible">True</property>
<child>
<widget class="GtkButton" id="help-button">
- <property name="label" translatable="no">gtk-help</property>
+ <property name="label">gtk-help</property>
<property name="response_id">-11</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -997,7 +1037,7 @@
</child>
<child>
<widget class="GtkButton" id="close-button">
- <property name="label" translatable="no">gtk-close</property>
+ <property name="label">gtk-close</property>
<property name="response_id">-7</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
Modified: xfce4-power-manager/trunk/src/xfpm-button-hal.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-button-hal.c 2009-04-10 17:54:03 UTC (rev 7157)
+++ xfce4-power-manager/trunk/src/xfpm-button-hal.c 2009-04-10 19:29:14 UTC (rev 7158)
@@ -69,22 +69,29 @@
if ( !xfpm_strequal (condition, "ButtonPressed") )
return;
- if ( xfpm_strequal (detail, "power") && bt->priv->keys & POWER_KEY )
+ TRACE ("Emitting signal button press condition %s detail %s", condition, detail);
+
+ if ( xfpm_strequal (detail, "power") && !bt->priv->keys & POWER_KEY )
{
TRACE ("Emitting signal button press condition %s detail %s", condition, detail);
g_signal_emit (G_OBJECT (bt), signals [HAL_BUTTON_PRESSED], 0, BUTTON_POWER_OFF);
}
- else if ( xfpm_strequal (detail, "sleep") && bt->priv->keys & SLEEP_KEY )
+ else if ( xfpm_strequal (detail, "sleep") && !bt->priv->keys & SLEEP_KEY )
{
TRACE ("Emitting signal button press condition %s detail %s", condition, detail);
g_signal_emit (G_OBJECT (bt), signals [HAL_BUTTON_PRESSED], 0, BUTTON_SLEEP);
}
- else if ( xfpm_strequal (detail, "brightness-up") && bt->priv->keys & BRIGHTNESS_KEY )
+ else if ( xfpm_strequal (detail, "hibernate") && !bt->priv->keys & HIBERNATE_KEY )
{
TRACE ("Emitting signal button press condition %s detail %s", condition, detail);
+ g_signal_emit (G_OBJECT (bt), signals [HAL_BUTTON_PRESSED], 0, BUTTON_HIBERNATE);
+ }
+ else if ( xfpm_strequal (detail, "brightness-up") && !bt->priv->keys & BRIGHTNESS_KEY )
+ {
+ TRACE ("Emitting signal button press condition %s detail %s", condition, detail);
g_signal_emit (G_OBJECT (bt), signals [HAL_BUTTON_PRESSED], 0, BUTTON_MON_BRIGHTNESS_UP);
}
- else if ( xfpm_strequal (detail, "brightness-down") && bt->priv->keys & BRIGHTNESS_KEY )
+ else if ( xfpm_strequal (detail, "brightness-down") && !bt->priv->keys & BRIGHTNESS_KEY )
{
TRACE ("Emitting signal button press condition %s detail %s", condition, detail);
g_signal_emit (G_OBJECT (bt), signals [HAL_BUTTON_PRESSED], 0, BUTTON_MON_BRIGHTNESS_DOWN);
Modified: xfce4-power-manager/trunk/src/xfpm-button-xf86.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-button-xf86.c 2009-04-10 17:54:03 UTC (rev 7157)
+++ xfce4-power-manager/trunk/src/xfpm-button-xf86.c 2009-04-10 19:29:14 UTC (rev 7158)
@@ -185,6 +185,16 @@
if ( xfpm_button_xf86_xevent_key (button, XF86XK_PowerOff, BUTTON_POWER_OFF) )
button->priv->mapped_buttons |= POWER_KEY;
+#ifdef HAVE_XF86XK_HIBERNATE
+ if ( xfpm_button_xf86_xevent_key (button, XF86XK_Hibernate, BUTTON_HIBERNATE) )
+ button->priv->mapped_buttons |= HIBERNATE_KEY;
+#endif
+
+#ifdef HAVE_XF86XK_SUSPEND
+ if ( xfpm_button_xf86_xevent_key (button, XF86XK_Suspend, BUTTON_SLEEP) )
+ button->priv->mapped_buttons |= SLEEP_KEY;
+#endif
+
if ( xfpm_button_xf86_xevent_key (button, XF86XK_Sleep, BUTTON_SLEEP) )
button->priv->mapped_buttons |= SLEEP_KEY;
Modified: xfce4-power-manager/trunk/src/xfpm-button.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-button.c 2009-04-10 17:54:03 UTC (rev 7157)
+++ xfce4-power-manager/trunk/src/xfpm-button.c 2009-04-10 19:29:14 UTC (rev 7158)
@@ -68,7 +68,7 @@
static void
xfpm_button_xf86_emit_signal (XfpmButton *button, XfpmButtonKey key)
{
- if ( key == BUTTON_LID_CLOSED || key == BUTTON_POWER_OFF || key == BUTTON_SLEEP )
+ if ( key == BUTTON_LID_CLOSED || key == BUTTON_POWER_OFF || key == BUTTON_SLEEP || key == BUTTON_HIBERNATE )
{
if ( g_timer_elapsed (button->priv->timer, NULL) > SLEEP_KEY_TIMEOUT )
{
@@ -122,7 +122,6 @@
xfpm_button_init (XfpmButton *button)
{
guint8 xf86_mapped;
- guint8 hal_keys = 0;
gboolean only_lid = FALSE;
button->priv = XFPM_BUTTON_GET_PRIVATE (button);
@@ -134,13 +133,12 @@
button->priv->hal = xfpm_button_hal_new ();
- if ( xf86_mapped & SLEEP_KEY && xf86_mapped & POWER_KEY && xf86_mapped & BRIGHTNESS_KEY )
+ if ( xf86_mapped & SLEEP_KEY && xf86_mapped & POWER_KEY &&
+ xf86_mapped & BRIGHTNESS_KEY && xf86_mapped & HIBERNATE_KEY )
only_lid = TRUE;
-
- hal_keys = ~xf86_mapped;
+
+ xfpm_button_hal_get_keys (button->priv->hal, only_lid, xf86_mapped);
- xfpm_button_hal_get_keys (button->priv->hal, only_lid, hal_keys);
-
g_signal_connect (button->priv->xf86, "xf86-button-pressed",
G_CALLBACK (xfpm_button_xf86_button_pressed_cb), button);
Modified: xfce4-power-manager/trunk/src/xfpm-config.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-config.h 2009-04-10 17:54:03 UTC (rev 7157)
+++ xfce4-power-manager/trunk/src/xfpm-config.h 2009-04-10 19:29:14 UTC (rev 7158)
@@ -43,8 +43,9 @@
#define LID_SWITCH_ON_AC_CFG "/xfce4-power-manager/lid-action-on-ac"
#define LID_SWITCH_ON_BATTERY_CFG "/xfce4-power-manager/lid-action-on-battery"
+#define POWER_SWITCH_CFG "/xfce4-power-manager/power-switch-action"
+#define HIBERNATE_SWITCH_CFG "/xfce4-power-manager/hibernate-switch-action"
#define SLEEP_SWITCH_CFG "/xfce4-power-manager/sleep-switch-action"
-#define POWER_SWITCH_CFG "/xfce4-power-manager/power-switch-action"
#define GENERAL_NOTIFICATION_CFG "/xfce4-power-manager/general-notification"
Modified: xfce4-power-manager/trunk/src/xfpm-engine.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-engine.c 2009-04-10 17:54:03 UTC (rev 7157)
+++ xfce4-power-manager/trunk/src/xfpm-engine.c 2009-04-10 19:29:14 UTC (rev 7158)
@@ -218,7 +218,7 @@
return;
}
- if ( type == BUTTON_POWER_OFF || type == BUTTON_SLEEP )
+ if ( type == BUTTON_POWER_OFF || type == BUTTON_SLEEP || type == BUTTON_HIBERNATE )
shutdown = xfpm_xfconf_get_property_enum (engine->priv->conf,
type == BUTTON_POWER_OFF ? POWER_SWITCH_CFG :
SLEEP_SWITCH_CFG );
@@ -228,7 +228,10 @@
LID_SWITCH_ON_BATTERY_CFG :
LID_SWITCH_ON_AC_CFG);
- xfpm_engine_shutdown_request (engine, shutdown, FALSE);
+ if ( shutdown == XFPM_ASK )
+ xfpm_shutdown_ask (engine->priv->shutdown);
+ else
+ xfpm_engine_shutdown_request (engine, shutdown, FALSE);
}
static void
Modified: xfce4-power-manager/trunk/src/xfpm-enum-glib.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-enum-glib.h 2009-04-10 17:54:03 UTC (rev 7157)
+++ xfce4-power-manager/trunk/src/xfpm-enum-glib.h 2009-04-10 19:29:14 UTC (rev 7158)
@@ -32,7 +32,8 @@
XFPM_DO_NOTHING,
XFPM_DO_SUSPEND,
XFPM_DO_HIBERNATE,
- XFPM_DO_SHUTDOWN
+ XFPM_DO_SHUTDOWN,
+ XFPM_ASK
} XfpmShutdownRequest;
@@ -51,6 +52,7 @@
typedef enum
{
BUTTON_POWER_OFF,
+ BUTTON_HIBERNATE,
BUTTON_SLEEP,
BUTTON_MON_BRIGHTNESS_UP,
BUTTON_MON_BRIGHTNESS_DOWN,
Modified: xfce4-power-manager/trunk/src/xfpm-enum.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-enum.h 2009-04-10 17:54:03 UTC (rev 7157)
+++ xfce4-power-manager/trunk/src/xfpm-enum.h 2009-04-10 19:29:14 UTC (rev 7158)
@@ -51,7 +51,8 @@
LID_KEY = (1 << 0),
BRIGHTNESS_KEY = (1 << 1),
SLEEP_KEY = (1 << 2),
- POWER_KEY = (1 << 3)
+ HIBERNATE_KEY = (1 << 3),
+ POWER_KEY = (1 << 4)
} XfpmKeys;
Modified: xfce4-power-manager/trunk/src/xfpm-manager.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-manager.c 2009-04-10 17:54:03 UTC (rev 7157)
+++ xfce4-power-manager/trunk/src/xfpm-manager.c 2009-04-10 19:29:14 UTC (rev 7158)
@@ -141,7 +141,6 @@
xfpm_dbus_release_name (dbus_g_connection_get_connection(manager->priv->session_bus),
"org.freedesktop.PowerManagement");
-
}
static gboolean
Modified: xfce4-power-manager/trunk/src/xfpm-session.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-session.c 2009-04-10 17:54:03 UTC (rev 7157)
+++ xfce4-power-manager/trunk/src/xfpm-session.c 2009-04-10 19:29:14 UTC (rev 7158)
@@ -29,6 +29,8 @@
#include <glib.h>
#include <gtk/gtk.h>
+#include <dbus/dbus-glib.h>
+
#include <libxfce4util/libxfce4util.h>
#include <libxfcegui4/libxfcegui4.h>
@@ -174,3 +176,43 @@
client_session_set_restart_style (session->priv->client, SESSION_RESTART_IF_RUNNING);
}
+
+// Currently we just spawn xfce4-session-logout, FIXME: change this
+void xfpm_session_ask_shutdown (XfpmSession *session)
+{
+ DBusGConnection *bus;
+ DBusGProxy *proxy;
+ GError *error = NULL;
+ gboolean allow_save = TRUE;
+ gint ask = 0;
+
+ bus = dbus_g_bus_get (DBUS_BUS_SESSION, NULL);
+
+ proxy = dbus_g_proxy_new_for_name (bus,
+ "org.xfce.SessionManager",
+ "/org/xfce/SessionManager",
+ "org.xfce.Session.Manager");
+
+ if ( !proxy )
+ {
+ g_critical ("Unable to create proxy for xfce session manager");
+ goto out;
+ }
+
+ dbus_g_proxy_call (proxy, "Shutdown", &error,
+ G_TYPE_UINT, ask,
+ G_TYPE_BOOLEAN, allow_save,
+ G_TYPE_INVALID,
+ G_TYPE_INVALID);
+
+ if ( error )
+ {
+ g_warning ("%s", error->message);
+ g_error_free (error);
+ }
+
+ g_object_unref (proxy);
+out:
+ dbus_g_connection_unref (bus);
+
+}
Modified: xfce4-power-manager/trunk/src/xfpm-session.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-session.h 2009-04-10 17:54:03 UTC (rev 7157)
+++ xfce4-power-manager/trunk/src/xfpm-session.h 2009-04-10 19:29:14 UTC (rev 7158)
@@ -55,6 +55,8 @@
/* This is used to change the restart Style */
void xfpm_session_quit (XfpmSession *session);
+void xfpm_session_ask_shutdown (XfpmSession *session);
+
G_END_DECLS
#endif /* __XFPM_SESSION_H */
Modified: xfce4-power-manager/trunk/src/xfpm-shutdown.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-shutdown.c 2009-04-10 17:54:03 UTC (rev 7157)
+++ xfce4-power-manager/trunk/src/xfpm-shutdown.c 2009-04-10 19:29:14 UTC (rev 7158)
@@ -40,6 +40,7 @@
#include "libxfpm/xfpm-string.h"
#include "xfpm-shutdown.h"
+#include "xfpm-session.h"
#include "xfpm-errors.h"
#define DUPLICATE_SHUTDOWN_REQUEST 8.0f
@@ -61,6 +62,7 @@
DBusGConnection *bus;
HalMonitor *monitor;
+ XfpmSession *session;
gboolean connected;
gboolean can_suspend;
gboolean can_hibernate;
@@ -200,6 +202,8 @@
shutdown->priv->bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
+ shutdown->priv->session = xfpm_session_new ();
+
if ( error )
{
g_critical ("Unable to get system bus %s.", error->message);
@@ -253,6 +257,8 @@
if ( shutdown->priv->monitor )
g_object_unref (shutdown->priv->monitor);
+ g_object_unref (shutdown->priv->session);
+
G_OBJECT_CLASS(xfpm_shutdown_parent_class)->finalize(object);
}
@@ -459,6 +465,13 @@
g_signal_emit (G_OBJECT (shutdown), signals [WAKING_UP], 0);
}
+void xfpm_shutdown_ask (XfpmShutdown *shutdown)
+{
+ g_return_if_fail (XFPM_IS_SHUTDOWN (shutdown));
+
+ xfpm_session_ask_shutdown (shutdown->priv->session);
+}
+
void xfpm_shutdown_reload (XfpmShutdown *shutdown)
{
g_return_if_fail (XFPM_IS_SHUTDOWN (shutdown));
Modified: xfce4-power-manager/trunk/src/xfpm-shutdown.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-shutdown.h 2009-04-10 17:54:03 UTC (rev 7157)
+++ xfce4-power-manager/trunk/src/xfpm-shutdown.h 2009-04-10 19:29:14 UTC (rev 7158)
@@ -71,6 +71,8 @@
void xfpm_suspend (XfpmShutdown *shutdown,
GError **error);
+void xfpm_shutdown_ask (XfpmShutdown *shutdown);
+
void xfpm_shutdown_reload (XfpmShutdown *shutdown);
G_END_DECLS
Modified: xfce4-power-manager/trunk/src/xfpm-xfconf.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-xfconf.c 2009-04-10 17:54:03 UTC (rev 7157)
+++ xfce4-power-manager/trunk/src/xfpm-xfconf.c 2009-04-10 19:29:14 UTC (rev 7158)
@@ -52,6 +52,7 @@
XfconfChannel *channel;
XfpmShutdownRequest power_button;
+ XfpmShutdownRequest hibernate_button;
XfpmShutdownRequest sleep_button;
XfpmShutdownRequest lid_button_ac;
XfpmShutdownRequest lid_button_battery;
@@ -132,6 +133,18 @@
else
conf->priv->power_button = xfpm_shutdown_string_to_int (str);
}
+ else if ( xfpm_strequal (property, HIBERNATE_SWITCH_CFG ) )
+ {
+ str = g_value_get_string (value);
+ val = xfpm_shutdown_string_to_int (str);
+ if ( G_UNLIKELY (val == -1) )
+ {
+ g_warning ("Invalid value %s fpr property %s, using default\n", str, HIBERNATE_SWITCH_CFG);
+ conf->priv->hibernate_button = XFPM_DO_NOTHING;
+ }
+ else
+ conf->priv->hibernate_button = xfpm_shutdown_string_to_int (str);
+ }
else if ( xfpm_strequal (property, LID_SWITCH_ON_AC_CFG) )
{
str = g_value_get_string (value);
@@ -294,6 +307,19 @@
g_free (str);
+ str = xfconf_channel_get_string (conf->priv->channel, HIBERNATE_SWITCH_CFG, "Nothing");
+ val = xfpm_shutdown_string_to_int (str);
+
+ if ( G_UNLIKELY (val == -1 ) )
+ {
+ g_warning ("Invalid value %s for property %s, using default\n", str, HIBERNATE_SWITCH_CFG);
+ conf->priv->hibernate_button = XFPM_DO_NOTHING;
+ xfconf_channel_set_string (conf->priv->channel, HIBERNATE_SWITCH_CFG, "Nothing");
+ }
+ else conf->priv->hibernate_button = val;
+
+ g_free (str);
+
conf->priv->general_notification = xfconf_channel_get_bool (conf->priv->channel, GENERAL_NOTIFICATION_CFG, TRUE);
str = xfconf_channel_get_string (conf->priv->channel, LID_SWITCH_ON_AC_CFG, "Nothing");
@@ -536,6 +562,8 @@
return conf->priv->show_icon;
else if ( xfpm_strequal (property, POWER_SWITCH_CFG) )
return conf->priv->power_button;
+ else if ( xfpm_strequal (property, HIBERNATE_SWITCH_CFG ) )
+ return conf->priv->hibernate_button;
g_warn_if_reached ();
More information about the Goodies-commits
mailing list