Support RDF bookmarks, and add Epiphany to Import bookmarks
This commit is contained in:
parent
1fa2c95bf4
commit
ca6174ba6c
2 changed files with 62 additions and 15 deletions
|
@ -183,15 +183,24 @@ katze_array_from_xmlDocPtr (KatzeArray* array,
|
||||||
xmlDocPtr doc)
|
xmlDocPtr doc)
|
||||||
{
|
{
|
||||||
xmlNodePtr cur;
|
xmlNodePtr cur;
|
||||||
xmlChar* version;
|
|
||||||
gchar* value;
|
|
||||||
KatzeItem* item;
|
KatzeItem* item;
|
||||||
|
|
||||||
cur = xmlDocGetRootElement (doc);
|
cur = xmlDocGetRootElement (doc);
|
||||||
version = xmlGetProp (cur, (xmlChar*)"version");
|
|
||||||
if (xmlStrcmp (version, (xmlChar*)"1.0"))
|
if ((cur = xmlDocGetRootElement (doc)) == NULL)
|
||||||
|
{
|
||||||
|
/* Empty document */
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
if (katze_str_equal ((gchar*)cur->name, "xbel"))
|
||||||
|
{
|
||||||
|
/* XBEL 1.0 */
|
||||||
|
gchar* value;
|
||||||
|
|
||||||
|
value = (gchar*)xmlGetProp (cur, (xmlChar*)"version");
|
||||||
|
if (!katze_str_equal (value, "1.0"))
|
||||||
g_warning ("XBEL version is not 1.0.");
|
g_warning ("XBEL version is not 1.0.");
|
||||||
xmlFree (version);
|
g_free (value);
|
||||||
|
|
||||||
value = (gchar*)xmlGetProp (cur, (xmlChar*)"title");
|
value = (gchar*)xmlGetProp (cur, (xmlChar*)"title");
|
||||||
katze_item_set_name (KATZE_ITEM (array), value);
|
katze_item_set_name (KATZE_ITEM (array), value);
|
||||||
|
@ -200,17 +209,52 @@ katze_array_from_xmlDocPtr (KatzeArray* array,
|
||||||
value = (gchar*)xmlGetProp (cur, (xmlChar*)"desc");
|
value = (gchar*)xmlGetProp (cur, (xmlChar*)"desc");
|
||||||
katze_item_set_text (KATZE_ITEM (array), value);
|
katze_item_set_text (KATZE_ITEM (array), value);
|
||||||
g_free (value);
|
g_free (value);
|
||||||
|
|
||||||
if ((cur = xmlDocGetRootElement (doc)) == NULL)
|
|
||||||
{
|
|
||||||
/* Empty document */
|
|
||||||
return FALSE;
|
|
||||||
}
|
}
|
||||||
if (!katze_str_equal ((gchar*)cur->name, "xbel"))
|
else if (katze_str_equal ((gchar*)cur->name, "RDF"))
|
||||||
|
{
|
||||||
|
/* Minimal RSS 1.0 support, enough to read bookmarks */
|
||||||
|
cur = cur->xmlChildrenNode;
|
||||||
|
while (cur)
|
||||||
|
{
|
||||||
|
item = NULL;
|
||||||
|
if (katze_str_equal ((gchar*)cur->name, "item"))
|
||||||
|
{
|
||||||
|
xmlNodePtr cur_item;
|
||||||
|
|
||||||
|
item = katze_item_new ();
|
||||||
|
|
||||||
|
cur_item = cur->xmlChildrenNode;
|
||||||
|
while (cur_item)
|
||||||
|
{
|
||||||
|
if (katze_str_equal ((gchar*)cur_item->name, "title"))
|
||||||
|
item->name = g_strstrip ((gchar*)xmlNodeGetContent (cur_item));
|
||||||
|
else if (katze_str_equal ((gchar*)cur_item->name, "link"))
|
||||||
|
item->uri = g_strstrip ((gchar*)xmlNodeGetContent (cur_item));
|
||||||
|
else if (katze_str_equal ((gchar*)cur_item->name, "subject"))
|
||||||
|
{
|
||||||
|
gchar* value = g_strstrip ((gchar*)xmlNodeGetContent (cur_item));
|
||||||
|
/* FIXME: Create a folder according to the tag */
|
||||||
|
g_free (value);
|
||||||
|
}
|
||||||
|
cur_item = cur_item->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (katze_str_equal ((gchar*)cur->name, "channel"))
|
||||||
|
/* Ignored */;
|
||||||
|
else if (!katze_str_equal ((gchar*)cur->name, "text"))
|
||||||
|
g_warning ("Unexpected attribute: %s", (gchar*)cur->name);
|
||||||
|
if (item)
|
||||||
|
katze_array_add_item (array, item);
|
||||||
|
cur = cur->next;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
/* Wrong document kind */
|
/* Wrong document kind */
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
cur = cur->xmlChildrenNode;
|
cur = cur->xmlChildrenNode;
|
||||||
while (cur)
|
while (cur)
|
||||||
{
|
{
|
||||||
|
@ -233,6 +277,8 @@ katze_array_from_xmlDocPtr (KatzeArray* array,
|
||||||
xmlNodePtr node = cur->xmlChildrenNode;
|
xmlNodePtr node = cur->xmlChildrenNode;
|
||||||
katze_item_set_text (KATZE_ITEM (array), (gchar*)node->content);
|
katze_item_set_text (KATZE_ITEM (array), (gchar*)node->content);
|
||||||
}
|
}
|
||||||
|
else if (!katze_str_equal ((gchar*)cur->name, "text"))
|
||||||
|
g_warning ("Unexpected attribute: %s", (gchar*)cur->name);
|
||||||
if (item)
|
if (item)
|
||||||
katze_array_add_item (array, item);
|
katze_array_add_item (array, item);
|
||||||
cur = cur->next;
|
cur = cur->next;
|
||||||
|
|
|
@ -4133,6 +4133,7 @@ _action_bookmarks_import_activate (GtkAction* action,
|
||||||
{ ".kazehakase/bookmarks.xml", N_("Kazehakase"), "kazehakase-icon" },
|
{ ".kazehakase/bookmarks.xml", N_("Kazehakase"), "kazehakase-icon" },
|
||||||
{ ".opera/bookmarks.adr", N_("Opera"), "opera" },
|
{ ".opera/bookmarks.adr", N_("Opera"), "opera" },
|
||||||
{ ".kde/share/apps/konqueror/bookmarks.xml", N_("Konqueror"), "konqueror" },
|
{ ".kde/share/apps/konqueror/bookmarks.xml", N_("Konqueror"), "konqueror" },
|
||||||
|
{ ".gnome2/epiphany/bookmarks.rdf", N_("Epiphany"), "epiphany" },
|
||||||
};
|
};
|
||||||
|
|
||||||
GtkWidget* dialog;
|
GtkWidget* dialog;
|
||||||
|
|
Loading…
Reference in a new issue