diff options
author | louis <louis.braun@gmx.de> | 2016-05-26 10:47:45 +0200 |
---|---|---|
committer | louis <louis.braun@gmx.de> | 2016-05-26 10:47:45 +0200 |
commit | a57c44b06874ba146ca27a5c87868c1e3c304875 (patch) | |
tree | 844945c2f05d05ae80eb6fb1126db267253a1deb /coreengine/xmlparser.c | |
parent | ffb414cdee209097f19f925c46de9f105cf5358e (diff) | |
download | vdr-plugin-skindesigner-a57c44b06874ba146ca27a5c87868c1e3c304875.tar.gz vdr-plugin-skindesigner-a57c44b06874ba146ca27a5c87868c1e3c304875.tar.bz2 |
introduced zapcockpit extension
Diffstat (limited to 'coreengine/xmlparser.c')
-rw-r--r-- | coreengine/xmlparser.c | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/coreengine/xmlparser.c b/coreengine/xmlparser.c index 617313a..aa7be10 100644 --- a/coreengine/xmlparser.c +++ b/coreengine/xmlparser.c @@ -40,6 +40,7 @@ bool cXmlParser::ParseView(void) { view->SetAttributes(rootAttribs); cViewMenu *menuView = dynamic_cast<cViewMenu*>(view); + cViewChannel *channelView = dynamic_cast<cViewChannel*>(view); cViewTracks *tracksView = dynamic_cast<cViewTracks*>(view); if (!LevelDown()) @@ -48,6 +49,13 @@ bool cXmlParser::ParseView(void) { do { if (view->ValidViewElement(NodeName())) { ParseViewElement(NodeName()); + } else if (channelView) { + if (view->ValidViewList(NodeName())) { + ParseViewList(NULL, NodeName()); + } else { + esyslog("skindesigner: unknown node %s", NodeName()); + return false; + } } else if (menuView) { if (menuView->ValidSubView(NodeName())) { ParseSubView(NodeName()); @@ -334,7 +342,7 @@ void cXmlParser::ParsePluginViewElement(bool isScrollbar, bool isTabLabels) { } } -void cXmlParser::ParseViewList(cView *subView) { +void cXmlParser::ParseViewList(cView *subView, const char *listName) { if (!view) return; @@ -345,7 +353,11 @@ void cXmlParser::ParseViewList(cView *subView) { name = view->GetViewName(); vector<stringpair> attribs = ParseAttributes(); - cViewList *viewList = cViewList::CreateViewList(name); + cViewList *viewList = NULL; + if (!listName) + viewList = cViewList::CreateViewList(name); + else + viewList = cViewList::CreateViewList(listName); viewList->SetAttributes(attribs); if (!LevelDown()) @@ -353,7 +365,11 @@ void cXmlParser::ParseViewList(cView *subView) { do { if (CheckNodeName("currentelement")) { - cViewElement *currentElement = cViewList::CreateCurrentElement(name); + cViewElement *currentElement = NULL; + if (!listName) + currentElement = cViewList::CreateCurrentElement(name); + else + currentElement = cViewList::CreateCurrentElement(listName); currentElement->SetOsd(sdOsd); vector<stringpair> attribsList = ParseAttributes(); currentElement->SetAttributes(attribsList); @@ -375,7 +391,11 @@ void cXmlParser::ParseViewList(cView *subView) { LevelUp(); viewList->AddCurrentElement(currentElement); } else if (CheckNodeName("listelement")) { - cViewElement *listElement = cViewList::CreateListElement(name); + cViewElement *listElement = NULL; + if (!listName) + listElement = cViewList::CreateListElement(name); + else + listElement = cViewList::CreateListElement(listName); listElement->SetOsd(sdOsd); vector<stringpair> attribsList = ParseAttributes(); listElement->SetAttributes(attribsList); @@ -402,8 +422,12 @@ void cXmlParser::ParseViewList(cView *subView) { if (subView) subView->AddViewList(viewList); - else - view->AddViewList(viewList); + else if (listName) { + cViewChannel *channelView = dynamic_cast<cViewChannel*>(view); + channelView->AddChannelViewList(listName, viewList); + } else { + view->AddViewList(viewList); + } } |