queryFavouriteFolder::queryFavouriteFolder(xmlTextReaderPtr reader, wxString title) : queryFavouriteItem(title, wxT("")) { id = -2; // Element of type <foo />, meaning empty folder if (xmlTextReaderIsEmptyElement(reader)) return; while (xmlTextReaderRead(reader)) { int type = xmlTextReaderNodeType(reader); if (type == 15) return; // Close on parent element if (xmlTextReaderNodeType(reader) != 1) continue; // Any unknown element type wxString nodename = WXSTRING_FROM_XML(xmlTextReaderConstName(reader)); xmlChar *ctitle = xmlTextReaderGetAttribute(reader, XML_STR("title")); if (!ctitle) continue; // We ignore nodes without title wxString title = WXSTRING_FROM_XML(ctitle); xmlFree(ctitle); if (nodename == wxT("favourite")) { xmlChar *cont = xmlTextReaderReadString(reader); if (!cont) continue; // No contents, so ignore node favourites.Add(new queryFavouriteItem(title, WXSTRING_FROM_XML(cont))); xmlFree(cont); SkipToEndElement(reader); } else if (nodename == wxT("folder")) { favourites.Add(new queryFavouriteFolder(reader, title)); } } }
queryMacroList::queryMacroList(xmlTextReaderPtr reader) { // Element of type <foo />, meaning empty folder if (xmlTextReaderIsEmptyElement(reader)) return; while (xmlTextReaderRead(reader)) { int type = xmlTextReaderNodeType(reader); if (type == 15) return; // Close on parent element if (xmlTextReaderNodeType(reader) != 1) continue; // Any unknown element type wxString nodename = WXSTRING_FROM_XML(xmlTextReaderConstName(reader)); xmlChar *ckey = xmlTextReaderGetAttribute(reader, XML_STR("key")); if (!ckey) continue; wxString key = WXSTRING_FROM_XML(ckey); xmlFree(ckey); xmlChar *cname = xmlTextReaderGetAttribute(reader, XML_STR("name")); if (!cname) continue; wxString name = WXSTRING_FROM_XML(cname); xmlFree(cname); if (nodename == wxT("macro")) { xmlChar *cquery = xmlTextReaderReadString(reader); if (!cquery) continue; wxString query = WXSTRING_FROM_XML(cquery); xmlFree(cquery); macros.Add(new queryMacroItem(key, name, query)); SkipToEndElement(reader); } } }