[Goodies-commits] r7021 - in xfce4-power-manager/trunk: . libxfpm settings src
Ali Abdallah
aliov at xfce.org
Sun Mar 29 12:22:20 CEST 2009
Author: aliov
Date: 2009-03-29 10:22:20 +0000 (Sun, 29 Mar 2009)
New Revision: 7021
Modified:
xfce4-power-manager/trunk/ChangeLog
xfce4-power-manager/trunk/TODO
xfce4-power-manager/trunk/libxfpm/hal-manager.c
xfce4-power-manager/trunk/libxfpm/hal-manager.h
xfce4-power-manager/trunk/settings/xfpm-settings.c
xfce4-power-manager/trunk/settings/xfpm-settings.glade
xfce4-power-manager/trunk/src/xfpm-adapter.c
xfce4-power-manager/trunk/src/xfpm-button-xf86.c
xfce4-power-manager/trunk/src/xfpm-engine.c
xfce4-power-manager/trunk/src/xfpm-inhibit.c
xfce4-power-manager/trunk/src/xfpm-network-manager.c
xfce4-power-manager/trunk/src/xfpm-xfconf.c
Log:
Added power off button action
Modified: xfce4-power-manager/trunk/ChangeLog
===================================================================
--- xfce4-power-manager/trunk/ChangeLog 2009-03-28 23:43:22 UTC (rev 7020)
+++ xfce4-power-manager/trunk/ChangeLog 2009-03-29 10:22:20 UTC (rev 7021)
@@ -1,4 +1,7 @@
+2009-03-29 12:22 Ali aliov at xfce.org
+ * : Added power off button action
+
2009-03-29 0:43 Ali aliov at xfce.org
* : Increase glib version dependency to 2.16
Modified: xfce4-power-manager/trunk/TODO
===================================================================
--- xfce4-power-manager/trunk/TODO 2009-03-28 23:43:22 UTC (rev 7020)
+++ xfce4-power-manager/trunk/TODO 2009-03-29 10:22:20 UTC (rev 7021)
@@ -1,2 +1,3 @@
-1)-Improvements
-2)-Panel plugin for the lcd brightness control.
\ No newline at end of file
+* : Should we inhibit the power manager when a screensaver is inhibited by a movie player
+
+* :
Modified: xfce4-power-manager/trunk/libxfpm/hal-manager.c
===================================================================
--- xfce4-power-manager/trunk/libxfpm/hal-manager.c 2009-03-28 23:43:22 UTC (rev 7020)
+++ xfce4-power-manager/trunk/libxfpm/hal-manager.c 2009-03-29 10:22:20 UTC (rev 7021)
@@ -30,6 +30,7 @@
#include <glib.h>
#include "hal-manager.h"
+#include "hal-device.h"
/* Init */
static void hal_manager_class_init (HalManagerClass *klass);
@@ -44,6 +45,7 @@
DBusGConnection *bus;
DBusGProxy *proxy;
gboolean connected;
+ gboolean is_laptop;
};
enum
@@ -113,6 +115,29 @@
}
static void
+hal_manager_get_is_laptop_internal (HalManager *manager)
+{
+ HalDevice *device;
+ gchar *form_factor;
+
+ device = hal_device_new ();
+
+ hal_device_set_udi (device, "/org/freedesktop/Hal/devices/computer");
+
+ form_factor = hal_device_get_property_string (device, "system.formfactor");
+
+ if ( g_strcmp0 (form_factor, "laptop") == 0)
+ manager->priv->is_laptop = TRUE;
+ else
+ manager->priv->is_laptop = FALSE;
+
+ if (form_factor)
+ g_free (form_factor);
+
+ g_object_unref (device);
+}
+
+static void
hal_manager_class_init(HalManagerClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS(klass);
@@ -137,7 +162,6 @@
object_class->finalize = hal_manager_finalize;
-
g_type_class_add_private (klass,sizeof(HalManagerPrivate));
}
@@ -151,6 +175,7 @@
manager->priv->connected = FALSE;
hal_manager_connect (manager);
+ hal_manager_get_is_laptop_internal (manager);
}
static void
@@ -207,6 +232,13 @@
return udi;
}
+gboolean hal_manager_get_is_laptop (HalManager *manager)
+{
+ g_return_val_if_fail (HAL_IS_MANAGER (manager), FALSE);
+
+ return manager->priv->is_laptop;
+}
+
void hal_manager_free_string_array (gchar **array)
{
gint i;
Modified: xfce4-power-manager/trunk/libxfpm/hal-manager.h
===================================================================
--- xfce4-power-manager/trunk/libxfpm/hal-manager.h 2009-03-28 23:43:22 UTC (rev 7020)
+++ xfce4-power-manager/trunk/libxfpm/hal-manager.h 2009-03-29 10:22:20 UTC (rev 7021)
@@ -54,6 +54,8 @@
gchar **hal_manager_find_device_by_capability (HalManager *manager,
const gchar *capability);
+
+gboolean hal_manager_get_is_laptop (HalManager *manager) G_GNUC_PURE;
void hal_manager_free_string_array (gchar **array);
Modified: xfce4-power-manager/trunk/settings/xfpm-settings.c
===================================================================
--- xfce4-power-manager/trunk/settings/xfpm-settings.c 2009-03-28 23:43:22 UTC (rev 7020)
+++ xfce4-power-manager/trunk/settings/xfpm-settings.c 2009-03-29 10:22:20 UTC (rev 7021)
@@ -129,6 +129,30 @@
}
static void
+set_power_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, POWER_SWITCH_CFG, xfpm_int_to_shutdown_string(value) ) )
+ {
+ g_critical ("Cannot set value for property %s\n", POWER_SWITCH_CFG);
+ }
+}
+
+static void
power_save_toggled_cb (GtkWidget *w, XfconfChannel *channel)
{
gboolean val = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(w));
@@ -723,7 +747,54 @@
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(dpms), val);
#endif
+ /*
+ * Power button
+ */
+ list_store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
+ GtkWidget *power = glade_xml_get_widget (xml, "power-combox");
+ if (!user_privilege )
+ {
+ gtk_widget_set_sensitive (power, FALSE);
+ gtk_widget_set_tooltip_text (power, _("Hibernate and suspend operations not permitted"));
+ }
+
+ gtk_combo_box_set_model (GTK_COMBO_BOX(power), 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, _("Shutdown"), 1, 2, -1);
+
+ g_signal_connect (power, "changed",
+ G_CALLBACK(set_power_changed_cb), channel);
+
+ gchar *default_power_value = xfconf_channel_get_string (channel, POWER_SWITCH_CFG, "Nothing");
+ gint power_val_int = xfpm_shutdown_string_to_int (default_power_value );
+
+ if ( G_UNLIKELY (power_val_int == -1) )
+ {
+ g_warning ("Invalid value %s for property %s\n", default_power_value, POWER_SWITCH_CFG);
+ gtk_combo_box_set_active (GTK_COMBO_BOX(power), 0);
+ }
+ else
+ gtk_combo_box_set_active (GTK_COMBO_BOX(power), power_val_int);
+
+ g_free (default_power_value);
+
+
/*
* Sleep button
*/
Modified: xfce4-power-manager/trunk/settings/xfpm-settings.glade
===================================================================
--- xfce4-power-manager/trunk/settings/xfpm-settings.glade 2009-03-28 23:43:22 UTC (rev 7020)
+++ xfce4-power-manager/trunk/settings/xfpm-settings.glade 2009-03-29 10:22:20 UTC (rev 7021)
@@ -67,7 +67,7 @@
<widget class="GtkHBox" id="hbox13">
<property name="visible">True</property>
<child>
- <widget class="GtkComboBox" id="sleep-combox">
+ <widget class="GtkComboBox" id="power-combox">
<property name="visible">True</property>
<property name="items" translatable="yes">Nothing</property>
</widget>
@@ -124,7 +124,7 @@
<child>
<widget class="GtkLabel" id="label25">
<property name="visible">True</property>
- <property name="label" translatable="yes">When sleep button is pressed:</property>
+ <property name="label" translatable="yes">When power button is pressed:</property>
</widget>
<packing>
<property name="expand">False</property>
@@ -138,10 +138,44 @@
</packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkHBox" id="hbox3">
+ <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">2</property>
+ <property name="bottom_attach">3</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkHBox" id="hbox4">
+ <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">2</property>
+ <property name="bottom_attach">3</property>
+ </packing>
</child>
</widget>
<packing>
Modified: xfce4-power-manager/trunk/src/xfpm-adapter.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-adapter.c 2009-03-28 23:43:22 UTC (rev 7020)
+++ xfce4-power-manager/trunk/src/xfpm-adapter.c 2009-03-29 10:22:20 UTC (rev 7021)
@@ -86,9 +86,8 @@
}
static void
-xfpm_adapter_set_device (XfpmAdapter *adapter)
+xfpm_adapter_set_device (XfpmAdapter *adapter, HalManager *manager)
{
- HalManager *manager;
gchar **udi;
manager = hal_manager_new ();
@@ -114,7 +113,7 @@
hal_device_watch (adapter->priv->device);
out:
- g_object_unref (manager);
+ ;
}
static void
@@ -139,8 +138,7 @@
static void
xfpm_adapter_init(XfpmAdapter *adapter)
{
- HalDevice *device;
- gchar *form_factor = NULL;
+ HalManager *manager;
adapter->priv = XFPM_ADAPTER_GET_PRIVATE(adapter);
@@ -148,15 +146,11 @@
adapter->priv->present = TRUE;
adapter->priv->hw_found = FALSE;
- device = hal_device_new ();
- hal_device_set_udi (device, "/org/freedesktop/Hal/devices/computer");
-
- form_factor = hal_device_get_property_string (device, "system.formfactor");
+ manager = hal_manager_new ();
- TRACE("System formfactor=%s\n", form_factor);
- if ( xfpm_strequal (form_factor, "laptop") )
+ if ( hal_manager_get_is_laptop (manager) )
{
- xfpm_adapter_set_device (adapter);
+ xfpm_adapter_set_device (adapter, manager);
TRACE("System is identified as a laptop");
}
else
@@ -164,9 +158,7 @@
TRACE("System is not identified as a laptop");
}
- g_object_unref (device);
- if ( form_factor )
- g_free(form_factor);
+ g_object_unref (manager);
}
static void
Modified: xfce4-power-manager/trunk/src/xfpm-button-xf86.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-button-xf86.c 2009-03-28 23:43:22 UTC (rev 7020)
+++ xfce4-power-manager/trunk/src/xfpm-button-xf86.c 2009-03-29 10:22:20 UTC (rev 7021)
@@ -162,11 +162,7 @@
gdk_flush ();
gdk_error_trap_pop ();
-
- TRACE("Grabbed modmask=%x, keycode=%li", modmask, (long int) keycode);
-
return TRUE;
-
}
static gboolean
@@ -185,7 +181,17 @@
g_critical ("Failed to grab %i\n", keycode);
return FALSE;
}
-
+
+#ifdef DEBUG
+ gchar *content;
+ GValue value = { 0, };
+ g_value_init (&value, XFPM_TYPE_XF86_BUTTON);
+ g_value_set_enum (&value, type);
+ content = g_strdup_value_contents (&value);
+ TRACE("Grabbed key=%s, keycode=%li", content, (long int) keycode);
+ g_free (content);
+#endif /* DEBUG */
+
g_hash_table_insert (button->priv->hash, GINT_TO_POINTER(keycode), GINT_TO_POINTER(type));
return TRUE;
@@ -202,10 +208,6 @@
xfpm_button_xf86_xevent_key (button, XF86XK_MonBrightnessUp, BUTTON_MON_BRIGHTNESS_UP);
xfpm_button_xf86_xevent_key (button, XF86XK_MonBrightnessDown, BUTTON_MON_BRIGHTNESS_DOWN);
-/*
- xfpm_button_xf86_xf86_xevent_key (button, XF86XK_KbdBrightnessUp);
- xfpm_button_xf86_xf86_xevent_key (button, XF86XK_KbdBrightnessDown);
-*/
gdk_window_add_filter (button->priv->window,
xfpm_button_xf86_filter_x_events, button);
}
Modified: xfce4-power-manager/trunk/src/xfpm-engine.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-engine.c 2009-03-28 23:43:22 UTC (rev 7020)
+++ xfce4-power-manager/trunk/src/xfpm-engine.c 2009-03-29 10:22:20 UTC (rev 7021)
@@ -42,7 +42,7 @@
#include <xfconf/xfconf.h>
#include "libxfpm/hal-iface.h"
-#include "libxfpm/hal-device.h"
+#include "libxfpm/hal-manager.h"
#include "libxfpm/xfpm-string.h"
#include "libxfpm/xfpm-common.h"
#include "libxfpm/xfpm-notify.h"
@@ -106,7 +106,8 @@
};
G_DEFINE_TYPE (XfpmEngine, xfpm_engine, G_TYPE_OBJECT)
- static gboolean xfpm_engine_do_suspend (XfpmEngine * engine)
+
+static gboolean xfpm_engine_do_suspend (XfpmEngine * engine)
{
GError *error = NULL;
@@ -209,19 +210,22 @@
xfpm_engine_xf86_button_pressed_cb (XfpmButtonXf86 * button,
XfpmXF86Button type, XfpmEngine * engine)
{
- TRACE ("Received button press event type %d", type);
- XfpmShutdownRequest shutdown;
+ TRACE ("Received button press event type %d", type);
+ XfpmShutdownRequest shutdown;
- shutdown = xfpm_xfconf_get_property_enum (engine->priv->conf, SLEEP_SWITCH_CFG );
-
- if (type == BUTTON_POWER_OFF || type == BUTTON_SLEEP)
- {
- if (engine->priv->block_shutdown)
+ if ( type != BUTTON_POWER_OFF && type != BUTTON_SLEEP )
return;
- TRACE ("Accepting shutdown request");
- xfpm_engine_shutdown_request (engine, shutdown, FALSE);
- }
+ if (engine->priv->block_shutdown)
+ return;
+
+ shutdown = xfpm_xfconf_get_property_enum (engine->priv->conf,
+ type == BUTTON_POWER_OFF ? POWER_SWITCH_CFG :
+ SLEEP_SWITCH_CFG );
+ g_print("---------------Configuration is %d\n", shutdown);
+
+ TRACE ("Accepting shutdown request");
+ xfpm_engine_shutdown_request (engine, shutdown, FALSE);
}
static void
@@ -268,33 +272,19 @@
static void
xfpm_engine_load_all (XfpmEngine * engine)
{
- HalDevice *device;
- gchar *form_factor = NULL;
+ HalManager *manager;
- xfpm_engine_check_hal_iface (engine);
+ xfpm_engine_check_hal_iface (engine);
+
+ manager = hal_manager_new ();
- device = hal_device_new ();
+ if ( hal_manager_get_is_laptop (manager))
+ engine->priv->is_laptop = TRUE;
+ else
+ engine->priv->is_laptop = FALSE;
- hal_device_set_udi (device, "/org/freedesktop/Hal/devices/computer");
+ g_object_unref (manager);
- form_factor = hal_device_get_property_string (device, "system.formfactor");
-
- TRACE ("System formfactor=%s\n", form_factor);
- if (xfpm_strequal (form_factor, "laptop"))
- {
- engine->priv->is_laptop = TRUE;
- TRACE ("System is identified as a laptop");
- }
- else
- {
- engine->priv->is_laptop = FALSE;
- TRACE ("System is not identified as a laptop");
- }
- if (form_factor)
- g_free (form_factor);
-
- g_object_unref (device);
-
#ifdef HAVE_DPMS
engine->priv->dpms = xfpm_dpms_new ();
#endif
Modified: xfce4-power-manager/trunk/src/xfpm-inhibit.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-inhibit.c 2009-03-28 23:43:22 UTC (rev 7020)
+++ xfce4-power-manager/trunk/src/xfpm-inhibit.c 2009-03-29 10:22:20 UTC (rev 7021)
@@ -77,8 +77,8 @@
static void
xfpm_inhibit_screen_saver_inhibited_cb (XfpmScreenSaver *srv, gboolean is_inhibited, XfpmInhibit *inhibit)
{
- inhibit->priv->inhibited = is_inhibited;
- g_signal_emit (G_OBJECT(inhibit), signals[HAS_INHIBIT_CHANGED], 0, is_inhibited);
+ // inhibit->priv->inhibited = is_inhibited;
+ //g_signal_emit (G_OBJECT(inhibit), signals[HAS_INHIBIT_CHANGED], 0, is_inhibited);
}
static void
Modified: xfce4-power-manager/trunk/src/xfpm-network-manager.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-network-manager.c 2009-03-28 23:43:22 UTC (rev 7020)
+++ xfce4-power-manager/trunk/src/xfpm-network-manager.c 2009-03-29 10:22:20 UTC (rev 7021)
@@ -57,6 +57,7 @@
dbus_g_proxy_call_no_reply (proxy, message, G_TYPE_INVALID);
g_object_unref (G_OBJECT(proxy));
+ dbus_g_connection_unref (bus);
return TRUE;
}
Modified: xfce4-power-manager/trunk/src/xfpm-xfconf.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-xfconf.c 2009-03-28 23:43:22 UTC (rev 7020)
+++ xfce4-power-manager/trunk/src/xfpm-xfconf.c 2009-03-29 10:22:20 UTC (rev 7021)
@@ -51,6 +51,7 @@
{
XfconfChannel *channel;
+ XfpmShutdownRequest power_button;
XfpmShutdownRequest sleep_button;
XfpmShutdownRequest lid_button_ac;
XfpmShutdownRequest lid_button_battery;
@@ -104,9 +105,9 @@
if ( xfpm_strequal (property, SLEEP_SWITCH_CFG) )
{
str = g_value_get_string (value);
- gint val = xfpm_shutdown_string_to_int (str);
+ val = xfpm_shutdown_string_to_int (str);
- if ( G_UNLIKELY (val == -1 || val == 3) )
+ if ( G_UNLIKELY (val == 3) )
{
g_warning ("Invalid value %s for property %s, using default\n", str, SLEEP_SWITCH_CFG);
conf->priv->sleep_button = XFPM_DO_NOTHING;
@@ -114,10 +115,22 @@
else
conf->priv->sleep_button = val;
}
+ else if ( xfpm_strequal (property, POWER_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, POWER_SWITCH_CFG);
+ conf->priv->power_button = XFPM_DO_NOTHING;
+ }
+ else
+ conf->priv->power_button = xfpm_shutdown_string_to_int (str);
+ }
else if ( xfpm_strequal (property, LID_SWITCH_ON_AC_CFG) )
{
str = g_value_get_string (value);
- gint val = xfpm_shutdown_string_to_int (str);
+ val = xfpm_shutdown_string_to_int (str);
if ( G_UNLIKELY (val == -1 || val == 3) )
{
g_warning ("Invalid value %s for property %s, using default\n", str, LID_SWITCH_ON_AC_CFG);
@@ -129,7 +142,7 @@
else if ( xfpm_strequal (property, LID_SWITCH_ON_BATTERY_CFG) )
{
str = g_value_get_string (value);
- gint val = xfpm_shutdown_string_to_int (str);
+ val = xfpm_shutdown_string_to_int (str);
if ( G_UNLIKELY (val == -1 || val == 3) )
{
g_warning ("Invalid value %s for property %s, using default\n", str, LID_SWITCH_ON_BATTERY_CFG);
@@ -263,6 +276,19 @@
g_free (str);
+ str = xfconf_channel_get_string (conf->priv->channel, POWER_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, SLEEP_SWITCH_CFG);
+ conf->priv->power_button = XFPM_DO_NOTHING;
+ xfconf_channel_set_string (conf->priv->channel, POWER_SWITCH_CFG, "Nothing");
+ }
+ else conf->priv->power_button = val;
+
+ g_free (str);
+
str = xfconf_channel_get_string (conf->priv->channel, LID_SWITCH_ON_AC_CFG, "Nothing");
val = xfpm_shutdown_string_to_int (str);
@@ -499,6 +525,8 @@
return conf->priv->critical_action;
else if ( xfpm_strequal (property, SHOW_TRAY_ICON_CFG ) )
return conf->priv->show_icon;
+ else if ( xfpm_strequal (property, POWER_SWITCH_CFG) )
+ return conf->priv->power_button;
g_warn_if_reached ();
More information about the Goodies-commits
mailing list