libpurple/sound-loader.c

branch
soc.2008.themes
changeset 23653
79934bf9a349
parent 23651
2c04a707246d
child 23969
0c3fe3967b97
equal deleted inserted replaced
23652:3204ee69eab2 23653:79934bf9a349
35 35
36 static gpointer 36 static gpointer
37 purple_sound_loader_build(const gchar *dir) 37 purple_sound_loader_build(const gchar *dir)
38 { 38 {
39 xmlnode *root_node, *sub_node; 39 xmlnode *root_node, *sub_node;
40 gchar *filename, *filename_full, *imagefile, *data; 40 gchar *filename, *filename_full, *data;
41 GDir *gdir; 41 GDir *gdir;
42 PurpleSoundTheme *theme; 42 PurpleSoundTheme *theme;
43 PurpleStoredImage *preview;
44
45 43
46 /* Find the theme file */ 44 /* Find the theme file */
47 gdir = g_dir_open(dir, 0, NULL); 45 gdir = g_dir_open(dir, 0, NULL);
48 g_return_val_if_fail(gdir != NULL, NULL); 46 g_return_val_if_fail(gdir != NULL, NULL);
49 47
56 filename_full = g_build_filename(dir, filename, NULL); 54 filename_full = g_build_filename(dir, filename, NULL);
57 55
58 root_node = xmlnode_from_file(dir, filename, "sound themes", "sound-loader"); 56 root_node = xmlnode_from_file(dir, filename, "sound themes", "sound-loader");
59 g_return_val_if_fail(root_node != NULL, NULL); 57 g_return_val_if_fail(root_node != NULL, NULL);
60 58
61 /* Parse the tree */ 59 /* Parse the tree */
62 /* TODO: fix image and add description */
63 imagefile = g_build_filename(dir, xmlnode_get_attrib(root_node, "image"), NULL);
64 preview = purple_imgstore_new_from_file(imagefile);
65
66 sub_node = xmlnode_get_child(root_node, "description"); 60 sub_node = xmlnode_get_child(root_node, "description");
67 data = xmlnode_get_data(sub_node); 61 data = xmlnode_get_data(sub_node);
68 62
69 theme = g_object_new(PURPLE_TYPE_SOUND_THEME, 63 theme = g_object_new(PURPLE_TYPE_SOUND_THEME,
70 "type", "sound", 64 "type", "sound",
71 "name", xmlnode_get_attrib(root_node, "name"), 65 "name", xmlnode_get_attrib(root_node, "name"),
72 "author", xmlnode_get_attrib(root_node, "author"), 66 "author", xmlnode_get_attrib(root_node, "author"),
73 "image", preview, 67 "image", xmlnode_get_attrib(root_node, "image"),
74 "directory", dir, 68 "directory", dir,
75 "description", data, NULL); 69 "description", data, NULL);
76 70
77 xmlnode_free(sub_node); 71 xmlnode_free(sub_node);
78 72
81 xmlnode_get_attrib(sub_node, "name"), 75 xmlnode_get_attrib(sub_node, "name"),
82 xmlnode_get_attrib(sub_node, "file")); 76 xmlnode_get_attrib(sub_node, "file"));
83 xmlnode_free(sub_node); 77 xmlnode_free(sub_node);
84 } 78 }
85 79
86 purple_imgstore_ref(preview);
87 xmlnode_free(root_node); 80 xmlnode_free(root_node);
88 g_dir_close(gdir); 81 g_dir_close(gdir);
89 g_free(filename_full); 82 g_free(filename_full);
90 g_free(imagefile);
91 g_free(data); 83 g_free(data);
92 return theme; 84 return theme;
93 } 85 }
94 86
95 /****************************************************************************** 87 /******************************************************************************

mercurial