diff options
author | Martin Xu <martin.xu@intel.com> | 2009-11-26 15:24:17 +0800 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2009-11-26 11:34:38 +0000 |
commit | 904a0f6a5e3942dd86f893fb6d39c18b9db778ab (patch) | |
tree | 04e607d55578e123211fe542de73e9f7b5731888 /src | |
parent | 378de73cbf88e5522fe0102c6a913a5ddb55e84c (diff) | |
download | connman-904a0f6a5e3942dd86f893fb6d39c18b9db778ab.tar.gz connman-904a0f6a5e3942dd86f893fb6d39c18b9db778ab.tar.bz2 connman-904a0f6a5e3942dd86f893fb6d39c18b9db778ab.zip |
Add PropertyChanged signal for service Favorite setting
Diffstat (limited to 'src')
-rw-r--r-- | src/service.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/service.c b/src/service.c index 59352b1b..aa0e9003 100644 --- a/src/service.c +++ b/src/service.c @@ -1352,6 +1352,33 @@ static gint service_compare(gconstpointer a, gconstpointer b, return (gint) service_b->strength - (gint) service_a->strength; } +static void favorite_changed(struct connman_service *service) +{ + DBusMessage *signal; + DBusMessageIter entry, value; + const char *key = "Favorite"; + + if (service->path == NULL) + return; + + signal = dbus_message_new_signal(service->path, + CONNMAN_SERVICE_INTERFACE, "PropertyChanged"); + if (signal == NULL) + return; + + dbus_message_iter_init_append(signal, &entry); + + dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key); + + dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, + DBUS_TYPE_BOOLEAN_AS_STRING, &value); + dbus_message_iter_append_basic(&value, DBUS_TYPE_BOOLEAN, + &service->favorite); + dbus_message_iter_close_container(&entry, &value); + + g_dbus_send_message(connection, signal); +} + /** * connman_service_set_favorite: * @service: service structure @@ -1373,6 +1400,8 @@ int connman_service_set_favorite(struct connman_service *service, service->favorite = favorite; + favorite_changed(service); + g_sequence_sort_changed(iter, service_compare, NULL); __connman_profile_changed(FALSE); |