parse Categories tag and save them as an array of GQuarks
This commit is contained in:
parent
a6141fe7a4
commit
78a8f407a9
1 changed files with 33 additions and 1 deletions
34
obt/link.c
34
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);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue