[Goodies-commits] r5540 - in xfce4-power-manager/trunk: . po src
Ali Abdallah
aliov at xfce.org
Thu Oct 9 10:04:39 CEST 2008
Author: aliov
Date: 2008-10-09 08:04:39 +0000 (Thu, 09 Oct 2008)
New Revision: 5540
Added:
xfce4-power-manager/trunk/src/xfpm-button.c
xfce4-power-manager/trunk/src/xfpm-button.h
Modified:
xfce4-power-manager/trunk/configure.ac.in
xfce4-power-manager/trunk/po/Makefile
xfce4-power-manager/trunk/src/Makefile.am
xfce4-power-manager/trunk/src/xfpm-battery.c
xfce4-power-manager/trunk/src/xfpm-common.h
xfce4-power-manager/trunk/src/xfpm-cpu.c
xfce4-power-manager/trunk/src/xfpm-cpu.h
xfce4-power-manager/trunk/src/xfpm-dpms.c
xfce4-power-manager/trunk/src/xfpm-dpms.h
xfce4-power-manager/trunk/src/xfpm-driver.c
xfce4-power-manager/trunk/src/xfpm-enums.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-main.c
xfce4-power-manager/trunk/src/xfpm-settings.c
xfce4-power-manager/trunk/src/xfpm-settings.h
Log:
Improvements, cpu freq,laptop switch buttons
Modified: xfce4-power-manager/trunk/configure.ac.in
===================================================================
--- xfce4-power-manager/trunk/configure.ac.in 2008-10-09 08:03:19 UTC (rev 5539)
+++ xfce4-power-manager/trunk/configure.ac.in 2008-10-09 08:04:39 UTC (rev 5540)
@@ -90,9 +90,9 @@
echo "----------------------------------------"
echo " Build Configuration"
echo
-echo " Debug $enable_debug "
-echo " DPMS $have_dpms "
-echo " LibNotiy $LIBNOTIFY_FOUND"
+echo " Debug support $enable_debug "
+echo " DPMS support $have_dpms "
+echo " Notification support $LIBNOTIFY_FOUND"
echo
echo "----------------------------------------"
echo
Modified: xfce4-power-manager/trunk/po/Makefile
===================================================================
--- xfce4-power-manager/trunk/po/Makefile 2008-10-09 08:03:19 UTC (rev 5539)
+++ xfce4-power-manager/trunk/po/Makefile 2008-10-09 08:04:39 UTC (rev 5540)
@@ -67,7 +67,3 @@
EXTRA_DISTFILES = POTFILES.skip Makevars LINGUAS
POTFILES = \
-
-# Tell versions [3.59,3.63) of GNU make not to export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
Modified: xfce4-power-manager/trunk/src/Makefile.am
===================================================================
--- xfce4-power-manager/trunk/src/Makefile.am 2008-10-09 08:03:19 UTC (rev 5539)
+++ xfce4-power-manager/trunk/src/Makefile.am 2008-10-09 08:04:39 UTC (rev 5540)
@@ -41,8 +41,8 @@
xfpm-cpu.h \
xfpm-lcd-brightness.c \
xfpm-lcd-brightness.h \
- xfpm-lid.c \
- xfpm-lid.h \
+ xfpm-button.c \
+ xfpm-button.h \
xfpm-dbus-messages.c \
xfpm-dbus-messages.h \
xfpm-battery.c \
Modified: xfce4-power-manager/trunk/src/xfpm-battery.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-battery.c 2008-10-09 08:03:19 UTC (rev 5539)
+++ xfce4-power-manager/trunk/src/xfpm-battery.c 2008-10-09 08:04:39 UTC (rev 5540)
@@ -385,7 +385,7 @@
else if ( batt->show_tray == CHARGING_OR_DISCHARGING && g_hash_table_size(priv->batteries) == 0 )
{
XFPM_DEBUG("batt->show_tray == CHARGING_OR_DISCHARGING && g_hash_table_size(priv->batteries) == 0 \n");
- g_signal_emit(G_OBJECT(batt),signals[XFPM_SHOW_ADAPTER_ICON],0,TRUE);
+ g_signal_emit(G_OBJECT(batt),signals[XFPM_SHOW_ADAPTER_ICON],0,FALSE);
}
else if ( batt->show_tray == ALWAYS && g_hash_table_size(priv->batteries) != 0 )
Added: xfce4-power-manager/trunk/src/xfpm-button.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-button.c (rev 0)
+++ xfce4-power-manager/trunk/src/xfpm-button.c 2008-10-09 08:04:39 UTC (rev 5540)
@@ -0,0 +1,270 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*-
+ *
+ * * Copyright (C) 2008 Ali <ali.slackware at gmail.com>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <xfconf/xfconf.h>
+
+#include "xfpm-button.h"
+#include "xfpm-hal.h"
+#include "xfpm-debug.h"
+#include "xfpm-common.h"
+#include "xfpm-enum-types.h"
+
+#define XFPM_BUTTON_GET_PRIVATE(o) \
+(G_TYPE_INSTANCE_GET_PRIVATE(o,XFPM_TYPE_BUTTON,XfpmButtonPrivate))
+
+static void xfpm_button_init(XfpmButton *bt);
+static void xfpm_button_class_init(XfpmButtonClass *klass);
+static void xfpm_button_finalize(GObject *object);
+
+static void xfpm_button_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void xfpm_button_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+
+static void xfpm_button_handle_device_condition_cb(XfpmHal *hal,
+ const gchar *udi,
+ const gchar *condition_name,
+ const gchar *condition_detail,
+ XfpmButton *bt);
+
+static void xfpm_button_load_config(XfpmButton *bt);
+
+struct XfpmButtonPrivate
+{
+ XfpmHal *hal;
+
+};
+
+G_DEFINE_TYPE(XfpmButton,xfpm_button,G_TYPE_OBJECT)
+
+enum
+{
+ PROP_0,
+ PROP_LID_ACTION,
+ PROP_SLEEP_ACTION,
+ PROP_POWER_ACTION
+};
+
+static void xfpm_button_class_init(XfpmButtonClass *klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
+ gobject_class->finalize = xfpm_button_finalize;
+
+ gobject_class->set_property = xfpm_button_set_property;
+ gobject_class->get_property = xfpm_button_get_property;
+
+ g_object_class_install_property(gobject_class,
+ PROP_LID_ACTION,
+ g_param_spec_enum("lid-switch-action",
+ "lid switch action",
+ "lid switch action",
+ XFPM_TYPE_BUTTON_ACTION,
+ BUTTON_DO_NOTHING,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class,
+ PROP_SLEEP_ACTION,
+ g_param_spec_enum("sleep-switch-action",
+ "sleep switch action",
+ "sleep switch action",
+ XFPM_TYPE_BUTTON_ACTION,
+ BUTTON_DO_NOTHING,
+ G_PARAM_READWRITE));
+ g_object_class_install_property(gobject_class,
+ PROP_LID_ACTION,
+ g_param_spec_enum("power-switch-action",
+ "power switch action",
+ "power switch action",
+ XFPM_TYPE_BUTTON_ACTION,
+ BUTTON_DO_NOTHING,
+ G_PARAM_READWRITE));
+
+ g_type_class_add_private(klass,sizeof(XfpmButtonPrivate));
+
+}
+
+static void xfpm_button_init(XfpmButton *bt)
+{
+ XfpmButtonPrivate *priv;
+ priv = XFPM_BUTTON_GET_PRIVATE(bt);
+
+ priv->hal = xfpm_hal_new();
+
+ xfpm_button_load_config(bt);
+
+ g_signal_connect(priv->hal,"xfpm-device-condition",
+ G_CALLBACK(xfpm_button_handle_device_condition_cb),bt);
+
+}
+
+
+static void xfpm_button_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+#ifdef DEBUG
+ gchar *content;
+ content = g_strdup_value_contents(value);
+ XFPM_DEBUG("param:%s value contents:%s\n",pspec->name,content);
+ g_free(content);
+#endif
+ XfpmButton *bt;
+ bt = XFPM_BUTTON(object);
+
+ switch (prop_id)
+ {
+ case PROP_LID_ACTION:
+ bt->lid_action = g_value_get_enum(value);
+ break;
+ case PROP_SLEEP_ACTION:
+ bt->sleep_action = g_value_get_enum(value);
+ break;
+ case PROP_POWER_ACTION:
+ bt->power_action = g_value_get_enum(value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object,prop_id,pspec);
+ break;
+ }
+}
+
+static void xfpm_button_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ XfpmButton *bt;
+ bt = XFPM_BUTTON(object);
+
+ switch (prop_id)
+ {
+ case PROP_LID_ACTION:
+ g_value_set_enum(value,bt->lid_action);
+ break;
+ case PROP_SLEEP_ACTION:
+ g_value_set_enum(value,bt->sleep_action);
+ break;
+ case PROP_POWER_ACTION:
+ g_value_set_enum(value,bt->power_action);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object,prop_id,pspec);
+ break;
+ }
+
+#ifdef DEBUG
+ gchar *content;
+ content = g_strdup_value_contents(value);
+ XFPM_DEBUG("param:%s value contents:%s\n",pspec->name,content);
+ g_free(content);
+#endif
+
+}
+
+static void xfpm_button_finalize(GObject *object)
+{
+ XfpmButton *bt;
+ bt = XFPM_BUTTON(object);
+
+ bt->priv = XFPM_BUTTON_GET_PRIVATE(bt);
+
+ if ( bt->priv->hal )
+ {
+ g_object_unref(bt->priv->hal);
+ }
+
+ G_OBJECT_CLASS(xfpm_button_parent_class)->finalize(object);
+}
+
+static void
+xfpm_button_handle_device_condition_cb(XfpmHal *hal,
+ const gchar *udi,
+ const gchar *condition_name,
+ const gchar *condition_detail,
+ XfpmButton *bt)
+{
+ XFPM_DEBUG("condition name=%s detail=%s\n",condition_name,condition_detail);
+
+}
+
+
+static void
+xfpm_button_load_config(XfpmButton *bt)
+{
+ XFPM_DEBUG("Loading configuration\n");
+
+ GError *g_error = NULL;
+ if ( !xfconf_init(&g_error) )
+ {
+ g_critical("xfconf init failed: %s\n",g_error->message);
+ XFPM_DEBUG("Using default values\n");
+ g_error_free(g_error);
+ bt->lid_action = BUTTON_DO_NOTHING;
+ bt->sleep_action = BUTTON_DO_NOTHING;
+ bt->power_action = BUTTON_DO_NOTHING;
+ return;
+ }
+ XfconfChannel *channel;
+
+ channel = xfconf_channel_new(XFPM_CHANNEL_CFG);
+
+ bt->lid_action = xfconf_channel_get_bool(channel,LID_SWITCH_CFG,BUTTON_DO_NOTHING);
+ bt->sleep_action = xfconf_channel_get_bool(channel,SLEEP_SWITCH_CFG,BUTTON_DO_NOTHING);
+ bt->power_action = xfconf_channel_get_bool(channel,POWER_SWITCH_CFG,BUTTON_DO_NOTHING);
+
+ g_object_unref(channel);
+ xfconf_shutdown();
+}
+
+XfpmButton *
+xfpm_button_new(void)
+{
+ XfpmButton *bt;
+ bt = g_object_new(XFPM_TYPE_BUTTON,NULL);
+ return bt;
+}
Added: xfce4-power-manager/trunk/src/xfpm-button.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-button.h (rev 0)
+++ xfce4-power-manager/trunk/src/xfpm-button.h 2008-10-09 08:04:39 UTC (rev 5540)
@@ -0,0 +1,58 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*-
+ *
+ * * Copyright (C) 2008 Ali <ali.slackware at gmail.com>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __XFPM_BUTTON_H
+#define __XFPM_BUTTON_H
+
+#include <glib-object.h>
+
+#include "xfpm-enums.h"
+
+G_BEGIN_DECLS
+
+#define XFPM_TYPE_BUTTON (xfpm_button_get_type())
+#define XFPM_BUTTON(o) (G_TYPE_CHECK_INSTANCE_CAST(o,XFPM_TYPE_BUTTON,XfpmButton))
+
+typedef struct XfpmButtonPrivate XfpmButtonPrivate;
+
+typedef struct
+{
+ GObject parent;
+ XfpmButtonPrivate *priv;
+
+ XfpmButtonAction lid_action;
+ XfpmButtonAction power_action;
+ XfpmButtonAction sleep_action;
+
+} XfpmButton;
+
+
+typedef struct
+{
+ GObjectClass parent_class;
+} XfpmButtonClass;
+
+GType xfpm_button_get_type(void) G_GNUC_CONST;
+XfpmButton *xfpm_button_new(void);
+
+G_END_DECLS
+
+#endif
Modified: xfce4-power-manager/trunk/src/xfpm-common.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-common.h 2008-10-09 08:03:19 UTC (rev 5539)
+++ xfce4-power-manager/trunk/src/xfpm-common.h 2008-10-09 08:04:39 UTC (rev 5540)
@@ -39,6 +39,11 @@
#define ON_AC_CPU_GOV_CFG "/xfce4-power-manager/on-ac-cpu-gov"
#define ON_BATT_CPU_GOV_CFG "/xfce4-power-manager/on-batt-cpu-gov"
+#define LCD_BRIGHTNESS_CFG "/xfce4-power-manager/lcd-brightness"
+#define LID_SWITCH_CFG "/xfce4-power-manager/lid-switch-action"
+#define SLEEP_SWITCH_CFG "/xfce4-power-manager/sleep-switch-action"
+#define POWER_SWITCH_CFG "/xfce4-power-manager/power-switch-action"
+
#ifdef HAVE_LIBNOTIFY
#define BATT_STATE_NOTIFICATION_CFG "/xfce4-power-manager/battery-state-notification" /* default TRUE */
#define GENERAL_NOTIFICATION_CFG "/xfce4-power-manager/general-notification" /* default TRUE not yet used */
Modified: xfce4-power-manager/trunk/src/xfpm-cpu.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-cpu.c 2008-10-09 08:03:19 UTC (rev 5539)
+++ xfce4-power-manager/trunk/src/xfpm-cpu.c 2008-10-09 08:04:39 UTC (rev 5540)
@@ -49,6 +49,8 @@
#include "xfpm-common.h"
#include "xfpm-enum-types.h"
+#define XFPM_CPU_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE(o,XFPM_TYPE_CPU,XfpmCpuPrivate))
+
static void xfpm_cpu_init(XfpmCpu *cpu);
static void xfpm_cpu_class_init(XfpmCpuClass *klass);
static void xfpm_cpu_finalize(GObject *object);
@@ -65,14 +67,20 @@
static void xfpm_cpu_load_config(XfpmCpu *cpu);
+static void xfpm_cpu_set_governor(XfpmCpu *cpu,
+ gboolean ac_adapter_present);
+
static void xfpm_cpu_notify_cb (GObject *object,
GParamSpec *arg1,
- gpointer data);
-
-static gboolean xfpm_cpu_set_freq(XfpmCpu *cpu);
+ gpointer data);
G_DEFINE_TYPE(XfpmCpu,xfpm_cpu,G_TYPE_OBJECT)
+struct XfpmCpuPrivate
+{
+ XfpmHal *hal;
+};
+
enum
{
PROP_0,
@@ -125,16 +133,21 @@
XFPM_TYPE_CPU_GOVERNOR,
POWERSAVE,
G_PARAM_READWRITE));
-
+ g_type_class_add_private(klass,sizeof(XfpmCpuPrivate));
}
static void
xfpm_cpu_init(XfpmCpu *cpu)
{
+ XfpmCpuPrivate *priv;
+ priv = XFPM_CPU_GET_PRIVATE(cpu);
+
+ priv->hal = xfpm_hal_new();
+
xfpm_cpu_load_config(cpu);
g_signal_connect(G_OBJECT(cpu),"notify",G_CALLBACK(xfpm_cpu_notify_cb),NULL);
- g_timeout_add_seconds(CPU_FREQ_TIMEOUT,(GSourceFunc)xfpm_cpu_set_freq,cpu);
+
}
static void xfpm_cpu_set_property(GObject *object,
@@ -209,8 +222,14 @@
static void
xfpm_cpu_finalize(GObject *object)
{
- //XfpmCpu *cpu = XFPM_CPU(object);
+ XfpmCpu *cpu = XFPM_CPU(object);
+ cpu->priv = XFPM_CPU_GET_PRIVATE(cpu);
+ if ( cpu->priv->hal )
+ {
+ g_object_unref(cpu->priv->hal);
+ }
+
G_OBJECT_CLASS(xfpm_cpu_parent_class)->finalize(object);
}
@@ -242,60 +261,84 @@
xfconf_shutdown();
}
-static void
-xfpm_cpu_notify_cb (GObject *object,
- GParamSpec *arg1,
- gpointer data)
-{
-
-
-
-}
-static gboolean
-xfpm_cpu_set_freq(XfpmCpu *cpu)
+static
+gchar *_get_governor_from_enum(XfpmCpuGovernor governor)
{
- /*
- XfpmDriverPrivate *priv;
- priv = XFPM_DRIVER_GET_PRIVATE(driver);
-
- if ( !driver->cpu_freq_scaling_enabled )
+ if ( governor == POWERSAVE )
{
- XFPM_DEBUG("cpu_freq_scaling_enabled disabled\n");
+ return "powersave";
}
+ else if ( governor == ONDEMAND )
+ {
+ return "ondemand";
+ }
+ else if ( governor == PERFORMANCE )
+ {
+ return "performance";
+ }
+ else if ( governor == USERSPACE )
+ {
+ return "userspace";
+ }
+ else if ( governor == CONSERVATIVE )
+ {
+ return "conservative";
+ }
+ return NULL;
+}
+
+static void
+xfpm_cpu_set_governor(XfpmCpu *cpu,gboolean ac_adapter_present)
+{
+ XfpmCpuPrivate *priv;
+ priv = XFPM_CPU_GET_PRIVATE(cpu);
+
+ gchar *current_governor;
+ current_governor = xfpm_hal_get_current_cpu_governor(priv->hal);
- char *current_governor;
- char *config_gov = NULL;
+ if ( !current_governor ) return;
- current_governor = xfpm_hal_get_current_cpu_governor(XFPM_HAL(driver));
- if ( !current_governor ) return;
+ gchar *config_gov =
+ _get_governor_from_enum(ac_adapter_present ? cpu->on_ac_cpu_gov : cpu->on_batt_cpu_gov);
- if ( (priv->ac_adapter_present ? driver->on_ac_cpu_gov : driver->on_batt_cpu_gov) == ONDEMAND )
- config_gov = "ondemand";
- else if ( (priv->ac_adapter_present ? driver->on_ac_cpu_gov : driver->on_batt_cpu_gov ) == POWERSAVE )
- config_gov = "powersave";
- else if ( (priv->ac_adapter_present ? driver->on_ac_cpu_gov : driver->on_batt_cpu_gov) == PERFORMANCE )
- config_gov = "performance";
- else if ( (priv->ac_adapter_present ? driver->on_ac_cpu_gov : driver->on_batt_cpu_gov) == CONSERVATIVE )
- config_gov = "conservative";
- else if ( (priv->ac_adapter_present ? driver->on_ac_cpu_gov : driver->on_batt_cpu_gov) == USERSPACE )
- config_gov = "userspace";
+ if ( !config_gov )
+ {
+ XFPM_DEBUG("Unknown cpu governor\n");
+ return;
+ }
+
+ XFPM_DEBUG("Configuration governor %s\n",config_gov);
- g_return_if_fail(config_gov != NULL);
-
if ( strcmp(current_governor,config_gov) )
{
XFPM_DEBUG("CPU actuel governor %s, setting=%s\n",current_governor,config_gov);
- xfpm_hal_set_cpu_governor(XFPM_HAL(driver),config_gov);
+ xfpm_hal_set_cpu_governor(priv->hal,config_gov);
}
else
{
XFPM_DEBUG("No Need to change CPU Governor\n");
}
- */
- return TRUE;
+}
+
+static void
+xfpm_cpu_notify_cb (GObject *object,
+ GParamSpec *arg1,
+ gpointer data)
+{
+ XfpmCpu *cpu = XFPM_CPU(object);
+ if ( !cpu->cpu_freq_enabled )
+ {
+ XFPM_DEBUG("Cpu freq control is disabled\n");
+ }
+ if ( !strcmp(arg1->name,"on-ac-adapter") ||
+ !strcmp(arg1->name,"on-ac-cpu-gov") ||
+ !strcmp(arg1->name,"on-batt-cpu-gov") )
+ {
+ xfpm_cpu_set_governor(cpu,cpu->ac_adapter_present);
+ }
}
XfpmCpu *
Modified: xfce4-power-manager/trunk/src/xfpm-cpu.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-cpu.h 2008-10-09 08:03:19 UTC (rev 5539)
+++ xfce4-power-manager/trunk/src/xfpm-cpu.h 2008-10-09 08:04:39 UTC (rev 5540)
@@ -22,8 +22,6 @@
#ifndef __XFPM_CPU_H
#define __XFPM_CPU_H
-#define CPU_FREQ_TIMEOUT 60
-
#include <glib-object.h>
#include "xfpm-enums.h"
@@ -33,9 +31,12 @@
#define XFPM_TYPE_CPU (xfpm_cpu_get_type())
#define XFPM_CPU(o) (G_TYPE_CHECK_INSTANCE_CAST(o,XFPM_TYPE_CPU,XfpmCpu))
+typedef struct XfpmCpuPrivate XfpmCpuPrivate;
+
typedef struct
{
GObject parent;
+ XfpmCpuPrivate *priv;
gboolean ac_adapter_present;
gboolean cpu_freq_enabled;
@@ -48,8 +49,7 @@
typedef struct
{
GObjectClass parent_class;
-
-
+
} XfpmCpuClass;
GType xfpm_cpu_get_type(void) G_GNUC_CONST;
Modified: xfce4-power-manager/trunk/src/xfpm-dpms.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-dpms.c 2008-10-09 08:03:19 UTC (rev 5539)
+++ xfce4-power-manager/trunk/src/xfpm-dpms.c 2008-10-09 08:04:39 UTC (rev 5540)
@@ -78,6 +78,8 @@
static void xfpm_dpms_load_config (XfpmDpms *dpms);
static gboolean xfpm_dpms_set_dpms_mode(XfpmDpms *dpms);
+static void xfpm_dpms_set_timeouts(XfpmDpms *dpms);
+
static void xfpm_dpms_notify_cb (GObject *object,
GParamSpec *arg1,
gpointer data);
@@ -304,37 +306,11 @@
}
return TRUE;
-
}
static void
-xfpm_dpms_notify_cb(GObject *object,GParamSpec *arg1,gpointer data)
+xfpm_dpms_set_timeouts(XfpmDpms *dpms)
{
- XfpmDpms *dpms;
- XfpmDpmsPrivate *priv;
-
- if ( strcmp(arg1->name,"dpms") )
- {
- return;
- }
-
- dpms = XFPM_DPMS(object);
- priv = XFPM_DPMS_GET_PRIVATE(dpms);
- XFPM_DEBUG("dpms callback\n");
-
- if ( !priv->dpms_capable )
- {
- XFPM_DEBUG("dpms incapable\n");
- return;
- }
-
- xfpm_dpms_set_dpms_mode(dpms);
- if ( !dpms->dpms_enabled )
- {
- XFPM_DEBUG("dpms disabled\n");
- return;
- }
-
CARD16 x_standby = 0 ,x_suspend = 0,x_off = 0;
DPMSGetTimeouts(GDK_DISPLAY(),&x_standby,&x_suspend,&x_off);
@@ -363,6 +339,33 @@
}
}
+static void
+xfpm_dpms_notify_cb(GObject *object,GParamSpec *arg1,gpointer data)
+{
+ XfpmDpms *dpms;
+ XfpmDpmsPrivate *priv;
+
+ dpms = XFPM_DPMS(object);
+ priv = XFPM_DPMS_GET_PRIVATE(dpms);
+ XFPM_DEBUG("dpms callback\n");
+
+ if ( !priv->dpms_capable )
+ {
+ XFPM_DEBUG("dpms incapable\n");
+ return;
+ }
+
+ if ( !strcmp(arg1->name,"dpms") )
+ {
+ xfpm_dpms_set_dpms_mode(dpms);
+ }
+
+ if ( dpms->dpms_enabled )
+ {
+ xfpm_dpms_set_timeouts(dpms);
+ }
+}
+
XfpmDpms *
xfpm_dpms_new(void)
{
@@ -371,4 +374,12 @@
return dpms;
}
+gboolean
+xfpm_dpms_capable (XfpmDpms *dpms)
+{
+ XfpmDpmsPrivate *priv;
+ priv = XFPM_DPMS_GET_PRIVATE(dpms);
+ return priv->dpms_capable;
+}
+
#endif
Modified: xfce4-power-manager/trunk/src/xfpm-dpms.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-dpms.h 2008-10-09 08:03:19 UTC (rev 5539)
+++ xfce4-power-manager/trunk/src/xfpm-dpms.h 2008-10-09 08:04:39 UTC (rev 5540)
@@ -63,6 +63,7 @@
GType xfpm_dpms_get_type ();
XfpmDpms *xfpm_dpms_new (void);
+gboolean xfpm_dpms_capable (XfpmDpms *dpms);
G_END_DECLS
Modified: xfce4-power-manager/trunk/src/xfpm-driver.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-driver.c 2008-10-09 08:03:19 UTC (rev 5539)
+++ xfce4-power-manager/trunk/src/xfpm-driver.c 2008-10-09 08:04:39 UTC (rev 5540)
@@ -23,6 +23,24 @@
#include <config.h>
#endif
+#include <stdio.h>
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
#include <gtk/gtk.h>
#include <glib.h>
#include <glib/gi18n.h>
@@ -40,6 +58,8 @@
#include "xfpm-battery.h"
#include "xfpm-cpu.h"
#include "xfpm-ac-adapter.h"
+#include "xfpm-button.h"
+#include "xfpm-lcd-brightness.h"
#include "xfpm-notify.h"
#include "xfpm-enum-types.h"
#include "xfpm-common.h"
@@ -78,6 +98,15 @@
#define XFPM_DRIVER_GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE((o),XFPM_TYPE_DRIVER,XfpmDriverPrivate))
+typedef enum
+{
+ SYSTEM_LAPTOP,
+ SYSTEM_DESKTOP,
+ SYSTEM_SERVER,
+ SYSTEM_UNKNOWN
+
+} SystemFormFactor;
+
struct XfpmDriverPrivate
{
DBusConnection *conn;
@@ -85,9 +114,16 @@
gboolean dialog_opened;
+ SystemFormFactor formfactor;
+ gboolean can_suspend;
+ gboolean can_hibernate;
+
XfpmHal *hal;
XfpmCpu *cpu;
XfpmBattery *batt;
+ XfpmButton *bt;
+ XfpmLcdBrightness *lcd;
+
#ifdef HAVE_DPMS
XfpmDpms *dpms;
#endif
@@ -117,6 +153,8 @@
priv->cpu = NULL;
priv->adapter = NULL;
priv->batt = NULL;
+ priv->bt = NULL;
+ priv->lcd = NULL;
priv->hal = NULL;
#ifdef HAVE_DPMS
priv->dpms = NULL;
@@ -152,6 +190,14 @@
{
g_object_unref(drv->priv->cpu);
}
+ if ( drv->priv->bt )
+ {
+ g_object_unref(drv->priv->bt);
+ }
+ if ( drv->priv->lcd )
+ {
+ g_object_unref(drv->priv->lcd);
+ }
if ( drv->priv->conn )
{
dbus_connection_unref(drv->priv->conn);
@@ -176,10 +222,8 @@
#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);
- g_object_notify(G_OBJECT(priv->dpms),"dpms");
#endif
g_object_set(G_OBJECT(priv->cpu),"on-ac-adapter",priv->ac_adapter_present,NULL);
- g_object_notify(G_OBJECT(priv->cpu),"cpu-freq");
g_object_set(G_OBJECT(priv->batt),"on-ac-adapter",priv->ac_adapter_present,NULL);
}
@@ -250,27 +294,26 @@
return;
}
- /*
if ( !strcmp(property,CPU_FREQ_SCALING_CFG) )
{
gboolean val = g_value_get_boolean(value);
- g_object_set(G_OBJECT(priv->drv),"cpu-freq-scaling-enabled",val,NULL);
+ g_object_set(G_OBJECT(priv->cpu),"cpu-freq-scaling-enabled",val,NULL);
return;
}
if ( !strcmp(property,ON_AC_CPU_GOV_CFG) )
{
guint val = g_value_get_uint(value);
- g_object_set(G_OBJECT(priv->drv),"on-ac-cpu-gov",val,NULL);
+ 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->drv),"on-batt-cpu-gov",val,NULL);
+ g_object_set(G_OBJECT(priv->cpu),"on-batt-cpu-gov",val,NULL);
return;
}
-*/
+
#ifdef HAVE_LIBNOTIFY
if ( !strcmp(property,BATT_STATE_NOTIFICATION_CFG) )
{
@@ -339,6 +382,28 @@
return;
}
#endif
+
+ 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;
+ }
+
}
static gboolean
@@ -379,9 +444,20 @@
}
libhal_free_string_array(govs);
}
+ gboolean with_dpms;
+#ifdef HAVE_DPMS
+ with_dpms = xfpm_dpms_capable(priv->dpms);
+#else
+ with_dpms = FALSE;
+#endif
+
+ dialog = xfpm_settings_new(channel,
+ priv->formfactor == SYSTEM_LAPTOP ? TRUE : FALSE,
+ priv->can_hibernate,
+ priv->can_suspend,
+ with_dpms,
+ gov);
- dialog = xfpm_settings_new(channel,TRUE,TRUE,gov);
-
xfce_gtk_window_center_on_monitor_with_pointer(GTK_WINDOW(dialog));
gtk_window_set_modal(GTK_WINDOW(dialog), FALSE);
@@ -459,6 +535,36 @@
}
+static void
+_get_system_form_factor(XfpmDriverPrivate *priv)
+{
+ priv->formfactor = SYSTEM_UNKNOWN;
+
+ gchar *factor = xfpm_hal_get_string_info(priv->hal,
+ HAL_ROOT_COMPUTER,
+ "system.formfactor",
+ NULL);
+ if (!factor ) return;
+
+ if ( !strcmp(factor,"laptop") )
+ {
+ priv->formfactor = SYSTEM_LAPTOP;
+ }
+ else if ( !strcmp(factor,"desktop") )
+ {
+ priv->formfactor = SYSTEM_DESKTOP;
+ }
+ else if ( !strcmp(factor,"server") )
+ {
+ priv->formfactor = SYSTEM_SERVER;
+ }
+ else if ( !strcmp(factor,"unknown") )
+ {
+ priv->formfactor = SYSTEM_UNKNOWN;
+ }
+
+}
+
gboolean
xfpm_driver_monitor (XfpmDriver *drv)
{
@@ -485,18 +591,42 @@
dbus_connection_add_filter(priv->conn,xfpm_driver_signal_filter,drv,NULL);
priv->hal = xfpm_hal_new();
+ _get_system_form_factor(priv);
+
+ GError *g_error = NULL;
+ priv->can_suspend = xfpm_hal_get_bool_info(priv->hal,
+ HAL_ROOT_COMPUTER,
+ "power_management.can_suspend",
+ &g_error);
+
+ if ( g_error )
+ {
+ XFPM_DEBUG("%s: \n",g_error->message);
+ g_error_free(g_error);
+ }
+
+ priv->can_hibernate = xfpm_hal_get_bool_info(priv->hal,
+ HAL_ROOT_COMPUTER,
+ "power_management.can_hibernate",
+ &g_error);
+
+ if ( g_error )
+ {
+ XFPM_DEBUG("%s: \n",g_error->message);
+ g_error_free(g_error);
+ }
+
#ifdef HAVE_DPMS
- XFPM_DEBUG("DPMS Monitoring\n");
priv->dpms = xfpm_dpms_new();
#endif
- XFPM_DEBUG("Cpu freq monitoring\n");
priv->cpu = xfpm_cpu_new();
-
- XFPM_DEBUG("Battery monitoring\n");
+
+ priv->bt = xfpm_button_new();
+ priv->lcd = xfpm_lcd_brightness_new();
+
priv->batt = xfpm_battery_new();
g_signal_connect(priv->batt,"xfpm-show-adapter-icon",G_CALLBACK(_show_adapter_icon),drv);
-
- XFPM_DEBUG("AC adapter monitoring\n");
+
priv->adapter = xfpm_ac_adapter_new(FALSE);
g_signal_connect(priv->adapter,"xfpm-ac-adapter-changed",
G_CALLBACK(xfpm_driver_ac_adapter_state_changed_cb),drv);
Modified: xfce4-power-manager/trunk/src/xfpm-enums.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-enums.h 2008-10-09 08:03:19 UTC (rev 5539)
+++ xfce4-power-manager/trunk/src/xfpm-enums.h 2008-10-09 08:04:39 UTC (rev 5540)
@@ -56,13 +56,13 @@
} XfpmCpuGovernor;
-/* Lid switch control */
+/* button switch control */
typedef enum
{
- LID_SWITCH_DO_NOTHING,
- LID_SWITCH_DO_SUSPEND,
- LID_SWITCH_DO_HIBERNATE
+ BUTTON_DO_NOTHING,
+ BUTTON_DO_SUSPEND,
+ BUTTON_DO_HIBERNATE
-} XfpmLidSwitchAction;
+} XfpmButtonAction;
#endif
Modified: xfce4-power-manager/trunk/src/xfpm-lcd-brightness.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-lcd-brightness.c 2008-10-09 08:03:19 UTC (rev 5539)
+++ xfce4-power-manager/trunk/src/xfpm-lcd-brightness.c 2008-10-09 08:04:39 UTC (rev 5540)
@@ -45,6 +45,8 @@
#include "xfpm-lcd-brightness.h"
#include "xfpm-hal.h"
+#include "xfpm-debug.h"
+#include "xfpm-common.h"
#define XFPM_LCD_BRIGHTNESS_GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE(o,XFPM_TYPE_LCD_BRIGHTNESS,XfpmLcdBrightnessPrivate))
@@ -98,7 +100,24 @@
static void xfpm_lcd_brightness_load_config(XfpmLcdBrightness *lcd)
{
+ XFPM_DEBUG("Loading configuration\n");
+ GError *g_error = NULL;
+ if ( !xfconf_init(&g_error) )
+ {
+ g_critical("xfconf init failed: %s\n",g_error->message);
+ XFPM_DEBUG("Using default values\n");
+ g_error_free(g_error);
+ lcd->brightness_control_enabled = FALSE;
+ return;
+ }
+ XfconfChannel *channel;
+ channel = xfconf_channel_new(XFPM_CHANNEL_CFG);
+
+ lcd->brightness_control_enabled = xfconf_channel_get_bool(channel,LCD_BRIGHTNESS_CFG,FALSE);
+
+ g_object_unref(channel);
+ xfconf_shutdown();
}
XfpmLcdBrightness *
Modified: xfce4-power-manager/trunk/src/xfpm-lcd-brightness.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-lcd-brightness.h 2008-10-09 08:03:19 UTC (rev 5539)
+++ xfce4-power-manager/trunk/src/xfpm-lcd-brightness.h 2008-10-09 08:04:39 UTC (rev 5540)
@@ -36,6 +36,8 @@
GObject parent;
XfpmLcdBrightnessPrivate *priv;
+ gboolean brightness_control_enabled;
+
} XfpmLcdBrightness;
typedef struct
Modified: xfce4-power-manager/trunk/src/xfpm-main.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-main.c 2008-10-09 08:03:19 UTC (rev 5539)
+++ xfce4-power-manager/trunk/src/xfpm-main.c 2008-10-09 08:04:39 UTC (rev 5540)
@@ -125,7 +125,7 @@
int reply;
if (!xfpm_dbus_send_message_with_reply("Running",&reply))
{
- return -1;
+ return 1;
}
if ( reply != 1 )
{
@@ -141,7 +141,7 @@
int reply;
if (!xfpm_dbus_send_message_with_reply("Quit",&reply))
{
- return -1;
+ return 1;
}
if ( reply == 0 )
@@ -158,7 +158,7 @@
int reply;
if (!xfpm_dbus_send_message_with_reply("Running",&reply))
{
- return -1;
+ return 1;
}
if ( reply == 1 )
@@ -172,7 +172,7 @@
/* g_disaster */
g_error("Unable to load xfce4 power manager driver\n");
g_object_unref(driver);
- return -1;
+ return 1;
}
}
Modified: xfce4-power-manager/trunk/src/xfpm-settings.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-settings.c 2008-10-09 08:03:19 UTC (rev 5539)
+++ xfce4-power-manager/trunk/src/xfpm-settings.c 2008-10-09 08:04:39 UTC (rev 5540)
@@ -68,6 +68,7 @@
static GtkWidget *userspace_on_batt;
#ifdef HAVE_DPMS
+static GtkWidget *dpms_op;
static GtkWidget *on_batt_dpms;
static GtkWidget *on_ac_dpms;
#endif
@@ -106,6 +107,39 @@
}
}
+static void
+set_power_button_action_cb(GtkWidget *widget,XfconfChannel *channel)
+{
+ guint value = gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
+
+ if(!xfconf_channel_set_uint(channel,POWER_SWITCH_CFG,value))
+ {
+ g_critical("Cannot set value %s\n",POWER_SWITCH_CFG);
+ }
+}
+
+static void
+set_sleep_button_action_cb(GtkWidget *widget,XfconfChannel *channel)
+{
+ guint value = gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
+
+ if(!xfconf_channel_set_uint(channel,SLEEP_SWITCH_CFG,value))
+ {
+ g_critical("Cannot set value %s\n",SLEEP_SWITCH_CFG);
+ }
+}
+
+static void
+set_lid_button_action_cb(GtkWidget *widget,XfconfChannel *channel)
+{
+ guint value = gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
+
+ if(!xfconf_channel_set_uint(channel,LID_SWITCH_CFG,value))
+ {
+ g_critical("Cannot set value %s\n",LID_SWITCH_CFG);
+ }
+}
+
#ifdef HAVE_LIBNOTIFY
static void
set_battery_state_notification_cb(GtkWidget *widget,XfconfChannel *channel)
@@ -483,7 +517,6 @@
}
}
-
return frame;
}
@@ -681,7 +714,7 @@
}
static GtkWidget *
-xfpm_settings_dpms(XfconfChannel *channel,gboolean laptop)
+xfpm_settings_dpms(XfconfChannel *channel,gboolean laptop,gboolean dpms_capable)
{
GtkWidget *hbox;
hbox = gtk_hbox_new(FALSE,2);
@@ -698,11 +731,105 @@
gtk_box_pack_start(GTK_BOX(hbox),frame,FALSE,FALSE,0);
}
+ if (! dpms_capable )
+ {
+ GtkWidget *label;
+ label = gtk_label_new(_("Your monitor doesn't support DPMS settings"));
+ gtk_widget_show(label);
+ GtkWidget *vbox;
+ vbox = gtk_vbox_new(FALSE,2);
+ gtk_widget_show(vbox);
+ gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0);
+ gtk_box_pack_start(GTK_BOX(vbox),label,FALSE,FALSE,0);
+ gtk_widget_set_sensitive(dpms_op,FALSE);
+ xfpm_dpms_spins_set_active(XFPM_DPMS_SPINS(on_ac_dpms),FALSE);
+
+ if ( GTK_IS_WIDGET(on_batt_dpms) )
+ {
+ xfpm_dpms_spins_set_active(XFPM_DPMS_SPINS(on_batt_dpms),FALSE);
+ }
+ return vbox;
+ }
return hbox;
}
#endif
static GtkWidget *
+xfpm_settings_keys(XfconfChannel *channel,gboolean can_hibernate,
+ gboolean can_suspend,gboolean laptop)
+{
+ GtkWidget *table;
+ GtkWidget *label;
+ GtkWidget *frame,*align;
+
+ frame = xfce_create_framebox(_("Keyboard shortcuts"), &align);
+ gtk_widget_show(frame);
+ table = gtk_table_new(3,2,TRUE);
+ gtk_widget_show(table);
+ gtk_container_add(GTK_CONTAINER(align),table);
+
+ 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);
+
+ 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_hibernate )
+ gtk_combo_box_append_text(GTK_COMBO_BOX(power_button),_("Hibernate"));
+ if ( can_suspend )
+ gtk_combo_box_append_text(GTK_COMBO_BOX(power_button),_("Suspend"));
+ 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);
+
+ 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_hibernate )
+ gtk_combo_box_append_text(GTK_COMBO_BOX(sleep_button),_("Hibernate"));
+ if ( can_suspend )
+ gtk_combo_box_append_text(GTK_COMBO_BOX(sleep_button),_("Suspend"));
+ 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 )
+ {
+ label = gtk_label_new(_("When lid button is pressed do"));
+ gtk_widget_show(label);
+ gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,2,3);
+ GtkWidget *lid_button;
+ default_config = xfconf_channel_get_uint(channel,LID_SWITCH_CFG,0);
+ lid_button = gtk_combo_box_new_text();
+ gtk_combo_box_append_text(GTK_COMBO_BOX(lid_button),_("Nothing"));
+ if ( can_hibernate )
+ gtk_combo_box_append_text(GTK_COMBO_BOX(lid_button),_("Hibernate"));
+ if ( can_suspend )
+ gtk_combo_box_append_text(GTK_COMBO_BOX(lid_button),_("Suspend"));
+ gtk_combo_box_set_active(GTK_COMBO_BOX(lid_button),default_config);
+ gtk_widget_show(lid_button);
+ gtk_table_attach(GTK_TABLE(table),lid_button,1,2,2,3,GTK_SHRINK,GTK_SHRINK,0,0);
+ g_signal_connect(lid_button,"changed",G_CALLBACK(set_lid_button_action_cb),channel);
+ }
+
+ return frame;
+
+}
+
+static GtkWidget *
xfpm_settings_general(XfconfChannel *channel,gboolean battery_settings)
{
GtkWidget *table;
@@ -756,7 +883,6 @@
gtk_table_attach(GTK_TABLE(table),cpu_gov,1,2,1,2,GTK_SHRINK,GTK_SHRINK,0,0);
#ifdef HAVE_DPMS
- GtkWidget *dpms_op;
gboolean dpms_enabled;
label = gtk_label_new(_("Enable DPMS control"));
gtk_widget_show(label);
@@ -790,25 +916,19 @@
&int_data,
-1);
- switch ( int_data )
+ if ( int_data >= 0 && int_data <= 3 )
{
- case 0:
- gtk_notebook_set_current_page(GTK_NOTEBOOK(nt),0);
- break;
- case 1:
- gtk_notebook_set_current_page(GTK_NOTEBOOK(nt),1);
- break;
- case 2:
- gtk_notebook_set_current_page(GTK_NOTEBOOK(nt),2);
- break;
- default:
- break;
- }
-
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(nt),int_data);
+ }
+ else
+ {
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(nt),0);
+ }
+
}
static GtkWidget *
-xfpm_settings_tree_view()
+xfpm_settings_tree_view(gboolean is_laptop)
{
GdkPixbuf *pix;
GtkWidget *view;
@@ -830,20 +950,28 @@
gtk_tree_view_append_column(GTK_TREE_VIEW(view),col);
- pix = xfpm_load_icon("gnome-cpu-frequency-applet",42);
+ pix = xfpm_load_icon("gnome-cpu-frequency-applet",38);
gtk_list_store_append(list_store,&iter);
gtk_list_store_set(list_store,&iter,0,pix,1,0,-1);
g_object_unref(pix);
- pix = xfpm_load_icon("gpm-primary-100",42);
+ if ( is_laptop )
+ {
+ pix = xfpm_load_icon("gpm-primary-100",38);
+ gtk_list_store_append(list_store,&iter);
+ gtk_list_store_set(list_store,&iter,0,pix,1,1,-1);
+ g_object_unref(pix);
+ }
+
+ pix = xfpm_load_icon("keyboard",38);
gtk_list_store_append(list_store,&iter);
- gtk_list_store_set(list_store,&iter,0,pix,1,1,-1);
+ gtk_list_store_set(list_store,&iter,0,pix,1,2,-1);
g_object_unref(pix);
#ifdef HAVE_DPMS
- pix = xfpm_load_icon("display",42);
+ pix = xfpm_load_icon("display",38);
gtk_list_store_append(list_store,&iter);
- gtk_list_store_set(list_store,&iter,0,pix,1,2,-1);
+ gtk_list_store_set(list_store,&iter,0,pix,1,3,-1);
g_object_unref(pix);
#endif
@@ -853,8 +981,9 @@
}
GtkWidget *
-xfpm_settings_new(XfconfChannel *channel,gboolean laptop,
- gboolean can_hibernate,guint8 *govs)
+xfpm_settings_new(XfconfChannel *channel,gboolean is_laptop,
+ gboolean can_hibernate,gboolean can_suspend,
+ gboolean dpms_capable,guint8 *govs)
{
GtkWidget *Dialog; /* Main dialog window */
GtkWidget *mainbox; /* Box to get (Dialog)->vbox */
@@ -877,7 +1006,7 @@
mainbox = GTK_DIALOG(Dialog)->vbox;
/// General Options Frame
- box = xfpm_settings_general(channel,laptop);
+ box = xfpm_settings_general(channel,is_laptop);
gtk_box_pack_start (GTK_BOX (mainbox), box, FALSE, FALSE, 0);
/// Notebook container
@@ -887,24 +1016,26 @@
table = gtk_table_new(1,2,FALSE);
gtk_widget_show(table);
gtk_box_pack_start (GTK_BOX (mainbox), table, FALSE, FALSE, 0);
- view = xfpm_settings_tree_view();
+ view = xfpm_settings_tree_view(is_laptop);
gtk_table_attach_defaults(GTK_TABLE(table),view,0,1,0,1);
gtk_widget_show(view);
gtk_table_attach_defaults(GTK_TABLE(table),nt,1,2,0,1);
/// Cpu freq settings
- box = xfpm_settings_cpu_freq(channel,govs,laptop);
+ box = xfpm_settings_cpu_freq(channel,govs,is_laptop);
gtk_notebook_append_page(GTK_NOTEBOOK(nt),box,NULL);
/// Battery settings
- if ( laptop )
- {
- box = xfpm_settings_battery(channel,can_hibernate);
- gtk_notebook_append_page(GTK_NOTEBOOK(nt),box,NULL);
- }
+ box = xfpm_settings_battery(channel,can_hibernate);
+ gtk_notebook_append_page(GTK_NOTEBOOK(nt),box,NULL);
+
+ /// Keyboard buttons settings
+ box = xfpm_settings_keys(channel,can_hibernate,can_suspend,is_laptop);
+ gtk_notebook_append_page(GTK_NOTEBOOK(nt),box,NULL);
+
/// Dpms settings
#ifdef HAVE_DPMS
- box = xfpm_settings_dpms(channel,laptop);
+ box = xfpm_settings_dpms(channel,is_laptop,dpms_capable);
gtk_notebook_append_page(GTK_NOTEBOOK(nt),box,NULL);
#endif
Modified: xfce4-power-manager/trunk/src/xfpm-settings.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-settings.h 2008-10-09 08:03:19 UTC (rev 5539)
+++ xfce4-power-manager/trunk/src/xfpm-settings.h 2008-10-09 08:04:39 UTC (rev 5540)
@@ -22,8 +22,9 @@
#ifndef __XFPM_SETTINGS_H
#define __XFPM_SETTINGS_H
-GtkWidget *xfpm_settings_new(XfconfChannel *channel,gboolean battery_settings,
- gboolean can_hibernate,guint8 *govs);
+GtkWidget *xfpm_settings_new(XfconfChannel *channel,gboolean is_laptop,
+ gboolean can_hibernate,gboolean can_suspend,
+ gboolean dpms_capable,guint8 *govs);
#endif /* __XFPM_SETTINGS_H */
More information about the Goodies-commits
mailing list