diff options
author | svntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f> | 2007-08-26 13:11:41 +0000 |
---|---|---|
committer | svntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f> | 2007-08-26 13:11:41 +0000 |
commit | 8c827812bd737d24f6366481854a5e5d5578501c (patch) | |
tree | 3526d2f3b5890e41a10e76504c34fe1035e6f39e /src/menuconfiguration.cpp | |
parent | 075b5783c77d442c7a9a7315e6696d223784b3fc (diff) | |
download | vdr-plugin-menuorg-8c827812bd737d24f6366481854a5e5d5578501c.tar.gz vdr-plugin-menuorg-8c827812bd737d24f6366481854a5e5d5578501c.tar.bz2 |
made menuconfiguration reparsable from loaded dom
git-svn-id: file:///home/tobias/sandbox/vdr/--/vdr-pkg/vdr-pkg/menuorg/trunk@6002 cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f
Diffstat (limited to 'src/menuconfiguration.cpp')
-rw-r--r-- | src/menuconfiguration.cpp | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/src/menuconfiguration.cpp b/src/menuconfiguration.cpp index e3a9d3b..38cc58a 100644 --- a/src/menuconfiguration.cpp +++ b/src/menuconfiguration.cpp @@ -52,9 +52,9 @@ const string MenuConfiguration::_dtd = " execute CDATA #REQUIRED\n" " confirm (yes|no) #IMPLIED>"; -MenuNode* MenuConfiguration::LoadMenu(string menuFileName) -{ - MenuNode* menuRoot = new MenuNode(); +MenuConfiguration::MenuConfiguration(string menuFileName) +{ + _configuration = NULL; try { @@ -70,26 +70,34 @@ MenuNode* MenuConfiguration::LoadMenu(string menuFileName) Document *pDoc = parser.get_document(); validator.validate( pDoc ); - const Element* rootElement = parser.get_document()->get_root_node(); - ParseElement(rootElement, menuRoot); + _configuration = parser.get_document()->get_root_node(); - AddUnconfiguredPlugins(menuRoot); } catch(const std::exception& ex) { - delete menuRoot; - menuRoot = NULL; - cerr << "menuorg: Exception caught when parsing xml configuration: " << ex.what(); esyslog("Exception caught when parsing xml configuration. See stderr output for details."); } +} - return menuRoot; +MenuNode* MenuConfiguration::MenuTree() +{ + if (_configuration) + { + MenuNode* menuRoot = new MenuNode(); + CreateMenuTree(_configuration, menuRoot); + AddUnconfiguredPlugins(menuRoot); + return menuRoot; + } + else + { + return NULL; + } } -void MenuConfiguration::ParseElement(const Element* element, MenuNode* menuNode) +void MenuConfiguration::CreateMenuTree(const Element* menuRoot, MenuNode* menuNode) { - Node::NodeList children = element->get_children(); + Node::NodeList children = menuRoot->get_children(); for (Node::NodeList::iterator i = children.begin(); i != children.end(); i++) { const xmlpp::Element* childElement = dynamic_cast<const xmlpp::Element*>(*i); @@ -104,7 +112,7 @@ void MenuConfiguration::ParseElement(const Element* element, MenuNode* menuNode) if ( type == "menu") { MenuNode* subMenu = AddSubMenuNode(name, menuNode); - ParseElement(childElement, subMenu); + CreateMenuTree(childElement, subMenu); } else if (type == "system") { |