implemented horizontal menus

This commit is contained in:
louis
2015-08-08 11:04:15 +02:00
parent b5c587b256
commit ea758f9556
54 changed files with 672 additions and 2210 deletions

View File

@@ -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));

View File

@@ -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);

View File

@@ -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());
}
}

View File

@@ -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) {

View File

@@ -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);
};

View File

@@ -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();
}

View File

@@ -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);

View File

@@ -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;

View File

@@ -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);

View File

@@ -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) {