Mercurial > pidgin.yaz
diff pidgin/gtkicon-loader.c @ 23702:9525fb966efb
theme loader cleanup, and remove a few warnings
author | Justin Rodriguez <ffdragon@soc.pidgin.im> |
---|---|
date | Tue, 26 Aug 2008 08:28:25 +0000 |
parents | b37ccfd1697b |
children |
line wrap: on
line diff
--- a/pidgin/gtkicon-loader.c Sun Aug 10 03:27:12 2008 +0000 +++ b/pidgin/gtkicon-loader.c Tue Aug 26 08:28:25 2008 +0000 @@ -26,35 +26,25 @@ #include "xmlnode.h" - -/****************************************************************************** - * Globals - *****************************************************************************/ /***************************************************************************** - * Sound Theme Builder + * Icon Theme Builder *****************************************************************************/ static PurpleTheme * pidgin_icon_loader_build(const gchar *dir) { - xmlnode *root_node, *sub_node; - gchar *filename, *filename_full, *data; - GDir *gdir; + xmlnode *root_node = NULL, *sub_node; + gchar *filename_full, *data; PidginIconTheme *theme = NULL; /* Find the theme file */ - gdir = g_dir_open(dir, 0, NULL); - g_return_val_if_fail(gdir != NULL, NULL); + g_return_val_if_fail(dir != NULL, NULL); + filename_full = g_build_filename(dir, "theme.xml", NULL); - while ((filename = g_strdup(g_dir_read_name(gdir))) != NULL && ! g_str_has_suffix(filename, ".xml")) - g_free(filename); - - g_return_val_if_fail(filename != NULL, NULL); - - /* Build the xml tree */ - filename_full = g_build_filename(dir, filename, NULL); + if (g_file_test(filename_full, G_FILE_TEST_IS_REGULAR)) + root_node = xmlnode_from_file(dir, "theme.xml", "sound themes", "sound-loader"); - root_node = xmlnode_from_file(dir, filename, "status icon themes", "icon-loader"); + g_free(filename_full); g_return_val_if_fail(root_node != NULL, NULL); /* Parse the tree */ @@ -70,19 +60,17 @@ "directory", dir, "description", data, NULL); - xmlnode_free(sub_node); - - while ((sub_node = xmlnode_get_child(root_node, "icon")) != NULL){ - pidgin_icon_theme_set_file(theme, + sub_node = xmlnode_get_child(root_node, "icon"); + + while (sub_node){ + pidgin_icon_theme_set_icon(theme, xmlnode_get_attrib(sub_node, "id"), xmlnode_get_attrib(sub_node, "file")); - xmlnode_free(sub_node); + sub_node = xmlnode_get_next_twin(sub_node); } } xmlnode_free(root_node); - g_dir_close(gdir); - g_free(filename_full); g_free(data); return PURPLE_THEME(theme); }