aboutsummaryrefslogtreecommitdiff
path: root/libmessaging-menu
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
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')
-rw-r--r--libmessaging-menu/messaging-menu-app.c31
-rw-r--r--libmessaging-menu/messaging-menu-message.c27
2 files changed, 30 insertions, 28 deletions
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 : "");