From 7eb00e86d2d9f25dbc62c5a4479e99ea5543d722 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Fri, 10 Oct 2014 16:11:36 -0500 Subject: add gsettings for a mock battery to make QA tester's lives easier --- src/main.c | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 65 insertions(+), 5 deletions(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index d7953e6..112c31e 100644 --- a/src/main.c +++ b/src/main.c @@ -24,9 +24,62 @@ #include #include "device.h" +#include "device-provider-mock.h" #include "device-provider-upower.h" #include "service.h" +/*** +**** MOCK +***/ + +static IndicatorPowerDevice* +get_mock_battery(GSettings * settings) +{ + const double percent = g_settings_get_int(settings, "mock-battery-level"); + + const UpDeviceState state = g_settings_get_boolean(settings, "mock-battery-charging") + ? UP_DEVICE_STATE_CHARGING + : UP_DEVICE_STATE_DISCHARGING; + + const int seconds_left = g_settings_get_int(settings, "mock-battery-minutes-left") * 60; + + return indicator_power_device_new ("/some/path", + UP_DEVICE_KIND_BATTERY, + percent, + state, + seconds_left); +} + +static IndicatorPowerDeviceProvider* +get_device_provider(GSettings * settings) +{ + IndicatorPowerDeviceProvider * provider = NULL; + + if (g_settings_get_boolean(settings, "mock-battery-enabled")) + { + IndicatorPowerDevice * battery = get_mock_battery(settings); + provider = indicator_power_device_provider_mock_new (); + indicator_power_device_provider_add_device (INDICATOR_POWER_DEVICE_PROVIDER_MOCK(provider), battery); + g_object_unref (battery); + } + else + { + provider = indicator_power_device_provider_upower_new (); + } + + return provider; +} + +static void +on_mock_settings_changed(GSettings* settings, + gchar * key G_GNUC_UNUSED, + gpointer service) +{ + IndicatorPowerDeviceProvider* provider = get_device_provider(settings); + indicator_power_service_set_device_provider (INDICATOR_POWER_SERVICE(service), provider); + g_object_unref(provider); +} + /*** **** ***/ @@ -41,18 +94,25 @@ on_name_lost (gpointer instance G_GNUC_UNUSED, gpointer loop) int main (int argc G_GNUC_UNUSED, char ** argv G_GNUC_UNUSED) { - IndicatorPowerDeviceProvider * device_provider; - IndicatorPowerService * service; + GSettings * settings; GMainLoop * loop; + IndicatorPowerService * service; /* boilerplate i18n */ setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR); textdomain (GETTEXT_PACKAGE); + /* mock settings */ + service = indicator_power_service_new (NULL); + settings = g_settings_new ("com.canonical.indicator.power"); + g_signal_connect(settings, "changed::mock-battery-enabled", G_CALLBACK(on_mock_settings_changed), service); + g_signal_connect(settings, "changed::mock-battery-level", G_CALLBACK(on_mock_settings_changed), service); + g_signal_connect(settings, "changed::mock-battery-charging", G_CALLBACK(on_mock_settings_changed), service); + g_signal_connect(settings, "changed::mock-battery-minutes-left", G_CALLBACK(on_mock_settings_changed), service); + on_mock_settings_changed(settings, NULL, service); + /* run */ - device_provider = indicator_power_device_provider_upower_new (); - service = indicator_power_service_new (device_provider); loop = g_main_loop_new (NULL, FALSE); g_signal_connect (service, INDICATOR_POWER_SERVICE_SIGNAL_NAME_LOST, G_CALLBACK(on_name_lost), loop); @@ -61,6 +121,6 @@ main (int argc G_GNUC_UNUSED, char ** argv G_GNUC_UNUSED) /* cleanup */ g_main_loop_unref (loop); g_clear_object (&service); - g_clear_object (&device_provider); + g_clear_object (&settings); return 0; } -- cgit v1.2.3