diff options
Diffstat (limited to 'src/xmlmenu.cpp')
-rw-r--r-- | src/xmlmenu.cpp | 32 |
1 files changed, 12 insertions, 20 deletions
diff --git a/src/xmlmenu.cpp b/src/xmlmenu.cpp index 6893038..b3dea53 100644 --- a/src/xmlmenu.cpp +++ b/src/xmlmenu.cpp @@ -10,12 +10,14 @@ using namespace xmlpp; using namespace std; -void XmlMenu::LoadXmlMenu() +MenuNode* XmlMenu::LoadXmlMenu() { // TODO: show how vdr handels the path vars (developer doc) // and change code for dynamic path vars const char *File = "/var/lib/vdr/plugins/vdr-menu.xml"; + MenuNode* menuRoot = new MenuNode(); + try { DomParser parser; @@ -24,28 +26,23 @@ void XmlMenu::LoadXmlMenu() //parser.set_validate(); parser.set_substitute_entities(); //We just want the text to be resolved/unescaped automatically. parser.parse_file(File); - if(parser) - { - //Walk the tree: - MenuCount=0; - const Element* rootElement = parser.get_document()->get_root_node(); //deleted by DomParser. - ParseElement(rootElement, &_rootMenuNode); - _xmlLoadError=false; - } + + + const Element* rootElement = parser.get_document()->get_root_node(); + ParseElement(rootElement, menuRoot); } catch(const std::exception& ex) { + delete menuRoot; + menuRoot = NULL; + //TODO: print output to syslog (isyslog or dsyslog?) cout << "Exception caught: " << ex.what() << endl; isyslog("Exception caught: %s", ex.what()); //TODO: display message on osd - _xmlLoadError=true; } -} - -MenuNode* XmlMenu::GetMenuTree() -{ - return &_rootMenuNode; + + return menuRoot; } void XmlMenu::ParseElement(const Element* element, MenuNode* menuNode) @@ -152,8 +149,3 @@ bool XmlMenu::FindPluginByName(string name, const char** mainMenuEntry, int& plu } return false; } - -bool XmlMenu::getErrorStatus() -{ - return _xmlLoadError; -} |