[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