[tracker/libtracker-miner] Make battery percentage a property and notify on when it changes
- From: Martyn James Russell <mr src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker/libtracker-miner] Make battery percentage a property and notify on when it changes
- Date: Fri, 28 Aug 2009 12:45:27 +0000 (UTC)
commit 781a8df601defccf2f2db803ea2c3acb08e36893
Author: Martyn Russell <martyn lanedo com>
Date: Fri Aug 28 13:45:13 2009 +0100
Make battery percentage a property and notify on when it changes
src/libtracker-common/tracker-power-hal.c | 20 +++++++++++++++-
src/tracker-miner-fs/tracker-miner-files.c | 32 ++++++++++++++++++++-------
2 files changed, 41 insertions(+), 11 deletions(-)
---
diff --git a/src/libtracker-common/tracker-power-hal.c b/src/libtracker-common/tracker-power-hal.c
index bf6537f..111f6b6 100644
--- a/src/libtracker-common/tracker-power-hal.c
+++ b/src/libtracker-common/tracker-power-hal.c
@@ -81,7 +81,8 @@ static void hal_device_property_modified_cb (LibHalContext *context,
enum {
PROP_0,
PROP_ON_BATTERY,
- PROP_ON_LOW_BATTERY
+ PROP_ON_LOW_BATTERY,
+ PROP_BATTERY_PERCENTAGE
};
G_DEFINE_TYPE (TrackerPower, tracker_power, G_TYPE_OBJECT);
@@ -103,7 +104,6 @@ tracker_power_class_init (TrackerPowerClass *klass)
"Whether the battery is being used",
FALSE,
G_PARAM_READABLE));
-
g_object_class_install_property (object_class,
PROP_ON_LOW_BATTERY,
g_param_spec_boolean ("on-low-battery",
@@ -111,6 +111,15 @@ tracker_power_class_init (TrackerPowerClass *klass)
"Whether the battery is low",
FALSE,
G_PARAM_READABLE));
+ g_object_class_install_property (object_class,
+ PROP_BATTERY_PERCENTAGE,
+ g_param_spec_double ("battery-percentage",
+ "Battery percentage",
+ "Current battery percentage left",
+ 0.0,
+ 1.0,
+ 0.0,
+ G_PARAM_READABLE));
g_type_class_add_private (object_class, sizeof (TrackerPowerPriv));
}
@@ -230,6 +239,9 @@ hal_get_property (GObject *object,
/* hardcoded to 5% */
g_value_set_boolean (value, priv->battery_percentage < BATTERY_LOW_THRESHOLD);
break;
+ case PROP_BATTERY_PERCENTAGE:
+ g_value_set_double (value, priv->battery_percentage);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
break;
@@ -396,6 +408,10 @@ hal_battery_notify (TrackerPower *power)
g_object_notify (G_OBJECT (power), "on-low-battery");
}
+ if (old_percentage != priv->battery_percentage) {
+ g_object_notify (G_OBJECT (power), "battery-percentage");
+ }
+
g_list_free (values);
}
diff --git a/src/tracker-miner-fs/tracker-miner-files.c b/src/tracker-miner-fs/tracker-miner-files.c
index 747b1b5..267dc92 100644
--- a/src/tracker-miner-fs/tracker-miner-files.c
+++ b/src/tracker-miner-fs/tracker-miner-files.c
@@ -99,6 +99,9 @@ static void on_battery_cb (GObject *gobject,
static void on_low_battery_cb (GObject *object,
GParamSpec *pspec,
gpointer user_data);
+static void on_battery_percentage_cb (GObject *gobject,
+ GParamSpec *arg1,
+ gpointer user_data);
static void disk_space_check_start (TrackerMinerFiles *mf);
static void disk_space_check_stop (TrackerMinerFiles *mf);
static void low_disk_space_limit_cb (GObject *gobject,
@@ -173,6 +176,9 @@ tracker_miner_files_init (TrackerMinerFiles *mf)
g_signal_connect (priv->power, "notify::on-battery",
G_CALLBACK (on_battery_cb),
mf);
+ g_signal_connect (priv->power, "notify::battery-percentage",
+ G_CALLBACK (on_battery_percentage_cb),
+ mf);
#endif /* HAVE_HAL */
priv->volume_monitor = g_volume_monitor_get ();
@@ -242,12 +248,14 @@ miner_files_finalize (GObject *object)
#ifdef HAVE_HAL
g_signal_handlers_disconnect_by_func (priv->power,
+ on_battery_percentage_cb,
+ mf);
+ g_signal_handlers_disconnect_by_func (priv->power,
on_battery_cb,
mf);
g_signal_handlers_disconnect_by_func (priv->power,
on_low_battery_cb,
mf);
-
g_object_unref (priv->power);
g_signal_handlers_disconnect_by_func (priv->storage,
@@ -393,14 +401,6 @@ on_battery_cb (GObject *gobject,
GParamSpec *arg1,
gpointer user_data)
{
- TrackerMinerFiles *mf = user_data;
- gdouble percentage;
-
- percentage = tracker_power_get_battery_percentage (mf->private->power);
-
- g_message ("Battery percentage is now %.0f%%",
- percentage * 100);
-
/* FIXME: Get this working again */
/* set_up_throttle (TRUE); */
}
@@ -451,6 +451,20 @@ on_low_battery_cb (GObject *object,
/* set_up_throttle (FALSE); */
}
+static void
+on_battery_percentage_cb (GObject *gobject,
+ GParamSpec *arg1,
+ gpointer user_data)
+{
+ TrackerMinerFiles *mf = user_data;
+ gdouble percentage;
+
+ percentage = tracker_power_get_battery_percentage (mf->private->power);
+
+ g_message ("Battery percentage is now %.0f%%",
+ percentage * 100);
+}
+
#endif /* HAVE_HAL */
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]