background: Implement saving a single item
This commit is contained in:
parent
329aabf0b1
commit
ecdcb2c235
2 changed files with 74 additions and 76 deletions
|
@ -79,20 +79,6 @@ cc_background_xml_get_bool (const xmlNode *parent,
|
||||||
return ret_val;
|
return ret_val;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
static void cc_background_xml_set_bool (const xmlNode * parent,
|
|
||||||
const xmlChar * prop_name, gboolean value) {
|
|
||||||
g_return_if_fail (parent != NULL);
|
|
||||||
g_return_if_fail (prop_name != NULL);
|
|
||||||
|
|
||||||
if (value) {
|
|
||||||
xmlSetProp ((xmlNode *) parent, prop_name, (xmlChar *)"true");
|
|
||||||
} else {
|
|
||||||
xmlSetProp ((xmlNode *) parent, prop_name, (xmlChar *)"false");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static struct {
|
static struct {
|
||||||
int value;
|
int value;
|
||||||
const char *string;
|
const char *string;
|
||||||
|
@ -501,79 +487,90 @@ cc_background_xml_get_item (const char *filename)
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
static const char *
|
||||||
static void gnome_wp_list_flatten (const gchar * key, CcBackgroundXml * item,
|
enum_to_str (GType type,
|
||||||
GSList ** list) {
|
int v)
|
||||||
g_return_if_fail (key != NULL);
|
{
|
||||||
g_return_if_fail (item != NULL);
|
GEnumClass *eclass;
|
||||||
|
GEnumValue *value;
|
||||||
|
|
||||||
*list = g_slist_prepend (*list, item);
|
eclass = G_ENUM_CLASS (g_type_class_peek (type));
|
||||||
|
value = g_enum_get_value (eclass, v);
|
||||||
|
|
||||||
|
g_assert (value);
|
||||||
|
|
||||||
|
return value->value_nick;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
void cc_background_xml_save_list (CcBackgroundXml *data) {
|
|
||||||
//FIXME implement save or remove?
|
|
||||||
//FIXME use XDG user dirs
|
|
||||||
#if 0
|
|
||||||
xmlDoc * wplist;
|
|
||||||
xmlNode * root, * wallpaper, * item;
|
|
||||||
GSList * list = NULL;
|
|
||||||
gchar * wpfile;
|
|
||||||
|
|
||||||
g_hash_table_foreach (data->wp_hash,
|
void
|
||||||
(GHFunc) gnome_wp_list_flatten, &list);
|
cc_background_xml_save (CcBackgroundItem *item,
|
||||||
g_hash_table_destroy (data->wp_hash);
|
const char *filename)
|
||||||
list = g_slist_reverse (list);
|
{
|
||||||
|
xmlDoc *wp;
|
||||||
wpfile = g_build_filename (g_get_home_dir (),
|
xmlNode *root, *wallpaper;
|
||||||
"/.gnome2",
|
xmlNode *xml_item G_GNUC_UNUSED;
|
||||||
"backgrounds.xml",
|
const char * none = "(none)";
|
||||||
NULL);
|
const char *placement_str, *shading_str;
|
||||||
|
char *name, *pcolor, *scolor, *uri;
|
||||||
|
CcBackgroundItemFlags flags;
|
||||||
|
GDesktopBackgroundStyle placement;
|
||||||
|
GDesktopBackgroundShading shading;
|
||||||
|
|
||||||
xmlKeepBlanksDefault (0);
|
xmlKeepBlanksDefault (0);
|
||||||
|
|
||||||
wplist = xmlNewDoc ((xmlChar *)"1.0");
|
wp = xmlNewDoc ((xmlChar *)"1.0");
|
||||||
xmlCreateIntSubset (wplist, (xmlChar *)"wallpapers", NULL, (xmlChar *)"gnome-wp-list.dtd");
|
xmlCreateIntSubset (wp, (xmlChar *)"wallpapers", NULL, (xmlChar *)"gnome-wp-list.dtd");
|
||||||
root = xmlNewNode (NULL, (xmlChar *)"wallpapers");
|
root = xmlNewNode (NULL, (xmlChar *)"wallpapers");
|
||||||
xmlDocSetRootElement (wplist, root);
|
xmlDocSetRootElement (wp, root);
|
||||||
|
|
||||||
while (list != NULL) {
|
g_object_get (G_OBJECT (item),
|
||||||
CcBackgroundXml * wpitem = list->data;
|
"name", &name,
|
||||||
const char * none = "(none)";
|
"uri", &uri,
|
||||||
gchar * filename;
|
"shading", &shading,
|
||||||
const gchar * scale, * shade;
|
"placement", &placement,
|
||||||
gchar * pcolor, * scolor;
|
"primary-color", &pcolor,
|
||||||
|
"secondary-color", &scolor,
|
||||||
|
"flags", &flags,
|
||||||
|
NULL);
|
||||||
|
|
||||||
if (!strcmp (wpitem->filename, none) ||
|
placement_str = enum_to_str (G_DESKTOP_TYPE_DESKTOP_BACKGROUND_STYLE, placement);
|
||||||
(g_utf8_validate (wpitem->filename, -1, NULL) &&
|
shading_str = enum_to_str (G_DESKTOP_TYPE_DESKTOP_BACKGROUND_SHADING, shading);
|
||||||
g_file_test (wpitem->filename, G_FILE_TEST_EXISTS)))
|
|
||||||
filename = g_strdup (wpitem->filename);
|
|
||||||
else
|
|
||||||
filename = g_filename_to_utf8 (wpitem->filename, -1, NULL, NULL, NULL);
|
|
||||||
|
|
||||||
pcolor = gdk_color_to_string (wpitem->pcolor);
|
|
||||||
scolor = gdk_color_to_string (wpitem->scolor);
|
|
||||||
scale = wp_item_option_to_string (wpitem->options);
|
|
||||||
shade = wp_item_shading_to_string (wpitem->shade_type);
|
|
||||||
|
|
||||||
wallpaper = xmlNewChild (root, NULL, (xmlChar *)"wallpaper", NULL);
|
wallpaper = xmlNewChild (root, NULL, (xmlChar *)"wallpaper", NULL);
|
||||||
cc_background_xml_set_bool (wallpaper, (xmlChar *)"deleted", wpitem->deleted);
|
xml_item = xmlNewTextChild (wallpaper, NULL, (xmlChar *)"name", (xmlChar *)name);
|
||||||
item = xmlNewTextChild (wallpaper, NULL, (xmlChar *)"name", (xmlChar *)wpitem->name);
|
if (flags & CC_BACKGROUND_ITEM_HAS_URI &&
|
||||||
item = xmlNewTextChild (wallpaper, NULL, (xmlChar *)"filename", (xmlChar *)filename);
|
uri != NULL)
|
||||||
item = xmlNewTextChild (wallpaper, NULL, (xmlChar *)"options", (xmlChar *)scale);
|
{
|
||||||
item = xmlNewTextChild (wallpaper, NULL, (xmlChar *)"shade_type", (xmlChar *)shade);
|
GFile *file;
|
||||||
item = xmlNewTextChild (wallpaper, NULL, (xmlChar *)"pcolor", (xmlChar *)pcolor);
|
char *fname;
|
||||||
item = xmlNewTextChild (wallpaper, NULL, (xmlChar *)"scolor", (xmlChar *)scolor);
|
|
||||||
|
file = g_file_new_for_commandline_arg (uri);
|
||||||
|
fname = g_file_get_path (file);
|
||||||
|
g_object_unref (file);
|
||||||
|
xml_item = xmlNewTextChild (wallpaper, NULL, (xmlChar *)"filename", (xmlChar *)fname);
|
||||||
|
g_free (fname);
|
||||||
|
}
|
||||||
|
else if (flags & CC_BACKGROUND_ITEM_HAS_URI)
|
||||||
|
{
|
||||||
|
xml_item = xmlNewTextChild (wallpaper, NULL, (xmlChar *)"filename", (xmlChar *)none);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flags & CC_BACKGROUND_ITEM_HAS_PLACEMENT)
|
||||||
|
xml_item = xmlNewTextChild (wallpaper, NULL, (xmlChar *)"options", (xmlChar *)placement_str);
|
||||||
|
if (flags & CC_BACKGROUND_ITEM_HAS_SHADING)
|
||||||
|
xml_item = xmlNewTextChild (wallpaper, NULL, (xmlChar *)"shade_type", (xmlChar *)shading_str);
|
||||||
|
if (flags & CC_BACKGROUND_ITEM_HAS_PCOLOR)
|
||||||
|
xml_item = xmlNewTextChild (wallpaper, NULL, (xmlChar *)"pcolor", (xmlChar *)pcolor);
|
||||||
|
if (flags & CC_BACKGROUND_ITEM_HAS_SCOLOR)
|
||||||
|
xml_item = xmlNewTextChild (wallpaper, NULL, (xmlChar *)"scolor", (xmlChar *)scolor);
|
||||||
|
|
||||||
|
g_free (name);
|
||||||
g_free (pcolor);
|
g_free (pcolor);
|
||||||
g_free (scolor);
|
g_free (scolor);
|
||||||
g_free (filename);
|
g_free (uri);
|
||||||
|
|
||||||
list = g_slist_delete_link (list, list);
|
xmlSaveFormatFile (filename, wp, 1);
|
||||||
g_object_unref (wpitem);
|
xmlFreeDoc (wp);
|
||||||
}
|
|
||||||
xmlSaveFormatFile (wpfile, wplist, 1);
|
|
||||||
xmlFreeDoc (wplist);
|
|
||||||
g_free (wpfile);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -52,7 +52,8 @@ GType cc_background_xml_get_type (void);
|
||||||
|
|
||||||
CcBackgroundXml *cc_background_xml_new (void);
|
CcBackgroundXml *cc_background_xml_new (void);
|
||||||
|
|
||||||
void cc_background_xml_save_list (CcBackgroundXml *data);
|
void cc_background_xml_save (CcBackgroundItem *item,
|
||||||
|
const char *filename);
|
||||||
|
|
||||||
CcBackgroundItem *cc_background_xml_get_item (const char *filename);
|
CcBackgroundItem *cc_background_xml_get_item (const char *filename);
|
||||||
gboolean cc_background_xml_load_xml (CcBackgroundXml *data,
|
gboolean cc_background_xml_load_xml (CcBackgroundXml *data,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue