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

Ali Abdallah aliov at xfce.org
Wed Oct 15 09:21:51 CEST 2008


Author: aliov
Date: 2008-10-15 07:21:51 +0000 (Wed, 15 Oct 2008)
New Revision: 5628

Modified:
   xfce4-power-manager/trunk/TODO
   xfce4-power-manager/trunk/src/xfpm-ac-adapter.c
   xfce4-power-manager/trunk/src/xfpm-battery.c
   xfce4-power-manager/trunk/src/xfpm-button.c
   xfce4-power-manager/trunk/src/xfpm-button.h
   xfce4-power-manager/trunk/src/xfpm-common.c
   xfce4-power-manager/trunk/src/xfpm-common.h
   xfce4-power-manager/trunk/src/xfpm-driver.c
   xfce4-power-manager/trunk/src/xfpm-hal.c
   xfce4-power-manager/trunk/src/xfpm-hal.h
   xfce4-power-manager/trunk/src/xfpm-lcd-brightness.c
   xfce4-power-manager/trunk/src/xfpm-lcd-brightness.h
   xfce4-power-manager/trunk/src/xfpm-settings.c
   xfce4-power-manager/trunk/src/xfpm-settings.h
Log:
Some optimizations

Modified: xfce4-power-manager/trunk/TODO
===================================================================
--- xfce4-power-manager/trunk/TODO	2008-10-14 22:36:44 UTC (rev 5627)
+++ xfce4-power-manager/trunk/TODO	2008-10-15 07:21:51 UTC (rev 5628)
@@ -1,6 +1,5 @@
 1)-better notification support.
-2)-search for untranslated strings.
-3)-Supports cpu freq settings for other OSs.
-4)-Find or draw icons for XFPM.
+2)-Supports cpu freq settings for other OSs.
+3)-Find or draw icons for XFPM.
 
-5)- Release
\ No newline at end of file
+4)- Release
\ No newline at end of file

Modified: xfce4-power-manager/trunk/src/xfpm-ac-adapter.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-ac-adapter.c	2008-10-14 22:36:44 UTC (rev 5627)
+++ xfce4-power-manager/trunk/src/xfpm-ac-adapter.c	2008-10-15 07:21:51 UTC (rev 5628)
@@ -214,9 +214,10 @@
                                    _("Unkown adapter status, the power manager will not work properly"));
 #ifdef HAVE_LIBNOTIFY
         xfpm_notify_simple(_("Xfce power manager"),
-                           _("Unkown adapter status, the power manager will not work properly,"\
-                            "make sure ac adapter driver is loaded into the kernel"),
-                           10000,
+                           _("Unable to get adapter status, the power manager will not work properly."\
+                             "Possible reasons: ac adapter driver is not loaded into the kernel "\
+                             "Broken connection with the hardware abstract layer or the message bus daemon is not running"),
+                           12000,
                            NOTIFY_URGENCY_CRITICAL,
                            NULL,
                            "gpm-ac-adapter",
@@ -491,6 +492,13 @@
 	mi = gtk_separator_menu_item_new();
 	gtk_widget_show(mi);
 	gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi);
+	
+	mi = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT,NULL);
+	gtk_widget_set_sensitive(mi,TRUE);
+	gtk_widget_show(mi);
+	g_signal_connect(mi,"activate",G_CALLBACK(xfpm_about),NULL);
+	gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi);
+	
 	mi = gtk_image_menu_item_new_from_stock(GTK_STOCK_PREFERENCES,NULL);
 	gtk_widget_set_sensitive(mi,TRUE);
 	gtk_widget_show(mi);

Modified: xfce4-power-manager/trunk/src/xfpm-battery.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-battery.c	2008-10-14 22:36:44 UTC (rev 5627)
+++ xfce4-power-manager/trunk/src/xfpm-battery.c	2008-10-15 07:21:51 UTC (rev 5628)
@@ -379,15 +379,6 @@
     G_OBJECT_CLASS(xfpm_battery_parent_class)->finalize(object);
 }
 
-#ifdef HAVE_LIBNOTIFY
-static gboolean
-_set_tray_visible_timeout(XfpmBatteryIcon *icon)
-{
-    g_object_set(G_OBJECT(icon),"visible",FALSE,NULL);
-    return FALSE;
-}
-#endif
-
 static void
 xfpm_battery_refresh_tray_icon(XfpmBattery *batt)
 {
@@ -454,11 +445,7 @@
                 }
                 else
                 {
-#ifdef HAVE_LIBNOTIFY                    
-                    g_timeout_add(6000,(GSourceFunc)_set_tray_visible_timeout,icon);
-#else                    
                     g_object_set(G_OBJECT(icon),"visible",FALSE,NULL);
-#endif                    
                 }
             }
         }
@@ -587,7 +574,7 @@
 #ifdef HAVE_LIBNOTIFY
         batt->notify_enabled = TRUE;
 #endif
-        batt->power_save = TRUE;
+        batt->power_save = FALSE;
         batt->show_tray = ALWAYS;
         return;
     }
@@ -598,7 +585,7 @@
     batt->critical_level  =  xfconf_channel_get_uint(channel,CRITICAL_BATT_CFG,10);
     batt->critical_action = xfconf_channel_get_uint(channel,CRITICAL_BATT_ACTION_CFG,NOTHING);
     batt->show_tray = xfconf_channel_get_uint(channel,SHOW_TRAY_ICON_CFG,ALWAYS);
-    batt->power_save = xfconf_channel_get_bool(channel,POWER_SAVE_CFG,TRUE);
+    batt->power_save = xfconf_channel_get_bool(channel,POWER_SAVE_CFG,FALSE);
 #ifdef HAVE_LIBNOTIFY
      batt->notify_enabled = xfconf_channel_get_bool(channel,BATT_STATE_NOTIFICATION_CFG,TRUE);
 #endif 
@@ -988,10 +975,19 @@
 	}
 	gtk_widget_show(mi);
 	gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi);
+	
 	// Separotor
 	mi = gtk_separator_menu_item_new();
 	gtk_widget_show(mi);
 	gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi);
+	
+	mi = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT,NULL);
+	gtk_widget_set_sensitive(mi,TRUE);
+	gtk_widget_show(mi);
+	g_signal_connect(mi,"activate",G_CALLBACK(xfpm_about),NULL);
+	
+	gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi);
+	
 	mi = gtk_image_menu_item_new_from_stock(GTK_STOCK_PREFERENCES,NULL);
 	gtk_widget_set_sensitive(mi,TRUE);
 	gtk_widget_show(mi);

Modified: xfce4-power-manager/trunk/src/xfpm-button.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-button.c	2008-10-14 22:36:44 UTC (rev 5627)
+++ xfce4-power-manager/trunk/src/xfpm-button.c	2008-10-15 07:21:51 UTC (rev 5628)
@@ -96,10 +96,10 @@
     
     gboolean have_sleep_bt;
     gboolean sleep_button_has_state;
-
+    
+    gboolean device_found;
 };
 
-
 G_DEFINE_TYPE(XfpmButton,xfpm_button,G_TYPE_OBJECT)
 
 enum
@@ -162,17 +162,19 @@
     priv->have_sleep_bt         = FALSE;
     priv->sleep_button_has_state= FALSE;
     
-    
     priv->hal = xfpm_hal_new();
     
     xfpm_button_load_config(bt);
     xfpm_button_get_switches(bt);
     
-    if (xfpm_hal_connect_to_signals(priv->hal,FALSE,FALSE,FALSE,TRUE) )
+    if ( priv->have_lid_bt || priv->have_power_bt || priv->have_sleep_bt )
     {
-        priv->handler_id =
-        g_signal_connect(priv->hal,"xfpm-device-condition",
-                        G_CALLBACK(xfpm_button_handle_device_condition_cb),bt);
+        if (xfpm_hal_connect_to_signals(priv->hal,FALSE,FALSE,FALSE,TRUE) )
+        {
+            priv->handler_id =
+            g_signal_connect(priv->hal,"xfpm-device-condition",
+                            G_CALLBACK(xfpm_button_handle_device_condition_cb),bt);
+        }
     }
 }
 
@@ -621,3 +623,29 @@
     bt = g_object_new(XFPM_TYPE_BUTTON,NULL);
     return bt;
 }
+
+guint8
+xfpm_button_get_available_buttons(XfpmButton *button)
+{
+    g_return_val_if_fail(XFPM_IS_BUTTON(button),0);
+    
+    XfpmButtonPrivate *priv;
+    priv = XFPM_BUTTON_GET_PRIVATE(button);
+    
+    guint8 buttons = 0;
+    
+    if ( priv->have_lid_bt )
+    {
+        buttons |= LID_SWITCH;
+    }
+    if ( priv->have_power_bt )
+    {
+        buttons |= POWER_SWITCH;
+    }
+    if ( priv->have_sleep_bt )
+    {
+        buttons |= SLEEP_SWITCH;
+    }
+    
+    return buttons;
+}

Modified: xfce4-power-manager/trunk/src/xfpm-button.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-button.h	2008-10-14 22:36:44 UTC (rev 5627)
+++ xfce4-power-manager/trunk/src/xfpm-button.h	2008-10-15 07:21:51 UTC (rev 5628)
@@ -30,6 +30,7 @@
 
 #define XFPM_TYPE_BUTTON  (xfpm_button_get_type())
 #define XFPM_BUTTON(o)    (G_TYPE_CHECK_INSTANCE_CAST(o,XFPM_TYPE_BUTTON,XfpmButton)) 
+#define XFPM_IS_BUTTON(o) (G_TYPE_CHECK_INSTANCE_TYPE(o,XFPM_TYPE_BUTTON))
 
 typedef struct XfpmButtonPrivate XfpmButtonPrivate;
 
@@ -52,7 +53,8 @@
 } XfpmButtonClass;
 
 GType          xfpm_button_get_type(void) G_GNUC_CONST;
-XfpmButton *xfpm_button_new(void);
+XfpmButton     *xfpm_button_new(void);
+guint8          xfpm_button_get_available_buttons(XfpmButton *button);
 
 G_END_DECLS
 

Modified: xfce4-power-manager/trunk/src/xfpm-common.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-common.c	2008-10-14 22:36:44 UTC (rev 5627)
+++ xfce4-power-manager/trunk/src/xfpm-common.c	2008-10-15 07:21:51 UTC (rev 5628)
@@ -19,6 +19,9 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+#include <glib.h>
+#include <glib/gi18n.h>
+
 #include "xfpm-common.h"
 #include "xfpm-debug.h"
 
@@ -61,7 +64,6 @@
     {
         g_critical("Connot lock screen\n");
     }
-    
 }
 
 void       
@@ -69,3 +71,18 @@
 {
     g_spawn_command_line_async("xfce4-power-manager -c",NULL);
 }
+
+void       
+xfpm_about(GtkWidget *widget,gpointer data)
+{
+    GtkWidget *about;
+	const gchar* authors[3] = {"Ali MA <ali.slackware at gmail.com>", 
+                             _("Part of the Xfce goodies project"),NULL};
+	about = gtk_about_dialog_new();
+	gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(about), _("Xfce4 Power Manager"));
+	gtk_about_dialog_set_logo(GTK_ABOUT_DIALOG(about), NULL);
+	gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(about), (const gchar**) authors);
+	gtk_about_dialog_set_website(GTK_ABOUT_DIALOG(about), "");
+	gtk_dialog_run(GTK_DIALOG(about));
+	gtk_widget_destroy (about);
+}

Modified: xfce4-power-manager/trunk/src/xfpm-common.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-common.h	2008-10-14 22:36:44 UTC (rev 5627)
+++ xfce4-power-manager/trunk/src/xfpm-common.h	2008-10-15 07:21:51 UTC (rev 5628)
@@ -69,14 +69,15 @@
 
 typedef enum
 {
-    LID,
-    SLEEP,
-    POWER
+    LID_SWITCH   = (1<<0),
+    SLEEP_SWITCH = (1<<1),
+    POWER_SWITCH = (1<<2)
     
 } XfpmSwitchButton;
 
 GdkPixbuf* xfpm_load_icon(const gchar *icon_name,gint size);
 void       xfpm_lock_screen(void);
 void       xfpm_preferences(void);
+void       xfpm_about(GtkWidget *widget,gpointer data);
 
 #endif /* XFPM_COMMON_H */

Modified: xfce4-power-manager/trunk/src/xfpm-driver.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-driver.c	2008-10-14 22:36:44 UTC (rev 5627)
+++ xfce4-power-manager/trunk/src/xfpm-driver.c	2008-10-15 07:21:51 UTC (rev 5628)
@@ -110,6 +110,10 @@
     gboolean can_suspend;
     gboolean can_hibernate;
     
+    gboolean cpufreq_control;
+    gboolean buttons_control;
+    gboolean lcd_brightness_control;
+    
     XfpmHal     *hal;
     XfpmCpu     *cpu;
     XfpmBattery *batt;
@@ -141,6 +145,9 @@
     XfpmDriverPrivate *priv;
     priv = XFPM_DRIVER_GET_PRIVATE(drv);
     priv->dialog_opened = FALSE;
+    priv->cpufreq_control = FALSE;
+    priv->buttons_control = FALSE;
+    priv->lcd_brightness_control = FALSE;
     priv->loop    = NULL;
     priv->cpu     = NULL;
     priv->adapter = NULL;
@@ -153,7 +160,7 @@
 #endif     
 
 #ifdef HAVE_LIBNOTIFY
-    notify_init("Basics");
+    notify_init("xfce4-power-manager");
 #endif    
 }
 
@@ -214,11 +221,16 @@
 #ifdef HAVE_DPMS    
     XFPM_DEBUG("Setting DPMS ac-adapter property\n");
     g_object_set(G_OBJECT(priv->dpms),"on-ac-adapter",priv->ac_adapter_present,NULL);
-#endif    
-    g_object_set(G_OBJECT(priv->cpu),"on-ac-adapter",priv->ac_adapter_present,NULL);
-
+#endif
+    if ( priv->cpufreq_control )    
+    {
+        g_object_set(G_OBJECT(priv->cpu),"on-ac-adapter",priv->ac_adapter_present,NULL);
+    }
     g_object_set(G_OBJECT(priv->batt),"on-ac-adapter",priv->ac_adapter_present,NULL);
-    g_object_set(G_OBJECT(priv->lcd),"on-ac-adapter",priv->ac_adapter_present,NULL);
+    if ( priv->lcd_brightness_control )
+    {
+        g_object_set(G_OBJECT(priv->lcd),"on-ac-adapter",priv->ac_adapter_present,NULL);
+    }
 }                                                    
 
 static void
@@ -287,26 +299,28 @@
         return;
     }
     
-    if ( !strcmp(property,CPU_FREQ_SCALING_CFG) ) 
+    if ( priv->cpufreq_control )
     {
-        gboolean val = g_value_get_boolean(value);
-        g_object_set(G_OBJECT(priv->cpu),"cpu-freq",val,NULL);
-        return;
+        if ( !strcmp(property,CPU_FREQ_SCALING_CFG) ) 
+        {
+            gboolean val = g_value_get_boolean(value);
+            g_object_set(G_OBJECT(priv->cpu),"cpu-freq",val,NULL);
+            return;
+        }
+        
+        if ( !strcmp(property,ON_AC_CPU_GOV_CFG) ) 
+        {
+            guint val = g_value_get_uint(value);
+            g_object_set(G_OBJECT(priv->cpu),"on-ac-cpu-gov",val,NULL);
+            return;
+        }
+        if ( !strcmp(property,ON_BATT_CPU_GOV_CFG) ) 
+        {
+            guint val = g_value_get_uint(value);
+            g_object_set(G_OBJECT(priv->cpu),"on-batt-cpu-gov",val,NULL);
+            return;
+        }
     }
-    
-    if ( !strcmp(property,ON_AC_CPU_GOV_CFG) ) 
-    {
-        guint val = g_value_get_uint(value);
-        g_object_set(G_OBJECT(priv->cpu),"on-ac-cpu-gov",val,NULL);
-        return;
-    }
-    if ( !strcmp(property,ON_BATT_CPU_GOV_CFG) ) 
-    {
-        guint val = g_value_get_uint(value);
-        g_object_set(G_OBJECT(priv->cpu),"on-batt-cpu-gov",val,NULL);
-        return;
-    }
-    
 #ifdef HAVE_LIBNOTIFY    
     if ( !strcmp(property,BATT_STATE_NOTIFICATION_CFG) ) 
     {
@@ -316,11 +330,14 @@
     }
 #endif    
 
-    if ( !strcmp(property,LCD_BRIGHTNESS_CFG) )
+    if ( priv->lcd_brightness_control )
     {
-        gboolean val = g_value_get_boolean(value);
-        g_object_set(G_OBJECT(priv->lcd),"brightness-enabled",val,NULL);
-        return;
+        if ( !strcmp(property,LCD_BRIGHTNESS_CFG) )
+        {
+            gboolean val = g_value_get_boolean(value);
+            g_object_set(G_OBJECT(priv->lcd),"brightness-enabled",val,NULL);
+            return;
+        }
     }
 #ifdef HAVE_DPMS
     if ( !strcmp(property,DPMS_ENABLE_CFG) ) 
@@ -382,33 +399,36 @@
     }
 #endif
 
-    if ( !strcmp(property,LID_SWITCH_CFG) ) 
+    if ( priv->buttons_control )
     {
-        guint val = g_value_get_uint(value);
-        g_object_set(G_OBJECT(priv->bt),"lid-switch-action",val,NULL);
-        return;
+        if ( !strcmp(property,LID_SWITCH_CFG) ) 
+        {
+            guint val = g_value_get_uint(value);
+            g_object_set(G_OBJECT(priv->bt),"lid-switch-action",val,NULL);
+            return;
+        }
+        
+        if ( !strcmp(property,SLEEP_SWITCH_CFG) ) 
+        {
+            guint val = g_value_get_uint(value);
+            g_object_set(G_OBJECT(priv->bt),"sleep-switch-action",val,NULL);
+            return;
+        }
+        
+        if ( !strcmp(property,POWER_SWITCH_CFG) ) 
+        {
+            guint val = g_value_get_uint(value);
+            g_object_set(G_OBJECT(priv->bt),"power-switch-action",val,NULL);
+            return;
+        }
+        
+        if ( !strcmp(property,POWER_SAVE_CFG) )
+        {
+            gboolean val = g_value_get_boolean(value);
+            g_object_set(G_OBJECT(priv->batt),"enable-powersave",val,NULL);
+            return;
+        }
     }
-    
-    if ( !strcmp(property,SLEEP_SWITCH_CFG) ) 
-    {
-        guint val = g_value_get_uint(value);
-        g_object_set(G_OBJECT(priv->bt),"sleep-switch-action",val,NULL);
-        return;
-    }
-    
-    if ( !strcmp(property,POWER_SWITCH_CFG) ) 
-    {
-        guint val = g_value_get_uint(value);
-        g_object_set(G_OBJECT(priv->bt),"power-switch-action",val,NULL);
-        return;
-    }
-    
-    if ( !strcmp(property,POWER_SAVE_CFG) )
-    {
-        gboolean val = g_value_get_boolean(value);
-        g_object_set(G_OBJECT(priv->batt),"enable-powersave",val,NULL);
-        return;
-    }
 } 
 
 static gboolean
@@ -438,45 +458,54 @@
     g_object_set_data(G_OBJECT(drv),"conf-channel",channel);
     g_signal_connect(channel,"property-changed",
                      G_CALLBACK(xfpm_driver_property_changed_cb),drv);
-    
-    gchar **govs;
+
     guint8 gov = 0;
-    
-    govs = xfpm_hal_get_available_cpu_governors(priv->hal,&g_error);
-    if ( g_error )
-    {
-        XFPM_DEBUG("%s :\n",g_error->message);
-        g_error_free(g_error);
-        goto no_gov;
-    }
-    int i = 0;    
-    if ( govs ) 
-    {
-        for ( i = 0 ; govs[i] ; i++ )
+    if ( priv->cpufreq_control )
+    {    
+        gchar **govs;
+        
+        govs = xfpm_hal_get_available_cpu_governors(priv->hal,&g_error);
+        if ( g_error )
         {
-            if ( !strcmp(govs[i],"powersave") )    gov |= POWERSAVE;
-            if ( !strcmp(govs[i],"ondemand") )     gov |= ONDEMAND;
-            if ( !strcmp(govs[i],"performance") )  gov |= PERFORMANCE;
-            if ( !strcmp(govs[i],"conservative") ) gov |= CONSERVATIVE;
-            if ( !strcmp(govs[i],"userspace") )    gov |= USERSPACE;
-        }   
-        libhal_free_string_array(govs);
+            XFPM_DEBUG("%s :\n",g_error->message);
+            g_error_free(g_error);
+            goto no_gov_found;
+        }
+        int i = 0;    
+        if ( govs ) 
+        {
+            for ( i = 0 ; govs[i] ; i++ )
+            {
+                if ( !strcmp(govs[i],"powersave") )    gov |= POWERSAVE;
+                if ( !strcmp(govs[i],"ondemand") )     gov |= ONDEMAND;
+                if ( !strcmp(govs[i],"performance") )  gov |= PERFORMANCE;
+                if ( !strcmp(govs[i],"conservative") ) gov |= CONSERVATIVE;
+                if ( !strcmp(govs[i],"userspace") )    gov |= USERSPACE;
+            }   
+            libhal_free_string_array(govs);
+        }
     }
-    
-    no_gov:
-    
+    no_gov_found:
 #ifdef HAVE_DPMS
     with_dpms = xfpm_dpms_capable(priv->dpms);
 #else
     with_dpms = FALSE;
 #endif
 
+    guint8 switch_buttons = 0;
+    if ( priv->buttons_control )
+    {
+        switch_buttons = xfpm_button_get_available_buttons(priv->bt);
+    }
+    
     dialog = xfpm_settings_new(channel,
                                priv->formfactor == SYSTEM_LAPTOP ? TRUE : FALSE,
                                priv->can_hibernate,
                                priv->can_suspend,
                                with_dpms,
-                               gov);
+                               gov,
+                               switch_buttons,
+                               priv->lcd_brightness_control);
     
     xfce_gtk_window_center_on_monitor_with_pointer(GTK_WINDOW(dialog));
     gtk_window_set_modal(GTK_WINDOW(dialog), FALSE);
@@ -636,16 +665,59 @@
     {
         XFPM_DEBUG("%s: \n",g_error->message);
         g_error_free(g_error);
+        g_error = NULL;
     }            
     
 #ifdef HAVE_DPMS    
     priv->dpms = xfpm_dpms_new();
 #endif  
-    priv->cpu = xfpm_cpu_new();
+
+    // Load Cpu only if device exists
+    gchar **cpu_udi = NULL;
+    gint cpu_udi_num;
+    cpu_udi = xfpm_hal_get_device_udi_by_capability(priv->hal,
+                                                    "cpufreq_control",
+                                                    &cpu_udi_num,
+                                                    &g_error);
+    if ( g_error )
+    {
+        XFPM_DEBUG("%s: \n",g_error->message);
+        g_error_free(g_error);
+        priv->cpufreq_control = FALSE;
+    }
     
+    if ( !cpu_udi || cpu_udi_num == 0 )
+    {
+        XFPM_DEBUG("Cpu control not found\n");
+    }
+    else 
+    {
+        priv->cpu = xfpm_cpu_new();
+        priv->cpufreq_control = TRUE;
+        libhal_free_string_array(cpu_udi);
+    }
+    
     priv->bt  = xfpm_button_new();
+    // if no device found free the allocated memory
+    guint8 buttons = xfpm_button_get_available_buttons(priv->bt);
+    if ( buttons == 0 )
+    {
+        g_object_unref(priv->bt);
+        priv->buttons_control = FALSE;
+    }
+    else
+    {
+        priv->buttons_control = TRUE;
+    }
+    
     priv->lcd = xfpm_lcd_brightness_new();
+    priv->lcd_brightness_control = xfpm_lcd_brightness_device_exists(priv->lcd);
     
+    if ( !priv->lcd_brightness_control )
+    {
+        g_object_unref(priv->lcd);
+    }
+    
     priv->batt = xfpm_battery_new();
     g_signal_connect(priv->batt,"xfpm-show-adapter-icon",G_CALLBACK(_show_adapter_icon),drv);
     

Modified: xfce4-power-manager/trunk/src/xfpm-hal.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-hal.c	2008-10-14 22:36:44 UTC (rev 5627)
+++ xfce4-power-manager/trunk/src/xfpm-hal.c	2008-10-15 07:21:51 UTC (rev 5628)
@@ -81,12 +81,9 @@
 
 enum 
 {
-    
     XFPM_DEVICE_ADDED,
     XFPM_DEVICE_REMOVED,
     XFPM_DEVICE_PROPERTY_CHANGED,
-    XFPM_DEVICE_NEW_CAPABILITY,
-    XFPM_DEVICE_LOST_CAPABILITY,
     XFPM_DEVICE_CONDITION,
     LAST_SIGNAL
 };
@@ -130,24 +127,6 @@
                                                           G_TYPE_STRING,G_TYPE_STRING,
                                                           G_TYPE_BOOLEAN,G_TYPE_BOOLEAN);
                                                           
-    signals[XFPM_DEVICE_NEW_CAPABILITY] = g_signal_new("xfpm-device-new-capability",
-                                                      XFPM_TYPE_HAL,
-                                                      G_SIGNAL_RUN_LAST,
-                                                      G_STRUCT_OFFSET(XfpmHalClass,device_new_capability),
-                                                      NULL,NULL,
-                                                      _xfpm_marshal_VOID__STRING_STRING,
-                                                      G_TYPE_NONE,2,
-                                                      G_TYPE_STRING,G_TYPE_STRING);
-                                                          
-    signals[XFPM_DEVICE_LOST_CAPABILITY] = g_signal_new("xfpm-device-lost-capability",
-                                                      XFPM_TYPE_HAL,
-                                                      G_SIGNAL_RUN_LAST,
-                                                      G_STRUCT_OFFSET(XfpmHalClass,device_lost_capability),
-                                                      NULL,NULL,
-                                                      _xfpm_marshal_VOID__STRING_STRING,
-                                                      G_TYPE_NONE,2,
-                                                      G_TYPE_STRING,G_TYPE_STRING);
-    
     signals[XFPM_DEVICE_CONDITION] = g_signal_new("xfpm-device-condition",
                                                   XFPM_TYPE_HAL,
                                                   G_SIGNAL_RUN_LAST,
@@ -179,8 +158,6 @@
     {
         priv->connected = TRUE;
     }
-        
-    
 }
     
 static void
@@ -217,7 +194,6 @@
 xfpm_hal_device_added(LibHalContext *ctx,const gchar *udi) {
     
     XfpmHal *xfpm_hal = libhal_ctx_get_user_data(ctx);
-    XFPM_DEBUG("device added %s\n",udi);   
     g_signal_emit(G_OBJECT(xfpm_hal),signals[XFPM_DEVICE_ADDED],0,udi);
     
 }
@@ -226,49 +202,26 @@
 xfpm_hal_device_removed(LibHalContext *ctx,const gchar *udi) {
     
     XfpmHal *xfpm_hal = libhal_ctx_get_user_data(ctx);
-    XFPM_DEBUG("device removed %s\n",udi); 
     g_signal_emit(G_OBJECT(xfpm_hal),signals[XFPM_DEVICE_REMOVED],0,udi);
     
 }
 
-
 static void
 xfpm_hal_device_property_modified(LibHalContext *ctx,const gchar *udi,
                                  const gchar *key,dbus_bool_t is_removed,
                                  dbus_bool_t is_added) {
     
     XfpmHal *xfpm_hal = libhal_ctx_get_user_data(ctx);
-    //XFPM_DEBUG("device property modified udi=%s key=%s\n",udi,key);     
     g_signal_emit(G_OBJECT(xfpm_hal),signals[XFPM_DEVICE_PROPERTY_CHANGED],0,udi,key,is_removed,is_added);
     
 }
 
-/*    
-static void
-xfpm_hal_device_new_capability(LibHalContext *ctx,const gchar *udi,const gchar *capability) {
-    
-    XfpmHal *xfpm_hal = libhal_ctx_get_user_data(ctx);
-    XFPM_DEBUG("device new capability udi=%s capability=%s\n",udi,capability);     
-    g_signal_emit(G_OBJECT(xfpm_hal),signals[XFPM_DEVICE_NEW_CAPABILITY],0,udi,capability);
-    
-}    
-
-static void
-xfpm_hal_device_lost_capability(LibHalContext *ctx,const gchar *udi,const gchar *capability) {
-    
-     XfpmHal *xfpm_hal = libhal_ctx_get_user_data(ctx);
-     XFPM_DEBUG("device lost capability udi=%s capability=%s\n",udi,capability);     
-     g_signal_emit(G_OBJECT(xfpm_hal),signals[XFPM_DEVICE_LOST_CAPABILITY],0,udi,capability);
-    
-}    
-*/
 static void xfpm_hal_device_condition            (LibHalContext *ctx,
                                                  const gchar *udi,
                                                  const gchar *condition_name,
                                                  const gchar *condition_detail) {
                                                      
     XfpmHal *xfpm_hal = libhal_ctx_get_user_data(ctx);
-    XFPM_DEBUG("device condition udi=%s condition_name=%s condition_detail=%s\n",udi,condition_name,condition_detail);     
     g_signal_emit(G_OBJECT(xfpm_hal),signals[XFPM_DEVICE_CONDITION],0,udi,condition_name,condition_detail);                                                     
                                                      
 }
@@ -336,9 +289,6 @@
         libhal_ctx_set_device_condition(priv->ctx,xfpm_hal_device_condition);
     }
 
-    //libhal_ctx_set_device_new_capability(priv->ctx,xfpm_hal_device_new_capability);
-    //libhal_ctx_set_device_lost_capability(priv->ctx,xfpm_hal_device_lost_capability);
-    
     libhal_device_property_watch_all(priv->ctx,&error);        
 
     if ( dbus_error_is_set(&error) ) {

Modified: xfce4-power-manager/trunk/src/xfpm-hal.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-hal.h	2008-10-14 22:36:44 UTC (rev 5627)
+++ xfce4-power-manager/trunk/src/xfpm-hal.h	2008-10-15 07:21:51 UTC (rev 5628)
@@ -69,14 +69,6 @@
                                               gboolean is_removed,
                                               gboolean is_added);
                                               
-    void         (*device_new_capability)     (XfpmHal *xfpm_hal,
-                                              const gchar *udi,
-                                              const gchar *capability);
-                                              
-    void         (*device_lost_capability)    (XfpmHal *xfpm_hal,
-                                              const gchar *udi,
-                                              const gchar *capability);
-                                              
     void         (*device_condition)          (XfpmHal *xfpm_hal,
                                               const gchar *udi,
                                               const gchar *condition_name,

Modified: xfce4-power-manager/trunk/src/xfpm-lcd-brightness.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-lcd-brightness.c	2008-10-14 22:36:44 UTC (rev 5627)
+++ xfce4-power-manager/trunk/src/xfpm-lcd-brightness.c	2008-10-15 07:21:51 UTC (rev 5628)
@@ -353,3 +353,12 @@
     lcd = g_object_new(XFPM_TYPE_LCD_BRIGHTNESS,NULL);
     return lcd;
 }
+
+gboolean
+xfpm_lcd_brightness_device_exists(XfpmLcdBrightness *lcd)
+{
+    g_return_val_if_fail(XFPM_IS_LCD_BRIGHTNESS(lcd),FALSE);
+    XfpmLcdBrightnessPrivate *priv;
+    priv = XFPM_LCD_BRIGHTNESS_GET_PRIVATE(lcd);
+    return priv->device_exists;
+}

Modified: xfce4-power-manager/trunk/src/xfpm-lcd-brightness.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-lcd-brightness.h	2008-10-14 22:36:44 UTC (rev 5627)
+++ xfce4-power-manager/trunk/src/xfpm-lcd-brightness.h	2008-10-15 07:21:51 UTC (rev 5628)
@@ -28,6 +28,7 @@
 
 #define XFPM_TYPE_LCD_BRIGHTNESS  (xfpm_lcd_brightness_get_type())
 #define XFPM_LCD_BRIGHTNESS(o)    (G_TYPE_CHECK_INSTANCE_CAST(o,XFPM_TYPE_LCD_BRIGHTNESS,XfpmLcdBrightness))
+#define XFPM_IS_LCD_BRIGHTNESS(o) (G_TYPE_CHECK_INSTANCE_TYPE(o,XFPM_TYPE_LCD_BRIGHTNESS))
 
 typedef struct XfpmLcdBrightnessPrivate XfpmLcdBrightnessPrivate;
 
@@ -49,7 +50,7 @@
 
 GType              xfpm_lcd_brightness_get_type(void) G_GNUC_CONST;
 XfpmLcdBrightness *xfpm_lcd_brightness_new(void);
-
+gboolean           xfpm_lcd_brightness_device_exists(XfpmLcdBrightness *lcd);
 G_END_DECLS
 
 #endif

Modified: xfce4-power-manager/trunk/src/xfpm-settings.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-settings.c	2008-10-14 22:36:44 UTC (rev 5627)
+++ xfce4-power-manager/trunk/src/xfpm-settings.c	2008-10-15 07:21:51 UTC (rev 5628)
@@ -19,7 +19,6 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -444,7 +443,7 @@
     gtk_table_attach(GTK_TABLE(table),check_powersave,1,2,2,3,GTK_SHRINK,GTK_SHRINK,0,0);
     g_signal_connect(check_powersave,"toggled",G_CALLBACK(set_power_save_cb),channel);
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_powersave),
-                                 xfconf_channel_get_bool(channel,POWER_SAVE_CFG,TRUE)); 
+                                 xfconf_channel_get_bool(channel,POWER_SAVE_CFG,FALSE)); 
                                  
     
 #ifdef HAVE_LIBNOTIFY
@@ -672,6 +671,7 @@
         gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 0);
         gtk_widget_show(label);
         gtk_widget_set_sensitive(GTK_WIDGET(cpu_gov),FALSE);
+        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cpu_gov),FALSE);
     }
     else
     {
@@ -692,12 +692,12 @@
 }
 
 static GtkWidget *
-xfpm_settings_lcd_brightness(XfconfChannel *channel,gboolean laptop)
+xfpm_settings_lcd_brightness(XfconfChannel *channel,gboolean laptop,gboolean lcd)
 {
     GtkWidget *hbox;
     hbox = gtk_hbox_new(FALSE,2);
 
-    if ( laptop ) 
+    if ( laptop && lcd) 
     {
         GtkWidget *label;
         label = gtk_label_new(_("Enable lcd brigthness control"));
@@ -797,7 +797,8 @@
 #endif
 
 static GtkWidget *
-xfpm_settings_dpms(XfconfChannel *channel,gboolean laptop,gboolean dpms_capable)
+xfpm_settings_monitor(XfconfChannel *channel,gboolean laptop,
+                      gboolean dpms_capable,gboolean lcd)
 {
     GtkWidget *hbox;
     hbox = gtk_hbox_new(FALSE,2);
@@ -834,7 +835,7 @@
         }
     }
 #endif    
-    GtkWidget *lcd_box = xfpm_settings_lcd_brightness(channel,laptop);
+    GtkWidget *lcd_box = xfpm_settings_lcd_brightness(channel,laptop,lcd);
     gtk_box_pack_start(GTK_BOX(vbox),lcd_box,TRUE,TRUE,0);
     return vbox;
 }
@@ -842,11 +843,14 @@
 
 static GtkWidget *
 xfpm_settings_keys(XfconfChannel *channel,gboolean can_hibernate,
-                   gboolean can_suspend,gboolean laptop)
+                   gboolean can_suspend,gboolean laptop,guint8 switch_buttons)
 {
     GtkWidget *table;
     GtkWidget *label;
     GtkWidget *frame,*align;
+    GtkWidget *vbox;
+    vbox = gtk_vbox_new(FALSE,0);
+    gtk_widget_show(vbox);
     
     frame = xfce_create_framebox(_("Keyboard shortcuts"), &align);
     gtk_widget_show(frame);
@@ -855,45 +859,52 @@
     
     guint default_config;
     /// Power Button
-    label = gtk_label_new(_("When power button is pressed do"));
-    gtk_widget_show(label);
-    gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,0,1);
+    if (  switch_buttons & POWER_SWITCH )
+    {
+        label = gtk_label_new(_("When power button is pressed do"));
+        gtk_widget_show(label);
+        gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,0,1);
+        GtkWidget *power_button;
+        default_config = xfconf_channel_get_uint(channel,POWER_SWITCH_CFG,0);
+        power_button = gtk_combo_box_new_text();
+        gtk_combo_box_append_text(GTK_COMBO_BOX(power_button),_("Nothing"));
+        if ( can_suspend ) 
+            gtk_combo_box_append_text(GTK_COMBO_BOX(power_button),_("Suspend"));
+         if ( can_hibernate )
+            gtk_combo_box_append_text(GTK_COMBO_BOX(power_button),_("Hibernate"));
+        gtk_combo_box_append_text(GTK_COMBO_BOX(power_button),_("Shutdown"));        
+        gtk_combo_box_set_active(GTK_COMBO_BOX(power_button),default_config);
+        gtk_table_attach(GTK_TABLE(table),power_button,1,2,0,1,GTK_SHRINK,GTK_SHRINK,0,0);
+        g_signal_connect(power_button,"changed",G_CALLBACK(set_power_button_action_cb),channel);
+       
+        gtk_widget_show(power_button);
+    }
     
-    GtkWidget *power_button;
-    default_config = xfconf_channel_get_uint(channel,POWER_SWITCH_CFG,0);
-    power_button = gtk_combo_box_new_text();
-    gtk_combo_box_append_text(GTK_COMBO_BOX(power_button),_("Nothing"));
-    if ( can_suspend ) 
-        gtk_combo_box_append_text(GTK_COMBO_BOX(power_button),_("Suspend"));
-     if ( can_hibernate )
-        gtk_combo_box_append_text(GTK_COMBO_BOX(power_button),_("Hibernate"));
-    gtk_combo_box_append_text(GTK_COMBO_BOX(power_button),_("Shutdown"));        
-    gtk_combo_box_set_active(GTK_COMBO_BOX(power_button),default_config);
-    gtk_widget_show(power_button);
-    gtk_table_attach(GTK_TABLE(table),power_button,1,2,0,1,GTK_SHRINK,GTK_SHRINK,0,0);
-    g_signal_connect(power_button,"changed",G_CALLBACK(set_power_button_action_cb),channel);
-    
     /// Sleep Button
-    label = gtk_label_new(_("When sleep button is pressed do"));
-    gtk_widget_show(label);
-    gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,1,2);
+    if ( switch_buttons & SLEEP_SWITCH )
+    {    
+        label = gtk_label_new(_("When sleep button is pressed do"));
+        gtk_widget_show(label);
+        gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,1,2);
+        
+        GtkWidget *sleep_button;
+        default_config = xfconf_channel_get_uint(channel,SLEEP_SWITCH_CFG,0);
+        sleep_button = gtk_combo_box_new_text();
+        
+        gtk_combo_box_append_text(GTK_COMBO_BOX(sleep_button),_("Nothing"));
+        if ( can_suspend ) 
+            gtk_combo_box_append_text(GTK_COMBO_BOX(sleep_button),_("Suspend"));
+        if ( can_hibernate )
+            gtk_combo_box_append_text(GTK_COMBO_BOX(sleep_button),_("Hibernate"));
+        gtk_combo_box_append_text(GTK_COMBO_BOX(sleep_button),_("Shutdown"));    
+        gtk_combo_box_set_active(GTK_COMBO_BOX(sleep_button),default_config);
+        gtk_widget_show(sleep_button);
+        gtk_table_attach(GTK_TABLE(table),sleep_button,1,2,1,2,GTK_SHRINK,GTK_SHRINK,0,0);
+        g_signal_connect(sleep_button,"changed",G_CALLBACK(set_sleep_button_action_cb),channel);
+    }
     
-    GtkWidget *sleep_button;
-    default_config = xfconf_channel_get_uint(channel,SLEEP_SWITCH_CFG,0);
-    sleep_button = gtk_combo_box_new_text();
-    gtk_combo_box_append_text(GTK_COMBO_BOX(sleep_button),_("Nothing"));
-    if ( can_suspend ) 
-        gtk_combo_box_append_text(GTK_COMBO_BOX(sleep_button),_("Suspend"));
-    if ( can_hibernate )
-        gtk_combo_box_append_text(GTK_COMBO_BOX(sleep_button),_("Hibernate"));
-    gtk_combo_box_append_text(GTK_COMBO_BOX(sleep_button),_("Shutdown"));    
-    gtk_combo_box_set_active(GTK_COMBO_BOX(sleep_button),default_config);
-    gtk_widget_show(sleep_button);
-    gtk_table_attach(GTK_TABLE(table),sleep_button,1,2,1,2,GTK_SHRINK,GTK_SHRINK,0,0);
-    g_signal_connect(sleep_button,"changed",G_CALLBACK(set_sleep_button_action_cb),channel);
-    
     /// Lid Button
-    if ( laptop )
+    if ( laptop && ( switch_buttons & LID_SWITCH ) )
     {
         label = gtk_label_new(_("When lid button is pressed do"));
         gtk_widget_show(label);
@@ -913,7 +924,14 @@
         g_signal_connect(lid_button,"changed",G_CALLBACK(set_lid_button_action_cb),channel);
     }
     
-    gtk_container_add(GTK_CONTAINER(align),table);    
+    gtk_container_add(GTK_CONTAINER(align),vbox);    
+    gtk_box_pack_start(GTK_BOX(vbox),table,TRUE,TRUE,0);
+    if ( !switch_buttons )
+    {
+        label = gtk_label_new(_("No available shortcuts found"));
+        gtk_widget_show(label);
+        gtk_box_pack_start(GTK_BOX(vbox),label,TRUE,TRUE,0);
+    }
     return frame;
     
 }
@@ -1071,19 +1089,21 @@
    }
    
     /// Keyboard Settings
-    pix = xfpm_load_icon("keyboard",38);
-    gtk_list_store_append(list_store,&iter);
-    if ( pix )
+    if ( is_laptop )
     {
-        gtk_list_store_set(list_store,&iter,0,pix,1,_("Shortcuts"),2,2,-1);
-        g_object_unref(pix);
+        pix = xfpm_load_icon("keyboard",38);
+        gtk_list_store_append(list_store,&iter);
+        if ( pix )
+        {
+            gtk_list_store_set(list_store,&iter,0,pix,1,_("Shortcuts"),2,2,-1);
+            g_object_unref(pix);
+        }
+        else
+        {
+            gtk_list_store_set(list_store,&iter,1,_("Shortcuts"),2,2,-1);
+        } 
     }
-    else
-    {
-        gtk_list_store_set(list_store,&iter,1,_("Shortcuts"),2,2,-1);
-    } 
     
-    
     /// Dpms settings
 #ifdef HAVE_DPMS    
     pix = xfpm_load_icon("display",38);      
@@ -1114,7 +1134,8 @@
 GtkWidget *
 xfpm_settings_new(XfconfChannel *channel,gboolean is_laptop,
                   gboolean can_hibernate,gboolean can_suspend,
-                  gboolean dpms_capable,guint8 govs)
+                  gboolean dpms_capable,guint8 govs,
+                  guint8 switch_buttons,gboolean lcd)
 {
     GtkWidget *Dialog;  /* Main dialog window */
     GtkWidget *mainbox; /* Box to get (Dialog)->vbox */
@@ -1161,11 +1182,11 @@
     gtk_notebook_append_page(GTK_NOTEBOOK(nt),box,NULL);
 
     /// Keyboard buttons settings
-    box = xfpm_settings_keys(channel,can_hibernate,can_suspend,is_laptop);
+    box = xfpm_settings_keys(channel,can_hibernate,can_suspend,is_laptop,switch_buttons);
     gtk_notebook_append_page(GTK_NOTEBOOK(nt),box,NULL); 
     
-    /// Dpms settings && LCD brightness settings
-    box = xfpm_settings_dpms(channel,is_laptop,dpms_capable);
+    /// Dpms settings && LCD brightness settings DPMS existence is checked above
+    box = xfpm_settings_monitor(channel,is_laptop,dpms_capable,lcd);
     gtk_notebook_append_page(GTK_NOTEBOOK(nt),box,NULL);
     
     return Dialog;

Modified: xfce4-power-manager/trunk/src/xfpm-settings.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-settings.h	2008-10-14 22:36:44 UTC (rev 5627)
+++ xfce4-power-manager/trunk/src/xfpm-settings.h	2008-10-15 07:21:51 UTC (rev 5628)
@@ -24,7 +24,8 @@
 
 GtkWidget *xfpm_settings_new(XfconfChannel *channel,gboolean is_laptop,
                              gboolean can_hibernate,gboolean can_suspend,
-                             gboolean dpms_capable,guint8 govs);
+                             gboolean dpms_capable,guint8 govs,
+                             guint8 switch_buttons,gboolean lcd);
 
 
 #endif /* __XFPM_SETTINGS_H */




More information about the Goodies-commits mailing list