[Goodies-commits] r7170 - in xfce4-power-manager/trunk: . settings src
Ali Abdallah
aliov at xfce.org
Sun Apr 12 17:09:46 CEST 2009
Author: aliov
Date: 2009-04-12 15:09:46 +0000 (Sun, 12 Apr 2009)
New Revision: 7170
Modified:
xfce4-power-manager/trunk/ChangeLog
xfce4-power-manager/trunk/settings/xfpm-settings-main.c
xfce4-power-manager/trunk/settings/xfpm-settings.c
xfce4-power-manager/trunk/settings/xfpm-settings.glade
xfce4-power-manager/trunk/settings/xfpm-settings.h
xfce4-power-manager/trunk/src/org.xfce.Power.Manager.xml
xfce4-power-manager/trunk/src/xfpm-button-hal.c
xfce4-power-manager/trunk/src/xfpm-button-hal.h
xfce4-power-manager/trunk/src/xfpm-button.c
xfce4-power-manager/trunk/src/xfpm-button.h
xfce4-power-manager/trunk/src/xfpm-engine.c
xfce4-power-manager/trunk/src/xfpm-engine.h
xfce4-power-manager/trunk/src/xfpm-manager.c
Log:
Disable not mapped keys in the settings dialog
Modified: xfce4-power-manager/trunk/ChangeLog
===================================================================
--- xfce4-power-manager/trunk/ChangeLog 2009-04-12 00:14:49 UTC (rev 7169)
+++ xfce4-power-manager/trunk/ChangeLog 2009-04-12 15:09:46 UTC (rev 7170)
@@ -1,4 +1,7 @@
+2009-04-12 17:09 Ali aliov at xfce.org
+ * : Disable not mapped keys in the settings dialog
+
2009-04-12 2:14 Ali aliov at xfce.org
* : Added debug macro for enum values+fix possible missing signal that preventing the OSD from getting displayed on brightness key press
Modified: xfce4-power-manager/trunk/settings/xfpm-settings-main.c
===================================================================
--- xfce4-power-manager/trunk/settings/xfpm-settings-main.c 2009-04-12 00:14:49 UTC (rev 7169)
+++ xfce4-power-manager/trunk/settings/xfpm-settings-main.c 2009-04-12 15:09:46 UTC (rev 7170)
@@ -52,11 +52,16 @@
GError *error = NULL;
DBusGConnection *bus;
+ GHashTable *config_hash;
+
gboolean system_laptop;
gboolean user_privilege;
gboolean can_suspend;
gboolean can_hibernate;
gboolean has_lcd_brightness;
+ gboolean has_sleep_button;
+ gboolean has_hibernate_button;
+ gboolean has_power_button;
GdkNativeWindow socket_id = 0;
@@ -130,8 +135,8 @@
"/org/xfce/PowerManager",
"org.xfce.Power.Manager");
- xfpm_manager_dbus_client_get_config (proxy, &system_laptop, &user_privilege,
- &can_suspend, &can_hibernate, &has_lcd_brightness,
+ xfpm_manager_dbus_client_get_config (proxy,
+ &config_hash,
&error);
if ( error )
@@ -143,9 +148,19 @@
return EXIT_FAILURE;
}
+ system_laptop = xfpm_string_to_bool (g_hash_table_lookup (config_hash, "system-laptop"));
+ can_suspend = xfpm_string_to_bool (g_hash_table_lookup (config_hash, "can-suspend"));
+ can_hibernate = xfpm_string_to_bool (g_hash_table_lookup (config_hash, "can-hibernate"));
+ user_privilege = xfpm_string_to_bool (g_hash_table_lookup (config_hash, "caller-privilege"));
+ has_lcd_brightness = xfpm_string_to_bool (g_hash_table_lookup (config_hash, "has-brightness"));
+ has_sleep_button = xfpm_string_to_bool (g_hash_table_lookup (config_hash, "sleep-button"));
+ has_power_button = xfpm_string_to_bool (g_hash_table_lookup (config_hash, "power-button"));
+ has_hibernate_button = xfpm_string_to_bool (g_hash_table_lookup (config_hash, "hibernate-button"));
+
xfpm_settings_dialog_new (channel, system_laptop, user_privilege,
can_suspend, can_hibernate, has_lcd_brightness,
- system_laptop, socket_id);
+ system_laptop, has_sleep_button, has_hibernate_button, has_power_button,
+ socket_id);
gtk_main();
Modified: xfce4-power-manager/trunk/settings/xfpm-settings.c
===================================================================
--- xfce4-power-manager/trunk/settings/xfpm-settings.c 2009-04-12 00:14:49 UTC (rev 7169)
+++ xfce4-power-manager/trunk/settings/xfpm-settings.c 2009-04-12 15:09:46 UTC (rev 7170)
@@ -867,7 +867,9 @@
static void
xfpm_settings_general (XfconfChannel *channel, gboolean user_privilege,
- gboolean can_suspend, gboolean can_hibernate)
+ gboolean can_suspend, gboolean can_hibernate,
+ gboolean has_sleep_button, gboolean has_hibernate_button,
+ gboolean has_power_button)
{
gboolean valid;
/*
@@ -914,177 +916,204 @@
*/
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 )
+ GtkWidget *power_label = glade_xml_get_widget (xml, "power-label");
+
+ if ( has_power_button )
{
- 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));
+ 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_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, _("Hibernate"), 1, 2, -1);
+ 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);
+
+ 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);
+ power_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 ( power_val_int == list_value )
+ {
+ gtk_combo_box_set_active_iter (GTK_COMBO_BOX (power), &iter);
+ break;
+ }
+ }
+
+ g_free (default_power_value);
}
-
- 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);
-
- 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) )
+ else
{
- g_warning ("Invalid value %s for property %s\n", default_power_value, POWER_SWITCH_CFG);
- power_val_int = 0;
+ gtk_widget_hide (power);
+ gtk_widget_hide (power_label);
}
- 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 ( power_val_int == list_value )
- {
- gtk_combo_box_set_active_iter (GTK_COMBO_BOX (power), &iter);
- break;
- }
- }
-
- 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 )
+ GtkWidget *hibernate_label = glade_xml_get_widget (xml, "hibernate-label");
+ if (has_hibernate_button )
{
- 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));
+ 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_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, _("Hibernate"), 1, 2, -1);
+ 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);
}
-
- 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) )
+ else
{
- g_warning ("Invalid value %s for property %s\n", default_hibernate_value, POWER_SWITCH_CFG);
- hibernate_val_int = 0;
+ gtk_widget_hide ( hibernate);
+ gtk_widget_hide (hibernate_label);
}
- 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
*/
list_store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
GtkWidget *sleep = glade_xml_get_widget (xml, "sleep-combox");
- if (!user_privilege )
+ GtkWidget *sleep_label = glade_xml_get_widget (xml, "sleep-label");
+ if ( has_sleep_button )
{
- gtk_widget_set_sensitive (sleep, FALSE);
- gtk_widget_set_tooltip_text (sleep, _("Hibernate and suspend operations not permitted"));
- }
-
- gtk_combo_box_set_model (GTK_COMBO_BOX(sleep), GTK_TREE_MODEL(list_store));
+ if (!user_privilege )
+ {
+ gtk_widget_set_sensitive (sleep, FALSE);
+ gtk_widget_set_tooltip_text (sleep, _("Hibernate and suspend operations not permitted"));
+ }
+
+ gtk_combo_box_set_model (GTK_COMBO_BOX(sleep), 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);
+ 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 (sleep, "changed",
+ G_CALLBACK(set_sleep_changed_cb), channel);
+
+ gchar *default_sleep_value = xfconf_channel_get_string (channel, SLEEP_SWITCH_CFG, "Nothing");
+ gint sleep_val_int = xfpm_shutdown_string_to_int (default_sleep_value );
+ if ( G_UNLIKELY (sleep_val_int == -1 || sleep_val_int == 3) )
+ {
+ g_warning ("Invalid value %s for property %s\n", default_sleep_value, SLEEP_SWITCH_CFG);
+ sleep_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 ( sleep_val_int == list_value )
+ {
+ gtk_combo_box_set_active_iter (GTK_COMBO_BOX (sleep), &iter);
+ break;
+ }
+ }
+
+ g_free (default_sleep_value);
}
-
- if ( can_hibernate )
+ else
{
- gtk_list_store_append (list_store, &iter);
- gtk_list_store_set (list_store, &iter, 0, _("Hibernate"), 1, 2, -1);
+ gtk_widget_hide (sleep);
+ gtk_widget_hide (sleep_label);
}
-
- 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);
-
- gchar *default_sleep_value = xfconf_channel_get_string (channel, SLEEP_SWITCH_CFG, "Nothing");
- gint sleep_val_int = xfpm_shutdown_string_to_int (default_sleep_value );
- if ( G_UNLIKELY (sleep_val_int == -1 || sleep_val_int == 3) )
- {
- g_warning ("Invalid value %s for property %s\n", default_sleep_value, SLEEP_SWITCH_CFG);
- sleep_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 ( sleep_val_int == list_value )
- {
- gtk_combo_box_set_active_iter (GTK_COMBO_BOX (sleep), &iter);
- break;
- }
- }
-
- g_free (default_sleep_value);
/*
* Enable/Disable Notification
*/
@@ -1370,12 +1399,17 @@
xfpm_settings_dialog_new (XfconfChannel *channel, gboolean system_laptop,
gboolean user_privilege, gboolean can_suspend,
gboolean can_hibernate, gboolean has_lcd_brightness,
- gboolean has_lid, GdkNativeWindow id)
+ gboolean has_lid, gboolean has_sleep_button,
+ gboolean has_hibernate_button, gboolean has_power_button,
+ GdkNativeWindow id)
{
- TRACE("system_laptop=%s user_privilege=%s can_suspend=%s can_hibernate=%s has_lcd_brightness=%s has_lid=%s",
+ TRACE("system_laptop=%s user_privilege=%s can_suspend=%s can_hibernate=%s has_lcd_brightness=%s has_lid=%s"\
+ "has_sleep_button=%s has_hibernate_button=%s has_power_button=%s",
xfpm_bool_to_string (system_laptop), xfpm_bool_to_string (user_privilege),
xfpm_bool_to_string (can_suspend), xfpm_bool_to_string (can_hibernate),
- xfpm_bool_to_string (has_lcd_brightness), xfpm_bool_to_string (has_lid) );
+ xfpm_bool_to_string (has_lcd_brightness), xfpm_bool_to_string (has_lid),
+ xfpm_bool_to_string (has_sleep_button), xfpm_bool_to_string (has_hibernate_button),
+ xfpm_bool_to_string (has_power_button) );
GtkWidget *plug;
GtkWidget *dialog;
@@ -1394,7 +1428,9 @@
xfpm_settings_tree_view (channel, system_laptop);
- xfpm_settings_general (channel, user_privilege, can_suspend, can_hibernate);
+ xfpm_settings_general (channel, user_privilege, can_suspend, can_hibernate,
+ has_sleep_button, has_hibernate_button, has_power_button );
+
xfpm_settings_advanced (channel, system_laptop, user_privilege, can_suspend, can_hibernate);
if ( id != 0 )
Modified: xfce4-power-manager/trunk/settings/xfpm-settings.glade
===================================================================
--- xfce4-power-manager/trunk/settings/xfpm-settings.glade 2009-04-12 00:14:49 UTC (rev 7169)
+++ xfce4-power-manager/trunk/settings/xfpm-settings.glade 2009-04-12 15:09:46 UTC (rev 7170)
@@ -120,7 +120,7 @@
<widget class="GtkHBox" id="hbox16">
<property name="visible">True</property>
<child>
- <widget class="GtkLabel" id="label25">
+ <widget class="GtkLabel" id="power-label">
<property name="visible">True</property>
<property name="label" translatable="yes">When power button is pressed:</property>
</widget>
@@ -139,7 +139,7 @@
<widget class="GtkHBox" id="hbox3">
<property name="visible">True</property>
<child>
- <widget class="GtkLabel" id="label4">
+ <widget class="GtkLabel" id="hibernate-label">
<property name="visible">True</property>
<property name="label" translatable="yes">When hibernate button is pressed:</property>
</widget>
@@ -179,7 +179,7 @@
<widget class="GtkHBox" id="hbox5">
<property name="visible">True</property>
<child>
- <widget class="GtkLabel" id="label3">
+ <widget class="GtkLabel" id="sleep-label">
<property name="visible">True</property>
<property name="label" translatable="yes">When sleep button is pressed:</property>
</widget>
@@ -247,6 +247,17 @@
<property name="position">2</property>
</packing>
</child>
+ <child>
+ <widget class="GtkHBox" id="power-key-box">
+ <property name="visible">True</property>
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
</widget>
</child>
</widget>
Modified: xfce4-power-manager/trunk/settings/xfpm-settings.h
===================================================================
--- xfce4-power-manager/trunk/settings/xfpm-settings.h 2009-04-12 00:14:49 UTC (rev 7169)
+++ xfce4-power-manager/trunk/settings/xfpm-settings.h 2009-04-12 15:09:46 UTC (rev 7170)
@@ -29,6 +29,9 @@
gboolean can_hibernate,
gboolean has_lcd_brightness,
gboolean has_lid,
+ gboolean has_sleep_button,
+ gboolean has_hibernate_button,
+ gboolean has_power_button,
GdkNativeWindow id);
Modified: xfce4-power-manager/trunk/src/org.xfce.Power.Manager.xml
===================================================================
--- xfce4-power-manager/trunk/src/org.xfce.Power.Manager.xml 2009-04-12 00:14:49 UTC (rev 7169)
+++ xfce4-power-manager/trunk/src/org.xfce.Power.Manager.xml 2009-04-12 15:09:46 UTC (rev 7170)
@@ -14,11 +14,7 @@
</method>
<method name="GetConfig">
- <arg direction="out" name="system_laptop" type="b"/>
- <arg direction="out" name="user_privilege" type="b"/>
- <arg direction="out" name="can_suspend" type="b"/>
- <arg direction="out" name="can_hibernate" type="b"/>
- <arg direction="out" name="has_lcd_brightness" type="b"/>
+ <arg direction="out" name="config" type="a{ss}"/>
</method>
<method name="GetInfo">
Modified: xfce4-power-manager/trunk/src/xfpm-button-hal.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-button-hal.c 2009-04-12 00:14:49 UTC (rev 7169)
+++ xfce4-power-manager/trunk/src/xfpm-button-hal.c 2009-04-12 15:09:46 UTC (rev 7170)
@@ -51,6 +51,7 @@
{
GPtrArray *array;
guint8 keys;
+ guint8 mapped_keys;
};
enum
@@ -157,6 +158,7 @@
if ( xfpm_strequal (button_type, "lid") )
{
+ bt->priv->mapped_keys |= LID_KEY;
g_free (button_type);
goto out;
}
@@ -168,6 +170,23 @@
}
}
+ if ( hal_device_has_key (device, "button.type") )
+ {
+ button_type = hal_device_get_property_string (device, "button.type");
+ if ( button_type == NULL ) goto out;
+
+ if ( xfpm_strequal (button_type, "lid") )
+ bt->priv->mapped_keys |= LID_KEY;
+ else if ( xfpm_strequal (button_type, "sleep") )
+ bt->priv->mapped_keys |= SLEEP_KEY;
+ else if ( xfpm_strequal (button_type, "hibernate") )
+ bt->priv->mapped_keys |= HIBERNATE_KEY;
+ else if ( xfpm_strequal (button_type, "power") )
+ bt->priv->mapped_keys |= POWER_KEY;
+
+ g_free (button_type);
+ }
+
out:
g_signal_connect (device, "device-changed",
G_CALLBACK (xfpm_button_hal_device_changed_cb), bt);
@@ -229,6 +248,7 @@
button->priv = XFPM_BUTTON_HAL_GET_PRIVATE (button);
button->priv->array = g_ptr_array_new ();
button->priv->keys = 0;
+ button->priv->mapped_keys = 0;
}
static void
@@ -273,3 +293,10 @@
button->priv->keys = keys;
xfpm_button_hal_get_buttons (button, lid_only);
}
+
+guint8 xfpm_button_hal_get_mapped_keys (XfpmButtonHal *button)
+{
+ g_return_val_if_fail (XFPM_IS_BUTTON_HAL (button), 0);
+
+ return button->priv->mapped_keys;
+}
Modified: xfce4-power-manager/trunk/src/xfpm-button-hal.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-button-hal.h 2009-04-12 00:14:49 UTC (rev 7169)
+++ xfce4-power-manager/trunk/src/xfpm-button-hal.h 2009-04-12 15:09:46 UTC (rev 7170)
@@ -55,6 +55,9 @@
void xfpm_button_hal_get_keys (XfpmButtonHal *button,
gboolean lid_only,
guint8 buttons);
+
+guint8 xfpm_button_hal_get_mapped_keys (XfpmButtonHal *button) G_GNUC_PURE;
+
G_END_DECLS
#endif /* __XFPM_BUTTON_HAL_H */
Modified: xfce4-power-manager/trunk/src/xfpm-button.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-button.c 2009-04-12 00:14:49 UTC (rev 7169)
+++ xfce4-power-manager/trunk/src/xfpm-button.c 2009-04-12 15:09:46 UTC (rev 7170)
@@ -179,3 +179,19 @@
}
return XFPM_BUTTON (xfpm_button_object);
}
+
+guint8 xfpm_button_get_mapped (XfpmButton *button)
+{
+ guint8 mapped_keys = 0;
+ guint8 hal_mapped;
+ guint8 xf86_mapped;
+
+ g_return_val_if_fail (XFPM_IS_BUTTON (button), 0);
+
+ hal_mapped = xfpm_button_hal_get_mapped_keys (button->priv->hal);
+ xf86_mapped = xfpm_button_xf86_get_mapped_buttons (button->priv->xf86);
+
+ mapped_keys = hal_mapped | xf86_mapped;
+
+ return mapped_keys;
+}
Modified: xfce4-power-manager/trunk/src/xfpm-button.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-button.h 2009-04-12 00:14:49 UTC (rev 7169)
+++ xfce4-power-manager/trunk/src/xfpm-button.h 2009-04-12 15:09:46 UTC (rev 7170)
@@ -51,6 +51,8 @@
GType xfpm_button_get_type (void) G_GNUC_CONST;
XfpmButton *xfpm_button_new (void);
+guint8 xfpm_button_get_mapped (XfpmButton *button);
+
G_END_DECLS
#endif /* __XFPM_BUTTON_H */
Modified: xfce4-power-manager/trunk/src/xfpm-engine.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-engine.c 2009-04-12 00:14:49 UTC (rev 7169)
+++ xfce4-power-manager/trunk/src/xfpm-engine.c 2009-04-12 15:09:46 UTC (rev 7170)
@@ -489,22 +489,41 @@
}
void
-xfpm_engine_get_info (XfpmEngine * engine,
- gboolean * system_laptop,
- gboolean * user_privilege,
- gboolean * can_suspend,
- gboolean * can_hibernate,
- gboolean * has_lcd_brightness)
+xfpm_engine_get_info (XfpmEngine * engine, GHashTable *hash)
{
+ guint8 mapped_buttons;
+ gboolean user_privilege = FALSE;
+ gboolean can_suspend = FALSE;
+ gboolean can_hibernate = FALSE;
+ gboolean has_sleep_button = FALSE;
+ gboolean has_hibernate_button = FALSE;
+ gboolean has_power_button = FALSE;
+
g_return_if_fail (XFPM_IS_ENGINE (engine));
g_object_get (G_OBJECT (engine->priv->shutdown),
- "caller-privilege", user_privilege,
- "can-suspend", can_suspend,
- "can-hibernate", can_hibernate, NULL);
-
- *system_laptop = engine->priv->is_laptop;
- *has_lcd_brightness = engine->priv->has_lcd_brightness;
+ "caller-privilege", &user_privilege,
+ "can-suspend", &can_suspend,
+ "can-hibernate", &can_hibernate, NULL);
+
+
+ mapped_buttons = xfpm_button_get_mapped (engine->priv->button);
+
+ if ( mapped_buttons & SLEEP_KEY )
+ has_sleep_button = TRUE;
+ if ( mapped_buttons & HIBERNATE_KEY )
+ has_hibernate_button = TRUE;
+ if ( mapped_buttons & POWER_KEY )
+ has_power_button = TRUE;
+
+ g_hash_table_insert (hash, g_strdup ("caller-privilege"), g_strdup (xfpm_bool_to_string (user_privilege)));
+ g_hash_table_insert (hash, g_strdup ("can-suspend"), g_strdup (xfpm_bool_to_string (can_suspend)));
+ g_hash_table_insert (hash, g_strdup ("can-hibernate"), g_strdup (xfpm_bool_to_string (can_hibernate)));
+ g_hash_table_insert (hash, g_strdup ("system-laptop"), g_strdup (xfpm_bool_to_string (engine->priv->is_laptop)));
+ g_hash_table_insert (hash, g_strdup ("has-brightness"), g_strdup (xfpm_bool_to_string (engine->priv->has_lcd_brightness)));
+ g_hash_table_insert (hash, g_strdup ("sleep-button"), g_strdup (xfpm_bool_to_string (has_sleep_button)));
+ g_hash_table_insert (hash, g_strdup ("power-button"), g_strdup (xfpm_bool_to_string (has_power_button)));
+ g_hash_table_insert (hash, g_strdup ("hibernate-button"), g_strdup (xfpm_bool_to_string (has_hibernate_button)));
}
void xfpm_engine_reload_hal_objects (XfpmEngine *engine)
Modified: xfce4-power-manager/trunk/src/xfpm-engine.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-engine.h 2009-04-12 00:14:49 UTC (rev 7169)
+++ xfce4-power-manager/trunk/src/xfpm-engine.h 2009-04-12 15:09:46 UTC (rev 7170)
@@ -51,11 +51,7 @@
XfpmEngine *xfpm_engine_new (void);
void xfpm_engine_get_info (XfpmEngine *engine,
- gboolean *system_laptop,
- gboolean *user_privilege,
- gboolean *can_suspend,
- gboolean *can_hibernate,
- gboolean *has_lcd_brightness);
+ GHashTable *hash);
void xfpm_engine_reload_hal_objects (XfpmEngine *engine);
G_END_DECLS
Modified: xfce4-power-manager/trunk/src/xfpm-manager.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-manager.c 2009-04-12 00:14:49 UTC (rev 7169)
+++ xfce4-power-manager/trunk/src/xfpm-manager.c 2009-04-12 15:09:46 UTC (rev 7170)
@@ -233,14 +233,9 @@
GError **error);
static gboolean xfpm_manager_dbus_get_config (XfpmManager *manager,
- gboolean *OUT_system_laptop,
- gboolean *OUT_user_privilege,
- gboolean *OUT_can_suspend,
- gboolean *OUT_can_hibernate,
- gboolean *OUT_has_lcd_brightness,
- gboolean *OUT_has_lid,
+ GHashTable **OUT_config,
GError **error);
-
+
static gboolean xfpm_manager_dbus_get_info (XfpmManager *manager,
gchar **OUT_name,
gchar **OUT_version,
@@ -287,21 +282,14 @@
}
static gboolean xfpm_manager_dbus_get_config (XfpmManager *manager,
- gboolean *OUT_system_laptop,
- gboolean *OUT_user_privilege,
- gboolean *OUT_can_suspend,
- gboolean *OUT_can_hibernate,
- gboolean *OUT_has_lcd_brightness,
- gboolean *OUT_has_lid,
+ GHashTable **OUT_config,
GError **error)
{
- xfpm_engine_get_info (manager->priv->engine,
- OUT_system_laptop,
- OUT_user_privilege,
- OUT_can_suspend,
- OUT_can_hibernate,
- OUT_has_lcd_brightness);
+ *OUT_config = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+
+ xfpm_engine_get_info (manager->priv->engine, *OUT_config);
+
return TRUE;
}
More information about the Goodies-commits
mailing list