diff options
author | Patrik Flykt <patrik.flykt@linux.intel.com> | 2013-05-17 13:20:45 +0300 |
---|---|---|
committer | Patrik Flykt <patrik.flykt@linux.intel.com> | 2013-05-20 12:38:43 +0300 |
commit | dfda72b08374a1095756c0212162618ed56586b6 (patch) | |
tree | 8f4f0fdb1b06368dbf392cfab47362a9c0906278 | |
parent | 55245980f04ee87de0a40d6ef1188a5d51561750 (diff) | |
download | connman-dfda72b08374a1095756c0212162618ed56586b6.tar.gz connman-dfda72b08374a1095756c0212162618ed56586b6.tar.bz2 connman-dfda72b08374a1095756c0212162618ed56586b6.zip |
clock: Implement load and save for Clock API properties
Load and save TimeUpdates and TimezoneUpdates Clock API properties.
Clock API Timeservers property is already handled by the timeserver
code.
Fixes BMC#25988
-rw-r--r-- | src/clock.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/clock.c b/src/clock.c index 1c16d404..2ce61d9e 100644 --- a/src/clock.c +++ b/src/clock.c @@ -88,6 +88,65 @@ static enum timezone_updates string2timezone_updates(const char *value) return TIMEZONE_UPDATES_UNKNOWN; } +static void clock_properties_load(void) +{ + GKeyFile *keyfile; + char *str; + enum time_updates time_value; + enum timezone_updates timezone_value; + + keyfile = __connman_storage_load_global(); + if (keyfile == NULL) + return; + + str = g_key_file_get_string(keyfile, "global", "TimeUpdates", NULL); + + time_value = string2time_updates(str); + if (time_value != TIME_UPDATES_UNKNOWN) + time_updates_config = time_value; + + g_free(str); + + str = g_key_file_get_string(keyfile, "global", "TimezoneUpdates", + NULL); + + timezone_value = string2timezone_updates(str); + if (timezone_value != TIMEZONE_UPDATES_UNKNOWN) + timezone_updates_config = timezone_value; + + g_free(str); + + g_key_file_free(keyfile); +} + +static void clock_properties_save(void) +{ + GKeyFile *keyfile; + const char *str; + + keyfile = __connman_storage_load_global(); + if (keyfile == NULL) + keyfile = g_key_file_new(); + + str = time_updates2string(time_updates_config); + if (str != NULL) + g_key_file_set_string(keyfile, "global", "TimeUpdates", str); + else + g_key_file_remove_key(keyfile, "global", "TimeUpdates", NULL); + + str = timezone_updates2string(timezone_updates_config); + if (str != NULL) + g_key_file_set_string(keyfile, "global", "TimezoneUpdates", + str); + else + g_key_file_remove_key(keyfile, "global", "TimezoneUpdates", + NULL); + + __connman_storage_save_global(keyfile); + + g_key_file_free(keyfile); +} + enum time_updates __connman_clock_timeupdates(void) { return time_updates_config; @@ -220,6 +279,7 @@ static DBusMessage *set_property(DBusConnection *conn, time_updates_config = newval; + clock_properties_save(); connman_dbus_property_changed_basic(CONNMAN_MANAGER_PATH, CONNMAN_CLOCK_INTERFACE, "TimeUpdates", DBUS_TYPE_STRING, &strval); @@ -254,6 +314,7 @@ static DBusMessage *set_property(DBusConnection *conn, timezone_updates_config = newval; + clock_properties_save(); connman_dbus_property_changed_basic(CONNMAN_MANAGER_PATH, CONNMAN_CLOCK_INTERFACE, "TimezoneUpdates", DBUS_TYPE_STRING, &strval); @@ -357,6 +418,7 @@ int __connman_clock_init(void) clock_methods, clock_signals, NULL, NULL, NULL); + clock_properties_load(); return 0; } |