From 44d14782870339fb1702ba42d26f43755c064e0d Mon Sep 17 00:00:00 2001 From: Lars Uebernickel Date: Thu, 5 Sep 2013 18:17:58 +0200 Subject: Use serialized icons for messages and sources The D-Bus protocol is not part of the public API, so it's okay to change it. --- libmessaging-menu/messaging-menu-app.c | 31 +++++++++++++++++------------- libmessaging-menu/messaging-menu-message.c | 27 ++++++++++++-------------- 2 files changed, 30 insertions(+), 28 deletions(-) (limited to 'libmessaging-menu') diff --git a/libmessaging-menu/messaging-menu-app.c b/libmessaging-menu/messaging-menu-app.c index 421a09f..689a388 100644 --- a/libmessaging-menu/messaging-menu-app.c +++ b/libmessaging-menu/messaging-menu-app.c @@ -173,19 +173,24 @@ static GVariant * source_to_variant (Source *source) { GVariant *v; - gchar *iconstr; - - iconstr = source->icon ? g_icon_to_string (source->icon) : NULL; + GVariant *serialized_icon; + GVariantBuilder builder; - v = g_variant_new ("(sssuxsb)", source->id, - source->label, - iconstr ? iconstr : "", - source->count, - source->time, - source->string ? source->string : "", - source->draws_attention); + serialized_icon = source->icon ? g_icon_serialize (source->icon) : NULL; + g_variant_builder_init (&builder, G_VARIANT_TYPE ("av")); + if (serialized_icon) + { + g_variant_builder_add (&builder, "v", serialized_icon); + g_variant_unref (serialized_icon); + } - g_free (iconstr); + v = g_variant_new ("(ssavuxsb)", source->id, + source->label, + &builder, + source->count, + source->time, + source->string ? source->string : "", + source->draws_attention); return v; } @@ -459,7 +464,7 @@ messaging_menu_app_list_sources (IndicatorMessagesApplication *app_interface, GVariantBuilder builder; GList *it; - g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(sssuxsb)")); + g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ssavuxsb)")); for (it = app->sources; it; it = it->next) g_variant_builder_add_value (&builder, source_to_variant (it->data)); @@ -533,7 +538,7 @@ messaging_menu_app_list_messages (IndicatorMessagesApplication *app_interface, GHashTableIter iter; MessagingMenuMessage *message; - g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(sssssxaa{sv}b)")); + g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(savsssxaa{sv}b)")); g_hash_table_iter_init (&iter, app->messages); while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &message)) diff --git a/libmessaging-menu/messaging-menu-message.c b/libmessaging-menu/messaging-menu-message.c index 5b9ebf5..165c545 100644 --- a/libmessaging-menu/messaging-menu-message.c +++ b/libmessaging-menu/messaging-menu-message.c @@ -495,10 +495,10 @@ action_to_variant (Action *action) * _messaging_menu_message_to_variant: * @msg: a #MessagingMenuMessage * - * Serializes @msg to a #GVariant of the form (sssssxaa{sv}b): + * Serializes @msg to a #GVariant of the form (savsssxaa{sv}b): * * id - * icon + * icon (fake-maybe) * title * subtitle * body @@ -513,25 +513,22 @@ _messaging_menu_message_to_variant (MessagingMenuMessage *msg) { GVariantBuilder builder; GSList *it; + GVariant *serialized_icon; + GVariantBuilder icon_builder; g_return_val_if_fail (MESSAGING_MENU_IS_MESSAGE (msg), NULL); - g_variant_builder_init (&builder, G_VARIANT_TYPE ("(sssssxaa{sv}b)")); - - g_variant_builder_add (&builder, "s", msg->id); - - if (msg->icon) + serialized_icon = msg->icon ? g_icon_serialize (msg->icon) : NULL; + g_variant_builder_init (&icon_builder, G_VARIANT_TYPE ("av")); + if (serialized_icon) { - gchar *iconstr; - - iconstr = g_icon_to_string (msg->icon); - g_variant_builder_add (&builder, "s", iconstr); - - g_free (iconstr); + g_variant_builder_add (&icon_builder, "v", serialized_icon); + g_variant_unref (serialized_icon); } - else - g_variant_builder_add (&builder, "s", ""); + g_variant_builder_init (&builder, G_VARIANT_TYPE ("(savsssxaa{sv}b)")); + g_variant_builder_add (&builder, "s", msg->id); + g_variant_builder_add (&builder, "av", &icon_builder); g_variant_builder_add (&builder, "s", msg->title ? msg->title : ""); g_variant_builder_add (&builder, "s", msg->subtitle ? msg->subtitle : ""); g_variant_builder_add (&builder, "s", msg->body ? msg->body : ""); -- cgit v1.2.3