#include "../config.h" #include "templateview.h" // --- cTemplateView ------------------------------------------------------------- cTemplateView::cTemplateView(void) { globals = NULL; parameters = NULL; containerX = 0; containerY = 0; containerWidth = 0; containerHeight = 0; SetFunctionDefinitions(); } cTemplateView::~cTemplateView() { for (map < 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++) { delete it->second; } for (map < int, cTemplateViewGrid* >::iterator it = viewGrids.begin(); it != viewGrids.end(); it++) { delete it->second; } for (vector < cTemplateViewTab* >::iterator it = viewTabs.begin(); it != viewTabs.end(); it++) { delete *it; } for (map < eSubView, cTemplateView* >::iterator it = subViews.begin(); it != subViews.end(); it++) { delete it->second; } for (map < string, map< int, cTemplateView*> >::iterator it = pluginViews.begin(); it != pluginViews.end(); it++) { map< int, cTemplateView*> plugViews = it->second; for (map< int, cTemplateView*>::iterator it2 = plugViews.begin(); it2 != plugViews.end(); it2++) { delete it2->second; } } if (parameters) delete parameters; } /******************************************************************* * Public Functions *******************************************************************/ void cTemplateView::SetParameters(vector > ¶ms) { parameters = new cTemplateFunction(ftView); parameters->SetGlobals(globals); parameters->SetParameters(params); } void cTemplateView::SetContainer(int x, int y, int width, int height) { containerX = x; containerY = y; containerWidth = width; containerHeight = height; } cTemplateViewElement *cTemplateView::GetViewElement(eViewElement ve) { map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve); if (hit == viewElements.end()) { return NULL; } return hit->second; } void cTemplateView::InitViewElementIterator(void) { veIt = viewElements.begin(); } cTemplateViewElement *cTemplateView::GetNextViewElement(void) { if (veIt == viewElements.end()) return NULL; cTemplateViewElement *viewElement = veIt->second; veIt++; return viewElement; } cTemplateViewGrid *cTemplateView::GetViewGrid(int gridID) { map < int, cTemplateViewGrid* >::iterator hit = viewGrids.find(gridID); if (hit == viewGrids.end()) { return NULL; } return hit->second; } void cTemplateView::InitViewGridIterator(void) { geIt = viewGrids.begin(); } cTemplateViewGrid *cTemplateView::GetNextViewGrid(void) { if (geIt == viewGrids.end()) return NULL; cTemplateViewGrid *viewGrid = geIt->second; geIt++; return viewGrid; } cTemplateViewList *cTemplateView::GetViewList(eViewList vl) { map < eViewList, cTemplateViewList* >::iterator hit = viewLists.find(vl); if (hit == viewLists.end()) return NULL; return hit->second; } void cTemplateView::InitViewListIterator(void) { vlIt = viewLists.begin(); } cTemplateViewList *cTemplateView::GetNextViewList(void) { if (vlIt == viewLists.end()) return NULL; cTemplateViewList *viewList = vlIt->second; vlIt++; return viewList; } cTemplateView *cTemplateView::GetSubView(eSubView sv) { map < eSubView, cTemplateView* >::iterator hit = subViews.find(sv); if (hit == subViews.end()) return NULL; return hit->second; } cTemplateView *cTemplateView::GetPluginView(string pluginName, int pluginMenu) { map < string, map< int, cTemplateView*> >::iterator hit = pluginViews.find(pluginName); if (hit == pluginViews.end()) return NULL; map< int, cTemplateView*> plugViews = hit->second; map< int, cTemplateView*>::iterator hit2 = plugViews.find(pluginMenu); if (hit2 == plugViews.end()) return NULL; return hit2->second; } void cTemplateView::InitViewTabIterator(void) { vtIt = viewTabs.begin(); } cTemplateViewTab *cTemplateView::GetNextViewTab(void) { if (vtIt == viewTabs.end()) { return NULL; } cTemplateViewTab *tab = *vtIt; vtIt++; return tab; } void cTemplateView::InitSubViewIterator(void) { svIt = subViews.begin(); } cTemplateView *cTemplateView::GetNextSubView(void) { if (svIt == subViews.end()) return NULL; cTemplateView *subView = svIt->second; svIt++; return subView; } int cTemplateView::GetNumericParameter(eParamType type) { if (!parameters) return 0; return parameters->GetNumericParameter(type); } cRect cTemplateView::GetOsdSize(void) { cRect osdSize; if (!parameters) { return osdSize; } osdSize.SetX(parameters->GetNumericParameter(ptX)); osdSize.SetY(parameters->GetNumericParameter(ptY)); osdSize.SetWidth(parameters->GetNumericParameter(ptWidth)); osdSize.SetHeight(parameters->GetNumericParameter(ptHeight)); return osdSize; } int cTemplateView::GetNumPixmaps(void) { int numPixmaps = 0; for (map < eViewElement, cTemplateViewElement* >::iterator it = viewElements.begin(); it != viewElements.end(); it++) { cTemplateViewElement *viewElement = it->second; numPixmaps += viewElement->GetNumPixmaps(); } return numPixmaps; } int cTemplateView::GetNumPixmapsViewElement(eViewElement ve) { map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve); if (hit == viewElements.end()) return 0; cTemplateViewElement *viewElement = hit->second; return viewElement->GetNumPixmaps(); } bool cTemplateView::HideView(void) { if (!parameters) return false; return parameters->GetNumericParameter(ptHideRoot); } bool cTemplateView::DrawGebugGrid(void) { if (!parameters) return false; return parameters->GetNumericParameter(ptDrawDebugGrid); } int cTemplateView::DebugGridX(void) { if (!parameters) return 0; return parameters->GetNumericParameter(ptDebugGridX); } int cTemplateView::DebugGridY(void) { if (!parameters) return 0; return parameters->GetNumericParameter(ptDebugGridY); } tColor cTemplateView::DebugGridColor(void) { tColor col = 0xFFFF0000; if (!globals) return col; string colName = "{clrDebugGrid}"; globals->GetColor(colName, col); return col; } tColor cTemplateView::DebugGridFontColor(void) { tColor col = 0xFFFF0000; if (!globals) return col; string colName = "{clrFontDebugGrid}"; globals->GetColor(colName, col); return col; } bool cTemplateView::ExecuteView(eViewElement ve) { map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve); if (hit == viewElements.end()) return false; cTemplateViewElement *viewElement = hit->second; return viewElement->Execute(); } bool cTemplateView::DetachViewElement(eViewElement ve) { map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve); if (hit == viewElements.end()) return false; cTemplateViewElement *viewElement = hit->second; return viewElement->Detach(); } string cTemplateView::GetViewElementMode(eViewElement ve) { map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve); if (hit == viewElements.end()) return ""; cTemplateViewElement *viewElement = hit->second; return viewElement->GetMode(); } int cTemplateView::GetNumListViewMenuItems(void) { int numElements = 0; cTemplateViewList *menuList = GetViewList(vlMenuItem); if (!menuList) return numElements; return menuList->GetNumericParameter(ptNumElements); } bool cTemplateView::GetScalingWindow(cRect &scalingWindow) { if (!parameters) return false; bool doScale = false; int scaleX = parameters->GetNumericParameter(ptScaleTvX) + cOsd::OsdLeft(); int scaleY = parameters->GetNumericParameter(ptScaleTvY) + cOsd::OsdTop(); int scaleWidth = parameters->GetNumericParameter(ptScaleTvWidth); int scaleHeight = parameters->GetNumericParameter(ptScaleTvHeight); if (scaleX > -1 && scaleY > -1 && scaleWidth > -1 && scaleHeight > -1) { cRect suggestedScaleWindow(scaleX, scaleY, scaleWidth, scaleHeight); scalingWindow = cDevice::PrimaryDevice()->CanScaleVideo(suggestedScaleWindow); doScale = true; } else { scalingWindow = cDevice::PrimaryDevice()->CanScaleVideo(cRect::Null); } return doScale; } bool cTemplateView::ValidViewElement(const char *viewElement) { set::iterator hit = viewElementsAllowed.find(viewElement); if (hit == viewElementsAllowed.end()) return false; return true; } bool cTemplateView::ValidSubView(const char *subView) { set::iterator hit = subViewsAllowed.find(subView); if (hit == subViewsAllowed.end()) return false; return true; } bool cTemplateView::ValidViewList(const char *viewList) { set::iterator hit = viewListsAllowed.find(viewList); if (hit == viewListsAllowed.end()) return false; return true; } bool cTemplateView::ValidViewGrid(const char *viewGrid) { set::iterator hit = viewGridsAllowed.find(viewGrid); if (hit == viewGridsAllowed.end()) return false; return true; } bool cTemplateView::ValidFunction(const char *func) { map < string, set < string > >::iterator hit = funcsAllowed.find(func); if (hit == funcsAllowed.end()) return false; return true; } bool cTemplateView::ValidAttribute(const char *func, const char *att) { map < string, set < string > >::iterator hit = funcsAllowed.find(func); if (hit == funcsAllowed.end()) return false; set::iterator hitAtt = (hit->second).find(att); if (hitAtt == (hit->second).end()) return false; return true; } void cTemplateView::Translate(void) { //Translate ViewElements InitViewElementIterator(); cTemplateViewElement *viewElement = NULL; while(viewElement = GetNextViewElement()) { viewElement->InitIterator(); cTemplatePixmap *pix = NULL; while(pix = viewElement->GetNextPixmap()) { pix->InitIterator(); cTemplateFunction *func = NULL; while(func = pix->GetNextFunction()) { if (func->GetType() == ftDrawText || func->GetType() == ftDrawTextBox || func->GetType() == ftDrawTextVertical) { string text = func->GetParameter(ptText); string translation; bool translated = globals->Translate(text, translation); if (translated) { func->SetTranslatedText(translation); } } if (func->GetType() == ftLoop) { cTemplateLoopFunction *funcsLoop = dynamic_cast(func); funcsLoop->InitIterator(); cTemplateFunction *loopFunc = NULL; while(loopFunc = funcsLoop->GetNextFunction()) { if (loopFunc->GetType() == ftDrawText || loopFunc->GetType() == ftDrawTextBox || func->GetType() == ftDrawTextVertical) { string text = loopFunc->GetParameter(ptText); string translation; bool translated = globals->Translate(text, translation); if (translated) { loopFunc->SetTranslatedText(translation); } } } } } } } //Translate viewLists InitViewListIterator(); cTemplateViewList *viewList = NULL; while(viewList = GetNextViewList()) { viewList->InitIterator(); cTemplatePixmap *pix = NULL; while(pix = viewList->GetNextPixmap()) { pix->InitIterator(); cTemplateFunction *func = NULL; while(func = pix->GetNextFunction()) { if (func->GetType() == ftDrawText || func->GetType() == ftDrawTextBox || func->GetType() == ftDrawTextVertical) { string text = func->GetParameter(ptText); string translation; bool translated = globals->Translate(text, translation); if (translated) { func->SetTranslatedText(translation); } } } } cTemplateViewElement *listElement = viewList->GetListElement(); listElement->InitIterator(); while(pix = listElement->GetNextPixmap()) { pix->InitIterator(); cTemplateFunction *func = NULL; while(func = pix->GetNextFunction()) { if (func->GetType() == ftDrawText || func->GetType() == ftDrawTextBox || func->GetType() == ftDrawTextVertical) { string text = func->GetParameter(ptText); string translation; bool translated = globals->Translate(text, translation); if (translated) { func->SetTranslatedText(translation); } } } } cTemplateViewElement *listElementCurrent = viewList->GetListElementCurrent(); if (listElementCurrent) { listElementCurrent->InitIterator(); while(pix = listElementCurrent->GetNextPixmap()) { pix->InitIterator(); cTemplateFunction *func = NULL; while(func = pix->GetNextFunction()) { if (func->GetType() == ftDrawText || func->GetType() == ftDrawTextBox || func->GetType() == ftDrawTextVertical) { string text = func->GetParameter(ptText); string translation; bool translated = globals->Translate(text, translation); if (translated) { func->SetTranslatedText(translation); } } } } } } //Translate viewTabs InitViewTabIterator(); cTemplateViewTab *viewTab = NULL; while(viewTab = GetNextViewTab()) { string tabName = viewTab->GetName(); string tabTrans; bool translated = globals->Translate(tabName, tabTrans); if (translated) { viewTab->SetName(tabTrans); } viewTab->InitIterator(); cTemplateFunction *func = NULL; while(func = viewTab->GetNextFunction()) { if (func->GetType() == ftDrawText || func->GetType() == ftDrawTextBox || func->GetType() == ftDrawTextVertical) { string text = func->GetParameter(ptText); string translation; translated = globals->Translate(text, translation); if (translated) { func->SetTranslatedText(translation); } } if (func->GetType() == ftLoop) { cTemplateLoopFunction *funcsLoop = dynamic_cast(func); funcsLoop->InitIterator(); cTemplateFunction *loopFunc = NULL; while(loopFunc = funcsLoop->GetNextFunction()) { if (loopFunc->GetType() == ftDrawText || loopFunc->GetType() == ftDrawTextBox || func->GetType() == ftDrawTextVertical) { string text = loopFunc->GetParameter(ptText); string translation; bool translated = globals->Translate(text, translation); if (translated) { loopFunc->SetTranslatedText(translation); } } } } } } //Translate ViewGrids InitViewGridIterator(); cTemplateViewGrid *viewGrid = NULL; while(viewGrid = GetNextViewGrid()) { viewGrid->InitIterator(); cTemplatePixmap *pix = NULL; while(pix = viewGrid->GetNextPixmap()) { pix->InitIterator(); cTemplateFunction *func = NULL; while(func = pix->GetNextFunction()) { if (func->GetType() == ftDrawText || func->GetType() == ftDrawTextBox || func->GetType() == ftDrawTextVertical) { string text = func->GetParameter(ptText); string translation; bool translated = globals->Translate(text, translation); if (translated) { func->SetTranslatedText(translation); } } if (func->GetType() == ftLoop) { cTemplateLoopFunction *funcsLoop = dynamic_cast(func); funcsLoop->InitIterator(); cTemplateFunction *loopFunc = NULL; while(loopFunc = funcsLoop->GetNextFunction()) { if (loopFunc->GetType() == ftDrawText || loopFunc->GetType() == ftDrawTextBox || func->GetType() == ftDrawTextVertical) { string text = loopFunc->GetParameter(ptText); string translation; bool translated = globals->Translate(text, translation); if (translated) { loopFunc->SetTranslatedText(translation); } } } } } } } //Translate Plugin Views for (map < string, map< int, cTemplateView*> >::iterator it = pluginViews.begin(); it != pluginViews.end(); it++) { map< int, cTemplateView*> plugViews = it->second; for (map< int, cTemplateView*>::iterator it2 = plugViews.begin(); it2 != plugViews.end(); it2++) { cTemplateView *pluginView = it2->second; pluginView->Translate(); } } //Translate Subviews InitSubViewIterator(); cTemplateView *subView = NULL; while(subView = GetNextSubView()) { subView->Translate(); } } void cTemplateView::PreCache(bool isSubview) { if (!isSubview) { int osdW = cOsd::OsdWidth(); int osdH = cOsd::OsdHeight(); parameters->SetContainer(0, 0, osdW, osdH); } else { parameters->SetContainer(containerX, containerY, containerWidth, containerHeight); } //Calculate OSD Size parameters->CalculateParameters(); int osdX = parameters->GetNumericParameter(ptX); int osdY = parameters->GetNumericParameter(ptY); 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++) { cTemplateViewElement *viewElement = it->second; viewElement->SetGlobals(globals); if (!isSubview) viewElement->SetContainer(0, 0, osdWidth, osdHeight); else viewElement->SetContainer(osdX, osdY, osdWidth, osdHeight); viewElement->CalculateParameters(); viewElement->CalculatePixmapParameters(); viewElement->SetPixOffset(pixOffset); pixOffset += viewElement->GetNumPixmaps(); } //Cache ViewGrids for (map < int, cTemplateViewGrid* >::iterator it = viewGrids.begin(); it != viewGrids.end(); it++) { cTemplateViewGrid *viewGrid = it->second; viewGrid->SetGlobals(globals); viewGrid->SetContainer(0, 0, osdWidth, osdHeight); viewGrid->CalculateParameters(); viewGrid->CalculatePixmapParameters(); } //Cache ViewLists for (map < eViewList, cTemplateViewList* >::iterator it = viewLists.begin(); it != viewLists.end(); it++) { cTemplateViewList *viewList = it->second; viewList->SetGlobals(globals); //viewlists in subviews need complete container information if (isSubview) viewList->SetContainer(osdX, osdY, osdWidth, osdHeight); else viewList->SetContainer(0, 0, osdWidth, osdHeight); viewList->CalculateParameters(); viewList->CalculateListParameters(); } //Cache ViewTabs for (vector::iterator tab = viewTabs.begin(); tab != viewTabs.end(); tab++) { //viewtabs are only in subviews (*tab)->SetContainer(osdX, osdY, osdWidth, osdHeight); (*tab)->SetGlobals(globals); (*tab)->CalculateParameters(); } //Cache Subviews for (map < eSubView, cTemplateView* >::iterator it = subViews.begin(); it != subViews.end(); it++) { cTemplateView *subView = it->second; subView->SetContainer(0, 0, osdWidth, osdHeight); subView->PreCache(true); } //Cache Plugin Subviews for (map < string, map< int, cTemplateView*> >::iterator it = pluginViews.begin(); it != pluginViews.end(); it++) { map< int, cTemplateView*> plugViews = it->second; for (map< int, cTemplateView*>::iterator it2 = plugViews.begin(); it2 != plugViews.end(); it2++) { cTemplateView *plugView = it2->second; plugView->SetContainer(0, 0, osdWidth, osdHeight); plugView->PreCache(true); } } } void cTemplateView::Debug(void) { esyslog("skindesigner: TemplateView %s", viewName.c_str());; parameters->Debug(); for (map < 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++) { esyslog("skindesigner: ++++++++ ViewList: %s", GetViewListName(it->first).c_str()); cTemplateViewList *viewList = it->second; viewList->Debug(); } for (map < int, cTemplateViewGrid* >::iterator it = viewGrids.begin(); it != viewGrids.end(); it++) { esyslog("skindesigner: ++++++++ ViewGrid %d:", it->first); cTemplateViewGrid *viewGrid = it->second; viewGrid->Debug(); } for (vector::iterator tab = viewTabs.begin(); tab != viewTabs.end(); tab++) { esyslog("skindesigner: ++++++++ ViewTab"); (*tab)->Debug(); } for (map < eSubView, cTemplateView* >::iterator it = subViews.begin(); it!= subViews.end(); it++) { esyslog("skindesigner: ++++++++ SubView: %s", GetSubViewName(it->first).c_str()); cTemplateView *subView = it->second; subView->Debug(); } for (map < string, map< int, cTemplateView*> >::iterator it = pluginViews.begin(); it!= pluginViews.end(); it++) { esyslog("skindesigner: ++++++++ Plugin: %s", it->first.c_str()); map< int, cTemplateView*> plugViews = it->second; for (map< int, cTemplateView*>::iterator it2 = plugViews.begin(); it2 != plugViews.end(); it2++) { esyslog("skindesigner: Tmpl %d", it2->first); ((cTemplateView*)it2->second)->Debug(); } } } void cTemplateView::SetFunctionDefinitions(void) { string name = "viewelement"; set attributes; attributes.insert("debug"); attributes.insert("detached"); attributes.insert("delay"); attributes.insert("fadetime"); attributes.insert("shifttime"); attributes.insert("shifttype"); attributes.insert("shiftmode"); attributes.insert("startx"); attributes.insert("starty"); attributes.insert("name"); attributes.insert("condition"); attributes.insert("mode"); funcsAllowed.insert(pair< string, set >(name, attributes)); name = "listelement"; attributes.clear(); attributes.insert("debug"); funcsAllowed.insert(pair< string, set >(name, attributes)); name = "area"; attributes.clear(); attributes.insert("debug"); attributes.insert("condition"); attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("layer"); attributes.insert("transparency"); attributes.insert("background"); funcsAllowed.insert(pair< string, set >(name, attributes)); name = "areascroll"; attributes.clear(); attributes.insert("debug"); attributes.insert("orientation"); attributes.insert("delay"); attributes.insert("mode"); attributes.insert("scrollspeed"); attributes.insert("condition"); attributes.insert("scrollelement"); attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("layer"); attributes.insert("transparency"); funcsAllowed.insert(pair< string, set >(name, attributes)); name = "loop"; attributes.clear(); attributes.insert("debug"); attributes.insert("name"); attributes.insert("orientation"); attributes.insert("condition"); attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("columnwidth"); attributes.insert("rowheight"); attributes.insert("overflow"); attributes.insert("maxitems"); funcsAllowed.insert(pair< string, set >(name, attributes)); name = "fill"; attributes.clear(); attributes.insert("debug"); attributes.insert("condition"); attributes.insert("color"); funcsAllowed.insert(pair< string, set >(name, attributes)); name = "drawtext"; attributes.clear(); attributes.insert("debug"); attributes.insert("condition"); attributes.insert("name"); attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("align"); attributes.insert("valign"); attributes.insert("font"); attributes.insert("fontsize"); attributes.insert("color"); attributes.insert("text"); attributes.insert("animtype"); attributes.insert("animfreq"); funcsAllowed.insert(pair< string, set >(name, attributes)); name = "drawtextbox"; attributes.clear(); attributes.insert("debug"); attributes.insert("condition"); attributes.insert("name"); attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("align"); attributes.insert("maxlines"); attributes.insert("font"); attributes.insert("fontsize"); attributes.insert("color"); attributes.insert("text"); attributes.insert("float"); attributes.insert("floatwidth"); attributes.insert("floatheight"); funcsAllowed.insert(pair< string, set >(name, attributes)); name = "drawtextvertical"; attributes.clear(); attributes.insert("debug"); attributes.insert("condition"); attributes.insert("name"); attributes.insert("x"); attributes.insert("y"); attributes.insert("height"); attributes.insert("align"); attributes.insert("valign"); attributes.insert("direction"); attributes.insert("font"); attributes.insert("fontsize"); attributes.insert("color"); attributes.insert("text"); attributes.insert("animtype"); attributes.insert("animfreq"); funcsAllowed.insert(pair< string, set >(name, attributes)); name = "drawimage"; attributes.clear(); attributes.insert("debug"); attributes.insert("condition"); attributes.insert("name"); attributes.insert("x"); attributes.insert("y"); attributes.insert("align"); attributes.insert("valign"); attributes.insert("width"); attributes.insert("height"); attributes.insert("imagetype"); attributes.insert("path"); attributes.insert("align"); attributes.insert("valign"); attributes.insert("cache"); attributes.insert("animtype"); attributes.insert("animfreq"); funcsAllowed.insert(pair< string, set >(name, attributes)); name = "drawrectangle"; attributes.clear(); attributes.insert("debug"); attributes.insert("condition"); attributes.insert("name"); attributes.insert("x"); attributes.insert("y"); attributes.insert("align"); attributes.insert("valign"); attributes.insert("width"); attributes.insert("height"); attributes.insert("color"); attributes.insert("animtype"); attributes.insert("animfreq"); funcsAllowed.insert(pair< string, set >(name, attributes)); name = "drawellipse"; attributes.clear(); attributes.insert("debug"); attributes.insert("condition"); attributes.insert("name"); attributes.insert("x"); attributes.insert("y"); attributes.insert("align"); attributes.insert("valign"); attributes.insert("width"); attributes.insert("height"); attributes.insert("color"); attributes.insert("quadrant"); attributes.insert("animtype"); attributes.insert("animfreq"); funcsAllowed.insert(pair< string, set >(name, attributes)); name = "drawslope"; attributes.clear(); attributes.insert("debug"); attributes.insert("condition"); attributes.insert("name"); attributes.insert("x"); attributes.insert("y"); attributes.insert("align"); attributes.insert("valign"); attributes.insert("width"); attributes.insert("height"); attributes.insert("color"); attributes.insert("type"); attributes.insert("animtype"); attributes.insert("animfreq"); funcsAllowed.insert(pair< string, set >(name, attributes)); } /************************************************************************************ * cTemplateViewChannel ************************************************************************************/ cTemplateViewChannel::cTemplateViewChannel(void) { viewName = "displaychannel"; //definition of allowed parameters for class itself set attributes; attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("fadetime"); attributes.insert("shifttime"); attributes.insert("shifttype"); attributes.insert("shiftmode"); attributes.insert("startx"); attributes.insert("starty"); attributes.insert("scaletvx"); attributes.insert("scaletvy"); attributes.insert("scaletvwidth"); attributes.insert("scaletvheight"); attributes.insert("debuggrid"); funcsAllowed.insert(pair< string, set >(viewName, attributes)); SetViewElements(); } cTemplateViewChannel::~cTemplateViewChannel() { } void cTemplateViewChannel::SetViewElements(void) { viewElementsAllowed.insert("background"); viewElementsAllowed.insert("channelinfo"); viewElementsAllowed.insert("channelgroup"); viewElementsAllowed.insert("epginfo"); viewElementsAllowed.insert("progressbar"); viewElementsAllowed.insert("progressbarback"); viewElementsAllowed.insert("statusinfo"); viewElementsAllowed.insert("audioinfo"); viewElementsAllowed.insert("ecminfo"); viewElementsAllowed.insert("screenresolution"); viewElementsAllowed.insert("signalquality"); viewElementsAllowed.insert("signalqualityback"); viewElementsAllowed.insert("devices"); viewElementsAllowed.insert("currentweather"); viewElementsAllowed.insert("scrapercontent"); viewElementsAllowed.insert("datetime"); viewElementsAllowed.insert("time"); viewElementsAllowed.insert("message"); viewElementsAllowed.insert("customtokens"); } string cTemplateViewChannel::GetViewElementName(eViewElement ve) { string name; switch (ve) { case veBackground: name = "Background"; break; case veChannelInfo: name = "ChannelInfo"; break; case veChannelGroup: name = "ChannelGroup"; break; case veEpgInfo: name = "EpgInfo"; break; case veProgressBar: name = "ProgressBar"; break; case veProgressBarBack: name = "ProgressBar Background"; break; case veStatusInfo: name = "StatusInfo"; break; case veAudioInfo: name = "AudioInfo"; break; case veScreenResolution: name = "Screen Resolution"; break; case veEcmInfo: name = "ECM Info"; break; case veSignalQuality: name = "Signal Quality"; break; case veSignalQualityBack: name = "Signal Quality Background"; break; case veDevices: name = "Devices"; break; case veCurrentWeather: name = "Current Weather"; break; case veScraperContent: name = "Scraper Content"; break; case veDateTime: name = "DateTime"; break; case veTime: name = "Time"; break; case veMessage: name = "Message"; break; case veCustomTokens: name = "Custom Tokens"; break; default: name = "Unknown"; break; }; return name; } void cTemplateViewChannel::AddPixmap(string sViewElement, cTemplatePixmap *pix, vector > &viewElementattributes) { eViewElement ve = veUndefined; if (!sViewElement.compare("background")) { ve = veBackground; } else if (!sViewElement.compare("channelinfo")) { ve = veChannelInfo; } else if (!sViewElement.compare("channelgroup")) { ve = veChannelGroup; } else if (!sViewElement.compare("epginfo")) { ve = veEpgInfo; } else if (!sViewElement.compare("progressbar")) { ve = veProgressBar; } else if (!sViewElement.compare("progressbarback")) { ve = veProgressBarBack; } else if (!sViewElement.compare("statusinfo")) { ve = veStatusInfo; } else if (!sViewElement.compare("audioinfo")) { ve = veAudioInfo; } else if (!sViewElement.compare("ecminfo")) { ve = veEcmInfo; } else if (!sViewElement.compare("screenresolution")) { ve = veScreenResolution; } else if (!sViewElement.compare("signalquality")) { ve = veSignalQuality; } else if (!sViewElement.compare("signalqualityback")) { ve = veSignalQualityBack; } else if (!sViewElement.compare("devices")) { ve = veDevices; } else if (!sViewElement.compare("currentweather")) { ve = veCurrentWeather; } else if (!sViewElement.compare("scrapercontent")) { ve = veScraperContent; } else if (!sViewElement.compare("datetime")) { ve = veDateTime; } else if (!sViewElement.compare("time")) { ve = veTime; } else if (!sViewElement.compare("message")) { ve = veMessage; } else if (!sViewElement.compare("customtokens")) { ve = veCustomTokens; } if (ve == veUndefined) { esyslog("skindesigner: unknown ViewElement in displaychannel: %s", sViewElement.c_str()); 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); } } /************************************************************************************ * cTemplateViewMenu ************************************************************************************/ cTemplateViewMenu::cTemplateViewMenu(void) { viewName = "displaymenu"; //definition of allowed parameters for class itself set attributes; attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("fadetime"); attributes.insert("debuggrid"); funcsAllowed.insert(pair< string, set >(viewName, attributes)); string subViewName = "menudefault"; //definition of allowed parameters for subtemplate menumain attributes.clear(); attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("fadetime"); attributes.insert("scaletvx"); attributes.insert("scaletvy"); attributes.insert("scaletvwidth"); attributes.insert("scaletvheight"); attributes.insert("debuggrid"); funcsAllowed.insert(pair< string, set >(subViewName, attributes)); subViewName = "menumain"; //definition of allowed parameters for subtemplate menumain attributes.clear(); attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("fadetime"); attributes.insert("scaletvx"); attributes.insert("scaletvy"); attributes.insert("scaletvwidth"); attributes.insert("scaletvheight"); attributes.insert("debuggrid"); funcsAllowed.insert(pair< string, set >(subViewName, attributes)); subViewName = "menusetup"; //definition of allowed parameters for subtemplate menumain attributes.clear(); attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("fadetime"); attributes.insert("scaletvx"); attributes.insert("scaletvy"); attributes.insert("scaletvwidth"); attributes.insert("scaletvheight"); attributes.insert("debuggrid"); funcsAllowed.insert(pair< string, set >(subViewName, attributes)); subViewName = "menuschedules"; //definition of allowed parameters for subtemplate menumain attributes.clear(); attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("fadetime"); attributes.insert("scaletvx"); attributes.insert("scaletvy"); attributes.insert("scaletvwidth"); attributes.insert("scaletvheight"); attributes.insert("debuggrid"); funcsAllowed.insert(pair< string, set >(subViewName, attributes)); subViewName = "menuchannels"; //definition of allowed parameters for subtemplate menumain attributes.clear(); attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("fadetime"); attributes.insert("scaletvx"); attributes.insert("scaletvy"); attributes.insert("scaletvwidth"); attributes.insert("scaletvheight"); attributes.insert("debuggrid"); funcsAllowed.insert(pair< string, set >(subViewName, attributes)); subViewName = "menutimers"; //definition of allowed parameters for subtemplate menumain attributes.clear(); attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("fadetime"); attributes.insert("scaletvx"); attributes.insert("scaletvy"); attributes.insert("scaletvwidth"); attributes.insert("scaletvheight"); attributes.insert("debuggrid"); funcsAllowed.insert(pair< string, set >(subViewName, attributes)); subViewName = "menurecordings"; //definition of allowed parameters for subtemplate menumain attributes.clear(); attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("fadetime"); attributes.insert("scaletvx"); attributes.insert("scaletvy"); attributes.insert("scaletvwidth"); attributes.insert("scaletvheight"); attributes.insert("debuggrid"); funcsAllowed.insert(pair< string, set >(subViewName, attributes)); subViewName = "menudetailedepg"; //definition of allowed parameters for subtemplate menumain attributes.clear(); attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("fadetime"); attributes.insert("scaletvx"); attributes.insert("scaletvy"); attributes.insert("scaletvwidth"); attributes.insert("scaletvheight"); attributes.insert("debuggrid"); funcsAllowed.insert(pair< string, set >(subViewName, attributes)); subViewName = "menudetailedrecording"; //definition of allowed parameters for subtemplate menumain attributes.clear(); attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("fadetime"); attributes.insert("scaletvx"); attributes.insert("scaletvy"); attributes.insert("scaletvwidth"); attributes.insert("scaletvheight"); attributes.insert("debuggrid"); funcsAllowed.insert(pair< string, set >(subViewName, attributes)); subViewName = "menudetailedtext"; //definition of allowed parameters for subtemplate menumain attributes.clear(); attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("fadetime"); attributes.insert("scaletvx"); attributes.insert("scaletvy"); attributes.insert("scaletvwidth"); attributes.insert("scaletvheight"); attributes.insert("debuggrid"); funcsAllowed.insert(pair< string, set >(subViewName, attributes)); //definition of allowed parameters for menuitems viewlist attributes.clear(); attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("orientation"); attributes.insert("align"); attributes.insert("menuitemwidth"); attributes.insert("determinatefont"); attributes.insert("numlistelements"); funcsAllowed.insert(pair< string, set >("menuitems", attributes)); //definition of allowed parameters for currentitems viewlist attributes.clear(); attributes.insert("debug"); attributes.insert("delay"); attributes.insert("fadetime"); funcsAllowed.insert(pair< string, set >("currentelement", attributes)); //definition of allowed parameters for viewtab attributes.clear(); attributes.insert("debug"); attributes.insert("name"); attributes.insert("condition"); attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("layer"); attributes.insert("transparency"); attributes.insert("scrollheight"); funcsAllowed.insert(pair< string, set >("tab", attributes)); //definition of allowed parameters for plugin menus attributes.clear(); attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("fadetime"); attributes.insert("scaletvx"); attributes.insert("scaletvy"); attributes.insert("scaletvwidth"); attributes.insert("scaletvheight"); attributes.insert("debuggrid"); funcsAllowed.insert(pair< string, set >("menuplugin", attributes)); SetSubViews(); SetViewElements(); SetViewLists(); } cTemplateViewMenu::~cTemplateViewMenu() { } void cTemplateViewMenu::SetSubViews(void) { subViewsAllowed.insert("menudefault"); subViewsAllowed.insert("menumain"); subViewsAllowed.insert("menusetup"); subViewsAllowed.insert("menuschedules"); subViewsAllowed.insert("menutimers"); subViewsAllowed.insert("menurecordings"); subViewsAllowed.insert("menuchannels"); subViewsAllowed.insert("menudetailedepg"); subViewsAllowed.insert("menudetailedrecording"); subViewsAllowed.insert("menudetailedtext"); } void cTemplateViewMenu::SetViewElements(void) { viewElementsAllowed.insert("background"); viewElementsAllowed.insert("datetime"); viewElementsAllowed.insert("time"); viewElementsAllowed.insert("header"); viewElementsAllowed.insert("colorbuttons"); viewElementsAllowed.insert("message"); viewElementsAllowed.insert("sortmode"); viewElementsAllowed.insert("discusage"); viewElementsAllowed.insert("systemload"); viewElementsAllowed.insert("systemmemory"); viewElementsAllowed.insert("temperatures"); viewElementsAllowed.insert("timers"); viewElementsAllowed.insert("lastrecordings"); viewElementsAllowed.insert("devices"); viewElementsAllowed.insert("currentweather"); viewElementsAllowed.insert("currentschedule"); viewElementsAllowed.insert("customtokens"); viewElementsAllowed.insert("scrollbar"); viewElementsAllowed.insert("detailheader"); viewElementsAllowed.insert("tablabels"); } void cTemplateViewMenu::SetViewLists(void) { viewListsAllowed.insert("menuitems"); } string cTemplateViewMenu::GetSubViewName(eSubView sv) { string name; switch (sv) { case svMenuDefault: name = "Default Menu"; break; case svMenuMain: name = "Main Menu"; break; case svMenuSetup: name = "Setup Menu"; break; case svMenuSchedules: name = "Schedules Menu"; break; case svMenuTimers: name = "Timers Menu"; break; case svMenuRecordings: name = "Recordings Menu"; break; case svMenuChannels: name = "Channels Menu"; break; case svMenuDetailedEpg: name = "Detailed EPG"; break; case svMenuDetailedRecording: name = "Detailed Recording"; break; case svMenuDetailedText: name = "Detailed Text"; break; default: name = "Unknown"; break; }; return name; } string cTemplateViewMenu::GetViewElementName(eViewElement ve) { string name; switch (ve) { case veBackground: name = "Background"; break; case veDateTime: name = "DateTime"; break; case veTime: name = "Time"; break; case veHeader: name = "Header"; break; case veButtons: name = "Color Buttons"; break; case veMessage: name = "Message"; break; case veSortMode: name = "Sort Mode"; break; case veDiscUsage: name = "Disc Usage"; break; case veSystemLoad: name = "System Load"; break; case veSystemMemory: name = "System Memory"; break; case veTemperatures: name = "Temperatures"; break; case veTimers: name = "Timers"; break; case veLastRecordings: name = "Last Recordings"; break; case veCurrentSchedule: name = "Current Schedule"; break; case veCurrentWeather: name = "Current Weather"; break; case veCustomTokens: name = "Custom Tokens"; break; case veDevices: name = "Devices"; break; case veMenuItem: name = "Menu Item"; break; case veMenuCurrentItemDetail: name = "Menu Current Item Detail"; break; case veScrollbar: name = "Scrollbar"; break; case veDetailHeader: name = "Detail header"; break; case veTabLabels: name = "tab labels"; break; default: name = "Unknown"; break; }; return name; } string cTemplateViewMenu::GetViewListName(eViewList vl) { string name; switch (vl) { case vlMenuItem: name = "Menu Item"; break; default: name = "Unknown"; break; }; return name; } void cTemplateViewMenu::AddSubView(string sSubView, cTemplateView *subView) { eSubView sv = svUndefined; if (!sSubView.compare("menumain")) { sv = svMenuMain; } else if (!sSubView.compare("menudefault")) { sv = svMenuDefault; } else if (!sSubView.compare("menuschedules")) { sv = svMenuSchedules; } else if (!sSubView.compare("menusetup")) { sv = svMenuSetup; } else if (!sSubView.compare("menuschedules")) { sv = svMenuSchedules; } else if (!sSubView.compare("menutimers")) { sv = svMenuTimers; } else if (!sSubView.compare("menurecordings")) { sv = svMenuRecordings; } else if (!sSubView.compare("menuchannels")) { sv = svMenuChannels; } else if (!sSubView.compare("menudetailedepg")) { sv = svMenuDetailedEpg; } else if (!sSubView.compare("menudetailedrecording")) { sv = svMenuDetailedRecording; } else if (!sSubView.compare("menudetailedtext")) { sv = svMenuDetailedText; } if (sv == svUndefined) { esyslog("skindesigner: unknown SubView in displayMenu: %s", sSubView.c_str()); return; } subView->SetGlobals(globals); subViews.insert(pair(sv, subView)); } void cTemplateViewMenu::AddPluginView(string plugName, int templNo, cTemplateView *plugView) { plugView->SetGlobals(globals); map < string, map< int, cTemplateView*> >::iterator hit = pluginViews.find(plugName); if (hit == pluginViews.end()) { map< int, cTemplateView*> plugTemplates; plugTemplates.insert(pair(templNo, plugView)); pluginViews.insert(pair< string, map< int, cTemplateView*> >(plugName, plugTemplates)); } else { hit->second.insert(pair(templNo, plugView)); } } void cTemplateViewMenu::AddPixmap(string sViewElement, cTemplatePixmap *pix, vector > &viewElementattributes) { eViewElement ve = veUndefined; if (!sViewElement.compare("background")) { ve = veBackground; } else if (!sViewElement.compare("datetime")) { ve = veDateTime; } else if (!sViewElement.compare("time")) { ve = veTime; } else if (!sViewElement.compare("header")) { ve = veHeader; } else if (!sViewElement.compare("colorbuttons")) { ve = veButtons; } else if (!sViewElement.compare("message")) { ve = veMessage; } else if (!sViewElement.compare("sortmode")) { ve = veSortMode; } else if (!sViewElement.compare("discusage")) { ve = veDiscUsage; } else if (!sViewElement.compare("systemload")) { ve = veSystemLoad; } else if (!sViewElement.compare("systemmemory")) { ve = veSystemMemory; } else if (!sViewElement.compare("temperatures")) { ve = veTemperatures; } else if (!sViewElement.compare("timers")) { ve = veTimers; } else if (!sViewElement.compare("lastrecordings")) { ve = veLastRecordings; } else if (!sViewElement.compare("currentschedule")) { ve = veCurrentSchedule; } else if (!sViewElement.compare("customtokens")) { ve = veCustomTokens; } else if (!sViewElement.compare("devices")) { ve = veDevices; } else if (!sViewElement.compare("currentweather")) { ve = veCurrentWeather; } else if (!sViewElement.compare("scrollbar")) { ve = veScrollbar; } else if (!sViewElement.compare("detailheader")) { ve = veDetailHeader; } else if (!sViewElement.compare("tablabels")) { ve = veTabLabels; } if (ve == veUndefined) { esyslog("skindesigner: unknown ViewElement in displayMenu: %s", sViewElement.c_str()); 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); } } void cTemplateViewMenu::AddViewList(string sViewList, cTemplateViewList *viewList) { eViewList vl = vlUndefined; if (!sViewList.compare("menuitems")) { vl = vlMenuItem; } if (vl == vlUndefined) { esyslog("skindesigner: unknown ViewList in displaymenu: %s", sViewList.c_str()); return; } viewList->SetGlobals(globals); viewLists.insert(pair< eViewList, cTemplateViewList*>(vl, viewList)); } void cTemplateViewMenu::AddViewTab(cTemplateViewTab *viewTab) { viewTabs.push_back(viewTab); } /************************************************************************************ * cTemplateViewMessage ************************************************************************************/ cTemplateViewMessage::cTemplateViewMessage(void) { viewName = "displaymessage"; //definition of allowed parameters for class itself set attributes; attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("fadetime"); attributes.insert("shifttime"); attributes.insert("shifttype"); attributes.insert("shiftmode"); attributes.insert("startx"); attributes.insert("starty"); attributes.insert("scaletvx"); attributes.insert("scaletvy"); attributes.insert("scaletvwidth"); attributes.insert("scaletvheight"); attributes.insert("debuggrid"); funcsAllowed.insert(pair< string, set >(viewName, attributes)); SetViewElements(); } cTemplateViewMessage::~cTemplateViewMessage() { } void cTemplateViewMessage::SetViewElements(void) { viewElementsAllowed.insert("background"); viewElementsAllowed.insert("message"); } string cTemplateViewMessage::GetViewElementName(eViewElement ve) { string name; switch (ve) { case veBackground: name = "Background"; break; case veMessage: name = "Message"; break; default: name = "Unknown"; break; }; return name; } void cTemplateViewMessage::AddPixmap(string sViewElement, cTemplatePixmap *pix, vector > &viewElementattributes) { eViewElement ve = veUndefined; if (!sViewElement.compare("background")) { ve = veBackground; } else if (!sViewElement.compare("message")) { ve = veMessage; } if (ve == veUndefined) { esyslog("skindesigner: unknown ViewElement in displaymessage: %s", sViewElement.c_str()); 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); } } /************************************************************************************ * cTemplateViewReplay ************************************************************************************/ cTemplateViewReplay::cTemplateViewReplay(void) { viewName = "displayreplay"; //definition of allowed parameters for class itself set attributes; attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("fadetime"); attributes.insert("shifttime"); attributes.insert("shifttype"); attributes.insert("shiftmode"); attributes.insert("startx"); attributes.insert("starty"); attributes.insert("scaletvx"); attributes.insert("scaletvy"); attributes.insert("scaletvwidth"); attributes.insert("scaletvheight"); attributes.insert("debuggrid"); funcsAllowed.insert(pair< string, set >(viewName, attributes)); //definition of allowed parameters for onpause and onpausemodeonly viewelement attributes.clear(); attributes.insert("debug"); attributes.insert("delay"); attributes.insert("fadetime"); funcsAllowed.insert(pair< string, set >("onpause", attributes)); funcsAllowed.insert(pair< string, set >("onpausemodeonly", attributes)); SetViewElements(); } cTemplateViewReplay::~cTemplateViewReplay() { } void cTemplateViewReplay::SetViewElements(void) { viewElementsAllowed.insert("background"); viewElementsAllowed.insert("backgroundmodeonly"); viewElementsAllowed.insert("datetime"); viewElementsAllowed.insert("time"); viewElementsAllowed.insert("rectitle"); viewElementsAllowed.insert("recinfo"); viewElementsAllowed.insert("scrapercontent"); viewElementsAllowed.insert("currenttime"); viewElementsAllowed.insert("totaltime"); viewElementsAllowed.insert("endtime"); viewElementsAllowed.insert("progressbar"); viewElementsAllowed.insert("cutmarks"); viewElementsAllowed.insert("controlicons"); viewElementsAllowed.insert("controliconsmodeonly"); viewElementsAllowed.insert("jump"); viewElementsAllowed.insert("message"); viewElementsAllowed.insert("onpause"); viewElementsAllowed.insert("onpausemodeonly"); viewElementsAllowed.insert("customtokens"); } string cTemplateViewReplay::GetViewElementName(eViewElement ve) { string name; switch (ve) { case veBackground: name = "Background"; break; case veDateTime: name = "DateTime"; break; case veTime: name = "DateTime"; break; case veRecTitle: name = "Recording Title"; break; case veRecInfo: name = "Recording Information"; break; case veRecCurrent: name = "Recording current Time"; break; case veRecTotal: name = "Recording total Time"; break; case veRecEnd: name = "Recording end Time"; break; case veRecProgressBar: name = "Rec Progress Bar"; break; case veCuttingMarks: name = "Cutting Marks"; break; case veControlIcons: name = "Control Icons"; break; case veControlIconsModeOnly: name = "Control Icons Mode only"; break; case veBackgroundModeOnly: name = "Background Mode only"; break; case veRecJump: name = "Recording Jump"; break; case veScraperContent: name = "Scraper Content"; break; case veOnPause: name = "On Pause"; break; case veOnPauseModeOnly: name = "On Pause Mode Only"; break; case veCustomTokens: name = "Custom Tokens"; break; default: name = "Unknown"; break; }; return name; } void cTemplateViewReplay::AddPixmap(string sViewElement, cTemplatePixmap *pix, vector > &viewElementattributes) { eViewElement ve = veUndefined; if (!sViewElement.compare("background")) { ve = veBackground; } else if (!sViewElement.compare("datetime")) { ve = veDateTime; } else if (!sViewElement.compare("time")) { ve = veTime; } else if (!sViewElement.compare("rectitle")) { ve = veRecTitle; } else if (!sViewElement.compare("recinfo")) { ve = veRecInfo; } else if (!sViewElement.compare("scrapercontent")) { ve = veScraperContent; } else if (!sViewElement.compare("currenttime")) { ve = veRecCurrent; } else if (!sViewElement.compare("totaltime")) { ve = veRecTotal; } else if (!sViewElement.compare("endtime")) { ve = veRecEnd; } else if (!sViewElement.compare("progressbar")) { ve = veRecProgressBar; } else if (!sViewElement.compare("cutmarks")) { ve = veCuttingMarks; } else if (!sViewElement.compare("controlicons")) { ve = veControlIcons; } else if (!sViewElement.compare("controliconsmodeonly")) { ve = veControlIconsModeOnly; } else if (!sViewElement.compare("backgroundmodeonly")) { ve = veBackgroundModeOnly; } else if (!sViewElement.compare("jump")) { ve = veRecJump; } else if (!sViewElement.compare("message")) { ve = veMessage; } else if (!sViewElement.compare("onpause")) { ve = veOnPause; } else if (!sViewElement.compare("onpausemodeonly")) { ve = veOnPauseModeOnly; } else if (!sViewElement.compare("customtokens")) { ve = veCustomTokens; } if (ve == veUndefined) { esyslog("skindesigner: unknown ViewElement in displayreplay: %s", sViewElement.c_str()); 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); } } /************************************************************************************ * cTemplateViewVolume ************************************************************************************/ cTemplateViewVolume::cTemplateViewVolume(void) { viewName = "displayvolume"; //definition of allowed parameters for class itself set attributes; attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("fadetime"); attributes.insert("shifttime"); attributes.insert("shifttype"); attributes.insert("shiftmode"); attributes.insert("startx"); attributes.insert("starty"); attributes.insert("scaletvx"); attributes.insert("scaletvy"); attributes.insert("scaletvwidth"); attributes.insert("scaletvheight"); attributes.insert("debuggrid"); funcsAllowed.insert(pair< string, set >(viewName, attributes)); SetViewElements(); } cTemplateViewVolume::~cTemplateViewVolume() { } void cTemplateViewVolume::SetViewElements(void) { viewElementsAllowed.insert("background"); viewElementsAllowed.insert("volume"); } string cTemplateViewVolume::GetViewElementName(eViewElement ve) { string name; switch (ve) { case veBackground: name = "Background"; break; case veVolume: name = "Volume"; break; default: name = "Unknown"; break; }; return name; } void cTemplateViewVolume::AddPixmap(string sViewElement, cTemplatePixmap *pix, vector > &viewElementattributes) { eViewElement ve = veUndefined; if (!sViewElement.compare("background")) { ve = veBackground; } else if (!sViewElement.compare("volume")) { ve = veVolume; } if (ve == veUndefined) { esyslog("skindesigner: unknown ViewElement in displayvolume: %s", sViewElement.c_str()); 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); } } /************************************************************************************ * cTemplateViewAudioTracks ************************************************************************************/ cTemplateViewAudioTracks::cTemplateViewAudioTracks(void) { viewName = "displayaudiotracks"; //definition of allowed parameters for class itself set attributes; attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("fadetime"); attributes.insert("shifttime"); attributes.insert("shifttype"); attributes.insert("shiftmode"); attributes.insert("startx"); attributes.insert("starty"); attributes.insert("scaletvx"); attributes.insert("scaletvy"); attributes.insert("scaletvwidth"); attributes.insert("scaletvheight"); attributes.insert("debuggrid"); funcsAllowed.insert(pair< string, set >(viewName, attributes)); //definition of allowed parameters for menuitems viewlist attributes.clear(); attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("orientation"); attributes.insert("align"); attributes.insert("menuitemwidth"); attributes.insert("numlistelements"); funcsAllowed.insert(pair< string, set >("menuitems", attributes)); SetViewElements(); SetViewLists(); } cTemplateViewAudioTracks::~cTemplateViewAudioTracks() { } void cTemplateViewAudioTracks::SetViewElements(void) { viewElementsAllowed.insert("background"); viewElementsAllowed.insert("header"); } void cTemplateViewAudioTracks::SetViewLists(void) { viewListsAllowed.insert("menuitems"); } string cTemplateViewAudioTracks::GetViewElementName(eViewElement ve) { string name; switch (ve) { case veBackground: name = "Background"; break; case veHeader: name = "Header"; break; default: name = "Unknown"; break; }; return name; } string cTemplateViewAudioTracks::GetViewListName(eViewList vl) { string name; switch (vl) { case vlMenuItem: name = "Menu Item"; break; default: name = "Unknown"; break; }; return name; } void cTemplateViewAudioTracks::AddPixmap(string sViewElement, cTemplatePixmap *pix, vector > &viewElementattributes) { eViewElement ve = veUndefined; if (!sViewElement.compare("background")) { ve = veBackground; } else if(!sViewElement.compare("header")) { ve = veHeader; } if (ve == veUndefined) { esyslog("skindesigner: unknown ViewElement in displayaudiotracks: %s", sViewElement.c_str()); 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); } } void cTemplateViewAudioTracks::AddViewList(string sViewList, cTemplateViewList *viewList) { eViewList vl = vlUndefined; if (!sViewList.compare("menuitems")) { vl = vlMenuItem; } if (vl == vlUndefined) { esyslog("skindesigner: unknown ViewList in displaymenu: %s", sViewList.c_str()); return; } viewList->SetGlobals(globals); viewLists.insert(pair< eViewList, cTemplateViewList*>(vl, viewList)); } /************************************************************************************ * cTemplateViewPlugin ************************************************************************************/ cTemplateViewPlugin::cTemplateViewPlugin(string pluginName, int viewID) { this->pluginName = pluginName; this->viewID = viewID; viewName = "displayplugin"; //definition of allowed parameters for class itself set attributes; attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("fadetime"); attributes.insert("shifttime"); attributes.insert("shifttype"); attributes.insert("shiftmode"); attributes.insert("startx"); attributes.insert("starty"); attributes.insert("scaletvx"); attributes.insert("scaletvy"); attributes.insert("scaletvwidth"); attributes.insert("scaletvheight"); attributes.insert("hideroot"); attributes.insert("debuggrid"); funcsAllowed.insert(pair< string, set >(viewName, attributes)); //definition of allowed parameters for viewtab attributes.clear(); attributes.insert("debug"); attributes.insert("name"); attributes.insert("condition"); attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("layer"); attributes.insert("transparency"); attributes.insert("scrollheight"); funcsAllowed.insert(pair< string, set >("tab", attributes)); attributes.clear(); attributes.insert("x"); attributes.insert("y"); attributes.insert("width"); attributes.insert("height"); attributes.insert("name"); funcsAllowed.insert(pair< string, set >("grid", attributes)); viewElementsAllowed.insert("viewelement"); viewElementsAllowed.insert("scrollbar"); viewElementsAllowed.insert("tablabels"); viewGridsAllowed.insert("grid"); } cTemplateViewPlugin::~cTemplateViewPlugin() { } void cTemplateViewPlugin::AddSubView(string sSubView, cTemplateView *subView) { int subViewId = atoi(sSubView.c_str()); subViews.insert(pair< eSubView, cTemplateView* >((eSubView)subViewId, subView)); } void cTemplateViewPlugin::AddPixmap(string sViewElement, cTemplatePixmap *pix, vector > &viewElementattributes) { eViewElement ve = veUndefined; string viewElementName = ""; int viewElementID = -1; bool found = false; for (vector >::iterator it = viewElementattributes.begin(); it != viewElementattributes.end(); it++) { if (!(it->first).compare("name")) { viewElementName = it->second; found = true; break; } } if (found) { viewElementID = config.GetPluginViewElementID(pluginName, viewElementName, viewID); } else { //check for internal view elements ePluginInteralViewElements pve = pveUndefined; if (!sViewElement.compare("scrollbar")) { pve = pveScrollbar; } else if (!sViewElement.compare("tablabels")) { pve = pveTablabels; } if (pve == pveUndefined) { esyslog("skindesigner: %s: unknown ViewElement in displayplugin: %s", pluginName.c_str(), viewElementName.c_str()); return; } 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); } } void cTemplateViewPlugin::AddPixmapGrid(cTemplatePixmap *pix, vector > &gridAttributes) { string gridName = ""; bool found = false; for (vector >::iterator it = gridAttributes.begin(); it != gridAttributes.end(); it++) { if (!(it->first).compare("name")) { gridName = it->second; found = true; break; } } if (!found) { esyslog("skindesigner: no name defined for plugin %s grid", pluginName.c_str()); } int gridID = config.GetPluginViewGridID(pluginName, gridName, viewID); if (gridID == -1) { esyslog("skindesigner: %s: unknown Grid in displayplugin: %s", pluginName.c_str(), gridName.c_str()); 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); } } void cTemplateViewPlugin::AddViewTab(cTemplateViewTab *viewTab) { viewTabs.push_back(viewTab); }