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) )
     {