summaryrefslogtreecommitdiff
path: root/src/xmlmenu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/xmlmenu.cpp')
-rw-r--r--src/xmlmenu.cpp32
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;
-}