diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 10 | ||||
-rw-r--r-- | src/gpm-backlight.c | 101 | ||||
-rw-r--r-- | src/gpm-common.c | 108 | ||||
-rw-r--r-- | src/gpm-common.h | 177 | ||||
-rw-r--r-- | src/gpm-control.c | 53 | ||||
-rw-r--r-- | src/gpm-dpms.c | 47 | ||||
-rw-r--r-- | src/gpm-dpms.h | 2 | ||||
-rw-r--r-- | src/gpm-engine.c | 93 | ||||
-rw-r--r-- | src/gpm-idle.c | 1 | ||||
-rw-r--r-- | src/gpm-kbd-backlight.c | 734 | ||||
-rw-r--r-- | src/gpm-kbd-backlight.h | 79 | ||||
-rw-r--r-- | src/gpm-manager.c | 219 | ||||
-rw-r--r-- | src/gpm-manager.h | 3 | ||||
-rw-r--r-- | src/gpm-phone.c | 1 | ||||
-rw-r--r-- | src/gpm-prefs-core.c | 386 | ||||
-rw-r--r-- | src/gpm-prefs-server.c | 138 | ||||
-rw-r--r-- | src/gpm-prefs-server.h | 67 | ||||
-rw-r--r-- | src/gpm-screensaver.c | 123 | ||||
-rw-r--r-- | src/gpm-screensaver.h | 5 | ||||
-rw-r--r-- | src/gpm-statistics.c | 55 | ||||
-rw-r--r-- | src/gpm-tray-icon.c | 30 | ||||
-rw-r--r-- | src/org.mate.PowerManager.xml | 3 |
22 files changed, 1250 insertions, 1185 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 9aa8cdc..6393bbd 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -77,6 +77,8 @@ libgpmshared_a_SOURCES = \ egg-console-kit.c \ gpm-common.h \ gpm-common.c \ + gpm-brightness.h \ + gpm-brightness.c \ gpm-marshal.h \ gpm-marshal.c \ gpm-upower.c \ @@ -146,8 +148,6 @@ mate_power_manager_SOURCES = \ gpm-phone.c \ gpm-backlight.h \ gpm-backlight.c \ - gpm-prefs-server.h \ - gpm-prefs-server.c \ gpm-idle.h \ gpm-idle.c \ gpm-load.h \ @@ -158,8 +158,8 @@ mate_power_manager_SOURCES = \ gpm-control.c \ gpm-button.h \ gpm-button.c \ - gpm-brightness.h \ - gpm-brightness.c \ + gpm-kbd-backlight.h \ + gpm-kbd-backlight.c \ gpm-main.c \ gpm-manager.h \ gpm-manager.c \ @@ -218,8 +218,6 @@ mate_power_self_test_SOURCES = \ egg-array-float.c \ egg-console-kit.h \ egg-console-kit.c \ - gpm-prefs-server.h \ - gpm-prefs-server.c \ gpm-control.h \ gpm-control.c \ gpm-networkmanager.h \ diff --git a/src/gpm-backlight.c b/src/gpm-backlight.c index c0479fd..573778a 100644 --- a/src/gpm-backlight.c +++ b/src/gpm-backlight.c @@ -39,7 +39,6 @@ #include <glib/gi18n.h> #include <dbus/dbus-glib.h> -#include <mateconf/mateconf-client.h> #include <libupower-glib/upower.h> #include "gpm-button.h" @@ -53,7 +52,6 @@ #include "gpm-idle.h" #include "gpm-marshal.h" #include "gpm-stock-icons.h" -#include "gpm-prefs-server.h" #include "egg-console-kit.h" #define GPM_BACKLIGHT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GPM_TYPE_BACKLIGHT, GpmBacklightPrivate)) @@ -63,7 +61,7 @@ struct GpmBacklightPrivate UpClient *client; GpmBrightness *brightness; GpmButton *button; - MateConfClient *conf; + GSettings *settings; GtkWidget *popup; GpmControl *control; GpmDpms *dpms; @@ -289,7 +287,7 @@ gpm_backlight_brightness_evaluate_and_set (GpmBacklight *backlight, gboolean int return FALSE; } - do_laptop_lcd = mateconf_client_get_bool (backlight->priv->conf, GPM_CONF_BACKLIGHT_ENABLE, NULL); + do_laptop_lcd = g_settings_get_boolean (backlight->priv->settings, GPM_SETTINGS_BACKLIGHT_ENABLE); if (do_laptop_lcd == FALSE) { egg_warning ("policy is no dimming"); return FALSE; @@ -305,9 +303,9 @@ gpm_backlight_brightness_evaluate_and_set (GpmBacklight *backlight, gboolean int NULL); /* reduce if on battery power if we should */ - battery_reduce = mateconf_client_get_bool (backlight->priv->conf, GPM_CONF_BACKLIGHT_BATTERY_REDUCE, NULL); + battery_reduce = g_settings_get_boolean (backlight->priv->settings, GPM_SETTINGS_BACKLIGHT_BATTERY_REDUCE); if (on_battery && battery_reduce) { - value = mateconf_client_get_int (backlight->priv->conf, GPM_CONF_BACKLIGHT_BRIGHTNESS_DIM_BATT, NULL); + value = g_settings_get_int (backlight->priv->settings, GPM_SETTINGS_BRIGHTNESS_DIM_BATT); if (value > 100) { egg_warning ("cannot use battery brightness value %i, correcting to 50", value); value = 50; @@ -321,11 +319,11 @@ gpm_backlight_brightness_evaluate_and_set (GpmBacklight *backlight, gboolean int /* reduce if system is momentarily idle */ if (!on_battery) - enable_action = mateconf_client_get_bool (backlight->priv->conf, GPM_CONF_BACKLIGHT_IDLE_DIM_AC, NULL); + enable_action = g_settings_get_boolean (backlight->priv->settings, GPM_SETTINGS_IDLE_DIM_AC); else - enable_action = mateconf_client_get_bool (backlight->priv->conf, GPM_CONF_BACKLIGHT_IDLE_DIM_BATT, NULL); + enable_action = g_settings_get_boolean (backlight->priv->settings, GPM_SETTINGS_IDLE_DIM_BATT); if (enable_action && backlight->priv->system_is_idle) { - value = mateconf_client_get_int (backlight->priv->conf, GPM_CONF_BACKLIGHT_IDLE_BRIGHTNESS, NULL); + value = g_settings_get_int (backlight->priv->settings, GPM_SETTINGS_IDLE_BRIGHTNESS); if (value > 100) { egg_warning ("cannot use idle brightness value %i, correcting to 50", value); value = 50; @@ -365,44 +363,39 @@ gpm_backlight_brightness_evaluate_and_set (GpmBacklight *backlight, gboolean int } /** - * gpm_conf_mateconf_key_changed_cb: + * gpm_settings_key_changed_cb: * - * We might have to do things when the mateconf keys change; do them here. + * We might have to do things when the keys change; do them here. **/ static void -gpm_conf_mateconf_key_changed_cb (MateConfClient *client, guint cnxn_id, MateConfEntry *entry, GpmBacklight *backlight) +gpm_settings_key_changed_cb (GSettings *settings, const gchar *key, GpmBacklight *backlight) { - MateConfValue *value; gboolean on_battery; - value = mateconf_entry_get_value (entry); - if (value == NULL) - return; - /* get battery status */ g_object_get (backlight->priv->client, "on-battery", &on_battery, NULL); - if (!on_battery && strcmp (entry->key, GPM_CONF_BACKLIGHT_BRIGHTNESS_AC) == 0) { - backlight->priv->master_percentage = mateconf_value_get_int (value); + if (!on_battery && g_strcmp0 (key, GPM_SETTINGS_BRIGHTNESS_AC) == 0) { + backlight->priv->master_percentage = g_settings_get_double (settings, key); gpm_backlight_brightness_evaluate_and_set (backlight, FALSE); - } else if (on_battery && strcmp (entry->key, GPM_CONF_BACKLIGHT_BRIGHTNESS_DIM_BATT) == 0) { + } else if (on_battery && g_strcmp0 (key, GPM_SETTINGS_BRIGHTNESS_DIM_BATT) == 0) { gpm_backlight_brightness_evaluate_and_set (backlight, FALSE); - } else if (strcmp (entry->key, GPM_CONF_BACKLIGHT_IDLE_DIM_AC) == 0 || - strcmp (entry->key, GPM_CONF_BACKLIGHT_ENABLE) == 0 || - strcmp (entry->key, GPM_CONF_TIMEOUT_SLEEP_DISPLAY_BATT) == 0 || - strcmp (entry->key, GPM_CONF_BACKLIGHT_BATTERY_REDUCE) == 0 || - strcmp (entry->key, GPM_CONF_BACKLIGHT_IDLE_BRIGHTNESS) == 0) { + } else if (g_strcmp0 (key, GPM_SETTINGS_IDLE_DIM_AC) == 0 || + g_strcmp0 (key, GPM_SETTINGS_BACKLIGHT_ENABLE) == 0 || + g_strcmp0 (key, GPM_SETTINGS_SLEEP_DISPLAY_BATT) == 0 || + g_strcmp0 (key, GPM_SETTINGS_BACKLIGHT_BATTERY_REDUCE) == 0 || + g_strcmp0 (key, GPM_SETTINGS_IDLE_BRIGHTNESS) == 0) { gpm_backlight_brightness_evaluate_and_set (backlight, FALSE); - } else if (strcmp (entry->key, GPM_CONF_BACKLIGHT_IDLE_DIM_TIME) == 0) { - backlight->priv->idle_dim_timeout = mateconf_value_get_int (value); + } else if (g_strcmp0 (key, GPM_SETTINGS_IDLE_DIM_TIME) == 0) { + backlight->priv->idle_dim_timeout = g_settings_get_int (settings, key); gpm_idle_set_timeout_dim (backlight->priv->idle, backlight->priv->idle_dim_timeout); } else { - egg_debug ("unknown key %s", entry->key); + egg_debug ("unknown key %s", key); } } @@ -435,7 +428,7 @@ gpm_backlight_button_pressed_cb (GpmButton *button, const gchar *type, GpmBackli gboolean hw_changed; egg_debug ("Button press event type=%s", type); - if (strcmp (type, GPM_BUTTON_BRIGHT_UP) == 0) { + if (g_strcmp0 (type, GPM_BUTTON_BRIGHT_UP) == 0) { /* go up one step */ ret = gpm_brightness_up (backlight->priv->brightness, &hw_changed); @@ -454,7 +447,7 @@ gpm_backlight_button_pressed_cb (GpmButton *button, const gchar *type, GpmBackli egg_debug ("emitting brightness-changed : %i", percentage); g_signal_emit (backlight, signals [BRIGHTNESS_CHANGED], 0, percentage); } - } else if (strcmp (type, GPM_BUTTON_BRIGHT_DOWN) == 0) { + } else if (g_strcmp0 (type, GPM_BUTTON_BRIGHT_DOWN) == 0) { /* go up down step */ ret = gpm_brightness_down (backlight->priv->brightness, &hw_changed); @@ -473,7 +466,7 @@ gpm_backlight_button_pressed_cb (GpmButton *button, const gchar *type, GpmBackli egg_debug ("emitting brightness-changed : %i", percentage); g_signal_emit (backlight, signals [BRIGHTNESS_CHANGED], 0, percentage); } - } else if (strcmp (type, GPM_BUTTON_LID_OPEN) == 0) { + } else if (g_strcmp0 (type, GPM_BUTTON_LID_OPEN) == 0) { /* make sure we undim when we lift the lid */ gpm_backlight_brightness_evaluate_and_set (backlight, FALSE); @@ -521,8 +514,8 @@ gpm_backlight_notify_system_idle_changed (GpmBacklight *backlight, gboolean is_i if (elapsed > 2*60) { /* reset back to our default dimming */ backlight->priv->idle_dim_timeout = - mateconf_client_get_int (backlight->priv->conf, - GPM_CONF_BACKLIGHT_IDLE_DIM_TIME, NULL); + g_settings_get_int (backlight->priv->settings, + GPM_SETTINGS_IDLE_DIM_TIME); egg_debug ("resetting idle dim time to %is", backlight->priv->idle_dim_timeout); gpm_idle_set_timeout_dim (backlight->priv->idle, backlight->priv->idle_dim_timeout); } @@ -552,7 +545,6 @@ idle_changed_cb (GpmIdle *idle, GpmIdleMode mode, GpmBacklight *backlight) gboolean ret; GError *error = NULL; gboolean on_battery; - gchar *dpms_method; GpmDpmsMode dpms_mode; /* don't dim or undim the screen when the lid is closed */ @@ -601,16 +593,13 @@ idle_changed_cb (GpmIdle *idle, GpmIdleMode mode, GpmBacklight *backlight) "on-battery", &on_battery, NULL); if (!on_battery) - dpms_method = mateconf_client_get_string (backlight->priv->conf, GPM_CONF_BACKLIGHT_DPMS_METHOD_AC, NULL); + dpms_mode = g_settings_get_enum (backlight->priv->settings, GPM_SETTINGS_DPMS_METHOD_AC); else - dpms_method = mateconf_client_get_string (backlight->priv->conf, GPM_CONF_BACKLIGHT_DPMS_METHOD_BATT, NULL); - - /* convert the string types to standard types */ - dpms_mode = gpm_dpms_mode_from_string (dpms_method); + dpms_mode = g_settings_get_enum (backlight->priv->settings, GPM_SETTINGS_DPMS_METHOD_BATT); /* check if method is valid */ if (dpms_mode == GPM_DPMS_MODE_UNKNOWN || dpms_mode == GPM_DPMS_MODE_ON) { - egg_warning ("BACKLIGHT method %s unknown. Using OFF.", dpms_method); + egg_warning ("BACKLIGHT method %i unknown. Using OFF.", dpms_mode); dpms_mode = GPM_DPMS_MODE_OFF; } @@ -621,7 +610,6 @@ idle_changed_cb (GpmIdle *idle, GpmIdleMode mode, GpmBacklight *backlight) g_error_free (error); } - g_free (dpms_method); } } @@ -681,7 +669,7 @@ gpm_backlight_finalize (GObject *object) g_object_unref (backlight->priv->dpms); g_object_unref (backlight->priv->control); - g_object_unref (backlight->priv->conf); + g_object_unref (backlight->priv->settings); g_object_unref (backlight->priv->client); g_object_unref (backlight->priv->button); g_object_unref (backlight->priv->idle); @@ -724,9 +712,6 @@ gpm_backlight_class_init (GpmBacklightClass *klass) static void gpm_backlight_init (GpmBacklight *backlight) { - gboolean lid_is_present = TRUE; - GpmPrefsServer *prefs_server; - backlight->priv = GPM_BACKLIGHT_GET_PRIVATE (backlight); /* record our idle time */ @@ -745,31 +730,13 @@ gpm_backlight_init (GpmBacklight *backlight) /* gets caps */ backlight->priv->can_dim = gpm_brightness_has_hw (backlight->priv->brightness); - /* we use UPower to see if we should show the lid UI */ - g_object_get (backlight->priv->client, - "lid-is-present", &lid_is_present, - NULL); - - /* expose ui in prefs program */ - prefs_server = gpm_prefs_server_new (); - if (lid_is_present) - gpm_prefs_server_set_capability (prefs_server, GPM_PREFS_SERVER_LID); - if (backlight->priv->can_dim) - gpm_prefs_server_set_capability (prefs_server, GPM_PREFS_SERVER_BACKLIGHT); - g_object_unref (prefs_server); - /* watch for dim value changes */ - backlight->priv->conf = mateconf_client_get_default (); - - /* watch mate-power-manager keys */ - mateconf_client_add_dir (backlight->priv->conf, GPM_CONF_DIR, MATECONF_CLIENT_PRELOAD_RECURSIVE, NULL); - mateconf_client_notify_add (backlight->priv->conf, GPM_CONF_DIR, - (MateConfClientNotifyFunc) gpm_conf_mateconf_key_changed_cb, - backlight, NULL, NULL); + backlight->priv->settings = g_settings_new (GPM_SETTINGS_SCHEMA); + g_signal_connect (backlight->priv->settings, "changed", G_CALLBACK (gpm_settings_key_changed_cb), backlight); /* set the main brightness, this is designed to be updated if the user changes the * brightness so we can undim to the 'correct' value */ - backlight->priv->master_percentage = mateconf_client_get_int (backlight->priv->conf, GPM_CONF_BACKLIGHT_BRIGHTNESS_AC, NULL); + backlight->priv->master_percentage = g_settings_get_double (backlight->priv->settings, GPM_SETTINGS_BRIGHTNESS_AC); /* watch for brightness up and down buttons and also check lid state */ backlight->priv->button = gpm_button_new (); @@ -783,7 +750,7 @@ gpm_backlight_init (GpmBacklight *backlight) /* assumption */ backlight->priv->system_is_idle = FALSE; - backlight->priv->idle_dim_timeout = mateconf_client_get_int (backlight->priv->conf, GPM_CONF_BACKLIGHT_IDLE_DIM_TIME, NULL); + backlight->priv->idle_dim_timeout = g_settings_get_int (backlight->priv->settings, GPM_SETTINGS_IDLE_DIM_TIME); gpm_idle_set_timeout_dim (backlight->priv->idle, backlight->priv->idle_dim_timeout); /* use a visual widget */ diff --git a/src/gpm-common.c b/src/gpm-common.c index 0d0e536..e7d1d66 100644 --- a/src/gpm-common.c +++ b/src/gpm-common.c @@ -79,88 +79,50 @@ gpm_get_timestring (guint time_secs) } /** - * gpm_icon_policy_from_string: - **/ -GpmIconPolicy -gpm_icon_policy_from_string (const gchar *policy) -{ - if (policy == NULL) - return GPM_ICON_POLICY_NEVER; - if (g_strcmp0 (policy, "always") == 0) - return GPM_ICON_POLICY_ALWAYS; - if (g_strcmp0 (policy, "present") == 0) - return GPM_ICON_POLICY_PRESENT; - if (g_strcmp0 (policy, "charge") == 0) - return GPM_ICON_POLICY_CHARGE; - if (g_strcmp0 (policy, "low") == 0) - return GPM_ICON_POLICY_LOW; - if (g_strcmp0 (policy, "critical") == 0) - return GPM_ICON_POLICY_CRITICAL; - if (g_strcmp0 (policy, "never") == 0) - return GPM_ICON_POLICY_NEVER; - return GPM_ICON_POLICY_NEVER; -} - -/** - * gpm_icon_policy_to_string: + * gpm_discrete_from_percent: + * @percentage: The percentage to convert + * @levels: The number of discrete levels + * + * We have to be carefull when converting from %->discrete as precision is very + * important if we want the highest value. + * + * Return value: The discrete value for this percentage. **/ -const gchar * -gpm_icon_policy_to_string (GpmIconPolicy policy) +guint +gpm_discrete_from_percent (guint percentage, guint levels) { - if (policy == GPM_ICON_POLICY_ALWAYS) - return "always"; - if (policy == GPM_ICON_POLICY_PRESENT) - return "present"; - if (policy == GPM_ICON_POLICY_CHARGE) - return "charge"; - if (policy == GPM_ICON_POLICY_LOW) - return "low"; - if (policy == GPM_ICON_POLICY_CRITICAL) - return "critical"; - if (policy == GPM_ICON_POLICY_NEVER) - return "never"; - return "never"; + /* check we are in range */ + if (percentage > 100) + return levels; + if (levels == 0) { + g_warning ("levels is 0!"); + return 0; + } + return (guint) ((((gfloat) percentage * (gfloat) (levels - 1)) / 100.0f) + 0.5f); } /** - * gpm_action_policy_from_string: + * gpm_discrete_to_percent: + * @hw: The discrete level + * @levels: The number of discrete levels + * + * We have to be carefull when converting from discrete->%. + * + * Return value: The percentage for this discrete value. **/ -GpmActionPolicy -gpm_action_policy_from_string (const gchar *policy) +guint +gpm_discrete_to_percent (guint discrete, guint levels) { - if (policy == NULL) - return GPM_ACTION_POLICY_NOTHING; - if (g_strcmp0 (policy, "blank") == 0) - return GPM_ACTION_POLICY_BLANK; - if (g_strcmp0 (policy, "shutdown") == 0) - return GPM_ACTION_POLICY_SHUTDOWN; - if (g_strcmp0 (policy, "suspend") == 0) - return GPM_ACTION_POLICY_SUSPEND; - if (g_strcmp0 (policy, "hibernate") == 0) - return GPM_ACTION_POLICY_HIBERNATE; - if (g_strcmp0 (policy, "interactive") == 0) - return GPM_ACTION_POLICY_INTERACTIVE; - return GPM_ACTION_POLICY_NOTHING; + /* check we are in range */ + if (discrete > levels) + return 100; + if (levels == 0) { + g_warning ("levels is 0!"); + return 0; + } + return (guint) (((gfloat) discrete * (100.0f / (gfloat) (levels - 1))) + 0.5f); } -/** - * gpm_action_policy_to_string: - **/ -const gchar * -gpm_action_policy_to_string (GpmActionPolicy policy) -{ - if (policy == GPM_ACTION_POLICY_BLANK) - return "blank"; - if (policy == GPM_ACTION_POLICY_SHUTDOWN) - return "shutdown"; - if (policy == GPM_ACTION_POLICY_SUSPEND) - return "suspend"; - if (policy == GPM_ACTION_POLICY_HIBERNATE) - return "hibernate"; - if (policy == GPM_ACTION_POLICY_INTERACTIVE) - return "interactive"; - return "nothing"; -} /** * gpm_help_display: diff --git a/src/gpm-common.h b/src/gpm-common.h index e2733a8..ca4762c 100644 --- a/src/gpm-common.h +++ b/src/gpm-common.h @@ -31,124 +31,111 @@ G_BEGIN_DECLS #define GPM_DBUS_INTERFACE_BACKLIGHT "org.mate.PowerManager.Backlight" #define GPM_DBUS_PATH "/org/mate/PowerManager" #define GPM_DBUS_PATH_BACKLIGHT "/org/mate/PowerManager/Backlight" +#define GPM_DBUS_PATH_KBD_BACKLIGHT "/org/mate/PowerManager/KbdBacklight" /* common descriptions of this program */ #define GPM_NAME _("Power Manager") #define GPM_DESCRIPTION _("Power Manager for the MATE desktop") -/* help location */ -#define GPM_HOMEPAGE_URL "http://www.mate.org/projects/mate-power-manager/" -#define GPM_BUGZILLA_URL "http://bugzilla.mate.org/buglist.cgi?product=mate-power-manager" -#define GPM_FAQ_URL "http://live.mate.org/MatePowerManager/Faq" - -/* change general/installed_schema whenever adding or moving keys */ -#define GPM_CONF_SCHEMA_ID 3 - -#define GPM_CONF_DIR "/apps/mate-power-manager" +/* schema location */ +#define GPM_SETTINGS_SCHEMA "org.mate.power-manager" /* actions */ -#define GPM_CONF_ACTIONS_CRITICAL_UPS GPM_CONF_DIR "/actions/critical_ups" -#define GPM_CONF_ACTIONS_CRITICAL_BATT GPM_CONF_DIR "/actions/critical_battery" -#define GPM_CONF_ACTIONS_LOW_UPS GPM_CONF_DIR "/actions/low_ups" -#define GPM_CONF_ACTIONS_SLEEP_TYPE_AC GPM_CONF_DIR "/actions/sleep_type_ac" -#define GPM_CONF_ACTIONS_SLEEP_TYPE_BATT GPM_CONF_DIR "/actions/sleep_type_battery" -#define GPM_CONF_ACTIONS_SLEEP_WHEN_CLOSED GPM_CONF_DIR "/actions/event_when_closed_battery" +#define GPM_SETTINGS_ACTION_CRITICAL_UPS "action-critical-ups" +#define GPM_SETTINGS_ACTION_CRITICAL_BATT "action-critical-battery" +#define GPM_SETTINGS_ACTION_LOW_UPS "action-low-ups" +#define GPM_SETTINGS_ACTION_SLEEP_TYPE_AC "action-sleep-type-ac" +#define GPM_SETTINGS_ACTION_SLEEP_TYPE_BATT "action-sleep-type-battery" +#define GPM_SETTINGS_SLEEP_WHEN_CLOSED "event-when-closed-battery" /* backlight stuff */ -#define GPM_CONF_BACKLIGHT_ENABLE GPM_CONF_DIR "/backlight/enable" -#define GPM_CONF_BACKLIGHT_BATTERY_REDUCE GPM_CONF_DIR "/backlight/battery_reduce" -#define GPM_CONF_BACKLIGHT_DPMS_METHOD_AC GPM_CONF_DIR "/backlight/dpms_method_ac" -#define GPM_CONF_BACKLIGHT_DPMS_METHOD_BATT GPM_CONF_DIR "/backlight/dpms_method_battery" -#define GPM_CONF_BACKLIGHT_IDLE_BRIGHTNESS GPM_CONF_DIR "/backlight/idle_brightness" -#define GPM_CONF_BACKLIGHT_IDLE_DIM_AC GPM_CONF_DIR "/backlight/idle_dim_ac" -#define GPM_CONF_BACKLIGHT_IDLE_DIM_BATT GPM_CONF_DIR "/backlight/idle_dim_battery" -#define GPM_CONF_BACKLIGHT_IDLE_DIM_TIME GPM_CONF_DIR "/backlight/idle_dim_time" -#define GPM_CONF_BACKLIGHT_BRIGHTNESS_AC GPM_CONF_DIR "/backlight/brightness_ac" -#define GPM_CONF_BACKLIGHT_BRIGHTNESS_DIM_BATT GPM_CONF_DIR "/backlight/brightness_dim_battery" +#define GPM_SETTINGS_BACKLIGHT_ENABLE "backlight-enable" +#define GPM_SETTINGS_BACKLIGHT_BATTERY_REDUCE "backlight-battery-reduce" +#define GPM_SETTINGS_DPMS_METHOD_AC "dpms-method-ac" +#define GPM_SETTINGS_DPMS_METHOD_BATT "dpms-method-battery" +#define GPM_SETTINGS_IDLE_BRIGHTNESS "idle-brightness" +#define GPM_SETTINGS_IDLE_DIM_AC "idle-dim-ac" +#define GPM_SETTINGS_IDLE_DIM_BATT "idle-dim-battery" +#define GPM_SETTINGS_IDLE_DIM_TIME "idle-dim-time" +#define GPM_SETTINGS_BRIGHTNESS_AC "brightness-ac" +#define GPM_SETTINGS_BRIGHTNESS_DIM_BATT "brightness-dim-battery" + +/* keyboard backlight */ +#define GPM_SETTINGS_KBD_BACKLIGHT_BATT_REDUCE "kbd-backlight-battery-reduce" +#define GPM_SETTINGS_KBD_BRIGHTNESS_ON_AC "kbd-brightness-on-ac" +#define GPM_SETTINGS_KBD_BRIGHTNESS_DIM_BY_ON_BATT "kbd-brightness-dim-by-on-battery" +#define GPM_SETTINGS_KBD_BRIGHTNESS_DIM_BY_ON_IDLE "kbd-brightness-dim-by-on-idle" /* buttons */ -#define GPM_CONF_BUTTON_LID_AC GPM_CONF_DIR "/buttons/lid_ac" -#define GPM_CONF_BUTTON_LID_BATT GPM_CONF_DIR "/buttons/lid_battery" -#define GPM_CONF_BUTTON_SUSPEND GPM_CONF_DIR "/buttons/suspend" -#define GPM_CONF_BUTTON_HIBERNATE GPM_CONF_DIR "/buttons/hibernate" -#define GPM_CONF_BUTTON_POWER GPM_CONF_DIR "/buttons/power" +#define GPM_SETTINGS_BUTTON_LID_AC "button-lid-ac" +#define GPM_SETTINGS_BUTTON_LID_BATT "button-lid-battery" +#define GPM_SETTINGS_BUTTON_SUSPEND "button-suspend" +#define GPM_SETTINGS_BUTTON_HIBERNATE "button-hibernate" +#define GPM_SETTINGS_BUTTON_POWER "button-power" /* general */ -#define GPM_CONF_SCHEMA_VERSION GPM_CONF_DIR "/general/installed_schema" -#define GPM_CONF_USE_TIME_POLICY GPM_CONF_DIR "/general/use_time_for_policy" -#define GPM_CONF_USE_PROFILE_TIME GPM_CONF_DIR "/general/use_profile_time" -#define GPM_CONF_NETWORKMANAGER_SLEEP GPM_CONF_DIR "/general/network_sleep" -#define GPM_CONF_IDLE_CHECK_CPU GPM_CONF_DIR "/general/check_type_cpu" -#define GPM_CONF_LAPTOP_USES_EXT_MON GPM_CONF_DIR "/general/using_external_monitor" +#define GPM_SETTINGS_USE_TIME_POLICY "use-time-for-policy" +#define GPM_SETTINGS_NETWORKMANAGER_SLEEP "network-sleep" +#define GPM_SETTINGS_IDLE_CHECK_CPU "check-type-cpu" /* lock */ -#define GPM_CONF_LOCK_USE_SCREENSAVER GPM_CONF_DIR "/lock/use_screensaver_settings" -#define GPM_CONF_LOCK_ON_BLANK_SCREEN GPM_CONF_DIR "/lock/blank_screen" -#define GPM_CONF_LOCK_ON_SUSPEND GPM_CONF_DIR "/lock/suspend" -#define GPM_CONF_LOCK_ON_HIBERNATE GPM_CONF_DIR "/lock/hibernate" -#define GPM_CONF_LOCK_MATE_KEYRING_SUSPEND GPM_CONF_DIR "/lock/mate_keyring_suspend" -#define GPM_CONF_LOCK_MATE_KEYRING_HIBERNATE GPM_CONF_DIR "/lock/mate_keyring_hibernate" +#define GPM_SETTINGS_LOCK_USE_SCREENSAVER "lock-use-screensaver" +#define GPM_SETTINGS_LOCK_ON_BLANK_SCREEN "lock-blank-screen" +#define GPM_SETTINGS_LOCK_ON_SUSPEND "lock-suspend" +#define GPM_SETTINGS_LOCK_ON_HIBERNATE "lock-hibernate" +#define GPM_SETTINGS_LOCK_KEYRING_SUSPEND "lock-keyring-suspend" +#define GPM_SETTINGS_LOCK_KEYRING_HIBERNATE "lock-keyring-hibernate" /* disks */ -#define GPM_CONF_DISKS_SPINDOWN_ENABLE_AC GPM_CONF_DIR "/disks/spindown_enable_ac" -#define GPM_CONF_DISKS_SPINDOWN_ENABLE_BATT GPM_CONF_DIR "/disks/spindown_enable_battery" -#define GPM_CONF_DISKS_SPINDOWN_TIMEOUT_AC GPM_CONF_DIR "/disks/spindown_timeout_ac" -#define GPM_CONF_DISKS_SPINDOWN_TIMEOUT_BATT GPM_CONF_DIR "/disks/spindown_timeout_battery" +#define GPM_SETTINGS_SPINDOWN_ENABLE_AC "spindown-enable-ac" +#define GPM_SETTINGS_SPINDOWN_ENABLE_BATT "spindown-enable-battery" +#define GPM_SETTINGS_SPINDOWN_TIMEOUT_AC "spindown-timeout-ac" +#define GPM_SETTINGS_SPINDOWN_TIMEOUT_BATT "spindown-timeout-battery" /* notify */ -#define GPM_CONF_NOTIFY_PERHAPS_RECALL GPM_CONF_DIR "/notify/perhaps_recall" -#define GPM_CONF_NOTIFY_LOW_CAPACITY GPM_CONF_DIR "/notify/low_capacity" -#define GPM_CONF_NOTIFY_DISCHARGING GPM_CONF_DIR "/notify/discharging" -#define GPM_CONF_NOTIFY_FULLY_CHARGED GPM_CONF_DIR "/notify/fully_charged" -#define GPM_CONF_NOTIFY_SLEEP_FAILED GPM_CONF_DIR "/notify/sleep_failed" -#define GPM_CONF_NOTIFY_SLEEP_FAILED_URI GPM_CONF_DIR "/notify/sleep_failed_uri" -#define GPM_CONF_NOTIFY_LOW_POWER GPM_CONF_DIR "/notify/low_power" - -/* statistics */ -#define GPM_CONF_STATS_SHOW_AXIS_LABELS GPM_CONF_DIR "/statistics/show_axis_labels" -#define GPM_CONF_STATS_SHOW_EVENTS GPM_CONF_DIR "/statistics/show_events" -#define GPM_CONF_STATS_SMOOTH_DATA GPM_CONF_DIR "/statistics/smooth_data" -#define GPM_CONF_STATS_GRAPH_TYPE GPM_CONF_DIR "/statistics/graph_type" -#define GPM_CONF_STATS_MAX_TIME GPM_CONF_DIR "/statistics/data_max_time" +#define GPM_SETTINGS_NOTIFY_PERHAPS_RECALL "notify-perhaps-recall" +#define GPM_SETTINGS_NOTIFY_LOW_CAPACITY "notify-low-capacity" +#define GPM_SETTINGS_NOTIFY_DISCHARGING "notify-discharging" +#define GPM_SETTINGS_NOTIFY_FULLY_CHARGED "notify-fully-charged" +#define GPM_SETTINGS_NOTIFY_SLEEP_FAILED "notify-sleep-failed" +#define GPM_SETTINGS_NOTIFY_SLEEP_FAILED_URI "notify-sleep-failed-uri" +#define GPM_SETTINGS_NOTIFY_LOW_POWER "notify-low-power" /* thresholds */ -#define GPM_CONF_THRESH_PERCENTAGE_LOW GPM_CONF_DIR "/thresholds/percentage_low" -#define GPM_CONF_THRESH_PERCENTAGE_CRITICAL GPM_CONF_DIR "/thresholds/percentage_critical" -#define GPM_CONF_THRESH_PERCENTAGE_ACTION GPM_CONF_DIR "/thresholds/percentage_action" -#define GPM_CONF_THRESH_TIME_LOW GPM_CONF_DIR "/thresholds/time_low" -#define GPM_CONF_THRESH_TIME_CRITICAL GPM_CONF_DIR "/thresholds/time_critical" -#define GPM_CONF_THRESH_TIME_ACTION GPM_CONF_DIR "/thresholds/time_action" +#define GPM_SETTINGS_PERCENTAGE_LOW "percentage-low" +#define GPM_SETTINGS_PERCENTAGE_CRITICAL "percentage-critical" +#define GPM_SETTINGS_PERCENTAGE_ACTION "percentage-action" +#define GPM_SETTINGS_TIME_LOW "time-low" +#define GPM_SETTINGS_TIME_CRITICAL "time-critical" +#define GPM_SETTINGS_TIME_ACTION "time-action" /* timeout */ -#define GPM_CONF_TIMEOUT_SLEEP_COMPUTER_AC GPM_CONF_DIR "/timeout/sleep_computer_ac" -#define GPM_CONF_TIMEOUT_SLEEP_COMPUTER_BATT GPM_CONF_DIR "/timeout/sleep_computer_battery" -#define GPM_CONF_TIMEOUT_SLEEP_COMPUTER_UPS GPM_CONF_DIR "/timeout/sleep_computer_ups" -#define GPM_CONF_TIMEOUT_SLEEP_DISPLAY_AC GPM_CONF_DIR "/timeout/sleep_display_ac" -#define GPM_CONF_TIMEOUT_SLEEP_DISPLAY_BATT GPM_CONF_DIR "/timeout/sleep_display_battery" -#define GPM_CONF_TIMEOUT_SLEEP_DISPLAY_UPS GPM_CONF_DIR "/timeout/sleep_display_ups" +#define GPM_SETTINGS_SLEEP_COMPUTER_AC "sleep-computer-ac" +#define GPM_SETTINGS_SLEEP_COMPUTER_BATT "sleep-computer-battery" +#define GPM_SETTINGS_SLEEP_COMPUTER_UPS "sleep-computer-ups" +#define GPM_SETTINGS_SLEEP_DISPLAY_AC "sleep-display-ac" +#define GPM_SETTINGS_SLEEP_DISPLAY_BATT "sleep-display-battery" +#define GPM_SETTINGS_SLEEP_DISPLAY_UPS "sleep-display-ups" /* ui */ -#define GPM_CONF_UI_ICON_POLICY GPM_CONF_DIR "/ui/icon_policy" -#define GPM_CONF_UI_ENABLE_SOUND GPM_CONF_DIR "/ui/enable_sound" -#define GPM_CONF_UI_SHOW_ACTIONS GPM_CONF_DIR "/ui/show_actions" - -/* new info binary */ -#define GPM_CONF_INFO_HISTORY_TIME "/apps/mate-power-manager/info/history_time" -#define GPM_CONF_INFO_HISTORY_TYPE "/apps/mate-power-manager/info/history_type" -#define GPM_CONF_INFO_HISTORY_GRAPH_SMOOTH "/apps/mate-power-manager/info/history_graph_smooth" -#define GPM_CONF_INFO_HISTORY_GRAPH_POINTS "/apps/mate-power-manager/info/history_graph_points" -#define GPM_CONF_INFO_STATS_TYPE "/apps/mate-power-manager/info/stats_type" -#define GPM_CONF_INFO_STATS_GRAPH_SMOOTH "/apps/mate-power-manager/info/stats_graph_smooth" -#define GPM_CONF_INFO_STATS_GRAPH_POINTS "/apps/mate-power-manager/info/stats_graph_points" -#define GPM_CONF_INFO_PAGE_NUMBER "/apps/mate-power-manager/info/page_number" -#define GPM_CONF_INFO_LAST_DEVICE "/apps/mate-power-manager/info/last_device" +#define GPM_SETTINGS_ICON_POLICY "icon-policy" +#define GPM_SETTINGS_ENABLE_SOUND "enable-sound" +#define GPM_SETTINGS_SHOW_ACTIONS "show-actions" -/* mate-screensaver */ -#define GS_CONF_DIR "/apps/mate-screensaver" -#define GS_PREF_LOCK_ENABLED GS_CONF_DIR "/lock_enabled" +/* statistics */ +#define GPM_SETTINGS_INFO_HISTORY_TIME "info-history-time" +#define GPM_SETTINGS_INFO_HISTORY_TYPE "info-history-type" +#define GPM_SETTINGS_INFO_HISTORY_GRAPH_SMOOTH "info-history-graph-smooth" +#define GPM_SETTINGS_INFO_HISTORY_GRAPH_POINTS "info-history-graph-points" +#define GPM_SETTINGS_INFO_STATS_TYPE "info-stats-type" +#define GPM_SETTINGS_INFO_STATS_GRAPH_SMOOTH "info-stats-graph-smooth" +#define GPM_SETTINGS_INFO_STATS_GRAPH_POINTS "info-stats-graph-points" +#define GPM_SETTINGS_INFO_PAGE_NUMBER "info-page-number" +#define GPM_SETTINGS_INFO_LAST_DEVICE "info-last-device" -/* mate-session */ -#define GPM_CONF_IDLE_DELAY "/desktop/mate/session/idle_delay" +/* mate-screensaver */ +#define GS_SETTINGS_SCHEMA "org.mate.screensaver" +#define GS_SETTINGS_PREF_LOCK_ENABLED "lock-enabled" typedef enum { GPM_ICON_POLICY_ALWAYS, @@ -169,10 +156,10 @@ typedef enum { } GpmActionPolicy; gchar *gpm_get_timestring (guint time); -GpmIconPolicy gpm_icon_policy_from_string (const gchar *policy); -const gchar *gpm_icon_policy_to_string (GpmIconPolicy policy); -GpmActionPolicy gpm_action_policy_from_string (const gchar *policy); -const gchar *gpm_action_policy_to_string (GpmActionPolicy policy); +guint gpm_discrete_from_percent (guint percentage, + guint levels); +guint gpm_discrete_to_percent (guint discrete, + guint levels); void gpm_help_display (const gchar *link_id); #ifdef EGG_TEST void gpm_common_test (gpointer data); diff --git a/src/gpm-control.c b/src/gpm-control.c index 50212b8..4b6c959 100644 --- a/src/gpm-control.c +++ b/src/gpm-control.c @@ -40,7 +40,6 @@ #include <dbus/dbus-glib.h> #include <dbus/dbus-glib-lowlevel.h> #include <mate-keyring.h> -#include <mateconf/mateconf-client.h> #include <libupower-glib/upower.h> #include "egg-debug.h" @@ -55,7 +54,7 @@ struct GpmControlPrivate { - MateConfClient *conf; + GSettings *settings; UpClient *client; }; @@ -103,7 +102,7 @@ gpm_control_shutdown (GpmControl *control, GError **error) /** * gpm_control_get_lock_policy: * @control: This class instance - * @policy: The policy mateconf string. + * @policy: The policy string. * * This function finds out if we should lock the screen when we do an * action. It is required as we can either use the mate-screensaver policy @@ -116,15 +115,33 @@ gpm_control_get_lock_policy (GpmControl *control, const gchar *policy) { gboolean do_lock; gboolean use_ss_setting; - /* This allows us to over-ride the custom lock settings set in mateconf + const char * const *schemas; + gboolean schema_exists; + gint i; + + /* Check if the mate-screensaver schema exists before trying to read + the lock setting to prevent crashing. See GNOME bug #651225. */ + schemas = g_settings_list_schemas (); + schema_exists = FALSE; + for (i = 0; schemas[i] != NULL; i++) { + if (g_strcmp0 (schemas[i], GS_SETTINGS_SCHEMA) == 0) { + schema_exists = TRUE; + break; + } + } + + /* This allows us to over-ride the custom lock settings set with a system default set in mate-screensaver. See bug #331164 for all the juicy details. :-) */ - use_ss_setting = mateconf_client_get_bool (control->priv->conf, GPM_CONF_LOCK_USE_SCREENSAVER, NULL); - if (use_ss_setting) { - do_lock = mateconf_client_get_bool (control->priv->conf, GS_PREF_LOCK_ENABLED, NULL); + use_ss_setting = g_settings_get_boolean (control->priv->settings, GPM_SETTINGS_LOCK_USE_SCREENSAVER); + if (use_ss_setting && schema_exists) { + GSettings *settings_ss; + settings_ss = g_settings_new (GS_SETTINGS_SCHEMA); + do_lock = g_settings_get_boolean (settings_ss, GS_SETTINGS_PREF_LOCK_ENABLED); egg_debug ("Using ScreenSaver settings (%i)", do_lock); + g_object_unref (settings_ss); } else { - do_lock = mateconf_client_get_bool (control->priv->conf, policy, NULL); + do_lock = g_settings_get_boolean (control->priv->settings, policy); egg_debug ("Using custom locking settings (%i)", do_lock); } return do_lock; @@ -157,20 +174,20 @@ gpm_control_suspend (GpmControl *control, GError **error) } /* we should perhaps lock keyrings when sleeping #375681 */ - lock_mate_keyring = mateconf_client_get_bool (control->priv->conf, GPM_CONF_LOCK_MATE_KEYRING_SUSPEND, NULL); + lock_mate_keyring = g_settings_get_boolean (control->priv->settings, GPM_SETTINGS_LOCK_KEYRING_SUSPEND); if (lock_mate_keyring) { keyres = mate_keyring_lock_all_sync (); if (keyres != MATE_KEYRING_RESULT_OK) egg_warning ("could not lock keyring"); } - do_lock = gpm_control_get_lock_policy (control, GPM_CONF_LOCK_ON_SUSPEND); + do_lock = gpm_control_get_lock_policy (control, GPM_SETTINGS_LOCK_ON_SUSPEND); if (do_lock) { throttle_cookie = gpm_screensaver_add_throttle (screensaver, "suspend"); gpm_screensaver_lock (screensaver); } - nm_sleep = mateconf_client_get_bool (control->priv->conf, GPM_CONF_NETWORKMANAGER_SLEEP, NULL); + nm_sleep = g_settings_get_boolean (control->priv->settings, GPM_SETTINGS_NETWORKMANAGER_SLEEP); if (nm_sleep) gpm_networkmanager_sleep (); @@ -189,7 +206,7 @@ gpm_control_suspend (GpmControl *control, GError **error) gpm_screensaver_remove_throttle (screensaver, throttle_cookie); } - nm_sleep = mateconf_client_get_bool (control->priv->conf, GPM_CONF_NETWORKMANAGER_SLEEP, NULL); + nm_sleep = g_settings_get_boolean (control->priv->settings, GPM_SETTINGS_NETWORKMANAGER_SLEEP); if (nm_sleep) gpm_networkmanager_wake (); @@ -225,7 +242,7 @@ gpm_control_hibernate (GpmControl *control, GError **error) } /* we should perhaps lock keyrings when sleeping #375681 */ - lock_mate_keyring = mateconf_client_get_bool (control->priv->conf, GPM_CONF_LOCK_MATE_KEYRING_HIBERNATE, NULL); + lock_mate_keyring = g_settings_get_boolean (control->priv->settings, GPM_SETTINGS_LOCK_KEYRING_HIBERNATE); if (lock_mate_keyring) { keyres = mate_keyring_lock_all_sync (); if (keyres != MATE_KEYRING_RESULT_OK) { @@ -233,13 +250,13 @@ gpm_control_hibernate (GpmControl *control, GError **error) } } - do_lock = gpm_control_get_lock_policy (control, GPM_CONF_LOCK_ON_HIBERNATE); + do_lock = gpm_control_get_lock_policy (control, GPM_SETTINGS_LOCK_ON_HIBERNATE); if (do_lock) { throttle_cookie = gpm_screensaver_add_throttle (screensaver, "hibernate"); gpm_screensaver_lock (screensaver); } - nm_sleep = mateconf_client_get_bool (control->priv->conf, GPM_CONF_NETWORKMANAGER_SLEEP, NULL); + nm_sleep = g_settings_get_boolean (control->priv->settings, GPM_SETTINGS_NETWORKMANAGER_SLEEP); if (nm_sleep) gpm_networkmanager_sleep (); @@ -257,7 +274,7 @@ gpm_control_hibernate (GpmControl *control, GError **error) gpm_screensaver_remove_throttle (screensaver, throttle_cookie); } - nm_sleep = mateconf_client_get_bool (control->priv->conf, GPM_CONF_NETWORKMANAGER_SLEEP, NULL); + nm_sleep = g_settings_get_boolean (control->priv->settings, GPM_SETTINGS_NETWORKMANAGER_SLEEP); if (nm_sleep) gpm_networkmanager_wake (); @@ -278,7 +295,7 @@ gpm_control_finalize (GObject *object) g_return_if_fail (GPM_IS_CONTROL (object)); control = GPM_CONTROL (object); - g_object_unref (control->priv->conf); + g_object_unref (control->priv->settings); g_object_unref (control->priv->client); g_return_if_fail (control->priv != NULL); @@ -326,7 +343,7 @@ gpm_control_init (GpmControl *control) control->priv = GPM_CONTROL_GET_PRIVATE (control); control->priv->client = up_client_new (); - control->priv->conf = mateconf_client_get_default (); + control->priv->settings = g_settings_new (GPM_SETTINGS_SCHEMA); } /** diff --git a/src/gpm-dpms.c b/src/gpm-dpms.c index 13928f9..8eaf704 100644 --- a/src/gpm-dpms.c +++ b/src/gpm-dpms.c @@ -190,53 +190,6 @@ gpm_dpms_x11_set_mode (GpmDpms *dpms, GpmDpmsMode mode, GError **error) } /** - * gpm_dpms_mode_from_string: - **/ -GpmDpmsMode -gpm_dpms_mode_from_string (const gchar *str) -{ - if (str == NULL) - return GPM_DPMS_MODE_UNKNOWN; - if (strcmp (str, "on") == 0) - return GPM_DPMS_MODE_ON; - if (strcmp (str, "standby") == 0) - return GPM_DPMS_MODE_STANDBY; - if (strcmp (str, "suspend") == 0) - return GPM_DPMS_MODE_SUSPEND; - if (strcmp (str, "off") == 0) - return GPM_DPMS_MODE_OFF; - return GPM_DPMS_MODE_UNKNOWN; -} - -/** - * gpm_dpms_mode_to_string: - **/ -const gchar * -gpm_dpms_mode_to_string (GpmDpmsMode mode) -{ - const gchar *str = NULL; - - switch (mode) { - case GPM_DPMS_MODE_ON: - str = "on"; - break; - case GPM_DPMS_MODE_STANDBY: - str = "standby"; - break; - case GPM_DPMS_MODE_SUSPEND: - str = "suspend"; - break; - case GPM_DPMS_MODE_OFF: - str = "off"; - break; - default: - str = NULL; - break; - } - return str; -} - -/** * gpm_dpms_set_mode: **/ gboolean diff --git a/src/gpm-dpms.h b/src/gpm-dpms.h index 95cd226..b6218fc 100644 --- a/src/gpm-dpms.h +++ b/src/gpm-dpms.h @@ -71,8 +71,6 @@ gboolean gpm_dpms_get_mode (GpmDpms *dpms, gboolean gpm_dpms_set_mode (GpmDpms *dpms, GpmDpmsMode mode, GError **error); -const gchar *gpm_dpms_mode_to_string (GpmDpmsMode mode); -GpmDpmsMode gpm_dpms_mode_from_string (const gchar *mode); void gpm_dpms_test (gpointer data); G_END_DECLS diff --git a/src/gpm-engine.c b/src/gpm-engine.c index 1ca78b8..0f9d0c1 100644 --- a/src/gpm-engine.c +++ b/src/gpm-engine.c @@ -24,7 +24,6 @@ #include <string.h> #include <glib.h> #include <glib/gi18n.h> -#include <mateconf/mateconf-client.h> #include <libupower-glib/upower.h> #include "egg-debug.h" @@ -34,7 +33,6 @@ #include "gpm-marshal.h" #include "gpm-engine.h" #include "gpm-stock-icons.h" -#include "gpm-prefs-server.h" #include "gpm-phone.h" static void gpm_engine_finalize (GObject *object); @@ -45,7 +43,7 @@ static void gpm_engine_finalize (GObject *object); struct GpmEnginePrivate { - MateConfClient *conf; + GSettings *settings; UpClient *client; UpDevice *battery_composite; GPtrArray *array; @@ -510,30 +508,19 @@ gpm_engine_recalculate_state (GpmEngine *engine) } /** - * gpm_engine_conf_key_changed_cb: + * gpm_engine_settings_key_changed_cb: **/ static void -gpm_engine_conf_key_changed_cb (MateConfClient *conf, guint cnxn_id, MateConfEntry *entry, GpmEngine *engine) +gpm_engine_settings_key_changed_cb (GSettings *settings, const gchar *key, GpmEngine *engine) { - MateConfValue *value; - gchar *icon_policy; - if (entry == NULL) - return; - value = mateconf_entry_get_value (entry); - if (value == NULL) - return; - - if (strcmp (entry->key, GPM_CONF_USE_TIME_POLICY) == 0) { + if (g_strcmp0 (key, GPM_SETTINGS_USE_TIME_POLICY) == 0) { + engine->priv->use_time_primary = g_settings_get_boolean (settings, key); - engine->priv->use_time_primary = mateconf_value_get_bool (value); - - } else if (strcmp (entry->key, GPM_CONF_UI_ICON_POLICY) == 0) { + } else if (g_strcmp0 (key, GPM_SETTINGS_ICON_POLICY) == 0) { /* do we want to display the icon in the tray */ - icon_policy = mateconf_client_get_string (conf, GPM_CONF_UI_ICON_POLICY, NULL); - engine->priv->icon_policy = gpm_icon_policy_from_string (icon_policy); - g_free (icon_policy); + engine->priv->icon_policy = g_settings_get_enum (settings, key); /* perhaps change icon */ gpm_engine_recalculate_state_icon (engine); @@ -568,8 +555,8 @@ gpm_engine_device_check_capacity (GpmEngine *engine, UpDevice *device) if (capacity < 1.0f) return FALSE; - /* only emit this if specified in mateconf */ - ret = mateconf_client_get_bool (engine->priv->conf, GPM_CONF_NOTIFY_LOW_CAPACITY, NULL); + /* only emit this if specified in the settings */ + ret = g_settings_get_boolean (engine->priv->settings, GPM_SETTINGS_NOTIFY_LOW_CAPACITY); if (ret) { egg_debug ("** EMIT: low-capacity"); g_signal_emit (engine, signals [LOW_CAPACITY], 0, device); @@ -816,12 +803,8 @@ static gboolean gpm_engine_coldplug_idle_cb (GpmEngine *engine) { guint i; - GPtrArray *array; - gboolean has_battery = FALSE; - gboolean has_ups = FALSE; - GpmPrefsServer *prefs_server; + GPtrArray *array = NULL; UpDevice *device; - UpDeviceKind kind; gboolean ret; GError *error = NULL; @@ -835,31 +818,6 @@ gpm_engine_coldplug_idle_cb (GpmEngine *engine) g_error_free (error); goto out; } - engine->priv->array = up_client_get_devices (engine->priv->client); - - /* do we have specific device types? */ - array = engine->priv->array; - for (i=0;i<array->len;i++) { - device = g_ptr_array_index (engine->priv->array, i); - - /* get device properties */ - g_object_get (device, - "kind", &kind, - NULL); - - if (kind == UP_DEVICE_KIND_BATTERY) - has_battery = TRUE; - else if (kind == UP_DEVICE_KIND_UPS) - has_ups = TRUE; - } - - /* only show the battery prefs section if we have batteries */ - prefs_server = gpm_prefs_server_new (); - if (has_battery) - gpm_prefs_server_set_capability (prefs_server, GPM_PREFS_SERVER_BATTERY); - if (has_ups) - gpm_prefs_server_set_capability (prefs_server, GPM_PREFS_SERVER_UPS); - g_object_unref (prefs_server); /* connected mobile phones */ gpm_phone_coldplug (engine->priv->phone); @@ -867,12 +825,15 @@ gpm_engine_coldplug_idle_cb (GpmEngine *engine) gpm_engine_recalculate_state (engine); /* add to database */ + array = up_client_get_devices (engine->priv->client); for (i=0;i<array->len;i++) { - device = g_ptr_array_index (engine->priv->array, i); + device = g_ptr_array_index (array, i); gpm_engine_device_add (engine, device); gpm_engine_check_recall (engine, device); } out: + if (array != NULL) + g_ptr_array_unref (array); /* never repeat */ return FALSE; } @@ -1081,7 +1042,6 @@ phone_device_refresh_cb (GpmPhone *phone, guint idx, GpmEngine *engine) static void gpm_engine_init (GpmEngine *engine) { - gchar *icon_policy; engine->priv = GPM_ENGINE_GET_PRIVATE (engine); @@ -1094,10 +1054,9 @@ gpm_engine_init (GpmEngine *engine) g_signal_connect (engine->priv->client, "device-changed", G_CALLBACK (gpm_engine_device_changed_cb), engine); - engine->priv->conf = mateconf_client_get_default (); - mateconf_client_notify_add (engine->priv->conf, GPM_CONF_DIR, - (MateConfClientNotifyFunc) gpm_engine_conf_key_changed_cb, - engine, NULL, NULL); + engine->priv->settings = g_settings_new (GPM_SETTINGS_SCHEMA); + g_signal_connect (engine->priv->settings, "changed", + G_CALLBACK (gpm_engine_settings_key_changed_cb), engine); engine->priv->phone = gpm_phone_new (); g_signal_connect (engine->priv->phone, "device-added", @@ -1121,22 +1080,20 @@ gpm_engine_init (GpmEngine *engine) engine->priv->previous_summary = NULL; /* do we want to display the icon in the tray */ - icon_policy = mateconf_client_get_string (engine->priv->conf, GPM_CONF_UI_ICON_POLICY, NULL); - engine->priv->icon_policy = gpm_icon_policy_from_string (icon_policy); - g_free (icon_policy); + engine->priv->icon_policy = g_settings_get_enum (engine->priv->settings, GPM_SETTINGS_ICON_POLICY); /* get percentage policy */ - engine->priv->low_percentage = mateconf_client_get_int (engine->priv->conf, GPM_CONF_THRESH_PERCENTAGE_LOW, NULL); - engine->priv->critical_percentage = mateconf_client_get_int (engine->priv->conf, GPM_CONF_THRESH_PERCENTAGE_CRITICAL, NULL); - engine->priv->action_percentage = mateconf_client_get_int (engine->priv->conf, GPM_CONF_THRESH_PERCENTAGE_ACTION, NULL); + engine->priv->low_percentage = g_settings_get_int (engine->priv->settings, GPM_SETTINGS_PERCENTAGE_LOW); + engine->priv->critical_percentage = g_settings_get_int (engine->priv->settings, GPM_SETTINGS_PERCENTAGE_CRITICAL); + engine->priv->action_percentage = g_settings_get_int (engine->priv->settings, GPM_SETTINGS_PERCENTAGE_ACTION); /* get time policy */ - engine->priv->low_time = mateconf_client_get_int (engine->priv->conf, GPM_CONF_THRESH_TIME_LOW, NULL); - engine->priv->critical_time = mateconf_client_get_int (engine->priv->conf, GPM_CONF_THRESH_TIME_CRITICAL, NULL); - engine->priv->action_time = mateconf_client_get_int (engine->priv->conf, GPM_CONF_THRESH_TIME_ACTION, NULL); + engine->priv->low_time = g_settings_get_int (engine->priv->settings, GPM_SETTINGS_TIME_LOW); + engine->priv->critical_time = g_settings_get_int (engine->priv->settings, GPM_SETTINGS_TIME_CRITICAL); + engine->priv->action_time = g_settings_get_int (engine->priv->settings, GPM_SETTINGS_TIME_ACTION); /* we can disable this if the time remaining is inaccurate or just plain wrong */ - engine->priv->use_time_primary = mateconf_client_get_bool (engine->priv->conf, GPM_CONF_USE_TIME_POLICY, NULL); + engine->priv->use_time_primary = g_settings_get_boolean (engine->priv->settings, GPM_SETTINGS_USE_TIME_POLICY); if (engine->priv->use_time_primary) egg_debug ("Using per-time notification policy"); else diff --git a/src/gpm-idle.c b/src/gpm-idle.c index 0a7c33c..97e9072 100644 --- a/src/gpm-idle.c +++ b/src/gpm-idle.c @@ -352,6 +352,7 @@ static void gpm_idle_session_idle_changed_cb (GpmSession *session, gboolean is_idle, GpmIdle *idle) { egg_debug ("Received mate session idle changed: %i", is_idle); + idle->priv->x_idle = TRUE; gpm_idle_evaluate (idle); } diff --git a/src/gpm-kbd-backlight.c b/src/gpm-kbd-backlight.c new file mode 100644 index 0000000..4ed3fcf --- /dev/null +++ b/src/gpm-kbd-backlight.c @@ -0,0 +1,734 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- + * + * Copyright (C) 2010 Alex Launi <alex launi canonical 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include <gio/gio.h> +#include <glib.h> +#include <libupower-glib/upower.h> + +#include "gpm-button.h" +#include "gpm-common.h" +#include "gpm-control.h" +#include "gpm-idle.h" +#include "gpm-kbd-backlight.h" + +static const gchar *kbd_backlight_introspection = "" +"<?xml version=\"1.0\" encoding=\"UTF-8\"?>""<node name=\"/\">" + "<interface name=\"org.mate.PowerManager.Backlight\">" + "<method name=\"GetBrightness\">" + "<arg type=\"u\" name=\"percentage_brightness\" direction=\"out\"/>" + "</method>" + "<method name=\"SetBrightness\">" + "<arg type=\"u\" name=\"percentage_brightness\" direction=\"in\"/>" + "</method>" + "<signal name=\"BrightnessChanged\">" + "<arg type=\"u\" name=\"percentage_brightness\" direction=\"out\"/>" + "</signal>" + "</interface>" +"</node>"; + +#define GPM_KBD_BACKLIGHT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GPM_TYPE_KBD_BACKLIGHT, GpmKbdBacklightPrivate)) + +struct GpmKbdBacklightPrivate +{ + UpClient *client; + GpmButton *button; + GSettings *settings; + GSettings *settings_gsd; + GpmControl *control; + GpmIdle *idle; + gboolean can_dim; + gboolean system_is_idle; + GTimer *idle_timer; + guint idle_dim_timeout; + guint master_percentage; + guint brightness; + guint max_brightness; + guint brightness_percent; + GDBusProxy *upower_proxy; + GDBusConnection *bus_connection; + guint bus_object_id; +}; + +enum { + BRIGHTNESS_CHANGED, + LAST_SIGNAL +}; + +static guint signals [LAST_SIGNAL] = { 0 }; + +G_DEFINE_TYPE (GpmKbdBacklight, gpm_kbd_backlight, G_TYPE_OBJECT) + +/** + * gpm_kbd_backlight_error_quark: + * Return value: Our personal error quark. + **/ +GQuark +gpm_kbd_backlight_error_quark (void) +{ + static GQuark quark = 0; + if (!quark) + quark = g_quark_from_static_string ("gpm_kbd_backlight_error"); + return quark; +} + +/** + * gpm_kbd_backlight_get_brightness: + * @backlight: + * @brightness: + * @error: + * + * Return value: + */ +gboolean +gpm_kbd_backlight_get_brightness (GpmKbdBacklight *backlight, + guint *brightness, + GError **error) +{ + g_return_val_if_fail (backlight != NULL, FALSE); + g_return_val_if_fail (GPM_IS_KBD_BACKLIGHT (backlight), FALSE); + g_return_val_if_fail (brightness != NULL, FALSE); + + if (backlight->priv->can_dim == FALSE) { + g_set_error_literal (error, gpm_kbd_backlight_error_quark (), + GPM_KBD_BACKLIGHT_ERROR_HARDWARE_NOT_PRESENT, + "Dim capable hardware not present"); + return FALSE; + } + + *brightness = backlight->priv->brightness_percent; + return TRUE; +} + +static gboolean +gpm_kbd_backlight_set (GpmKbdBacklight *backlight, + guint percentage) +{ + gint scale; + guint goal; + + g_return_val_if_fail (GPM_IS_KBD_BACKLIGHT (backlight), FALSE); + /* if we're setting the same we are, don't bother */ + //g_return_val_if_fail (backlight->priv->brightness_percent != percentage, FALSE); + + goal = gpm_discrete_from_percent (percentage, backlight->priv->max_brightness); + scale = percentage > backlight->priv->brightness_percent ? 1 : -1; + + /* step loop down by 1 for a dimming effect */ + while (backlight->priv->brightness != goal) { + backlight->priv->brightness += scale; + backlight->priv->brightness_percent = gpm_discrete_to_percent (backlight->priv->brightness, backlight->priv->max_brightness); + + g_dbus_proxy_call (backlight->priv->upower_proxy, + "SetBrightness", + g_variant_new ("(i)", (gint) backlight->priv->brightness), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + NULL, + NULL); + } + + return TRUE; +} + +/** + * gpm_kbd_backlight_brightness_up: + **/ +static gboolean +gpm_kbd_backlight_brightness_up (GpmKbdBacklight *backlight) +{ + guint new; + + new = MIN (backlight->priv->brightness_percent + GPM_KBD_BACKLIGHT_STEP, 100u); + return gpm_kbd_backlight_set (backlight, new); +} + +/** + * gpm_kbd_backlight_brightness_down: + **/ +static gboolean +gpm_kbd_backlight_brightness_down (GpmKbdBacklight *backlight) +{ + guint new; + + // we can possibly go below 0 here, so by converting to a gint we avoid underflow errors. + new = MAX ((gint) backlight->priv->brightness_percent - GPM_KBD_BACKLIGHT_STEP, 0); + return gpm_kbd_backlight_set (backlight, new); +} + +/** + * gpm_kbd_backlight_set_brightness: + * @backlight: + * @percentage: + * @error: + * + * Return value: + **/ +gboolean +gpm_kbd_backlight_set_brightness (GpmKbdBacklight *backlight, + guint percentage, + GError **error) +{ + gboolean ret; + + g_return_val_if_fail (backlight != NULL, FALSE); + g_return_val_if_fail (GPM_IS_KBD_BACKLIGHT (backlight), FALSE); + + if (backlight->priv->can_dim == FALSE) { + g_set_error_literal (error, gpm_kbd_backlight_error_quark (), + GPM_KBD_BACKLIGHT_ERROR_HARDWARE_NOT_PRESENT, + "Dim capable hardware not present"); + return FALSE; + } + + backlight->priv->master_percentage = percentage; + + ret = gpm_kbd_backlight_set (backlight, percentage); + if (!ret) { + g_set_error_literal (error, gpm_kbd_backlight_error_quark (), + GPM_KBD_BACKLIGHT_ERROR_GENERAL, + "Cannot set keyboard backlight brightness"); + } + + return ret; +} + +static void +gpm_kbd_backlight_on_brightness_changed (GpmKbdBacklight *backlight, + guint value) +{ + backlight->priv->brightness = value; + backlight->priv->brightness_percent = gpm_discrete_to_percent (value, backlight->priv->max_brightness); + backlight->priv->master_percentage = backlight->priv->brightness_percent; + g_signal_emit (backlight, signals [BRIGHTNESS_CHANGED], 0, backlight->priv->brightness_percent); +} + +/** + * gpm_kbd_backlight_on_dbus_signal: + **/ +static void +gpm_kbd_backlight_on_dbus_signal (GDBusProxy *proxy, + gchar *sender_name, + gchar *signal_name, + GVariant *parameters, + gpointer user_data) +{ + guint value; + GpmKbdBacklight *backlight = GPM_KBD_BACKLIGHT (user_data); + + if (g_strcmp0 (signal_name, "BrightnessChanged") == 0) { + g_variant_get (parameters, "(i)", &value); + gpm_kbd_backlight_on_brightness_changed (backlight, value); + return; + } + + g_assert_not_reached (); +} + +/** + * gpm_kbd_backlight_dbus_method_call: + * @connection: + * @object_path: + * @interface_name: + * @method_name: + * @parameters: + * @invocation: + * @user_data: + **/ +static void +gpm_kbd_backlight_dbus_method_call (GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *method_name, + GVariant *parameters, + GDBusMethodInvocation *invocation, + gpointer user_data) +{ + guint value; + gboolean ret; + GError *error = NULL; + GpmKbdBacklight *backlight = GPM_KBD_BACKLIGHT (user_data); + + if (g_strcmp0 (method_name, "GetBrightness") == 0) { + ret = gpm_kbd_backlight_get_brightness (backlight, &value, &error); + if (!ret) { + g_dbus_method_invocation_return_gerror (invocation, error); + g_error_free (error); + } else { + g_dbus_method_invocation_return_value (invocation, g_variant_new ("(u)", value)); + } + return; + } + + if (g_strcmp0 (method_name, "SetBrightness") == 0) { + g_variant_get (parameters, "(u)", &value); + ret = gpm_kbd_backlight_set_brightness (backlight, value, &error); + if (!ret) { + g_dbus_method_invocation_return_gerror (invocation, error); + g_error_free (error); + } else { + g_dbus_method_invocation_return_value (invocation, NULL); + } + return; + } + + g_assert_not_reached (); +} + + +/** + * gpm_kbd_backlight_dbus_property_get: + * @sender: + * @object_path: + * @interface_name: + * @property_name: + * @error: + * @user_data: + * + * Return value: + **/ +static GVariant * +gpm_kbd_backlight_dbus_property_get (GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GError **error, + gpointer user_data) +{ + /* Do nothing, we have no props */ + return NULL; +} + +/** + * gpm_kbd_backlight_dbus_property_set: + * @connection: + * @sender: + * @object_path: + * @interface_name: + * @property_name: + * + * Return value: + **/ +static gboolean +gpm_kbd_backlight_dbus_property_set (GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GVariant *value, + GError **error, + gpointer user_data) +{ + /* do nothing, no properties defined */ + return FALSE; +} + +/** + * gpm_kbd_backlight_register_dbus: + * @backlight: + * @connection: + * @error: + **/ +void +gpm_kbd_backlight_register_dbus (GpmKbdBacklight *backlight, + GDBusConnection *connection, + GError **error) +{ + GDBusNodeInfo *node_info; + GDBusInterfaceInfo *interface_info; + GDBusInterfaceVTable interface_vtable = { + gpm_kbd_backlight_dbus_method_call, + gpm_kbd_backlight_dbus_property_get, + gpm_kbd_backlight_dbus_property_set + }; + + node_info = g_dbus_node_info_new_for_xml (kbd_backlight_introspection, NULL); + interface_info = g_dbus_node_info_lookup_interface (node_info, GPM_DBUS_INTERFACE_BACKLIGHT); + + backlight->priv->bus_connection = g_object_ref (connection); + backlight->priv->bus_object_id = + g_dbus_connection_register_object (connection, + GPM_DBUS_PATH_KBD_BACKLIGHT, + interface_info, + &interface_vtable, + backlight, + NULL, + error); + g_dbus_node_info_unref (node_info); +} + +static gboolean +gpm_kbd_backlight_evaluate_power_source_and_set (GpmKbdBacklight *backlight) +{ + gfloat brightness; + gfloat scale; + gboolean on_battery; + gboolean battery_reduce; + guint value; + gboolean ret; + + brightness = backlight->priv->master_percentage; + + g_object_get (backlight->priv->client, + "on-battery", + &on_battery, + NULL); + + battery_reduce = g_settings_get_boolean (backlight->priv->settings, GPM_SETTINGS_KBD_BACKLIGHT_BATT_REDUCE); + + if (on_battery && battery_reduce) { + value = g_settings_get_int (backlight->priv->settings, GPM_SETTINGS_KBD_BRIGHTNESS_DIM_BY_ON_BATT); + + if (value > 100) { + g_warning ("Cannot scale brightness down by more than 100%%. Scaling by 50%%"); + value = 50; + } + + scale = (100 - value) / 100.0f; + brightness *= scale; + + value = (guint) brightness; + + } else { + value = g_settings_get_int (backlight->priv->settings, GPM_SETTINGS_KBD_BRIGHTNESS_ON_AC); + } + + ret = gpm_kbd_backlight_set (backlight, value); + return ret; +} + +/** + * gpm_kbd_backlight_control_resume_cb: + * @control: The control class instance + * @backlight: This backlight class instance + * + * Just make sure that the backlight is back on + **/ +static void +gpm_kbd_backlight_control_resume_cb (GpmControl *control, + GpmControlAction action, + GpmKbdBacklight *backlight) +{ + gboolean ret; + + ret = gpm_kbd_backlight_evaluate_power_source_and_set (backlight); + if (!ret) + g_warning ("Failed to turn kbd brightness back on after resuming"); +} + +/** + * gpm_kbd_backlight_client_changed_cb: + * @client: The up_client class instance + * @backlight: This class instance + * + * Does the actions when the ac power source is inserted/removed. + **/ +static void +gpm_kbd_backlight_client_changed_cb (UpClient *client, + GpmKbdBacklight *backlight) +{ + gpm_kbd_backlight_evaluate_power_source_and_set (backlight); +} + +/** + * gpm_kbd_backlight_button_pressed_cb: + * @power: The power class instance + * @type: The button type, but here we only care about keyboard brightness buttons + * @backlight: This class instance + **/ +static void +gpm_kbd_backlight_button_pressed_cb (GpmButton *button, + const gchar *type, + GpmKbdBacklight *backlight) +{ + static guint saved_brightness; + + saved_brightness = backlight->priv->master_percentage; + + if (g_strcmp0 (type, GPM_BUTTON_KBD_BRIGHT_UP) == 0) { + gpm_kbd_backlight_brightness_up (backlight); + + } else if (g_strcmp0 (type, GPM_BUTTON_KBD_BRIGHT_DOWN) == 0) { + gpm_kbd_backlight_brightness_down (backlight); + + } else if (g_strcmp0 (type, GPM_BUTTON_KBD_BRIGHT_TOGGLE) == 0) { + if (backlight->priv->master_percentage == 0) { + /* backlight is off turn it back on */ + gpm_kbd_backlight_set (backlight, saved_brightness); + } else { + /* backlight is on, turn it off and save current value */ + saved_brightness = backlight->priv->master_percentage; + gpm_kbd_backlight_set (backlight, 0); + } + } +} + +/** + * gpm_kbd_backlight_idle_changed_cb: + * @idle: The idle class instance + * @mode: The idle mode, e.g. GPM_IDLE_MODE_BLANK + * @backlight: This class instance + * + * This callback is called when mate-screensaver detects that the idle state + * has changed. GPM_IDLE_MODE_BLANK is when the session has become inactive, + * and GPM_IDLE_MODE_SLEEP is where the session has become inactive, AND the + * session timeout has elapsed for the idle action. + **/ +static void +gpm_kbd_backlight_idle_changed_cb (GpmIdle *idle, + GpmIdleMode mode, + GpmKbdBacklight *backlight) +{ + gfloat brightness; + gfloat scale; + guint value; + gboolean lid_closed; + gboolean on_battery; + gboolean enable_action; + + lid_closed = gpm_button_is_lid_closed (backlight->priv->button); + + if (lid_closed) + return; + + g_object_get (backlight->priv->client, + "on-battery", + &on_battery, + NULL); + + enable_action = on_battery + ? g_settings_get_boolean (backlight->priv->settings_gsd, GPM_SETTINGS_IDLE_DIM_BATT) + : g_settings_get_boolean (backlight->priv->settings_gsd, GPM_SETTINGS_IDLE_DIM_AC); + + if (!enable_action) + return; + + if (mode == GPM_IDLE_MODE_NORMAL) { + backlight->priv->master_percentage = 100; + gpm_kbd_backlight_evaluate_power_source_and_set (backlight); + } else if (mode == GPM_IDLE_MODE_DIM) { + brightness = backlight->priv->master_percentage; + value = g_settings_get_int (backlight->priv->settings, GPM_SETTINGS_KBD_BRIGHTNESS_DIM_BY_ON_IDLE); + + if (value > 100) { + g_warning ("Cannot scale brightness down by more than 100%%. Scaling by 50%%"); + value = 50; + } + + scale = (100 - value) / 100.0f; + brightness *= scale; + + value = (guint) brightness; + gpm_kbd_backlight_set (backlight, value); + } else if (mode == GPM_IDLE_MODE_BLANK) { + gpm_kbd_backlight_set (backlight, 0u); + } +} + +/** + * gpm_kbd_backlight_finalize: + * @object: + **/ +static void +gpm_kbd_backlight_finalize (GObject *object) +{ + GpmKbdBacklight *backlight; + + g_return_if_fail (object != NULL); + g_return_if_fail (GPM_IS_KBD_BACKLIGHT (object)); + + backlight = GPM_KBD_BACKLIGHT (object); + + if (backlight->priv->upower_proxy != NULL) { + g_object_unref (backlight->priv->upower_proxy); + } + if (backlight->priv->bus_connection != NULL) { + g_dbus_connection_unregister_object (backlight->priv->bus_connection, + backlight->priv->bus_object_id); + g_object_unref (backlight->priv->bus_connection); + } + + g_timer_destroy (backlight->priv->idle_timer); + + g_object_unref (backlight->priv->control); + g_object_unref (backlight->priv->settings); + g_object_unref (backlight->priv->settings_gsd); + g_object_unref (backlight->priv->client); + g_object_unref (backlight->priv->button); + g_object_unref (backlight->priv->idle); + + g_return_if_fail (backlight->priv != NULL); + G_OBJECT_CLASS (gpm_kbd_backlight_parent_class)->finalize (object); +} + +/** + * gpm_kbd_backlight_class_init: + * @klass: + **/ +static void +gpm_kbd_backlight_class_init (GpmKbdBacklightClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + object_class->finalize = gpm_kbd_backlight_finalize; + + signals [BRIGHTNESS_CHANGED] = + g_signal_new ("brightness-changed", + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GpmKbdBacklightClass, brightness_changed), + NULL, + NULL, + g_cclosure_marshal_VOID__UINT, + G_TYPE_NONE, + 1, + G_TYPE_UINT); + + g_type_class_add_private (klass, sizeof (GpmKbdBacklightPrivate)); +} + +/** + * gpm_kbd_backlight_init: + * @backlight: This KbdBacklight class instance + * + * Initializes the KbdBacklight class. + **/ +static void +gpm_kbd_backlight_init (GpmKbdBacklight *backlight) +{ + GVariant *u_brightness; + GVariant *u_max_brightness; + GError *error = NULL; + + backlight->priv = GPM_KBD_BACKLIGHT_GET_PRIVATE (backlight); + + backlight->priv->upower_proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, + G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES, + NULL, + "org.freedesktop.UPower", + "/org/freedesktop/UPower/KbdBacklight", + "org.freedesktop.UPower.KbdBacklight", + NULL, + &error); + if (backlight->priv->upower_proxy == NULL) { + g_printerr ("Could not connect to UPower system bus: %s", error->message); + g_error_free (error); + goto err; + } + + g_signal_connect (backlight->priv->upower_proxy, + "g-signal", + G_CALLBACK (gpm_kbd_backlight_on_dbus_signal), + backlight); + + u_brightness = g_dbus_proxy_call_sync (backlight->priv->upower_proxy, + "GetBrightness", + NULL, + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + &error); + if (u_brightness == NULL) { + g_warning ("Failed to get brightness: %s", error->message); + g_error_free (error); + goto err; + } + + error = NULL; + u_max_brightness = g_dbus_proxy_call_sync (backlight->priv->upower_proxy, + "GetMaxBrightness", + NULL, + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + &error); + if (u_max_brightness == NULL) { + g_warning ("Failed to get max brightness: %s", error->message); + g_error_free (error); + g_variant_unref (u_brightness); + goto err; + } + + g_variant_get (u_brightness, "(i)", &backlight->priv->brightness); + g_variant_get (u_max_brightness, "(i)", &backlight->priv->max_brightness); + + backlight->priv->brightness_percent = gpm_discrete_to_percent (backlight->priv->brightness, + backlight->priv->max_brightness); + + g_variant_unref (u_brightness); + g_variant_unref (u_max_brightness); + goto noerr; + +err: + backlight->priv->brightness = 0; + backlight->priv->brightness_percent = 100; + backlight->priv->max_brightness = 0; + +noerr: + /* Initialize the master to full power. It will get scaled if needed */ + backlight->priv->master_percentage = 100u; + + backlight->priv->idle_timer = g_timer_new (); + backlight->priv->can_dim = backlight->priv->max_brightness > 1; + + /* Use upower for ac changed signal */ + backlight->priv->client = up_client_new (); + g_signal_connect (backlight->priv->client, "changed", + G_CALLBACK (gpm_kbd_backlight_client_changed_cb), backlight); + + backlight->priv->settings = g_settings_new (GPM_SETTINGS_SCHEMA); + //backlight->priv->settings_gsd = g_settings_new (GSD_SETTINGS_SCHEMA); + + /* watch for kbd brightness up and down button presses */ + backlight->priv->button = gpm_button_new (); + g_signal_connect (backlight->priv->button, "button-pressed", + G_CALLBACK (gpm_kbd_backlight_button_pressed_cb), backlight); + + backlight->priv->idle = gpm_idle_new (); + g_signal_connect (backlight->priv->idle, "idle-changed", + G_CALLBACK (gpm_kbd_backlight_idle_changed_cb), backlight); + + /* since gpm is just starting we can pretty safely assume that we're not idle */ + backlight->priv->system_is_idle = FALSE; + backlight->priv->idle_dim_timeout = g_settings_get_int (backlight->priv->settings_gsd, GPM_SETTINGS_IDLE_DIM_TIME); + gpm_idle_set_timeout_dim (backlight->priv->idle, backlight->priv->idle_dim_timeout); + + /* make sure we turn the keyboard backlight back on after resuming */ + backlight->priv->control = gpm_control_new (); + g_signal_connect (backlight->priv->control, "resume", + G_CALLBACK (gpm_kbd_backlight_control_resume_cb), backlight); + + /* set initial values for whether we're on AC or battery*/ + gpm_kbd_backlight_evaluate_power_source_and_set (backlight); +} + +/** + * gpm_kbd_backlight_new: + * Return value: A new GpmKbdBacklight class instance. + **/ +GpmKbdBacklight * +gpm_kbd_backlight_new (void) +{ + GpmKbdBacklight *backlight = g_object_new (GPM_TYPE_KBD_BACKLIGHT, NULL); + return backlight; +} + diff --git a/src/gpm-kbd-backlight.h b/src/gpm-kbd-backlight.h new file mode 100644 index 0000000..78975b5 --- /dev/null +++ b/src/gpm-kbd-backlight.h @@ -0,0 +1,79 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- + * + * Copyright (C) 2010 Alex Launi <alex launi canonical 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef __GPM_KBD_BACKLIGHT_H +#define __GPM_KBD_BACKLIGHT_H + +#include <gio/gio.h> +#include <glib.h> +#include <glib-object.h> + +G_BEGIN_DECLS + +#define GPM_TYPE_KBD_BACKLIGHT (gpm_kbd_backlight_get_type ()) +#define GPM_KBD_BACKLIGHT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GPM_TYPE_KBD_BACKLIGHT, GpmKbdBacklight)) +#define GPM_KBD_BACKLIGHT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GPM_TYPE_KBD_BACKLIGHT, GpmKbdBacklightClass)) +#define GPM_IS_KBD_BACKLIGHT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GPM_TYPE_KBD_BACKLIGHT)) +#define GPM_IS_KBD_BACKLIGHT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GPM_TYPE_KBD_BACKLIGHT)) +#define GPM_KBD_BACKLIGHT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GPM_TYPE_KBD_BACKLIGHT, GpmKbdBacklightClass)) + +#define GPM_KBD_BACKLIGHT_DIM_INTERVAL 5 /* ms */ +#define GPM_KBD_BACKLIGHT_STEP 10 /* change by 10% each step */ + +typedef struct GpmKbdBacklightPrivate GpmKbdBacklightPrivate; + +typedef struct +{ + GObject parent; + GpmKbdBacklightPrivate *priv; +} GpmKbdBacklight; + +typedef struct +{ + GObjectClass parent_class; + void (* brightness_changed) (GpmKbdBacklight *backlight, + gint brightness); +} GpmKbdBacklightClass; + +typedef enum +{ + GPM_KBD_BACKLIGHT_ERROR_GENERAL, + GPM_KBD_BACKLIGHT_ERROR_DATA_NOT_AVAILABLE, + GPM_KBD_BACKLIGHT_ERROR_HARDWARE_NOT_PRESENT +} GpmKbdBacklightError; + +GType gpm_kbd_backlight_get_type (void); +GQuark gpm_kbd_backlight_error_quark (void); +GpmKbdBacklight *gpm_kbd_backlight_new (void); +gboolean gpm_kbd_backlight_get_brightness (GpmKbdBacklight *backlight, + guint *brightness, + GError **error); +gboolean gpm_kbd_backlight_set_brightness (GpmKbdBacklight *backlight, + guint brightness, + GError **error); +void gpm_kbd_backlight_register_dbus (GpmKbdBacklight *backlight, + GDBusConnection *connection, + GError **error); + +G_END_DECLS + +#endif /* __GPM_KBD_BACKLIGHT_H */ + diff --git a/src/gpm-manager.c b/src/gpm-manager.c index ec787be..9ee8781 100644 --- a/src/gpm-manager.c +++ b/src/gpm-manager.c @@ -38,7 +38,6 @@ #include <gtk/gtk.h> #include <dbus/dbus-glib.h> #include <dbus/dbus-glib-lowlevel.h> -#include <mateconf/mateconf-client.h> #include <canberra-gtk.h> #include <libupower-glib/upower.h> #include <libmatenotify/notify.h> @@ -54,9 +53,9 @@ #include "gpm-manager.h" #include "gpm-screensaver.h" #include "gpm-backlight.h" +#include "gpm-kbd-backlight.h" #include "gpm-session.h" #include "gpm-stock-icons.h" -#include "gpm-prefs-server.h" #include "gpm-tray-icon.h" #include "gpm-engine.h" #include "gpm-upower.h" @@ -77,16 +76,16 @@ static void gpm_manager_finalize (GObject *object); struct GpmManagerPrivate { GpmButton *button; - MateConfClient *conf; + GSettings *settings; GpmDisks *disks; GpmDpms *dpms; GpmIdle *idle; - GpmPrefsServer *prefs_server; GpmControl *control; GpmScreensaver *screensaver; GpmTrayIcon *tray_icon; GpmEngine *engine; GpmBacklight *backlight; + GpmKbdBacklight *kbd_backlight; EggConsoleKit *console; guint32 screensaver_ac_throttle_id; guint32 screensaver_dpms_throttle_id; @@ -200,7 +199,7 @@ gpm_manager_play_loop_start (GpmManager *manager, GpmManagerSound action, gboole gint retval; ca_context *context; - ret = mateconf_client_get_bool (manager->priv->conf, GPM_CONF_UI_ENABLE_SOUND, NULL); + ret = g_settings_get_boolean (manager->priv->settings, GPM_SETTINGS_ENABLE_SOUND); if (!ret && !force) { egg_debug ("ignoring sound due to policy"); return FALSE; @@ -261,7 +260,7 @@ gpm_manager_play (GpmManager *manager, GpmManagerSound action, gboolean force) gint retval; ca_context *context; - ret = mateconf_client_get_bool (manager->priv->conf, GPM_CONF_UI_ENABLE_SOUND, NULL); + ret = g_settings_get_boolean (manager->priv->settings, GPM_SETTINGS_ENABLE_SOUND); if (!ret && !force) { egg_debug ("ignoring sound due to policy"); return FALSE; @@ -356,11 +355,11 @@ gpm_manager_sync_policy_sleep (GpmManager *manager) guint sleep_computer; if (!manager->priv->on_battery) { - sleep_computer = mateconf_client_get_int (manager->priv->conf, GPM_CONF_TIMEOUT_SLEEP_COMPUTER_AC, NULL); - sleep_display = mateconf_client_get_int (manager->priv->conf, GPM_CONF_TIMEOUT_SLEEP_DISPLAY_AC, NULL); + sleep_computer = g_settings_get_int (manager->priv->settings, GPM_SETTINGS_SLEEP_COMPUTER_AC); + sleep_display = g_settings_get_int (manager->priv->settings, GPM_SETTINGS_SLEEP_DISPLAY_AC); } else { - sleep_computer = mateconf_client_get_int (manager->priv->conf, GPM_CONF_TIMEOUT_SLEEP_COMPUTER_BATT, NULL); - sleep_display = mateconf_client_get_int (manager->priv->conf, GPM_CONF_TIMEOUT_SLEEP_DISPLAY_BATT, NULL); + sleep_computer = g_settings_get_int (manager->priv->settings, GPM_SETTINGS_SLEEP_COMPUTER_BATT); + sleep_display = g_settings_get_int (manager->priv->settings, GPM_SETTINGS_SLEEP_DISPLAY_BATT); } /* set the new sleep (inactivity) value */ @@ -375,7 +374,7 @@ gpm_manager_sync_policy_sleep (GpmManager *manager) * Turn off the backlight of the LCD when we shut the lid, and lock * if required. This is required because some laptops do not turn off the * LCD backlight when the lid is closed. - * See http://bugzilla.mate.org/show_bug.cgi?id=321313 + * See http://bugzilla.gnome.org/show_bug.cgi?id=321313 * * Return value: Success. **/ @@ -387,7 +386,7 @@ gpm_manager_blank_screen (GpmManager *manager, GError **noerror) GError *error = NULL; do_lock = gpm_control_get_lock_policy (manager->priv->control, - GPM_CONF_LOCK_ON_BLANK_SCREEN); + GPM_SETTINGS_LOCK_ON_BLANK_SCREEN); if (do_lock) { if (!gpm_screensaver_lock (manager->priv->screensaver)) egg_debug ("Could not lock screen via mate-screensaver"); @@ -423,7 +422,7 @@ gpm_manager_unblank_screen (GpmManager *manager, GError **noerror) ret = FALSE; } - do_lock = gpm_control_get_lock_policy (manager->priv->control, GPM_CONF_LOCK_ON_BLANK_SCREEN); + do_lock = gpm_control_get_lock_policy (manager->priv->control, GPM_SETTINGS_LOCK_ON_BLANK_SCREEN); if (do_lock) gpm_screensaver_poke (manager->priv->screensaver); return ret; @@ -534,7 +533,7 @@ gpm_manager_sleep_failure_response_cb (GtkDialog *dialog, gint response_id, GpmM /* user clicked the help button */ if (response_id == GTK_RESPONSE_HELP) { - uri = mateconf_client_get_string (manager->priv->conf, GPM_CONF_NOTIFY_SLEEP_FAILED_URI, NULL); + uri = g_settings_get_string (manager->priv->settings, GPM_SETTINGS_NOTIFY_SLEEP_FAILED_URI); screen = gdk_screen_get_default(); ret = gtk_show_uri (screen, uri, gtk_get_current_event_time (), &error); if (!ret) { @@ -562,13 +561,13 @@ gpm_manager_sleep_failure (GpmManager *manager, gboolean is_suspend, const gchar const gchar *icon; GtkWidget *dialog; - /* only show this if specified in mateconf */ - show_sleep_failed = mateconf_client_get_bool (manager->priv->conf, GPM_CONF_NOTIFY_SLEEP_FAILED, NULL); + /* only show this if specified in settings */ + show_sleep_failed = g_settings_get_boolean (manager->priv->settings, GPM_SETTINGS_NOTIFY_SLEEP_FAILED); egg_debug ("sleep failed"); gpm_manager_play (manager, GPM_MANAGER_SOUND_SUSPEND_ERROR, TRUE); - /* only emit if in MateConf */ + /* only emit if specified in settings */ if (!show_sleep_failed) goto out; @@ -599,7 +598,7 @@ gpm_manager_sleep_failure (GpmManager *manager, gboolean is_suspend, const gchar gtk_window_set_icon_name (GTK_WINDOW(dialog), icon); /* show a button? */ - uri = mateconf_client_get_string (manager->priv->conf, GPM_CONF_NOTIFY_SLEEP_FAILED_URI, NULL); + uri = g_settings_get_string (manager->priv->settings, GPM_SETTINGS_NOTIFY_SLEEP_FAILED_URI); if (uri != NULL && uri[0] != '\0') { /* TRANSLATORS: button text, visit the suspend help website */ gtk_dialog_add_button (GTK_DIALOG (dialog), _("Visit help page"), GTK_RESPONSE_HELP); @@ -665,21 +664,19 @@ gpm_manager_action_hibernate (GpmManager *manager, const gchar *reason) * @policy: The policy that we should do, e.g. "suspend" * @reason: The reason we are performing the policy action, e.g. "battery critical" * - * Does one of the policy actions specified in mateconf. + * Does one of the policy actions specified in the settings. **/ static gboolean gpm_manager_perform_policy (GpmManager *manager, const gchar *policy_key, const gchar *reason) { - gchar *action = NULL; GpmActionPolicy policy; /* are we inhibited? */ if (gpm_manager_is_inhibit_valid (manager, FALSE, "policy action") == FALSE) return FALSE; - action = mateconf_client_get_string (manager->priv->conf, policy_key, NULL); - egg_debug ("action: %s set to %s (%s)", policy_key, action, reason); - policy = gpm_action_policy_from_string (action); + policy = g_settings_get_enum (manager->priv->settings, policy_key); + egg_debug ("action: %s set to %i (%s)", policy_key, policy, reason); if (policy == GPM_ACTION_POLICY_NOTHING) { egg_debug ("doing nothing, reason: %s", reason); @@ -703,44 +700,30 @@ gpm_manager_perform_policy (GpmManager *manager, const gchar *policy_key, const gpm_session_logout (session); g_object_unref (session); } else { - egg_warning ("unknown action %s", action); + egg_warning ("unknown action %i", policy); } - g_free (action); return TRUE; } /** - * gpm_manager_get_preferences_options: - **/ -gboolean -gpm_manager_get_preferences_options (GpmManager *manager, gint *capability, GError **error) -{ - g_return_val_if_fail (manager != NULL, FALSE); - g_return_val_if_fail (GPM_IS_MANAGER (manager), FALSE); - return gpm_prefs_server_get_capability (manager->priv->prefs_server, capability); -} - -/** * gpm_manager_idle_do_sleep: * @manager: This class instance * * This callback is called when we want to sleep. Use the users - * preference from mateconf, but change it if we can't do the action. + * preference from the settings, but change it if we can't do the action. **/ static void gpm_manager_idle_do_sleep (GpmManager *manager) { - gchar *action = NULL; gboolean ret; GError *error = NULL; GpmActionPolicy policy; if (!manager->priv->on_battery) - action = mateconf_client_get_string (manager->priv->conf, GPM_CONF_ACTIONS_SLEEP_TYPE_AC, NULL); + policy = g_settings_get_enum (manager->priv->settings, GPM_SETTINGS_ACTION_SLEEP_TYPE_AC); else - action = mateconf_client_get_string (manager->priv->conf, GPM_CONF_ACTIONS_SLEEP_TYPE_BATT, NULL); - policy = gpm_action_policy_from_string (action); + policy = g_settings_get_enum (manager->priv->settings, GPM_SETTINGS_ACTION_SLEEP_TYPE_BATT); if (policy == GPM_ACTION_POLICY_NOTHING) { egg_debug ("doing nothing as system idle action"); @@ -773,7 +756,6 @@ gpm_manager_idle_do_sleep (GpmManager *manager) } } } - g_free (action); } /** @@ -837,13 +819,13 @@ gpm_manager_lid_button_pressed (GpmManager *manager, gboolean pressed) if (!manager->priv->on_battery) { egg_debug ("Performing AC policy"); - gpm_manager_perform_policy (manager, GPM_CONF_BUTTON_LID_AC, + gpm_manager_perform_policy (manager, GPM_SETTINGS_BUTTON_LID_AC, "The lid has been closed on ac power."); return; } egg_debug ("Performing battery policy"); - gpm_manager_perform_policy (manager, GPM_CONF_BUTTON_LID_BATT, + gpm_manager_perform_policy (manager, GPM_SETTINGS_BUTTON_LID_BATT, "The lid has been closed on battery power."); } @@ -926,13 +908,13 @@ gpm_manager_button_pressed_cb (GpmButton *button, const gchar *type, GpmManager } if (g_strcmp0 (type, GPM_BUTTON_POWER) == 0) { - gpm_manager_perform_policy (manager, GPM_CONF_BUTTON_POWER, "The power button has been pressed."); + gpm_manager_perform_policy (manager, GPM_SETTINGS_BUTTON_POWER, "The power button has been pressed."); } else if (g_strcmp0 (type, GPM_BUTTON_SLEEP) == 0) { - gpm_manager_perform_policy (manager, GPM_CONF_BUTTON_SUSPEND, "The suspend button has been pressed."); + gpm_manager_perform_policy (manager, GPM_SETTINGS_BUTTON_SUSPEND, "The suspend button has been pressed."); } else if (g_strcmp0 (type, GPM_BUTTON_SUSPEND) == 0) { - gpm_manager_perform_policy (manager, GPM_CONF_BUTTON_SUSPEND, "The suspend button has been pressed."); + gpm_manager_perform_policy (manager, GPM_SETTINGS_BUTTON_SUSPEND, "The suspend button has been pressed."); } else if (g_strcmp0 (type, GPM_BUTTON_HIBERNATE) == 0) { - gpm_manager_perform_policy (manager, GPM_CONF_BUTTON_HIBERNATE, "The hibernate button has been pressed."); + gpm_manager_perform_policy (manager, GPM_SETTINGS_BUTTON_HIBERNATE, "The hibernate button has been pressed."); } else if (g_strcmp0 (type, GPM_BUTTON_LID_OPEN) == 0) { gpm_manager_lid_button_pressed (manager, FALSE); } else if (g_strcmp0 (type, GPM_BUTTON_LID_CLOSED) == 0) { @@ -971,11 +953,11 @@ gpm_manager_get_spindown_timeout (GpmManager *manager) /* get policy */ if (!manager->priv->on_battery) { - enabled = mateconf_client_get_bool (manager->priv->conf, GPM_CONF_DISKS_SPINDOWN_ENABLE_AC, NULL); - timeout = mateconf_client_get_int (manager->priv->conf, GPM_CONF_DISKS_SPINDOWN_TIMEOUT_AC, NULL); + enabled = g_settings_get_boolean (manager->priv->settings, GPM_SETTINGS_SPINDOWN_ENABLE_AC); + timeout = g_settings_get_int (manager->priv->settings, GPM_SETTINGS_SPINDOWN_TIMEOUT_AC); } else { - enabled = mateconf_client_get_bool (manager->priv->conf, GPM_CONF_DISKS_SPINDOWN_ENABLE_BATT, NULL); - timeout = mateconf_client_get_int (manager->priv->conf, GPM_CONF_DISKS_SPINDOWN_TIMEOUT_BATT, NULL); + enabled = g_settings_get_boolean (manager->priv->settings, GPM_SETTINGS_SPINDOWN_ENABLE_BATT); + timeout = g_settings_get_int (manager->priv->settings, GPM_SETTINGS_SPINDOWN_TIMEOUT_BATT); } if (!enabled) timeout = 0; @@ -1046,15 +1028,15 @@ gpm_manager_client_changed_cb (UpClient *client, GpmManager *manager) /* We do the lid close on battery action if the ac adapter is removed when the laptop is closed and on battery. Fixes #331655 */ - event_when_closed = mateconf_client_get_bool (manager->priv->conf, GPM_CONF_ACTIONS_SLEEP_WHEN_CLOSED, NULL); + event_when_closed = g_settings_get_boolean (manager->priv->settings, GPM_SETTINGS_SLEEP_WHEN_CLOSED); /* We keep track of the lid state so we can do the lid close on battery action if the ac adapter is removed when the laptop is closed. Fixes #331655 */ if (event_when_closed && on_battery && lid_is_closed) { - gpm_manager_perform_policy (manager, GPM_CONF_BUTTON_LID_BATT, + gpm_manager_perform_policy (manager, GPM_SETTINGS_BUTTON_LID_BATT, "The lid has been closed, and the ac adapter " - "removed (and mateconf is okay)."); + "removed (and GSettings is okay)."); } } @@ -1074,7 +1056,7 @@ manager_critical_action_do (GpmManager *manager) if (manager->priv->critical_alert_timeout_id) gpm_manager_play_loop_stop (manager); - gpm_manager_perform_policy (manager, GPM_CONF_ACTIONS_CRITICAL_BATT, "Battery is critically low."); + gpm_manager_perform_policy (manager, GPM_SETTINGS_ACTION_CRITICAL_BATT, "Battery is critically low."); return FALSE; } @@ -1091,53 +1073,20 @@ gpm_manager_class_init (GpmManagerClass *klass) } /** - * gpm_conf_mateconf_key_changed_cb: + * gpm_manager_settings_changed_cb: * - * We might have to do things when the mateconf keys change; do them here. + * We might have to do things when the keys change; do them here. **/ static void -gpm_conf_mateconf_key_changed_cb (MateConfClient *client, guint cnxn_id, MateConfEntry *entry, GpmManager *manager) +gpm_manager_settings_changed_cb (GSettings *settings, const gchar *key, GpmManager *manager) { - MateConfValue *value; - - value = mateconf_entry_get_value (entry); - if (value == NULL) - return; - - if (g_strcmp0 (entry->key, GPM_CONF_TIMEOUT_SLEEP_COMPUTER_BATT) == 0 || - g_strcmp0 (entry->key, GPM_CONF_TIMEOUT_SLEEP_COMPUTER_AC) == 0 || - g_strcmp0 (entry->key, GPM_CONF_TIMEOUT_SLEEP_DISPLAY_BATT) == 0 || - g_strcmp0 (entry->key, GPM_CONF_TIMEOUT_SLEEP_DISPLAY_AC) == 0) + if (g_strcmp0 (key, GPM_SETTINGS_SLEEP_COMPUTER_BATT) == 0 || + g_strcmp0 (key, GPM_SETTINGS_SLEEP_COMPUTER_AC) == 0 || + g_strcmp0 (key, GPM_SETTINGS_SLEEP_DISPLAY_BATT) == 0 || + g_strcmp0 (key, GPM_SETTINGS_SLEEP_DISPLAY_AC) == 0) gpm_manager_sync_policy_sleep (manager); } -#if 0 -/** - * gpm_manager_screensaver_auth_request_cb: - * @manager: This manager class instance - * @auth: If we are trying to authenticate - * - * Called when the user is trying or has authenticated - **/ -static void -gpm_manager_screensaver_auth_request_cb (GpmScreensaver *screensaver, gboolean auth_begin, GpmManager *manager) -{ - GError *error = NULL; - - if (auth_begin) { - /* We turn on the monitor unconditionally, as we may be using - * a smartcard to authenticate and DPMS might still be on. - * See #350291 for more details */ - gpm_dpms_set_mode (manager->priv->dpms, GPM_DPMS_MODE_ON, &error); - if (error != NULL) { - egg_warning ("Failed to turn on DPMS: %s", error->message); - g_error_free (error); - error = NULL; - } - } -} -#endif - /** * gpm_manager_perhaps_recall_response_cb: */ @@ -1152,7 +1101,7 @@ gpm_manager_perhaps_recall_response_cb (GtkDialog *dialog, gint response_id, Gpm /* don't show this again */ if (response_id == GTK_RESPONSE_CANCEL) { - mateconf_client_set_bool (manager->priv->conf, GPM_CONF_NOTIFY_PERHAPS_RECALL, FALSE, NULL); + g_settings_set_boolean (manager->priv->settings, GPM_SETTINGS_NOTIFY_PERHAPS_RECALL, FALSE); goto out; } @@ -1230,9 +1179,9 @@ gpm_manager_engine_perhaps_recall_cb (GpmEngine *engine, UpDevice *device, gchar } /* already shown, and dismissed */ - ret = mateconf_client_get_bool (manager->priv->conf, GPM_CONF_NOTIFY_PERHAPS_RECALL, NULL); + ret = g_settings_get_boolean (manager->priv->settings, GPM_SETTINGS_NOTIFY_PERHAPS_RECALL); if (!ret) { - egg_debug ("MateConf prevents notification: %s", GPM_CONF_NOTIFY_PERHAPS_RECALL); + egg_debug ("Gsettings prevents notification: %s", GPM_SETTINGS_NOTIFY_PERHAPS_RECALL); return; } @@ -1310,8 +1259,8 @@ gpm_manager_engine_fully_charged_cb (GpmEngine *engine, UpDevice *device, GpmMan guint plural = 1; const gchar *title; - /* only action this if specified in mateconf */ - ret = mateconf_client_get_bool (manager->priv->conf, GPM_CONF_NOTIFY_FULLY_CHARGED, NULL); + /* only action this if specified in the setings */ + ret = g_settings_get_boolean (manager->priv->settings, GPM_SETTINGS_NOTIFY_FULLY_CHARGED); if (!ret) { egg_debug ("no notification"); goto out; @@ -1364,8 +1313,8 @@ gpm_manager_engine_discharging_cb (GpmEngine *engine, UpDevice *device, GpmManag gchar *icon = NULL; const gchar *kind_desc; - /* only action this if specified in mateconf */ - ret = mateconf_client_get_bool (manager->priv->conf, GPM_CONF_NOTIFY_DISCHARGING, NULL); + /* only action this if specified in the settings */ + ret = g_settings_get_boolean (manager->priv->settings, GPM_SETTINGS_NOTIFY_DISCHARGING); if (!ret) { egg_debug ("no notification"); goto out; @@ -1573,7 +1522,6 @@ gpm_manager_engine_charge_critical_cb (GpmEngine *engine, UpDevice *device, GpmM { const gchar *title = NULL; gchar *message = NULL; - gchar *action; gchar *icon = NULL; UpDeviceKind kind; gdouble percentage; @@ -1609,8 +1557,7 @@ gpm_manager_engine_charge_critical_cb (GpmEngine *engine, UpDevice *device, GpmM } /* we have to do different warnings depending on the policy */ - action = mateconf_client_get_string (manager->priv->conf, GPM_CONF_ACTIONS_CRITICAL_BATT, NULL); - policy = gpm_action_policy_from_string (action); + policy = g_settings_get_enum (manager->priv->settings, GPM_SETTINGS_ACTION_CRITICAL_BATT); /* use different text for different actions */ if (policy == GPM_ACTION_POLICY_NOTHING) { @@ -1630,7 +1577,6 @@ gpm_manager_engine_charge_critical_cb (GpmEngine *engine, UpDevice *device, GpmM message = g_strdup_printf (_("Computer will shutdown very soon unless it is plugged in.")); } - g_free (action); } else if (kind == UP_DEVICE_KIND_UPS) { gchar *remaining_text; @@ -1740,7 +1686,6 @@ static void gpm_manager_engine_charge_action_cb (GpmEngine *engine, UpDevice *device, GpmManager *manager) { const gchar *title = NULL; - gchar *action; gchar *message = NULL; gchar *icon = NULL; UpDeviceKind kind; @@ -1765,8 +1710,7 @@ gpm_manager_engine_charge_action_cb (GpmEngine *engine, UpDevice *device, GpmMan title = _("Laptop battery critically low"); /* we have to do different warnings depending on the policy */ - action = mateconf_client_get_string (manager->priv->conf, GPM_CONF_ACTIONS_CRITICAL_BATT, NULL); - policy = gpm_action_policy_from_string (action); + policy = g_settings_get_enum (manager->priv->settings, GPM_SETTINGS_ACTION_CRITICAL_BATT); /* use different text for different actions */ if (policy == GPM_ACTION_POLICY_NOTHING) { @@ -1793,8 +1737,6 @@ gpm_manager_engine_charge_action_cb (GpmEngine *engine, UpDevice *device, GpmMan "this computer is about to shutdown.")); } - g_free (action); - /* wait 20 seconds for user-panic */ g_timeout_add_seconds (20, (GSourceFunc) manager_critical_action_do, manager); @@ -1803,8 +1745,7 @@ gpm_manager_engine_charge_action_cb (GpmEngine *engine, UpDevice *device, GpmMan title = _("UPS critically low"); /* we have to do different warnings depending on the policy */ - action = mateconf_client_get_string (manager->priv->conf, GPM_CONF_ACTIONS_CRITICAL_UPS, NULL); - policy = gpm_action_policy_from_string (action); + policy = g_settings_get_enum (manager->priv->settings, GPM_SETTINGS_ACTION_CRITICAL_UPS); /* use different text for different actions */ if (policy == GPM_ACTION_POLICY_NOTHING) { @@ -1827,7 +1768,6 @@ gpm_manager_engine_charge_action_cb (GpmEngine *engine, UpDevice *device, GpmMan /* wait 20 seconds for user-panic */ g_timeout_add_seconds (20, (GSourceFunc) manager_critical_action_do, manager); - g_free (action); } /* not all types have actions */ @@ -1910,11 +1850,12 @@ gpm_manager_init (GpmManager *manager) gboolean check_type_cpu; gint timeout; DBusGConnection *connection; + GDBusConnection *g_connection; GError *error = NULL; - guint version; manager->priv = GPM_MANAGER_GET_PRIVATE (manager); connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); + g_connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error); /* init to unthrottled */ manager->priv->screensaver_ac_throttle_id = 0; @@ -1930,15 +1871,14 @@ gpm_manager_init (GpmManager *manager) /* don't apply policy when not active, so listen to ConsoleKit */ manager->priv->console = egg_console_kit_new (); - /* this is a singleton, so we keep a master copy open here */ - manager->priv->prefs_server = gpm_prefs_server_new (); - manager->priv->notification_general = NULL; manager->priv->notification_warning_low = NULL; manager->priv->notification_discharging = NULL; manager->priv->notification_fully_charged = NULL; manager->priv->disks = gpm_disks_new (); - manager->priv->conf = mateconf_client_get_default (); + manager->priv->settings = g_settings_new (GPM_SETTINGS_SCHEMA); + g_signal_connect (manager->priv->settings, "changed", + G_CALLBACK (gpm_manager_settings_changed_cb), manager); manager->priv->client = up_client_new (); g_signal_connect (manager->priv->client, "changed", G_CALLBACK (gpm_manager_client_changed_cb), manager); @@ -1946,28 +1886,6 @@ gpm_manager_init (GpmManager *manager) /* use libmatenotify */ notify_init (GPM_NAME); - /* watch mate-power-manager keys */ - mateconf_client_add_dir (manager->priv->conf, GPM_CONF_DIR, - MATECONF_CLIENT_PRELOAD_RECURSIVE, NULL); - mateconf_client_notify_add (manager->priv->conf, GPM_CONF_DIR, - (MateConfClientNotifyFunc) gpm_conf_mateconf_key_changed_cb, - manager, NULL, NULL); - - /* check to see if the user has installed the schema properly */ - version = mateconf_client_get_int (manager->priv->conf, GPM_CONF_SCHEMA_VERSION, NULL); - if (version != GPM_CONF_SCHEMA_ID) { - gpm_manager_notify (manager, &manager->priv->notification_general, - /* TRANSLATORS: there was in install problem */ - _("Install problem!"), - /* TRANSLATORS: the MateConf schema was not installed properly */ - _("The configuration defaults for MATE Power Manager have not been installed correctly.\n" - "Please contact your computer administrator."), - GPM_MANAGER_NOTIFY_TIMEOUT_LONG, - GTK_STOCK_DIALOG_WARNING, - NOTIFY_URGENCY_NORMAL); - egg_error ("no mateconf schema installed!"); - } - /* coldplug so we are in the correct state at startup */ g_object_get (manager->priv->client, "on-battery", &manager->priv->on_battery, @@ -1979,10 +1897,6 @@ gpm_manager_init (GpmManager *manager) /* try and start an interactive service */ manager->priv->screensaver = gpm_screensaver_new (); -#if 0 - g_signal_connect (manager->priv->screensaver, "auth-request", - G_CALLBACK (gpm_manager_screensaver_auth_request_cb), manager); -#endif /* try an start an interactive service */ manager->priv->backlight = gpm_backlight_new (); @@ -1994,12 +1908,19 @@ gpm_manager_init (GpmManager *manager) G_OBJECT (manager->priv->backlight)); } + manager->priv->kbd_backlight = gpm_kbd_backlight_new (); + if (manager->priv->kbd_backlight != NULL) { + gpm_kbd_backlight_register_dbus (manager->priv->kbd_backlight, + g_connection, + NULL); + } + manager->priv->idle = gpm_idle_new (); g_signal_connect (manager->priv->idle, "idle-changed", G_CALLBACK (gpm_manager_idle_changed_cb), manager); /* set up the check_type_cpu, so we can disable the CPU load check */ - check_type_cpu = mateconf_client_get_bool (manager->priv->conf, GPM_CONF_IDLE_CHECK_CPU, NULL); + check_type_cpu = g_settings_get_boolean (manager->priv->settings, GPM_SETTINGS_IDLE_CHECK_CPU); gpm_idle_set_check_cpu (manager->priv->idle, check_type_cpu); manager->priv->dpms = gpm_dpms_new (); @@ -2078,17 +1999,17 @@ gpm_manager_finalize (GObject *object) if (manager->priv->critical_alert_timeout_id != 0) g_source_remove (manager->priv->critical_alert_timeout_id); - g_object_unref (manager->priv->conf); + g_object_unref (manager->priv->settings); g_object_unref (manager->priv->disks); g_object_unref (manager->priv->dpms); g_object_unref (manager->priv->idle); g_object_unref (manager->priv->engine); g_object_unref (manager->priv->tray_icon); g_object_unref (manager->priv->screensaver); - g_object_unref (manager->priv->prefs_server); g_object_unref (manager->priv->control); g_object_unref (manager->priv->button); g_object_unref (manager->priv->backlight); + g_object_unref (manager->priv->kbd_backlight); g_object_unref (manager->priv->console); g_object_unref (manager->priv->client); g_object_unref (manager->priv->status_icon); diff --git a/src/gpm-manager.h b/src/gpm-manager.h index 1d31b75..a78509a 100644 --- a/src/gpm-manager.h +++ b/src/gpm-manager.h @@ -73,9 +73,6 @@ gboolean gpm_manager_can_suspend (GpmManager *manager, gboolean gpm_manager_can_hibernate (GpmManager *manager, gboolean *can_hibernate, GError **error); -gboolean gpm_manager_get_preferences_options (GpmManager *manager, - gint *capability, - GError **error); G_END_DECLS diff --git a/src/gpm-phone.c b/src/gpm-phone.c index e5455f7..0732c91 100644 --- a/src/gpm-phone.c +++ b/src/gpm-phone.c @@ -26,7 +26,6 @@ #include <glib/gi18n.h> #include <dbus/dbus-glib.h> -#include <mateconf/mateconf-client.h> #include "gpm-phone.h" #include "egg-debug.h" #include "gpm-marshal.h" diff --git a/src/gpm-prefs-core.c b/src/gpm-prefs-core.c index a35b268..da985c1 100644 --- a/src/gpm-prefs-core.c +++ b/src/gpm-prefs-core.c @@ -30,7 +30,6 @@ #include <dbus/dbus-glib.h> #include <math.h> #include <string.h> -#include <mateconf/mateconf-client.h> #include <libupower-glib/upower.h> #include "egg-debug.h" @@ -40,7 +39,7 @@ #include "gpm-common.h" #include "gpm-prefs-core.h" #include "gpm-stock-icons.h" -#include "gpm-prefs-server.h" +#include "gpm-brightness.h" static void gpm_prefs_finalize (GObject *object); @@ -58,8 +57,7 @@ struct GpmPrefsPrivate gboolean can_shutdown; gboolean can_suspend; gboolean can_hibernate; - guint idle_delay; - MateConfClient *conf; + GSettings *settings; EggConsoleKit *console; }; @@ -119,46 +117,6 @@ gpm_prefs_activate_window (GpmPrefs *prefs) } /** - * gpm_dbus_get_caps: - * @method: The g-p-m DBUS method name, e.g. "AllowedSuspend" - **/ -static gint -gpm_dbus_get_caps (GpmPrefs *prefs) -{ - DBusGConnection *connection; - DBusGProxy *proxy = NULL; - GError *error = NULL; - gboolean ret; - gint value = 0; - - connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); - if (connection == NULL) { - egg_warning ("Couldn't connect to g-p-m %s", error->message); - g_error_free (error); - goto out; - } - - proxy = dbus_g_proxy_new_for_name (connection, - GPM_DBUS_SERVICE, - GPM_DBUS_PATH, - GPM_DBUS_INTERFACE); - ret = dbus_g_proxy_call (proxy, "GetPreferencesOptions", &error, - G_TYPE_INVALID, - G_TYPE_INT, &value, - G_TYPE_INVALID); - if (!ret) { - /* abort as the DBUS method failed */ - egg_warning ("GetPreferencesOptions failed: %s", error->message); - g_error_free (error); - goto out; - } -out: - if (proxy != NULL) - g_object_unref (proxy); - return value; -} - -/** * gpm_prefs_help_cb: * @widget: The GtkWidget object * @prefs: This prefs class instance @@ -177,13 +135,10 @@ gpm_prefs_help_cb (GtkWidget *widget, GpmPrefs *prefs) static void gpm_prefs_icon_radio_cb (GtkWidget *widget, GpmPrefs *prefs) { - const gchar *str; gint policy; policy = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), "policy")); - str = gpm_icon_policy_to_string (policy); - egg_debug ("Changing %s to %s", GPM_CONF_UI_ICON_POLICY, str); - mateconf_client_set_string (prefs->priv->conf, GPM_CONF_UI_ICON_POLICY, str, NULL); + g_settings_set_enum (prefs->priv->settings, GPM_SETTINGS_ICON_POLICY, policy); } /** @@ -198,58 +153,6 @@ gpm_prefs_format_percentage_cb (GtkScale *scale, gdouble value) } /** - * gpm_prefs_brightness_slider_changed_cb: - * @range: The GtkRange object - * @gpm_pref_key: The MateConf key for this preference setting. - **/ -static void -gpm_prefs_brightness_slider_changed_cb (GtkRange *range, GpmPrefs *prefs) -{ - gdouble value; - gchar *gpm_pref_key; - - value = gtk_range_get_value (range); - gpm_pref_key = (char *) g_object_get_data (G_OBJECT (range), "conf_key"); - - g_object_set_data (G_OBJECT (range), "conf_key", (gpointer) gpm_pref_key); - egg_debug ("Changing %s to %i", gpm_pref_key, (int) value); - mateconf_client_set_int (prefs->priv->conf, gpm_pref_key, (gint) value, NULL); -} - -/** - * gpm_prefs_setup_brightness_slider: - * @prefs: This prefs class instance - * @widget_name: The GtkWidget name - * @gpm_pref_key: The MateConf key for this preference setting. - **/ -static GtkWidget * -gpm_prefs_setup_brightness_slider (GpmPrefs *prefs, const gchar *widget_name, const gchar *gpm_pref_key) -{ - GtkWidget *widget; - int value; - gboolean is_writable; - - widget = GTK_WIDGET (gtk_builder_get_object (prefs->priv->builder, widget_name)); - - g_signal_connect (G_OBJECT (widget), "format-value", - G_CALLBACK (gpm_prefs_format_percentage_cb), NULL); - - value = mateconf_client_get_int (prefs->priv->conf, gpm_pref_key, NULL); - is_writable = mateconf_client_key_is_writable (prefs->priv->conf, gpm_pref_key, NULL); - - gtk_widget_set_sensitive (widget, is_writable); - - gtk_range_set_value (GTK_RANGE (widget), value); - - g_object_set_data (G_OBJECT (widget), "conf_key", (gpointer) gpm_pref_key); - - g_signal_connect (G_OBJECT (widget), "value-changed", - G_CALLBACK (gpm_prefs_brightness_slider_changed_cb), - prefs); - return widget; -} - -/** * gpm_prefs_action_combo_changed_cb: **/ static void @@ -258,17 +161,14 @@ gpm_prefs_action_combo_changed_cb (GtkWidget *widget, GpmPrefs *prefs) GpmActionPolicy policy; const GpmActionPolicy *actions; const gchar *gpm_pref_key; - const gchar *action; guint active; actions = (const GpmActionPolicy *) g_object_get_data (G_OBJECT (widget), "actions"); - gpm_pref_key = (const gchar *) g_object_get_data (G_OBJECT (widget), "conf_key"); + gpm_pref_key = (const gchar *) g_object_get_data (G_OBJECT (widget), "settings_key"); active = gtk_combo_box_get_active (GTK_COMBO_BOX (widget)); policy = actions[active]; - action = gpm_action_policy_to_string (policy); - egg_debug ("Changing %s to %s", gpm_pref_key, action); - mateconf_client_set_string (prefs->priv->conf, gpm_pref_key, action, NULL); + g_settings_set_enum (prefs->priv->settings, gpm_pref_key, policy); } /** @@ -283,13 +183,13 @@ gpm_prefs_action_time_changed_cb (GtkWidget *widget, GpmPrefs *prefs) guint active; values = (const gint *) g_object_get_data (G_OBJECT (widget), "values"); - gpm_pref_key = (const gchar *) g_object_get_data (G_OBJECT (widget), "conf_key"); + gpm_pref_key = (const gchar *) g_object_get_data (G_OBJECT (widget), "settings_key"); active = gtk_combo_box_get_active (GTK_COMBO_BOX (widget)); value = values[active]; egg_debug ("Changing %s to %i", gpm_pref_key, value); - mateconf_client_set_int (prefs->priv->conf, gpm_pref_key, value, NULL); + g_settings_set_int (prefs->priv->settings, gpm_pref_key, value); } /** @@ -329,14 +229,13 @@ gpm_prefs_actions_destroy_cb (GpmActionPolicy *array) * gpm_prefs_setup_action_combo: * @prefs: This prefs class instance * @widget_name: The GtkWidget name - * @gpm_pref_key: The MateConf key for this preference setting. + * @gpm_pref_key: The settings key for this preference setting. * @actions: The actions to associate in an array. **/ static void gpm_prefs_setup_action_combo (GpmPrefs *prefs, const gchar *widget_name, const gchar *gpm_pref_key, const GpmActionPolicy *actions) { - gchar *value_txt; gint i; gboolean is_writable; GtkWidget *widget; @@ -348,14 +247,13 @@ gpm_prefs_setup_action_combo (GpmPrefs *prefs, const gchar *widget_name, widget = GTK_WIDGET (gtk_builder_get_object (prefs->priv->builder, widget_name)); gpm_prefs_set_combo_simple_text (widget); - value_txt = mateconf_client_get_string (prefs->priv->conf, gpm_pref_key, NULL); - is_writable = mateconf_client_key_is_writable (prefs->priv->conf, gpm_pref_key, NULL); - value = gpm_action_policy_from_string (value_txt); + value = g_settings_get_enum (prefs->priv->settings, gpm_pref_key); + is_writable = g_settings_is_writable (prefs->priv->settings, gpm_pref_key); gtk_widget_set_sensitive (widget, is_writable); array = g_ptr_array_new (); - g_object_set_data (G_OBJECT (widget), "conf_key", (gpointer) gpm_pref_key); + g_object_set_data (G_OBJECT (widget), "settings_key", (gpointer) gpm_pref_key); g_signal_connect (G_OBJECT (widget), "changed", G_CALLBACK (gpm_prefs_action_combo_changed_cb), prefs); @@ -408,18 +306,15 @@ gpm_prefs_setup_action_combo (GpmPrefs *prefs, const gchar *widget_name, g_ptr_array_add (array, GINT_TO_POINTER (policy)); #endif } else if (policy == GPM_ACTION_POLICY_NOTHING) { - /* we only add do nothing in the GUI if the user has explicitly specified this in MateConf */ - if (value == GPM_ACTION_POLICY_NOTHING) { - #if GTK_CHECK_VERSION (2, 24, 0) - gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT (widget), _("Do nothing")); - g_ptr_array_add(array, GINT_TO_POINTER (policy)); - #else - gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("Do nothing")); - g_ptr_array_add (array, GINT_TO_POINTER (policy)); - #endif - } + #if GTK_CHECK_VERSION (2, 24, 0) + gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT (widget), _("Do nothing")); + g_ptr_array_add(array, GINT_TO_POINTER (policy)); + #else + gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("Do nothing")); + g_ptr_array_add (array, GINT_TO_POINTER (policy)); + #endif } else { - egg_warning ("Unknown action read from conf: %i", policy); + egg_warning ("Unknown action read from settings: %i", policy); } } @@ -431,23 +326,21 @@ gpm_prefs_setup_action_combo (GpmPrefs *prefs, const gchar *widget_name, g_object_set_data_full (G_OBJECT (widget), "actions", (gpointer) actions_added, (GDestroyNotify) gpm_prefs_actions_destroy_cb); - /* set what we have in MateConf */ + /* set what we have in the settings */ for (i=0; actions_added[i] != -1; i++) { policy = actions_added[i]; - egg_debug ("added: %s", gpm_action_policy_to_string (policy)); if (value == policy) gtk_combo_box_set_active (GTK_COMBO_BOX (widget), i); } g_ptr_array_unref (array); - g_free (value_txt); } /** * gpm_prefs_setup_time_combo: * @prefs: This prefs class instance * @widget_name: The GtkWidget name - * @gpm_pref_key: The MateConf key for this preference setting. + * @gpm_pref_key: The settings key for this preference setting. * @actions: The actions to associate in an array. **/ static void @@ -463,11 +356,11 @@ gpm_prefs_setup_time_combo (GpmPrefs *prefs, const gchar *widget_name, widget = GTK_WIDGET (gtk_builder_get_object (prefs->priv->builder, widget_name)); gpm_prefs_set_combo_simple_text (widget); - value = mateconf_client_get_int (prefs->priv->conf, gpm_pref_key, NULL); - is_writable = mateconf_client_key_is_writable (prefs->priv->conf, gpm_pref_key, NULL); + value = g_settings_get_int (prefs->priv->settings, gpm_pref_key); + is_writable = g_settings_is_writable (prefs->priv->settings, gpm_pref_key); gtk_widget_set_sensitive (widget, is_writable); - g_object_set_data (G_OBJECT (widget), "conf_key", (gpointer) gpm_pref_key); + g_object_set_data (G_OBJECT (widget), "settings_key", (gpointer) gpm_pref_key); g_object_set_data (G_OBJECT (widget), "values", (gpointer) values); /* add each time */ @@ -501,55 +394,6 @@ gpm_prefs_setup_time_combo (GpmPrefs *prefs, const gchar *widget_name, } /** - * gpm_prefs_checkbox_lock_cb: - * @widget: The GtkWidget object - * @gpm_pref_key: The MateConf key for this preference setting. - **/ -static void -gpm_prefs_checkbox_lock_cb (GtkWidget *widget, GpmPrefs *prefs) -{ - gboolean checked; - gchar *gpm_pref_key; - - checked = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)); - - gpm_pref_key = (char *) g_object_get_data (G_OBJECT (widget), "conf_key"); - egg_debug ("Changing %s to %i", gpm_pref_key, checked); - mateconf_client_set_bool (prefs->priv->conf, gpm_pref_key, checked, NULL); -} - -/** - * gpm_prefs_setup_checkbox: - * @prefs: This prefs class instance - * @widget_name: The GtkWidget name - * @gpm_pref_key: The MateConf key for this preference setting. - **/ -static GtkWidget * -gpm_prefs_setup_checkbox (GpmPrefs *prefs, const gchar *widget_name, const gchar *gpm_pref_key) -{ - gboolean checked; - GtkWidget *widget; - - egg_debug ("Setting up %s", gpm_pref_key); - - widget = GTK_WIDGET (gtk_builder_get_object (prefs->priv->builder, widget_name)); - - checked = mateconf_client_get_bool (prefs->priv->conf, gpm_pref_key, NULL); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), checked); - - g_object_set_data (G_OBJECT (widget), "conf_key", (gpointer) gpm_pref_key); - - /* manually do the callback in case we hide elements in the cb */ - gpm_prefs_checkbox_lock_cb (widget, prefs); - - /* setup after set */ - g_signal_connect (widget, "clicked", - G_CALLBACK (gpm_prefs_checkbox_lock_cb), prefs); - - return widget; -} - -/** * gpm_prefs_close_cb: * @widget: The GtkWidget object * @prefs: This prefs class instance @@ -574,46 +418,10 @@ gpm_prefs_delete_event_cb (GtkWidget *widget, GdkEvent *event, GpmPrefs *prefs) return FALSE; } -/** - * gpm_conf_mateconf_key_changed_cb: - * - * We might have to do things when the mateconf keys change; do them here. - **/ -static void -gpm_conf_mateconf_key_changed_cb (MateConfClient *client, guint cnxn_id, MateConfEntry *entry, GpmPrefs *prefs) -{ - MateConfValue *value; - gint brightness; - GtkWidget *widget; - gboolean enabled; - - value = mateconf_entry_get_value (entry); - if (value == NULL) - return; - - if (g_strcmp0 (entry->key, GPM_CONF_BACKLIGHT_BRIGHTNESS_AC) == 0) { - widget = GTK_WIDGET (gtk_builder_get_object (prefs->priv->builder, "hscale_ac_brightness")); - brightness = mateconf_value_get_int (value); - gtk_range_set_value (GTK_RANGE (widget), brightness); - } - - if (g_strcmp0 (entry->key, GPM_CONF_DISKS_SPINDOWN_ENABLE_AC) == 0) { - widget = GTK_WIDGET (gtk_builder_get_object (prefs->priv->builder, "checkbutton_ac_spindown")); - enabled = mateconf_value_get_bool (value); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), enabled); - - } else if (g_strcmp0 (entry->key, GPM_CONF_DISKS_SPINDOWN_ENABLE_BATT) == 0) { - widget = GTK_WIDGET (gtk_builder_get_object (prefs->priv->builder, "checkbutton_battery_spindown")); - enabled = mateconf_value_get_bool (value); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), enabled); - } -} - /** setup the notification page */ static void prefs_setup_notification (GpmPrefs *prefs) { - gchar *icon_policy_str; gint icon_policy; GtkWidget *radiobutton_icon_always; GtkWidget *radiobutton_icon_present; @@ -622,9 +430,7 @@ prefs_setup_notification (GpmPrefs *prefs) GtkWidget *radiobutton_icon_never; gboolean is_writable; - icon_policy_str = mateconf_client_get_string (prefs->priv->conf, GPM_CONF_UI_ICON_POLICY, NULL); - icon_policy = gpm_icon_policy_from_string (icon_policy_str); - g_free (icon_policy_str); + icon_policy = g_settings_get_enum (prefs->priv->settings, GPM_SETTINGS_ICON_POLICY); radiobutton_icon_always = GTK_WIDGET (gtk_builder_get_object (prefs->priv->builder, "radiobutton_notification_always")); @@ -637,7 +443,7 @@ prefs_setup_notification (GpmPrefs *prefs) radiobutton_icon_never = GTK_WIDGET (gtk_builder_get_object (prefs->priv->builder, "radiobutton_notification_never")); - is_writable = mateconf_client_key_is_writable (prefs->priv->conf, GPM_CONF_UI_ICON_POLICY, NULL); + is_writable = g_settings_is_writable (prefs->priv->settings, GPM_SETTINGS_ICON_POLICY); gtk_widget_set_sensitive (radiobutton_icon_always, is_writable); gtk_widget_set_sensitive (radiobutton_icon_present, is_writable); gtk_widget_set_sensitive (radiobutton_icon_charge, is_writable); @@ -666,7 +472,7 @@ prefs_setup_notification (GpmPrefs *prefs) g_object_set_data (G_OBJECT (radiobutton_icon_never), "policy", GINT_TO_POINTER (GPM_ICON_POLICY_NEVER)); - /* only connect the callbacks after we set the value, else the conf + /* only connect the callbacks after we set the value, else the settings * keys gets written to (for a split second), and the icon flickers. */ g_signal_connect (radiobutton_icon_always, "clicked", G_CALLBACK (gpm_prefs_icon_radio_cb), prefs); @@ -709,23 +515,33 @@ prefs_setup_ac (GpmPrefs *prefs) -1}; gpm_prefs_setup_time_combo (prefs, "combobox_ac_computer", - GPM_CONF_TIMEOUT_SLEEP_COMPUTER_AC, + GPM_SETTINGS_SLEEP_COMPUTER_AC, computer_times); gpm_prefs_setup_time_combo (prefs, "combobox_ac_display", - GPM_CONF_TIMEOUT_SLEEP_DISPLAY_AC, + GPM_SETTINGS_SLEEP_DISPLAY_AC, display_times); gpm_prefs_setup_action_combo (prefs, "combobox_ac_lid", - GPM_CONF_BUTTON_LID_AC, + GPM_SETTINGS_BUTTON_LID_AC, button_lid_actions); - gpm_prefs_setup_brightness_slider (prefs, "hscale_ac_brightness", - GPM_CONF_BACKLIGHT_BRIGHTNESS_AC); + /* setup brightness slider */ + widget = GTK_WIDGET (gtk_builder_get_object (prefs->priv->builder, "hscale_ac_brightness")); + g_settings_bind (prefs->priv->settings, GPM_SETTINGS_BRIGHTNESS_AC, + gtk_range_get_adjustment (GTK_RANGE (widget)), "value", + G_SETTINGS_BIND_DEFAULT); + g_signal_connect (G_OBJECT (widget), "format-value", + G_CALLBACK (gpm_prefs_format_percentage_cb), NULL); - gpm_prefs_setup_checkbox (prefs, "checkbutton_ac_display_dim", - GPM_CONF_BACKLIGHT_IDLE_DIM_AC); - gpm_prefs_setup_checkbox (prefs, "checkbutton_ac_spindown", - GPM_CONF_DISKS_SPINDOWN_ENABLE_AC); + /* set up the checkboxes */ + widget = GTK_WIDGET (gtk_builder_get_object (prefs->priv->builder, "checkbutton_ac_display_dim")); + g_settings_bind (prefs->priv->settings, GPM_SETTINGS_IDLE_DIM_AC, + widget, "active", + G_SETTINGS_BIND_DEFAULT); + widget = GTK_WIDGET (gtk_builder_get_object (prefs->priv->builder, "checkbutton_ac_spindown")); + g_settings_bind (prefs->priv->settings, GPM_SETTINGS_SPINDOWN_ENABLE_AC, + widget, "active", + G_SETTINGS_BIND_DEFAULT); if (prefs->priv->has_button_lid == FALSE) { widget = GTK_WIDGET (gtk_builder_get_object (prefs->priv->builder, "hbox_ac_lid")); @@ -792,10 +608,10 @@ prefs_setup_battery (GpmPrefs *prefs) -1}; gpm_prefs_setup_time_combo (prefs, "combobox_battery_computer", - GPM_CONF_TIMEOUT_SLEEP_COMPUTER_BATT, + GPM_SETTINGS_SLEEP_COMPUTER_BATT, computer_times); gpm_prefs_setup_time_combo (prefs, "combobox_battery_display", - GPM_CONF_TIMEOUT_SLEEP_DISPLAY_BATT, + GPM_SETTINGS_SLEEP_DISPLAY_BATT, display_times); if (prefs->priv->has_batteries == FALSE) { @@ -807,19 +623,25 @@ prefs_setup_battery (GpmPrefs *prefs) } gpm_prefs_setup_action_combo (prefs, "combobox_battery_lid", - GPM_CONF_BUTTON_LID_BATT, + GPM_SETTINGS_BUTTON_LID_BATT, button_lid_actions); gpm_prefs_setup_action_combo (prefs, "combobox_battery_critical", - GPM_CONF_ACTIONS_CRITICAL_BATT, + GPM_SETTINGS_ACTION_CRITICAL_BATT, battery_critical_actions); - /* set up the battery reduce checkbox */ - gpm_prefs_setup_checkbox (prefs, "checkbutton_battery_display_reduce", - GPM_CONF_BACKLIGHT_BATTERY_REDUCE); - gpm_prefs_setup_checkbox (prefs, "checkbutton_battery_display_dim", - GPM_CONF_BACKLIGHT_IDLE_DIM_BATT); - gpm_prefs_setup_checkbox (prefs, "checkbutton_battery_spindown", - GPM_CONF_DISKS_SPINDOWN_ENABLE_BATT); + /* set up the checkboxes */ + widget = GTK_WIDGET (gtk_builder_get_object (prefs->priv->builder, "checkbutton_battery_display_reduce")); + g_settings_bind (prefs->priv->settings, GPM_SETTINGS_BACKLIGHT_BATTERY_REDUCE, + widget, "active", + G_SETTINGS_BIND_DEFAULT); + widget = GTK_WIDGET (gtk_builder_get_object (prefs->priv->builder, "checkbutton_battery_display_dim")); + g_settings_bind (prefs->priv->settings, GPM_SETTINGS_IDLE_DIM_BATT, + widget, "active", + G_SETTINGS_BIND_DEFAULT); + widget = GTK_WIDGET (gtk_builder_get_object (prefs->priv->builder, "checkbutton_battery_spindown")); + g_settings_bind (prefs->priv->settings, GPM_SETTINGS_SPINDOWN_ENABLE_BATT, + widget, "active", + G_SETTINGS_BIND_DEFAULT); if (prefs->priv->has_button_lid == FALSE) { widget = GTK_WIDGET (gtk_builder_get_object (prefs->priv->builder, "hbox_battery_lid")); @@ -870,10 +692,10 @@ prefs_setup_ups (GpmPrefs *prefs) -1}; gpm_prefs_setup_time_combo (prefs, "combobox_ups_computer", - GPM_CONF_TIMEOUT_SLEEP_COMPUTER_UPS, + GPM_SETTINGS_SLEEP_COMPUTER_UPS, computer_times); gpm_prefs_setup_time_combo (prefs, "combobox_ups_display", - GPM_CONF_TIMEOUT_SLEEP_DISPLAY_UPS, + GPM_SETTINGS_SLEEP_DISPLAY_UPS, display_times); if (prefs->priv->has_ups == FALSE) { @@ -885,10 +707,10 @@ prefs_setup_ups (GpmPrefs *prefs) } gpm_prefs_setup_action_combo (prefs, "combobox_ups_low", - GPM_CONF_ACTIONS_LOW_UPS, + GPM_SETTINGS_ACTION_LOW_UPS, ups_low_actions); gpm_prefs_setup_action_combo (prefs, "combobox_ups_critical", - GPM_CONF_ACTIONS_CRITICAL_UPS, + GPM_SETTINGS_ACTION_CRITICAL_UPS, ups_low_actions); } @@ -909,10 +731,10 @@ prefs_setup_general (GpmPrefs *prefs) -1}; gpm_prefs_setup_action_combo (prefs, "combobox_general_power", - GPM_CONF_BUTTON_POWER, + GPM_SETTINGS_BUTTON_POWER, power_button_actions); gpm_prefs_setup_action_combo (prefs, "combobox_general_suspend", - GPM_CONF_BUTTON_SUSPEND, + GPM_SETTINGS_BUTTON_SUSPEND, suspend_button_actions); if (prefs->priv->has_button_suspend == FALSE) { @@ -926,6 +748,7 @@ prefs_setup_general (GpmPrefs *prefs) } } +#ifdef HAVE_MATECONF_DEFAULTS /** * gpm_prefs_set_defaults_cb: **/ @@ -970,6 +793,7 @@ gpm_prefs_set_defaults_cb (GtkWidget *widget, GpmPrefs *prefs) g_object_unref (proxy); } +#endif /** * gpm_prefs_init: @@ -980,44 +804,62 @@ gpm_prefs_init (GpmPrefs *prefs) { GtkWidget *main_window; GtkWidget *widget; - gint caps; guint retval; GError *error = NULL; + GPtrArray *devices = NULL; + UpDevice *device; + UpDeviceKind kind; + GpmBrightness *brightness; + gboolean ret; + guint i; prefs->priv = GPM_PREFS_GET_PRIVATE (prefs); prefs->priv->client = up_client_new (); prefs->priv->console = egg_console_kit_new (); - prefs->priv->conf = mateconf_client_get_default (); - /* watch mate-power-manager keys */ - mateconf_client_add_dir (prefs->priv->conf, GPM_CONF_DIR, - MATECONF_CLIENT_PRELOAD_RECURSIVE, NULL); - mateconf_client_notify_add (prefs->priv->conf, GPM_CONF_DIR, - (MateConfClientNotifyFunc) gpm_conf_mateconf_key_changed_cb, - prefs, NULL, NULL); - - /* get value of delay in mate-session */ - prefs->priv->idle_delay = mateconf_client_get_int (prefs->priv->conf, GPM_CONF_IDLE_DELAY, NULL); - - caps = gpm_dbus_get_caps (prefs); - egg_debug ("caps=%i", caps); - - /* get properties from mate-power-manager */ - prefs->priv->has_batteries = ((caps & GPM_PREFS_SERVER_BATTERY) > 0); - prefs->priv->has_ups = ((caps & GPM_PREFS_SERVER_UPS) > 0); - prefs->priv->has_lcd = ((caps & GPM_PREFS_SERVER_BACKLIGHT) > 0); - prefs->priv->has_button_lid = ((caps & GPM_PREFS_SERVER_LID) > 0); - prefs->priv->has_button_suspend = TRUE; + prefs->priv->settings = g_settings_new (GPM_SETTINGS_SCHEMA); /* are we allowed to shutdown? */ prefs->priv->can_shutdown = TRUE; egg_console_kit_can_stop (prefs->priv->console, &prefs->priv->can_shutdown, NULL); /* get values from UpClient */ + prefs->priv->can_suspend = up_client_get_can_suspend (prefs->priv->client); + prefs->priv->can_hibernate = up_client_get_can_hibernate (prefs->priv->client); + +#if UP_CHECK_VERSION(0,9,2) + prefs->priv->has_button_lid = up_client_get_lid_is_present (prefs->priv->client); +#else g_object_get (prefs->priv->client, - "can-suspend", &prefs->priv->can_suspend, - "can-hibernate", &prefs->priv->can_hibernate, - NULL); + "lid-is-present", &prefs->priv->has_button_lid, + NULL); +#endif + prefs->priv->has_button_suspend = TRUE; + + /* find if we have brightness hardware */ + brightness = gpm_brightness_new (); + prefs->priv->has_lcd = gpm_brightness_has_hw (brightness); + g_object_unref (brightness); + + /* get device list */ + ret = up_client_enumerate_devices_sync (prefs->priv->client, NULL, &error); + if (!ret) { + egg_warning ("failed to get device list: %s", error->message); + g_error_free (error); + } + + devices = up_client_get_devices (prefs->priv->client); + for (i=0; i<devices->len; i++) { + device = g_ptr_array_index (devices, i); + g_object_get (device, + "kind", &kind, + NULL); + if (kind == UP_DEVICE_KIND_BATTERY) + prefs->priv->has_batteries = TRUE; + if (kind == UP_DEVICE_KIND_UPS) + prefs->priv->has_ups = TRUE; + } + g_ptr_array_unref (devices); prefs->priv->builder = gtk_builder_new (); @@ -1083,7 +925,7 @@ gpm_prefs_finalize (GObject *object) prefs = GPM_PREFS (object); prefs->priv = GPM_PREFS_GET_PRIVATE (prefs); - g_object_unref (prefs->priv->conf); + g_object_unref (prefs->priv->settings); g_object_unref (prefs->priv->client); g_object_unref (prefs->priv->console); diff --git a/src/gpm-prefs-server.c b/src/gpm-prefs-server.c deleted file mode 100644 index 2ced9ff..0000000 --- a/src/gpm-prefs-server.c +++ /dev/null @@ -1,138 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- - * - * Copyright (C) 2007 Richard Hughes <[email protected]> - * - * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdlib.h> -#include <stdio.h> -#include <time.h> -#include <errno.h> - -#include <string.h> -#include <sys/time.h> -#include <sys/types.h> -#ifdef HAVE_UNISTD_H -#include <unistd.h> -#endif /* HAVE_UNISTD_H */ - -#include <glib/gi18n.h> -#include <dbus/dbus-glib.h> - -#include "gpm-prefs-server.h" -#include "egg-debug.h" - -#define GPM_PREFS_SERVER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GPM_TYPE_PREFS_SERVER, GpmPrefsServerPrivate)) - -struct GpmPrefsServerPrivate -{ - guint capability; -}; - -enum { - CAPABILITY_CHANGED, - LAST_SIGNAL -}; - -static guint signals [LAST_SIGNAL] = { 0 }; -static gpointer gpm_prefs_server_object = NULL; - -G_DEFINE_TYPE (GpmPrefsServer, gpm_prefs_server, G_TYPE_OBJECT) - -/** - * gpm_prefs_server_get_capability: - **/ -gboolean -gpm_prefs_server_get_capability (GpmPrefsServer *server, - gint *capability) -{ - g_return_val_if_fail (server != NULL, FALSE); - g_return_val_if_fail (GPM_IS_PREFS_SERVER (server), FALSE); - *capability = server->priv->capability; - return TRUE; -} - -/** - * gpm_prefs_server_set_capability: - **/ -gboolean -gpm_prefs_server_set_capability (GpmPrefsServer *server, - gint capability) -{ - g_return_val_if_fail (server != NULL, FALSE); - g_return_val_if_fail (GPM_IS_PREFS_SERVER (server), FALSE); - server->priv->capability = server->priv->capability + capability; - egg_debug ("capability now %i", server->priv->capability); - return TRUE; -} - -/** - * gpm_prefs_server_class_init: - * @klass: This prefs class instance - **/ -static void -gpm_prefs_server_class_init (GpmPrefsServerClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - g_type_class_add_private (klass, sizeof (GpmPrefsServerPrivate)); - signals [CAPABILITY_CHANGED] = - g_signal_new ("capability-changed", - G_TYPE_FROM_CLASS (object_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GpmPrefsServerClass, capability_changed), - NULL, - NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); -} - -/** - * gpm_prefs_server_init: - * @server: This server class instance - * - * initialises the server class. NOTE: We expect prefs_server objects - * to *NOT* be removed or added during the session. - * We only control the first prefs_server object if there are more than one. - **/ -static void -gpm_prefs_server_init (GpmPrefsServer *server) -{ - server->priv = GPM_PREFS_SERVER_GET_PRIVATE (server); - server->priv->capability = 0; -} - -/** - * gpm_prefs_server_new: - * Return value: A new server class instance. - * Can return NULL if no suitable hardware is found. - **/ -GpmPrefsServer * -gpm_prefs_server_new (void) -{ - if (gpm_prefs_server_object != NULL) { - g_object_ref (gpm_prefs_server_object); - } else { - gpm_prefs_server_object = g_object_new (GPM_TYPE_PREFS_SERVER, NULL); - g_object_add_weak_pointer (gpm_prefs_server_object, &gpm_prefs_server_object); - } - return GPM_PREFS_SERVER (gpm_prefs_server_object); -} diff --git a/src/gpm-prefs-server.h b/src/gpm-prefs-server.h deleted file mode 100644 index 62cadb6..0000000 --- a/src/gpm-prefs-server.h +++ /dev/null @@ -1,67 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- - * - * Copyright (C) 2007 Richard Hughes <[email protected]> - * - * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#ifndef __GPM_PREFS_SERVER_H -#define __GPM_PREFS_SERVER_H - -#include <glib-object.h> - -G_BEGIN_DECLS - -#define GPM_TYPE_PREFS_SERVER (gpm_prefs_server_get_type ()) -#define GPM_PREFS_SERVER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GPM_TYPE_PREFS_SERVER, GpmPrefsServer)) -#define GPM_PREFS_SERVER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GPM_TYPE_PREFS_SERVER, GpmPrefsServerClass)) -#define GPM_IS_PREFS_SERVER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GPM_TYPE_PREFS_SERVER)) -#define GPM_IS_PREFS_SERVER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GPM_TYPE_PREFS_SERVER)) -#define GPM_PREFS_SERVER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GPM_TYPE_PREFS_SERVER, GpmPrefsServerClass)) - -#define GPM_PREFS_SERVER_BACKLIGHT 1 -#define GPM_PREFS_SERVER_LID 4 -#define GPM_PREFS_SERVER_BATTERY 8 -#define GPM_PREFS_SERVER_UPS 16 -#define GPM_PREFS_SERVER_KEYLIGHT 32 - -typedef struct GpmPrefsServerPrivate GpmPrefsServerPrivate; - -typedef struct -{ - GObject parent; - GpmPrefsServerPrivate *priv; -} GpmPrefsServer; - -typedef struct -{ - GObjectClass parent_class; - void (* capability_changed) (GpmPrefsServer *server, - gint capability); -} GpmPrefsServerClass; - -GType gpm_prefs_server_get_type (void); -GpmPrefsServer *gpm_prefs_server_new (void); - -gboolean gpm_prefs_server_get_capability (GpmPrefsServer *server, - gint *capability); -gboolean gpm_prefs_server_set_capability (GpmPrefsServer *server, - gint capability); - -G_END_DECLS - -#endif /* __GPM_PREFS_SERVER_H */ diff --git a/src/gpm-screensaver.c b/src/gpm-screensaver.c index b4f9ad7..26e72e7 100644 --- a/src/gpm-screensaver.c +++ b/src/gpm-screensaver.c @@ -25,7 +25,6 @@ #include <glib.h> #include <glib/gi18n.h> #include <dbus/dbus-glib.h> -#include <mateconf/mateconf-client.h> #include "gpm-screensaver.h" #include "gpm-common.h" @@ -42,105 +41,13 @@ static void gpm_screensaver_finalize (GObject *object); struct GpmScreensaverPrivate { DBusGProxy *proxy; - MateConfClient *conf; }; -enum { - AUTH_REQUEST, - LAST_SIGNAL -}; -#if 0 -static guint signals [LAST_SIGNAL] = { 0 }; -#endif static gpointer gpm_screensaver_object = NULL; G_DEFINE_TYPE (GpmScreensaver, gpm_screensaver, G_TYPE_OBJECT) -#if 0 - -/** Invoked when we get the AuthenticationRequestBegin from g-s when the user - * has moved their mouse and we are showing the authentication box. - */ -static void -gpm_screensaver_auth_begin (DBusGProxy *proxy, - GpmScreensaver *screensaver) -{ - egg_debug ("emitting auth-request : (%i)", TRUE); - g_signal_emit (screensaver, signals [AUTH_REQUEST], 0, TRUE); -} - -/** Invoked when we get the AuthenticationRequestEnd from g-s when the user - * has entered a valid password or re-authenticated. - */ -static void -gpm_screensaver_auth_end (DBusGProxy *proxy, - GpmScreensaver *screensaver) -{ - egg_debug ("emitting auth-request : (%i)", FALSE); - g_signal_emit (screensaver, signals [AUTH_REQUEST], 0, FALSE); -} - -/** - * gpm_screensaver_proxy_connect_more: - * @screensaver: This class instance - **/ -static gboolean -gpm_screensaver_proxy_connect_more (GpmScreensaver *screensaver) -{ - g_return_val_if_fail (GPM_IS_SCREENSAVER (screensaver), FALSE); - - if (screensaver->priv->proxy == NULL) { - egg_warning ("not connected"); - return FALSE; - } - - /* get AuthenticationRequestBegin */ - dbus_g_proxy_add_signal (screensaver->priv->proxy, - "AuthenticationRequestBegin", G_TYPE_INVALID); - dbus_g_proxy_connect_signal (screensaver->priv->proxy, - "AuthenticationRequestBegin", - G_CALLBACK (gpm_screensaver_auth_begin), - screensaver, NULL); - - /* get AuthenticationRequestEnd */ - dbus_g_proxy_add_signal (screensaver->priv->proxy, - "AuthenticationRequestEnd", G_TYPE_INVALID); - dbus_g_proxy_connect_signal (screensaver->priv->proxy, - "AuthenticationRequestEnd", - G_CALLBACK (gpm_screensaver_auth_end), - screensaver, NULL); - - return TRUE; -} - -/** - * gpm_screensaver_proxy_disconnect_more: - * @screensaver: This class instance - **/ -static gboolean -gpm_screensaver_proxy_disconnect_more (GpmScreensaver *screensaver) -{ - g_return_val_if_fail (GPM_IS_SCREENSAVER (screensaver), FALSE); - egg_debug ("mate-screensaver disconnected from the session DBUS"); - return TRUE; -} -#endif - -/** - * gpm_screensaver_lock_enabled: - * @screensaver: This class instance - * Return value: If mate-screensaver is set to lock the screen on screensave - **/ -gboolean -gpm_screensaver_lock_enabled (GpmScreensaver *screensaver) -{ - gboolean enabled; - g_return_val_if_fail (GPM_IS_SCREENSAVER (screensaver), FALSE); - enabled = mateconf_client_get_bool (screensaver->priv->conf, GS_PREF_LOCK_ENABLED, NULL); - return enabled; -} - /** * gpm_screensaver_lock * @screensaver: This class instance @@ -328,17 +235,6 @@ gpm_screensaver_class_init (GpmScreensaverClass *klass) object_class->finalize = gpm_screensaver_finalize; g_type_class_add_private (klass, sizeof (GpmScreensaverPrivate)); -#if 0 - signals [AUTH_REQUEST] = - g_signal_new ("auth-request", - G_TYPE_FROM_CLASS (object_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GpmScreensaverClass, auth_request), - NULL, - NULL, - g_cclosure_marshal_VOID__BOOLEAN, - G_TYPE_NONE, 1, G_TYPE_BOOLEAN); -#endif } /** @@ -357,7 +253,6 @@ gpm_screensaver_init (GpmScreensaver *screensaver) GS_LISTENER_SERVICE, GS_LISTENER_PATH, GS_LISTENER_INTERFACE); - screensaver->priv->conf = mateconf_client_get_default (); } /** @@ -374,7 +269,6 @@ gpm_screensaver_finalize (GObject *object) screensaver = GPM_SCREENSAVER (object); screensaver->priv = GPM_SCREENSAVER_GET_PRIVATE (screensaver); - g_object_unref (screensaver->priv->conf); g_object_unref (screensaver->priv->proxy); G_OBJECT_CLASS (gpm_screensaver_parent_class)->finalize (object); @@ -401,18 +295,6 @@ gpm_screensaver_new (void) #ifdef EGG_TEST #include "egg-test.h" -#if 0 -static gboolean test_got_request = FALSE; -static void -gpm_screensaver_test_auth_request_cb (GpmScreensaver *screensaver, gboolean auth, EggTest *test) -{ - egg_debug ("auth request = %i", auth); - test_got_request = auth; - - egg_test_loop_quit (test); -} -#endif - void gpm_screensaver_test (gpointer data) { @@ -429,11 +311,6 @@ gpm_screensaver_test (gpointer data) screensaver = gpm_screensaver_new (); egg_test_assert (test, (screensaver != NULL)); -#if 0 - /* connect signals */ - g_signal_connect (screensaver, "auth-request", - G_CALLBACK (gpm_screensaver_test_auth_request_cb), test); -#endif /************************************************************/ egg_test_title (test, "lock screensaver"); ret = gpm_screensaver_lock (screensaver); diff --git a/src/gpm-screensaver.h b/src/gpm-screensaver.h index b4c5733..9f81aec 100644 --- a/src/gpm-screensaver.h +++ b/src/gpm-screensaver.h @@ -44,10 +44,6 @@ typedef struct typedef struct { GObjectClass parent_class; -#if 0 - void (* auth_request) (GpmScreensaver *screensaver, - gboolean auth); -#endif } GpmScreensaverClass; GType gpm_screensaver_get_type (void); @@ -55,7 +51,6 @@ GpmScreensaver *gpm_screensaver_new (void); void gpm_screensaver_test (gpointer data); gboolean gpm_screensaver_lock (GpmScreensaver *screensaver); -gboolean gpm_screensaver_lock_enabled (GpmScreensaver *screensaver); guint32 gpm_screensaver_add_throttle (GpmScreensaver *screensaver, const gchar *reason); gboolean gpm_screensaver_remove_throttle (GpmScreensaver *screensaver, diff --git a/src/gpm-statistics.c b/src/gpm-statistics.c index 48ce69b..3284067 100644 --- a/src/gpm-statistics.c +++ b/src/gpm-statistics.c @@ -28,7 +28,6 @@ #include <gtk/gtk.h> #include <dbus/dbus-glib.h> -#include <mateconf/mateconf-client.h> #include <libupower-glib/upower.h> #include "egg-debug.h" @@ -49,7 +48,7 @@ gchar *current_device = NULL; static const gchar *history_type; static const gchar *stats_type; static guint history_time; -static MateConfClient *mateconf_client; +static GSettings *settings; static gfloat sigma_smoothing = 0.0f; static UpWakeups *wakeups = NULL; static GtkWidget *graph_history = NULL; @@ -1107,8 +1106,8 @@ gpm_stats_notebook_changed_cb (GtkNotebook *notebook, gpointer page, gint page_n widget = GTK_WIDGET (gtk_builder_get_object (builder, "dialog_stats")); gpm_stats_set_title (GTK_WINDOW (widget), page_num); - /* save page in mateconf */ - mateconf_client_set_int (mateconf_client, GPM_CONF_INFO_PAGE_NUMBER, page_num, NULL); + /* save page in gsettings */ + g_settings_set_int (settings, GPM_SETTINGS_INFO_PAGE_NUMBER, page_num); if (current_device == NULL) return; @@ -1151,8 +1150,8 @@ gpm_stats_devices_treeview_clicked_cb (GtkTreeSelection *selection, gboolean dat g_free (current_device); gtk_tree_model_get (model, &iter, GPM_DEVICES_COLUMN_ID, ¤t_device, -1); - /* save device in mateconf */ - mateconf_client_set_string (mateconf_client, GPM_CONF_INFO_LAST_DEVICE, current_device, NULL); + /* save device in gsettings */ + g_settings_set_string (settings, GPM_SETTINGS_INFO_LAST_DEVICE, current_device); /* show transaction_id */ egg_debug ("selected row is: %s", current_device); @@ -1326,8 +1325,8 @@ gpm_stats_history_type_combo_changed_cb (GtkWidget *widget, gpointer data) gpm_stats_button_update_ui (); - /* save to mateconf */ - mateconf_client_set_string (mateconf_client, GPM_CONF_INFO_HISTORY_TYPE, history_type, NULL); + /* save to gsettings */ + g_settings_set_string (settings, GPM_SETTINGS_INFO_HISTORY_TYPE, history_type); } /** @@ -1378,8 +1377,8 @@ gpm_stats_type_combo_changed_cb (GtkWidget *widget, gpointer data) gpm_stats_button_update_ui (); - /* save to mateconf */ - mateconf_client_set_string (mateconf_client, GPM_CONF_INFO_STATS_TYPE, stats_type, NULL); + /* save to gsettings */ + g_settings_set_string (settings, GPM_SETTINGS_INFO_STATS_TYPE, stats_type); } /** @@ -1405,8 +1404,8 @@ gpm_stats_range_combo_changed (GtkWidget *widget, gpointer data) else g_assert (FALSE); - /* save to mateconf */ - mateconf_client_set_int (mateconf_client, GPM_CONF_INFO_HISTORY_TIME, history_time, NULL); + /* save to gsettings */ + g_settings_set_int (settings, GPM_SETTINGS_INFO_HISTORY_TIME, history_time); gpm_stats_button_update_ui (); } @@ -1420,7 +1419,7 @@ gpm_stats_smooth_checkbox_history_cb (GtkWidget *widget, gpointer data) { gboolean checked; checked = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)); - mateconf_client_set_bool (mateconf_client, GPM_CONF_INFO_HISTORY_GRAPH_SMOOTH, checked, NULL); + g_settings_set_boolean (settings, GPM_SETTINGS_INFO_HISTORY_GRAPH_SMOOTH, checked); gpm_stats_button_update_ui (); } @@ -1433,7 +1432,7 @@ gpm_stats_smooth_checkbox_stats_cb (GtkWidget *widget, gpointer data) { gboolean checked; checked = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)); - mateconf_client_set_bool (mateconf_client, GPM_CONF_INFO_STATS_GRAPH_SMOOTH, checked, NULL); + g_settings_set_boolean (settings, GPM_SETTINGS_INFO_STATS_GRAPH_SMOOTH, checked); gpm_stats_button_update_ui (); } @@ -1446,7 +1445,7 @@ gpm_stats_points_checkbox_history_cb (GtkWidget *widget, gpointer data) { gboolean checked; checked = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)); - mateconf_client_set_bool (mateconf_client, GPM_CONF_INFO_HISTORY_GRAPH_POINTS, checked, NULL); + g_settings_set_boolean (settings, GPM_SETTINGS_INFO_HISTORY_GRAPH_POINTS, checked); gpm_stats_button_update_ui (); } @@ -1459,7 +1458,7 @@ gpm_stats_points_checkbox_stats_cb (GtkWidget *widget, gpointer data) { gboolean checked; checked = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)); - mateconf_client_set_bool (mateconf_client, GPM_CONF_INFO_STATS_GRAPH_POINTS, checked, NULL); + g_settings_set_boolean (settings, GPM_SETTINGS_INFO_STATS_GRAPH_POINTS, checked); gpm_stats_button_update_ui (); } @@ -1592,8 +1591,8 @@ main (int argc, char *argv[]) gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (), GPM_DATA G_DIR_SEPARATOR_S "icons"); - /* get data from mateconf */ - mateconf_client = mateconf_client_get_default (); + /* get data from the settings */ + settings = g_settings_new (GPM_SETTINGS_SCHEMA); /* get UI */ builder = gtk_builder_new (); @@ -1639,31 +1638,31 @@ main (int argc, char *argv[]) G_CALLBACK (gpm_stats_button_help_cb), NULL); widget = GTK_WIDGET (gtk_builder_get_object (builder, "checkbutton_smooth_history")); - checked = mateconf_client_get_bool (mateconf_client, GPM_CONF_INFO_HISTORY_GRAPH_SMOOTH, NULL); + checked = g_settings_get_boolean (settings, GPM_SETTINGS_INFO_HISTORY_GRAPH_SMOOTH); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), checked); g_signal_connect (widget, "clicked", G_CALLBACK (gpm_stats_smooth_checkbox_history_cb), NULL); widget = GTK_WIDGET (gtk_builder_get_object (builder, "checkbutton_smooth_stats")); - checked = mateconf_client_get_bool (mateconf_client, GPM_CONF_INFO_STATS_GRAPH_SMOOTH, NULL); + checked = g_settings_get_boolean (settings, GPM_SETTINGS_INFO_STATS_GRAPH_SMOOTH); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), checked); g_signal_connect (widget, "clicked", G_CALLBACK (gpm_stats_smooth_checkbox_stats_cb), NULL); widget = GTK_WIDGET (gtk_builder_get_object (builder, "checkbutton_points_history")); - checked = mateconf_client_get_bool (mateconf_client, GPM_CONF_INFO_HISTORY_GRAPH_POINTS, NULL); + checked = g_settings_get_boolean (settings, GPM_SETTINGS_INFO_HISTORY_GRAPH_POINTS); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), checked); g_signal_connect (widget, "clicked", G_CALLBACK (gpm_stats_points_checkbox_history_cb), NULL); widget = GTK_WIDGET (gtk_builder_get_object (builder, "checkbutton_points_stats")); - checked = mateconf_client_get_bool (mateconf_client, GPM_CONF_INFO_STATS_GRAPH_POINTS, NULL); + checked = g_settings_get_boolean (settings, GPM_SETTINGS_INFO_STATS_GRAPH_POINTS); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), checked); g_signal_connect (widget, "clicked", G_CALLBACK (gpm_stats_points_checkbox_stats_cb), NULL); widget = GTK_WIDGET (gtk_builder_get_object (builder, "notebook1")); - page = mateconf_client_get_int (mateconf_client, GPM_CONF_INFO_PAGE_NUMBER, NULL); + page = g_settings_get_int (settings, GPM_SETTINGS_INFO_PAGE_NUMBER); gtk_notebook_set_current_page (GTK_NOTEBOOK (widget), page); g_signal_connect (widget, "switch-page", G_CALLBACK (gpm_stats_notebook_changed_cb), NULL); @@ -1705,14 +1704,14 @@ main (int argc, char *argv[]) gpm_stats_add_wakeups_columns (GTK_TREE_VIEW (widget)); gtk_tree_view_columns_autosize (GTK_TREE_VIEW (widget)); /* show */ - history_type = mateconf_client_get_string (mateconf_client, GPM_CONF_INFO_HISTORY_TYPE, NULL); - history_time = mateconf_client_get_int (mateconf_client, GPM_CONF_INFO_HISTORY_TIME, NULL); + history_type = g_settings_get_string (settings, GPM_SETTINGS_INFO_HISTORY_TYPE); + history_time = g_settings_get_int (settings, GPM_SETTINGS_INFO_HISTORY_TIME); if (history_type == NULL) history_type = GPM_HISTORY_CHARGE_VALUE; if (history_time == 0) history_time = GPM_HISTORY_HOUR_VALUE; - stats_type = mateconf_client_get_string (mateconf_client, GPM_CONF_INFO_STATS_TYPE, NULL); + stats_type = g_settings_get_string (settings, GPM_SETTINGS_INFO_STATS_TYPE); if (stats_type == NULL) stats_type = GPM_STATS_CHARGE_DATA_VALUE; @@ -1821,7 +1820,7 @@ main (int argc, char *argv[]) } if (last_device == NULL) - last_device = mateconf_client_get_string (mateconf_client, GPM_CONF_INFO_LAST_DEVICE, NULL); + last_device = g_settings_get_string (settings, GPM_SETTINGS_INFO_LAST_DEVICE); /* has capability to measure wakeups */ ret = up_wakeups_get_has_capability (wakeups); @@ -1853,7 +1852,7 @@ main (int argc, char *argv[]) gtk_main (); out: - g_object_unref (mateconf_client); + g_object_unref (settings); g_object_unref (client); g_object_unref (wakeups); g_object_unref (builder); diff --git a/src/gpm-tray-icon.c b/src/gpm-tray-icon.c index 8edddce..f2c26f7 100644 --- a/src/gpm-tray-icon.c +++ b/src/gpm-tray-icon.c @@ -38,7 +38,6 @@ #include <glib/gi18n.h> #include <gtk/gtk.h> -#include <mateconf/mateconf-client.h> #include <libupower-glib/upower.h> #include "egg-debug.h" @@ -55,7 +54,7 @@ static void gpm_tray_icon_finalize (GObject *object); struct GpmTrayIconPrivate { - MateConfClient *conf; + GSettings *settings; GpmEngine *engine; GtkStatusIcon *status_icon; gboolean show_actions; @@ -339,22 +338,17 @@ gpm_tray_icon_activate_cb (GtkStatusIcon *status_icon, GpmTrayIcon *icon) } /** - * gpm_conf_mateconf_key_changed_cb: + * gpm_tray_icon_settings_changed_cb: * - * We might have to do things when the mateconf keys change; do them here. + * We might have to do things when the settings change; do them here. **/ static void -gpm_conf_mateconf_key_changed_cb (MateConfClient *client, guint cnxn_id, MateConfEntry *entry, GpmTrayIcon *icon) +gpm_tray_icon_settings_changed_cb (GSettings *settings, const gchar *key, GpmTrayIcon *icon) { - MateConfValue *value; gboolean allowed_in_menu; - value = mateconf_entry_get_value (entry); - if (value == NULL) - return; - - if (strcmp (entry->key, GPM_CONF_UI_SHOW_ACTIONS) == 0) { - allowed_in_menu = mateconf_value_get_bool (value); + if (g_strcmp0 (key, GPM_SETTINGS_SHOW_ACTIONS) == 0) { + allowed_in_menu = g_settings_get_boolean (settings, key); gpm_tray_icon_enable_actions (icon, allowed_in_menu); } } @@ -373,13 +367,9 @@ gpm_tray_icon_init (GpmTrayIcon *icon) icon->priv->engine = gpm_engine_new (); - icon->priv->conf = mateconf_client_get_default (); - /* watch mate-power-manager keys */ - mateconf_client_add_dir (icon->priv->conf, GPM_CONF_DIR, - MATECONF_CLIENT_PRELOAD_RECURSIVE, NULL); - mateconf_client_notify_add (icon->priv->conf, GPM_CONF_DIR, - (MateConfClientNotifyFunc) gpm_conf_mateconf_key_changed_cb, - icon, NULL, NULL); + icon->priv->settings = g_settings_new (GPM_SETTINGS_SCHEMA); + g_signal_connect (icon->priv->settings, "changed", + G_CALLBACK (gpm_tray_icon_settings_changed_cb), icon); icon->priv->status_icon = gtk_status_icon_new (); g_signal_connect_object (G_OBJECT (icon->priv->status_icon), @@ -391,7 +381,7 @@ gpm_tray_icon_init (GpmTrayIcon *icon) G_CALLBACK (gpm_tray_icon_activate_cb), icon, 0); - allowed_in_menu = mateconf_client_get_bool (icon->priv->conf, GPM_CONF_UI_SHOW_ACTIONS, NULL); + allowed_in_menu = g_settings_get_boolean (icon->priv->settings, GPM_SETTINGS_SHOW_ACTIONS); gpm_tray_icon_enable_actions (icon, allowed_in_menu); } diff --git a/src/org.mate.PowerManager.xml b/src/org.mate.PowerManager.xml index a5ca988..c4c73ff 100644 --- a/src/org.mate.PowerManager.xml +++ b/src/org.mate.PowerManager.xml @@ -1,9 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <node name="/"> <interface name="org.mate.PowerManager"> - <method name="GetPreferencesOptions"> - <arg type="i" name="capability" direction="out"/> - </method> </interface> </node> |