aboutsummaryrefslogtreecommitdiff
path: root/libmessaging-menu/messaging-menu-message.c
diff options
context:
space:
mode:
authorLars Uebernickel <lars.uebernickel@canonical.com>2013-09-05 18:17:58 +0200
committerLars Uebernickel <lars.uebernickel@canonical.com>2013-09-05 18:17:58 +0200
commit44d14782870339fb1702ba42d26f43755c064e0d (patch)
treecc5647c8704548b636a437fa99979f7a82622c0b /libmessaging-menu/messaging-menu-message.c
parent9360d9d049592357e544fa3ab85ab603145cf989 (diff)
downloadayatana-indicator-messages-44d14782870339fb1702ba42d26f43755c064e0d.tar.gz
ayatana-indicator-messages-44d14782870339fb1702ba42d26f43755c064e0d.tar.bz2
ayatana-indicator-messages-44d14782870339fb1702ba42d26f43755c064e0d.zip
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.
Diffstat (limited to 'libmessaging-menu/messaging-menu-message.c')
-rw-r--r--libmessaging-menu/messaging-menu-message.c27
1 files changed, 12 insertions, 15 deletions
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 : "");