Mercurial > pidgin
diff libpurple/sound-loader.c @ 25091:655a37bc0eb0
fixed images to appear in pref menu
author | Justin Rodriguez <ffdragon@soc.pidgin.im> |
---|---|
date | Tue, 24 Jun 2008 02:06:42 +0000 |
parents | 5a02912e0bac |
children | c32dd71d0658 |
line wrap: on
line diff
--- a/libpurple/sound-loader.c Sun Jun 22 03:07:07 2008 +0000 +++ b/libpurple/sound-loader.c Tue Jun 24 02:06:42 2008 +0000 @@ -32,63 +32,62 @@ /***************************************************************************** * Sound Theme Builder *****************************************************************************/ -#define THEME_SUFFIX ".xml" -#define THEME_NAME "name" -#define THEME_AUTHOR "author" -#define THEME_IMAGE "image" -#define THEME_DESCRIPTION "description" -#define THEME_SOUND_EVENT "event" -#define THEME_EVENT_NAME "name" -#define THEME_EVENT_FILE "file" static gpointer purple_sound_loader_build(const gchar *dir) { xmlnode *root_node, *sub_node; - gchar *filename, *filename_full, *image, *data; + gchar *filename, *filename_full, *imagefile, *data; GDir *gdir; PurpleSoundTheme *theme; + PurpleStoredImage *preview; + /* Find the theme file */ gdir = g_dir_open(dir, 0, NULL); g_return_val_if_fail(gdir != NULL, NULL); - while ((filename = g_strdup(g_dir_read_name(gdir))) != NULL && ! g_str_has_suffix(filename, THEME_SUFFIX)) + 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); - + root_node = xmlnode_from_file(dir, filename, "sound themes", "sound-loader"); g_return_val_if_fail(root_node != NULL, NULL); /* Parse the tree */ - theme = g_object_new(PURPLE_TYPE_SOUND_THEME, "type", "sound", NULL); - - purple_theme_set_name(PURPLE_THEME(theme), xmlnode_get_attrib(root_node, THEME_NAME)); - purple_theme_set_author(PURPLE_THEME(theme), xmlnode_get_attrib(root_node, THEME_AUTHOR)); + /* TODO: fix image and add description */ + imagefile = g_build_filename(dir, xmlnode_get_attrib(root_node, "image"), NULL); + preview = purple_imgstore_new_from_file(imagefile); + + sub_node = xmlnode_get_child(root_node, "description"); + data = xmlnode_get_data(sub_node); - image = g_build_filename(dir, xmlnode_get_attrib(root_node, THEME_IMAGE), NULL); + theme = g_object_new(PURPLE_TYPE_SOUND_THEME, + "type", "sound", + "name", xmlnode_get_attrib(root_node, "name"), + "author", xmlnode_get_attrib(root_node, "author"), + "image", preview, + "description", data, NULL); - sub_node = xmlnode_get_child(root_node, THEME_DESCRIPTION); - data = xmlnode_get_data(sub_node); - purple_theme_set_description(PURPLE_THEME(theme), data); xmlnode_free(sub_node); - while ((sub_node = xmlnode_get_child(root_node, THEME_SOUND_EVENT)) != NULL){ + while ((sub_node = xmlnode_get_child(root_node, "event")) != NULL){ purple_sound_theme_set_file(theme, - xmlnode_get_attrib(root_node, THEME_EVENT_NAME), - xmlnode_get_attrib(root_node, THEME_EVENT_FILE)); + xmlnode_get_attrib(root_node, "name"), + xmlnode_get_attrib(root_node, "file")); xmlnode_free(sub_node); } + purple_imgstore_ref(preview); xmlnode_free(root_node); g_dir_close(gdir); g_free(filename_full); - g_free(image); + g_free(imagefile); g_free(data); return theme; }