summaryrefslogtreecommitdiff
path: root/src/menuconfiguration.cpp
diff options
context:
space:
mode:
authorsvntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f>2007-08-26 13:11:41 +0000
committersvntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f>2007-08-26 13:11:41 +0000
commit8c827812bd737d24f6366481854a5e5d5578501c (patch)
tree3526d2f3b5890e41a10e76504c34fe1035e6f39e /src/menuconfiguration.cpp
parent075b5783c77d442c7a9a7315e6696d223784b3fc (diff)
downloadvdr-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.cpp34
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")
{