From 78a8f407a94d16b96a54e32a4c9782a765ad40fe Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Thu, 3 Jun 2010 13:09:38 -0400 Subject: [PATCH] parse Categories tag and save them as an array of GQuarks --- obt/link.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/obt/link.c b/obt/link.c index bdddcf54..a1d08270 100644 --- a/obt/link.c +++ b/obt/link.c @@ -49,6 +49,9 @@ struct _ObtLink { glib has something i can use. */ gchar **mime; /*!< Mime types the app can open */ + GQuark *categories; /*!< Array of quarks representing the + application's categories */ + ObtLinkAppStartup startup; gchar *startup_wmclass; } app; @@ -164,7 +167,21 @@ ObtLink* obt_link_from_ddfile(const gchar *ddname, GSList *paths, } } - /* XXX there's more app specific stuff */ + if ((v = g_hash_table_lookup(keys, "Categories"))) { + gulong i; + gchar *end; + + link->d.app.categories = g_new(GQuark, v->value.strings.n); + + c = end = v->value.strings.s; + for (i = 0; i < v->value.strings.n; ++i) { + while (*end) ++end; + link->d.app.categories[i] = g_quark_from_string(c); + c = end = end+1; /* next */ + } + } + + /* XXX do something with mime types */ } else if (link->type == OBT_LINK_TYPE_URL) { v = g_hash_table_lookup(keys, "URL"); @@ -173,6 +190,9 @@ ObtLink* obt_link_from_ddfile(const gchar *ddname, GSList *paths, v->value.string = NULL; } + /* destroy the parsing info */ + g_hash_table_destroy(groups); + return link; } @@ -184,6 +204,18 @@ void obt_link_ref(ObtLink *dd) void obt_link_unref(ObtLink *dd) { if (--dd->ref < 1) { + g_free(dd->name); + g_free(dd->generic); + g_free(dd->comment); + g_free(dd->icon); + if (dd->type == OBT_LINK_TYPE_APPLICATION) { + g_free(dd->d.app.exec); + g_free(dd->d.app.wdir); + g_free(dd->d.app.categories); + g_free(dd->d.app.startup_wmclass); + } + else if (dd->type == OBT_LINK_TYPE_URL) + g_free(dd->d.url.addr); g_slice_free(ObtLink, dd); } }