diff --git a/ChangeLog b/ChangeLog index 8ba58a9b0db5c0b2e05e8998a073a49a736576b4..04392b34ed8ce1979dd3e73cee8adf56a668cf81 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,7 @@ +2009-04-02 14:14 Ali aliov@xfce.org + * : Added on battery DBus signal+Fix brightness settings on battery power + 2009-04-02 10:46 Ali aliov@xfce.org * : Fix a Glade warnings diff --git a/src/org.freedesktop.PowerManagement.xml b/src/org.freedesktop.PowerManagement.xml index 7c7f78825c0a5408a7501936d8595aff932f64c9..f43ee46d5f314a0f61e24f94492dd71859c72587 100644 --- a/src/org.freedesktop.PowerManagement.xml +++ b/src/org.freedesktop.PowerManagement.xml @@ -29,5 +29,9 @@ <arg type="b" name="low_battery" direction="out"/> </method> + <signal name="OnBatteryChanged"> + <arg type="b" name="on_battery" direction="out"/> + </signal> + </interface> </node> diff --git a/src/xfpm-engine.c b/src/xfpm-engine.c index 3932773d57cd10fe53ba3851cfbf24600a9070f1..cc8c4f941a62b6835d6d661d341497cacf395be1 100644 --- a/src/xfpm-engine.c +++ b/src/xfpm-engine.c @@ -90,6 +90,14 @@ struct XfpmEnginePrivate gboolean has_lid; }; +enum +{ + ON_BATTERY_CHANGED, + LAST_SIGNAL +}; + +static guint signals [LAST_SIGNAL] = { 0 }; + G_DEFINE_TYPE (XfpmEngine, xfpm_engine, G_TYPE_OBJECT) static gboolean xfpm_engine_do_suspend (XfpmEngine * engine) @@ -320,6 +328,7 @@ xfpm_engine_adapter_changed_cb (XfpmAdapter * adapter, gboolean present, XfpmEngine * engine) { engine->priv->on_battery = !present; + g_signal_emit (G_OBJECT (engine), signals [ON_BATTERY_CHANGED], 0, engine->priv->on_battery); } static void @@ -334,6 +343,15 @@ xfpm_engine_class_init (XfpmEngineClass * klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); + signals [ON_BATTERY_CHANGED] = + g_signal_new("on-battery-changed", + XFPM_TYPE_ENGINE, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET(XfpmEngineClass, on_battery_changed), + NULL, NULL, + g_cclosure_marshal_VOID__BOOLEAN, + G_TYPE_NONE, 1, G_TYPE_BOOLEAN); + object_class->finalize = xfpm_engine_finalize; g_type_class_add_private (klass, sizeof (XfpmEnginePrivate)); diff --git a/src/xfpm-engine.h b/src/xfpm-engine.h index 0595813f61326dc288cfbd8e0decb78c6d5a7232..69cb84fe0981b1a948df5a25dc06bd34cbea3179 100644 --- a/src/xfpm-engine.h +++ b/src/xfpm-engine.h @@ -40,20 +40,23 @@ typedef struct typedef struct { - GObjectClass parent_class; + GObjectClass parent_class; + + void (*on_battery_changed) (XfpmEngine *engine, + gboolean on_battery); } XfpmEngineClass; -GType xfpm_engine_get_type (void) G_GNUC_CONST; -XfpmEngine *xfpm_engine_new (void); +GType xfpm_engine_get_type (void) G_GNUC_CONST; +XfpmEngine *xfpm_engine_new (void); -void xfpm_engine_get_info (XfpmEngine *engine, - gboolean *system_laptop, - gboolean *user_privilege, - gboolean *can_suspend, - gboolean *can_hibernate, - gboolean *has_lcd_brightness, - gboolean *has_lid); +void xfpm_engine_get_info (XfpmEngine *engine, + gboolean *system_laptop, + gboolean *user_privilege, + gboolean *can_suspend, + gboolean *can_hibernate, + gboolean *has_lcd_brightness, + gboolean *has_lid); G_END_DECLS #endif /* __XFPM_ENGINE_H */ diff --git a/src/xfpm-xfconf.c b/src/xfpm-xfconf.c index ad478edf752d696bf44c724ce9e8a3d13cf54830..9a03085176d9b8d85c5a6d9cff1b1b16b2ea624b 100644 --- a/src/xfpm-xfconf.c +++ b/src/xfpm-xfconf.c @@ -225,7 +225,7 @@ xfpm_xfconf_property_changed_cb (XfconfChannel *channel, gchar *property, g_warning ("Value %d for %s is out of range", conf->priv->brightness_on_battery_timeout, BRIGHTNESS_ON_BATTERY ); conf->priv->brightness_on_battery_timeout = 9; } - g_signal_emit (G_OBJECT(conf), signals[POWER_SAVE_SETTINGS_CHANGED], 0); + g_signal_emit (G_OBJECT(conf), signals[BRIGHTNESS_SETTINGS_CHANGED], 0); } else if ( xfpm_strequal (property, CRITICAL_BATT_ACTION_CFG) ) {