diff options
| author | louis <louis.braun@gmx.de> | 2015-08-08 11:04:15 +0200 |
|---|---|---|
| committer | louis <louis.braun@gmx.de> | 2015-08-08 11:04:15 +0200 |
| commit | ea758f955655ee48b0c3b0f277c21e8cbc045316 (patch) | |
| tree | 1326c86deede899b6d8394c611a09831ff1858fe /libtemplate | |
| parent | b5c587b2567e4ac838a33363d02ad228d94b9b14 (diff) | |
| download | vdr-plugin-skindesigner-ea758f955655ee48b0c3b0f277c21e8cbc045316.tar.gz vdr-plugin-skindesigner-ea758f955655ee48b0c3b0f277c21e8cbc045316.tar.bz2 | |
implemented horizontal menus
Diffstat (limited to 'libtemplate')
| -rw-r--r-- | libtemplate/globals.c | 9 | ||||
| -rw-r--r-- | libtemplate/globals.h | 1 | ||||
| -rw-r--r-- | libtemplate/parameter.c | 18 | ||||
| -rw-r--r-- | libtemplate/templateview.c | 202 | ||||
| -rw-r--r-- | libtemplate/templateview.h | 24 | ||||
| -rw-r--r-- | libtemplate/templateviewelement.c | 9 | ||||
| -rw-r--r-- | libtemplate/templateviewelement.h | 1 | ||||
| -rw-r--r-- | libtemplate/templateviewlist.c | 11 | ||||
| -rw-r--r-- | libtemplate/templateviewlist.h | 1 | ||||
| -rw-r--r-- | libtemplate/xmlparser.c | 32 |
10 files changed, 142 insertions, 166 deletions
diff --git a/libtemplate/globals.c b/libtemplate/globals.c index 822b993..3fd0705 100644 --- a/libtemplate/globals.c +++ b/libtemplate/globals.c @@ -149,6 +149,15 @@ void cGlobals::ReplaceStringVars(string &value) { } +bool cGlobals::GetString(string &name, string &value) { + map<string,string>::iterator hit = stringVars.find(name); + if (hit == stringVars.end()) + return false; + value = hit->second; + return true; +} + + bool cGlobals::AddTranslation(string name, map < string, string > transl) { translations.erase(name); translations.insert(pair<string, map < string, string > >(name, transl)); diff --git a/libtemplate/globals.h b/libtemplate/globals.h index d566fac..12ee917 100644 --- a/libtemplate/globals.h +++ b/libtemplate/globals.h @@ -47,6 +47,7 @@ public: void ReplaceDoubleVars(string &value); void AddString(string &name, string &value); void ReplaceStringVars(string &value); + bool GetString(string &name, string &value); bool AddTranslation(string name, map < string, string > transl); bool Translate(string text, string &translation); void AddCustomInt(string &name, int value); diff --git a/libtemplate/parameter.c b/libtemplate/parameter.c index 21e02e1..d76cb35 100644 --- a/libtemplate/parameter.c +++ b/libtemplate/parameter.c @@ -291,6 +291,14 @@ void cConditionalParameter::Evaluate(map < string, int > *intTokens, map < strin tokenTrue = true; } } + if (!tokenTrue) { + string value = ""; + if (globals->GetString(cond->tokenName, value)) { + if (!value.compare(cond->strCompareValue)) { + tokenTrue = true; + } + } + } } else if (cond->type == ctStringNotEquals) { if (stringTokens) { map < string, string >::iterator hit = stringTokens->find(cond->tokenName); @@ -313,6 +321,14 @@ void cConditionalParameter::Evaluate(map < string, int > *intTokens, map < strin tokenTrue = true; } } + if (!tokenTrue) { + string value = ""; + if (globals->GetString(cond->tokenName, value)) { + if (value.find(cond->strCompareValue) != string::npos) { + tokenTrue = true; + } + } + } } else if (cond->type == ctStringNotContains) { if (stringTokens) { map < string, string >::iterator hit = stringTokens->find(cond->tokenName); @@ -472,6 +488,6 @@ string cConditionalParameter::StripWhitespaces(string value) { void cConditionalParameter::Debug(void) { dsyslog("skindesigner: Condition %s, Type: %s, cond is %s", value.c_str(), (type == cpAnd)?"and combination":((type == cpOr)?"or combination":"single param") , isTrue?"true":"false"); for (vector<sCondition>::iterator it = conditions.begin(); it != conditions.end(); it++) { - dsyslog("skindesigner: cond token %s, type: %d, compareValue %d, negated: %d", it->tokenName.c_str(), it->type, it->compareValue, it->isNegated); + dsyslog("skindesigner: cond token %s, type: %d, compareValue %d, negated: %d, strCompareValue %s", it->tokenName.c_str(), it->type, it->compareValue, it->isNegated, it->strCompareValue.c_str()); } }
\ No newline at end of file diff --git a/libtemplate/templateview.c b/libtemplate/templateview.c index fcedee8..78d6fdf 100644 --- a/libtemplate/templateview.c +++ b/libtemplate/templateview.c @@ -14,11 +14,11 @@ cTemplateView::cTemplateView(void) { } cTemplateView::~cTemplateView() { - for (map < eViewElement, cTemplateViewElement* >::iterator it = viewElements.begin(); it != viewElements.end(); it++) { + for (multimap < eViewElement, cTemplateViewElement* >::iterator it = viewElements.begin(); it != viewElements.end(); it++) { delete it->second; } - for (map < eViewList, cTemplateViewList* >::iterator it = viewLists.begin(); it != viewLists.end(); it++) { + for (multimap < eViewList, cTemplateViewList* >::iterator it = viewLists.begin(); it != viewLists.end(); it++) { delete it->second; } @@ -64,11 +64,15 @@ void cTemplateView::SetContainer(int x, int y, int width, int height) { } cTemplateViewElement *cTemplateView::GetViewElement(eViewElement ve) { - map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve); - if (hit == viewElements.end()) { - return NULL; + pair<multimap< eViewElement, cTemplateViewElement* >::iterator, multimap< eViewElement, cTemplateViewElement* >::iterator> rangeViewElements; + rangeViewElements = viewElements.equal_range(ve); + for (multimap<eViewElement, cTemplateViewElement*>::iterator it = rangeViewElements.first; it!=rangeViewElements.second; ++it) { + cTemplateViewElement *viewElement = it->second; + if (viewElement->Execute()) { + return viewElement; + } } - return hit->second; + return NULL; } void cTemplateView::InitViewElementIterator(void) { @@ -104,10 +108,21 @@ cTemplateViewGrid *cTemplateView::GetNextViewGrid(void) { } cTemplateViewList *cTemplateView::GetViewList(eViewList vl) { - map < eViewList, cTemplateViewList* >::iterator hit = viewLists.find(vl); - if (hit == viewLists.end()) - return NULL; - return hit->second; + if (viewLists.size() == 1) { + multimap < eViewList, cTemplateViewList* >::iterator hit = viewLists.find(vl); + if (hit == viewLists.end()) + return NULL; + return hit->second; + } + pair<multimap< eViewList, cTemplateViewList* >::iterator, multimap< eViewList, cTemplateViewList* >::iterator> rangeViewLists; + rangeViewLists = viewLists.equal_range(vl); + for (multimap<eViewList, cTemplateViewList*>::iterator it = rangeViewLists.first; it!=rangeViewLists.second; ++it) { + cTemplateViewList *viewList = it->second; + if (viewList->Execute()) { + return viewList; + } + } + return NULL; } void cTemplateView::InitViewListIterator(void) { @@ -190,7 +205,7 @@ cRect cTemplateView::GetOsdSize(void) { int cTemplateView::GetNumPixmaps(void) { int numPixmaps = 0; - for (map < eViewElement, cTemplateViewElement* >::iterator it = viewElements.begin(); it != viewElements.end(); it++) { + for (multimap < eViewElement, cTemplateViewElement* >::iterator it = viewElements.begin(); it != viewElements.end(); it++) { cTemplateViewElement *viewElement = it->second; numPixmaps += viewElement->GetNumPixmaps(); } @@ -198,10 +213,9 @@ int cTemplateView::GetNumPixmaps(void) { } int cTemplateView::GetNumPixmapsViewElement(eViewElement ve) { - map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve); - if (hit == viewElements.end()) + cTemplateViewElement *viewElement = GetViewElement(ve); + if (!viewElement) return 0; - cTemplateViewElement *viewElement = hit->second; return viewElement->GetNumPixmaps(); } @@ -248,15 +262,14 @@ tColor cTemplateView::DebugGridFontColor(void) { } bool cTemplateView::ExecuteView(eViewElement ve) { - map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve); - if (hit == viewElements.end()) + cTemplateViewElement *viewElement = GetViewElement(ve); + if (!viewElement) return false; - cTemplateViewElement *viewElement = hit->second; - return viewElement->Execute(); + return true; } bool cTemplateView::DetachViewElement(eViewElement ve) { - map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve); + multimap < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve); if (hit == viewElements.end()) return false; cTemplateViewElement *viewElement = hit->second; @@ -264,10 +277,9 @@ bool cTemplateView::DetachViewElement(eViewElement ve) { } string cTemplateView::GetViewElementMode(eViewElement ve) { - map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve); - if (hit == viewElements.end()) + cTemplateViewElement *viewElement = GetViewElement(ve); + if (!viewElement) return ""; - cTemplateViewElement *viewElement = hit->second; return viewElement->GetMode(); } @@ -563,9 +575,8 @@ void cTemplateView::PreCache(bool isSubview) { int osdWidth = parameters->GetNumericParameter(ptWidth); int osdHeight = parameters->GetNumericParameter(ptHeight); int pixOffset = 0; - //Cache ViewElements - for (map < eViewElement, cTemplateViewElement* >::iterator it = viewElements.begin(); it != viewElements.end(); it++) { + for (multimap < eViewElement, cTemplateViewElement* >::iterator it = viewElements.begin(); it != viewElements.end(); it++) { cTemplateViewElement *viewElement = it->second; viewElement->SetGlobals(globals); if (!isSubview) @@ -588,7 +599,7 @@ void cTemplateView::PreCache(bool isSubview) { } //Cache ViewLists - for (map < eViewList, cTemplateViewList* >::iterator it = viewLists.begin(); it != viewLists.end(); it++) { + for (multimap < eViewList, cTemplateViewList* >::iterator it = viewLists.begin(); it != viewLists.end(); it++) { cTemplateViewList *viewList = it->second; viewList->SetGlobals(globals); //viewlists in subviews need complete container information @@ -632,13 +643,13 @@ void cTemplateView::Debug(void) { parameters->Debug(); - for (map < eViewElement, cTemplateViewElement* >::iterator it = viewElements.begin(); it != viewElements.end(); it++) { + for (multimap < eViewElement, cTemplateViewElement* >::iterator it = viewElements.begin(); it != viewElements.end(); it++) { esyslog("skindesigner: ++++++++ ViewElement: %s", GetViewElementName(it->first).c_str()); cTemplateViewElement *viewElement = it->second; viewElement->Debug(); } - for (map < eViewList, cTemplateViewList* >::iterator it = viewLists.begin(); it != viewLists.end(); it++) { + for (multimap < eViewList, cTemplateViewList* >::iterator it = viewLists.begin(); it != viewLists.end(); it++) { esyslog("skindesigner: ++++++++ ViewList: %s", GetViewListName(it->first).c_str()); cTemplateViewList *viewList = it->second; viewList->Debug(); @@ -787,6 +798,7 @@ void cTemplateView::SetFunctionDefinitions(void) { attributes.insert("width"); attributes.insert("height"); attributes.insert("align"); + attributes.insert("valign"); attributes.insert("maxlines"); attributes.insert("font"); attributes.insert("fontsize"); @@ -1008,7 +1020,7 @@ string cTemplateViewChannel::GetViewElementName(eViewElement ve) { return name; } -void cTemplateViewChannel::AddPixmap(string sViewElement, cTemplatePixmapNode *pix, vector<stringpair> &viewElementattributes) { +void cTemplateViewChannel::AddViewElement(string sViewElement, cTemplateViewElement *viewElement) { eViewElement ve = veUndefined; if (!sViewElement.compare("background")) { @@ -1055,17 +1067,7 @@ void cTemplateViewChannel::AddPixmap(string sViewElement, cTemplatePixmapNode *p return; } - pix->SetGlobals(globals); - - map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve); - if (hit == viewElements.end()) { - cTemplateViewElement *viewElement = new cTemplateViewElement(); - viewElement->SetParameters(viewElementattributes); - viewElement->AddPixmap(pix); - viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement)); - } else { - (hit->second)->AddPixmap(pix); - } + viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement)); } /************************************************************************************ @@ -1246,6 +1248,7 @@ cTemplateViewMenu::cTemplateViewMenu(void) { attributes.insert("menuitemwidth"); attributes.insert("determinatefont"); attributes.insert("numlistelements"); + attributes.insert("condition"); funcsAllowed.insert(pair< string, set<string> >("menuitems", attributes)); //definition of allowed parameters for currentitems viewlist @@ -1516,7 +1519,7 @@ void cTemplateViewMenu::AddPluginView(string plugName, int templNo, cTemplateVie } } -void cTemplateViewMenu::AddPixmap(string sViewElement, cTemplatePixmapNode *pix, vector<pair<string, string> > &viewElementattributes) { +void cTemplateViewMenu::AddViewElement(string sViewElement, cTemplateViewElement *viewElement) { eViewElement ve = veUndefined; if (!sViewElement.compare("background")) { @@ -1568,20 +1571,7 @@ void cTemplateViewMenu::AddPixmap(string sViewElement, cTemplatePixmapNode *pix, return; } - pix->SetGlobals(globals); - - map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve); - if (hit == viewElements.end()) { - cTemplateViewElement *viewElement = new cTemplateViewElement(); - viewElement->SetParameters(viewElementattributes); - if (viewElement->DebugTokens()) { - dsyslog("skindesigner: activating token debugging for view element %s", sViewElement.c_str()); - } - viewElement->AddPixmap(pix); - viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement)); - } else { - (hit->second)->AddPixmap(pix); - } + viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement)); } void cTemplateViewMenu::AddViewList(string sViewList, cTemplateViewList *viewList) { @@ -1657,7 +1647,7 @@ string cTemplateViewMessage::GetViewElementName(eViewElement ve) { return name; } -void cTemplateViewMessage::AddPixmap(string sViewElement, cTemplatePixmapNode *pix, vector<pair<string, string> > &viewElementattributes) { +void cTemplateViewMessage::AddViewElement(string sViewElement, cTemplateViewElement *viewElement) { eViewElement ve = veUndefined; if (!sViewElement.compare("background")) { @@ -1671,17 +1661,7 @@ void cTemplateViewMessage::AddPixmap(string sViewElement, cTemplatePixmapNode *p return; } - pix->SetGlobals(globals); - - map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve); - if (hit == viewElements.end()) { - cTemplateViewElement *viewElement = new cTemplateViewElement(); - viewElement->SetParameters(viewElementattributes); - viewElement->AddPixmap(pix); - viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement)); - } else { - (hit->second)->AddPixmap(pix); - } + viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement)); } /************************************************************************************ @@ -1814,7 +1794,7 @@ string cTemplateViewReplay::GetViewElementName(eViewElement ve) { return name; } -void cTemplateViewReplay::AddPixmap(string sViewElement, cTemplatePixmapNode *pix, vector<pair<string, string> > &viewElementattributes) { +void cTemplateViewReplay::AddViewElement(string sViewElement, cTemplateViewElement *viewElement) { eViewElement ve = veUndefined; if (!sViewElement.compare("background")) { @@ -1864,17 +1844,7 @@ void cTemplateViewReplay::AddPixmap(string sViewElement, cTemplatePixmapNode *pi return; } - pix->SetGlobals(globals); - - map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve); - if (hit == viewElements.end()) { - cTemplateViewElement *viewElement = new cTemplateViewElement(); - viewElement->SetParameters(viewElementattributes); - viewElement->AddPixmap(pix); - viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement)); - } else { - (hit->second)->AddPixmap(pix); - } + viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement)); } @@ -1931,7 +1901,7 @@ string cTemplateViewVolume::GetViewElementName(eViewElement ve) { return name; } -void cTemplateViewVolume::AddPixmap(string sViewElement, cTemplatePixmapNode *pix, vector<pair<string, string> > &viewElementattributes) { +void cTemplateViewVolume::AddViewElement(string sViewElement, cTemplateViewElement *viewElement) { eViewElement ve = veUndefined; if (!sViewElement.compare("background")) { @@ -1945,17 +1915,7 @@ void cTemplateViewVolume::AddPixmap(string sViewElement, cTemplatePixmapNode *pi return; } - pix->SetGlobals(globals); - - map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve); - if (hit == viewElements.end()) { - cTemplateViewElement *viewElement = new cTemplateViewElement(); - viewElement->SetParameters(viewElementattributes); - viewElement->AddPixmap(pix); - viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement)); - } else { - (hit->second)->AddPixmap(pix); - } + viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement)); } /************************************************************************************ @@ -2041,7 +2001,7 @@ string cTemplateViewAudioTracks::GetViewListName(eViewList vl) { return name; } -void cTemplateViewAudioTracks::AddPixmap(string sViewElement, cTemplatePixmapNode *pix, vector<pair<string, string> > &viewElementattributes) { +void cTemplateViewAudioTracks::AddViewElement(string sViewElement, cTemplateViewElement *viewElement) { eViewElement ve = veUndefined; if (!sViewElement.compare("background")) { @@ -2055,17 +2015,7 @@ void cTemplateViewAudioTracks::AddPixmap(string sViewElement, cTemplatePixmapNod return; } - pix->SetGlobals(globals); - - map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve); - if (hit == viewElements.end()) { - cTemplateViewElement *viewElement = new cTemplateViewElement(); - viewElement->SetParameters(viewElementattributes); - viewElement->AddPixmap(pix); - viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement)); - } else { - (hit->second)->AddPixmap(pix); - } + viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement)); } void cTemplateViewAudioTracks::AddViewList(string sViewList, cTemplateViewList *viewList) { @@ -2148,18 +2098,12 @@ void cTemplateViewPlugin::AddSubView(string sSubView, cTemplateView *subView) { subViews.insert(pair< eSubView, cTemplateView* >((eSubView)subViewId, subView)); } -void cTemplateViewPlugin::AddPixmap(string sViewElement, cTemplatePixmapNode *pix, vector<pair<string, string> > &viewElementattributes) { +void cTemplateViewPlugin::AddViewElement(string sViewElement, cTemplateViewElement *viewElement) { eViewElement ve = veUndefined; string viewElementName = ""; int viewElementID = -1; - bool found = false; - for (vector<pair<string, string> >::iterator it = viewElementattributes.begin(); it != viewElementattributes.end(); it++) { - if (!(it->first).compare("name")) { - viewElementName = it->second; - found = true; - break; - } - } + + bool found = viewElement->GetName(viewElementName); if (found) { viewElementID = config.GetPluginViewElementID(pluginName, viewElementName, viewID); @@ -2178,30 +2122,14 @@ void cTemplateViewPlugin::AddPixmap(string sViewElement, cTemplatePixmapNode *pi viewElementID = pve; } - pix->SetGlobals(globals); - ve = (eViewElement)viewElementID; - map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve); - if (hit == viewElements.end()) { - cTemplateViewElement *viewElement = new cTemplateViewElement(); - viewElement->SetParameters(viewElementattributes); - viewElement->AddPixmap(pix); - viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement)); - } else { - (hit->second)->AddPixmap(pix); - } + viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement)); } -void cTemplateViewPlugin::AddPixmapGrid(cTemplatePixmapNode *pix, vector<pair<string, string> > &gridAttributes) { +void cTemplateViewPlugin::AddGrid(cTemplateViewGrid *viewGrid) { string gridName = ""; - bool found = false; - for (vector<pair<string, string> >::iterator it = gridAttributes.begin(); it != gridAttributes.end(); it++) { - if (!(it->first).compare("name")) { - gridName = it->second; - found = true; - break; - } - } + bool found = viewGrid->GetName(gridName); + if (!found) { esyslog("skindesigner: no name defined for plugin %s grid", pluginName.c_str()); } @@ -2212,17 +2140,7 @@ void cTemplateViewPlugin::AddPixmapGrid(cTemplatePixmapNode *pix, vector<pair<st return; } - pix->SetGlobals(globals); - - map < int, cTemplateViewGrid* >::iterator hit = viewGrids.find(gridID); - if (hit == viewGrids.end()) { - cTemplateViewGrid *viewGrid = new cTemplateViewGrid(); - viewGrid->SetParameters(gridAttributes); - viewGrid->AddPixmap(pix); - viewGrids.insert(pair< int, cTemplateViewGrid*>(gridID, viewGrid)); - } else { - (hit->second)->AddPixmap(pix); - } + viewGrids.insert(pair< int, cTemplateViewGrid*>(gridID, viewGrid)); } void cTemplateViewPlugin::AddViewTab(cTemplateViewTab *viewTab) { diff --git a/libtemplate/templateview.h b/libtemplate/templateview.h index 726ce68..1713cdc 100644 --- a/libtemplate/templateview.h +++ b/libtemplate/templateview.h @@ -49,8 +49,8 @@ protected: int containerWidth; int containerHeight; //basic view data structures - map < eViewElement, cTemplateViewElement* > viewElements; - map < eViewList, cTemplateViewList* > viewLists; + multimap < eViewElement, cTemplateViewElement* > viewElements; + multimap < eViewList, cTemplateViewList* > viewLists; map < int, cTemplateViewGrid* > viewGrids; map < eSubView, cTemplateView* > subViews; vector< cTemplateViewTab* > viewTabs; @@ -76,8 +76,8 @@ public: virtual string GetViewListName(eViewList vl) { return ""; }; virtual void AddSubView(string sSubView, cTemplateView *subView) {}; virtual void AddPluginView(string plugName, int templNo, cTemplateView *plugView) {}; - virtual void AddPixmap(string sViewElement, cTemplatePixmapNode *pix, vector<stringpair> &viewElementattributes) {}; - virtual void AddPixmapGrid(cTemplatePixmapNode *pix, vector<pair<string, string> > &gridAttributes) {}; + virtual void AddViewElement(string sViewElement, cTemplateViewElement *viewElement) {}; + virtual void AddGrid(cTemplateViewGrid *viewGrid) {}; virtual void AddViewList(string sViewList, cTemplateViewList *viewList) {}; virtual void AddViewTab(cTemplateViewTab *viewTab) {}; //Setter Functions @@ -151,7 +151,7 @@ public: cTemplateViewChannel(void); virtual ~cTemplateViewChannel(void); string GetViewElementName(eViewElement ve); - void AddPixmap(string viewElement, cTemplatePixmapNode *pix, vector<stringpair> &viewElementattributes); + void AddViewElement(string sViewElement, cTemplateViewElement *viewElement); }; // --- cTemplateViewMenu ------------------------------------------------------------- @@ -169,7 +169,7 @@ public: string GetViewListName(eViewList vl); void AddSubView(string sSubView, cTemplateView *subView); void AddPluginView(string plugName, int templNo, cTemplateView *plugView); - void AddPixmap(string viewElement, cTemplatePixmapNode *pix, vector<pair<string, string> > &viewElementattributes); + void AddViewElement(string sViewElement, cTemplateViewElement *viewElement); void AddViewList(string sViewList, cTemplateViewList *viewList); void AddViewTab(cTemplateViewTab *viewTab); }; @@ -183,7 +183,7 @@ public: cTemplateViewMessage(void); virtual ~cTemplateViewMessage(void); string GetViewElementName(eViewElement ve); - void AddPixmap(string viewElement, cTemplatePixmapNode *pix, vector<pair<string, string> > &viewElementattributes); + void AddViewElement(string sViewElement, cTemplateViewElement *viewElement); }; // --- cTemplateViewReplay ------------------------------------------------------------- @@ -195,7 +195,7 @@ public: cTemplateViewReplay(void); virtual ~cTemplateViewReplay(void); string GetViewElementName(eViewElement ve); - void AddPixmap(string viewElement, cTemplatePixmapNode *pix, vector<pair<string, string> > &viewElementattributes); + void AddViewElement(string sViewElement, cTemplateViewElement *viewElement); }; // --- cTemplateViewVolume ------------------------------------------------------------- @@ -207,7 +207,7 @@ public: cTemplateViewVolume(void); virtual ~cTemplateViewVolume(void); string GetViewElementName(eViewElement ve); - void AddPixmap(string viewElement, cTemplatePixmapNode *pix, vector<pair<string, string> > &viewElementattributes); + void AddViewElement(string sViewElement, cTemplateViewElement *viewElement); }; // --- cTemplateViewAudioTracks ------------------------------------------------------------- @@ -221,7 +221,7 @@ public: virtual ~cTemplateViewAudioTracks(void); string GetViewElementName(eViewElement ve); string GetViewListName(eViewList vl); - void AddPixmap(string viewElement, cTemplatePixmapNode *pix, vector<pair<string, string> > &viewElementattributes); + void AddViewElement(string sViewElement, cTemplateViewElement *viewElement); void AddViewList(string sViewList, cTemplateViewList *viewList); }; @@ -235,8 +235,8 @@ public: cTemplateViewPlugin(string pluginName, int viewID); virtual ~cTemplateViewPlugin(void); void AddSubView(string sSubView, cTemplateView *subView); - void AddPixmap(string viewElement, cTemplatePixmapNode *pix, vector<pair<string, string> > &viewElementattributes); - void AddPixmapGrid(cTemplatePixmapNode *pix, vector<pair<string, string> > &gridAttributes); + void AddViewElement(string sViewElement, cTemplateViewElement *viewElement); + void AddGrid(cTemplateViewGrid *viewGrid); void AddViewTab(cTemplateViewTab *viewTab); }; diff --git a/libtemplate/templateviewelement.c b/libtemplate/templateviewelement.c index 0171bdb..56672b8 100644 --- a/libtemplate/templateviewelement.c +++ b/libtemplate/templateviewelement.c @@ -97,6 +97,15 @@ int cTemplateViewElement::GetNumPixmaps(void) { return numPixmaps;
};
+bool cTemplateViewElement::GetName(string &name) {
+ if (!parameters)
+ return false;
+ name = parameters->GetParameter(ptName);
+ if (name.size() > 0)
+ return true;
+ return false;
+}
+
void cTemplateViewElement::InitPixmapNodeIterator(void) {
pixmapNodeIterator = viewPixmapNodes.begin();
}
diff --git a/libtemplate/templateviewelement.h b/libtemplate/templateviewelement.h index 32f2ecc..189e9e5 100644 --- a/libtemplate/templateviewelement.h +++ b/libtemplate/templateviewelement.h @@ -111,6 +111,7 @@ public: void SetPixOffset(int offset) { pixOffset = offset; };
int GetPixOffset(void) { return pixOffset; };
virtual int GetNumPixmaps(void);
+ bool GetName(string &name);
void InitPixmapNodeIterator(void);
cTemplatePixmapNode *GetNextPixmapNode(void);
void InitPixmapIterator(void);
diff --git a/libtemplate/templateviewlist.c b/libtemplate/templateviewlist.c index 1d5dabe..a831d2d 100644 --- a/libtemplate/templateviewlist.c +++ b/libtemplate/templateviewlist.c @@ -25,9 +25,7 @@ void cTemplateViewList::SetGlobals(cGlobals *globals) { bool cTemplateViewList::CalculateListParameters(void) {
if (!parameters)
return false;
- parameters->SetContainer(containerX, containerY, containerWidth, containerHeight);
- parameters->SetGlobals(globals);
- bool paramsValid = parameters->CalculateParameters();
+ bool paramsValid = false;
if (!listElement)
return false;
listElement->SetContainer(parameters->GetNumericParameter(ptX),
@@ -67,6 +65,13 @@ bool cTemplateViewList::CalculateListParameters(map < string, int > *intTokens) return paramsValid;
}
+eOrientation cTemplateViewList::GetOrientation(void) {
+ if (!parameters)
+ return orNone;
+ int orientation = parameters->GetNumericParameter(ptOrientation);
+ return (eOrientation)orientation;
+}
+
int cTemplateViewList::GetAverageFontWidth(void) {
int defaultAverageFontWidth = 20;
diff --git a/libtemplate/templateviewlist.h b/libtemplate/templateviewlist.h index 5806745..4cc4ccb 100644 --- a/libtemplate/templateviewlist.h +++ b/libtemplate/templateviewlist.h @@ -36,6 +36,7 @@ public: bool CalculateListParameters(map < string, int > *intTokens); cTemplateViewElement *GetListElement(void) { return listElement; }; cTemplateViewElement *GetListElementCurrent(void) { return currentElement; }; + eOrientation GetOrientation(void); int GetAverageFontWidth(void); cFont *GetTextAreaFont(void); int GetMenuItemWidth(void); diff --git a/libtemplate/xmlparser.c b/libtemplate/xmlparser.c index ce41918..ba5684e 100644 --- a/libtemplate/xmlparser.c +++ b/libtemplate/xmlparser.c @@ -199,12 +199,16 @@ void cXmlParser::ParseViewElement(cTemplateView *subView) { if (!view) return; - const char *viewElement = NodeName(); + const char *viewElementName = NodeName(); vector<stringpair> attributes = ParseAttributes(); ValidateAttributes("viewelement", attributes); if (!LevelDown()) return; + + cTemplateViewElement *viewElement = new cTemplateViewElement(); + viewElement->SetParameters(attributes); + do { if (!CheckNodeName("areacontainer") && !CheckNodeName("area") && !CheckNodeName("areascroll")) { esyslog("skindesigner: invalid tag \"%s\" in viewelement", NodeName()); @@ -216,12 +220,15 @@ void cXmlParser::ParseViewElement(cTemplateView *subView) { } else { pix = ParseAreaContainer(); } - if (subView) - subView->AddPixmap(viewElement, pix, attributes); - else - view->AddPixmap(viewElement, pix, attributes); + pix->SetGlobals(globals); + viewElement->AddPixmap(pix); } while (NextNode()); LevelUp(); + + if (subView) + subView->AddViewElement(viewElementName, viewElement); + else + view->AddViewElement(viewElementName, viewElement); } void cXmlParser::ParseViewList(cTemplateView *subView) { @@ -323,6 +330,10 @@ void cXmlParser::ParseGrid(void) { if (!LevelDown()) return; + + cTemplateViewGrid *viewGrid = new cTemplateViewGrid(); + viewGrid->SetParameters(attributes); + do { if (!CheckNodeName("areacontainer") && !CheckNodeName("area") && !CheckNodeName("areascroll")) { @@ -335,9 +346,12 @@ void cXmlParser::ParseGrid(void) { } else { pix = ParseAreaContainer(); } - view->AddPixmapGrid(pix, attributes); + pix->SetGlobals(globals); + viewGrid->AddPixmap(pix); } while (NextNode()); LevelUp(); + + view->AddGrid(viewGrid); } cTemplatePixmap *cXmlParser::ParseArea(void) { @@ -579,15 +593,17 @@ void cXmlParser::ParseSetupParameter(void) { string attributeMax = "max"; string paramMax = ""; string paramValue = ""; + string attributeOptions = "options"; + string paramOptions=""; GetAttribute(attributeType, paramType); GetAttribute(attributeName, paramName); GetAttribute(attributeDisplayText, paramDisplayText); GetAttribute(attributeMin, paramMin); - GetAttribute(attributeMax, paramMax); + GetAttribute(attributeOptions, paramOptions); GetNodeValue(paramValue); - skinSetup->SetParameter(paramType, paramName, paramDisplayText, paramMin, paramMax, paramValue); + skinSetup->SetParameter(paramType, paramName, paramDisplayText, paramMin, paramMax, paramValue, paramOptions); } void cXmlParser::ValidateAttributes(const char *nodeName, vector<stringpair> &attributes) { |
