diff options
Diffstat (limited to 'libtemplate/template.c')
-rw-r--r-- | libtemplate/template.c | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/libtemplate/template.c b/libtemplate/template.c index 01a7b28..189efd0 100644 --- a/libtemplate/template.c +++ b/libtemplate/template.c @@ -56,7 +56,8 @@ bool cTemplate::ReadFromXML(string xmlfile) { if (!parser.ParseView()) { return false; } - //read additional plugin templates + + //read additional plugin menu templates bool ok = true; if (viewType == vtDisplayMenu) { config.InitPluginMenuIterator(); @@ -114,6 +115,39 @@ void cTemplate::CacheImages(void) { } } +bool cTemplate::SetSubViews(string plugName, int viewID) { + map <int,string> subViews = config.GetPluginSubViews(plugName, viewID); + + if (subViews.size() == 0) { + return true; + } + + for (map<int,string>::iterator it = subViews.begin(); it != subViews.end(); it ++) { + int subViewID = it->first; + stringstream templateName; + templateName << "plug-" << plugName << "-" << it->second; + string subViewTemplate = templateName.str(); + cTemplateView *plgTemplateView = new cTemplateViewPlugin(plugName, subViewID); + plgTemplateView->SetGlobals(globals); + cXmlParser parser; + if (!parser.ReadView(plgTemplateView, subViewTemplate)) { + esyslog("skindesigner: error reading plugin %s template", plugName.c_str()); + delete plgTemplateView; + return false; + } + if (!parser.ParseView()) { + esyslog("skindesigner: error reading plugin %s template", plugName.c_str()); + delete plgTemplateView; + return false; + } + stringstream svid; + svid << subViewID; + rootView->AddSubView(svid.str(), plgTemplateView); + } + return true; +} + + void cTemplate::Debug(void) { rootView->Debug(); } |