bool CFavouritesDirectory::LoadFavourites(const std::string& strPath, CFileItemList& items) { CXBMCTinyXML doc; if (!doc.LoadFile(strPath)) { CLog::Log(LOGERROR, "Unable to load %s (row %i column %i)", strPath.c_str(), doc.Row(), doc.Column()); return false; } TiXmlElement *root = doc.RootElement(); if (!root || strcmp(root->Value(), "favourites")) { CLog::Log(LOGERROR, "Favourites.xml doesn't contain the <favourites> root element"); return false; } TiXmlElement *favourite = root->FirstChildElement("favourite"); while (favourite) { // format: // <favourite name="Cool Video" thumb="foo.jpg">PlayMedia(c:\videos\cool_video.avi)</favourite> // <favourite name="My Album" thumb="bar.tbn">ActivateWindow(MyMusic,c:\music\my album)</favourite> // <favourite name="Apple Movie Trailers" thumb="path_to_thumb.png">RunScript(special://xbmc/scripts/apple movie trailers/default.py)</favourite> const char *name = favourite->Attribute("name"); const char *thumb = favourite->Attribute("thumb"); if (name && favourite->FirstChild()) { if(!items.Contains(favourite->FirstChild()->Value())) { CFileItemPtr item(new CFileItem(name)); item->SetPath(favourite->FirstChild()->Value()); if (thumb) item->SetArt("thumb", thumb); items.Add(item); } } favourite = favourite->NextSiblingElement("favourite"); } return true; }