diff options
author | louis <louis.braun@gmx.de> | 2016-02-06 09:55:15 +0100 |
---|---|---|
committer | louis <louis.braun@gmx.de> | 2016-02-06 09:55:15 +0100 |
commit | ac0e6dbc8d1ea8fd24712dd03fea154cea6a7135 (patch) | |
tree | 3f8ab3640f7c0645592c8bbd0d4ce34821816ad7 /coreengine/viewdisplayplugin.c | |
parent | 8ef68f8ab82e511ad0df96a910daa1547923633b (diff) | |
download | vdr-plugin-skindesigner-ac0e6dbc8d1ea8fd24712dd03fea154cea6a7135.tar.gz vdr-plugin-skindesigner-ac0e6dbc8d1ea8fd24712dd03fea154cea6a7135.tar.bz2 |
fixed line breaks
Diffstat (limited to 'coreengine/viewdisplayplugin.c')
-rw-r--r-- | coreengine/viewdisplayplugin.c | 1112 |
1 files changed, 556 insertions, 556 deletions
diff --git a/coreengine/viewdisplayplugin.c b/coreengine/viewdisplayplugin.c index 1619944..5808025 100644 --- a/coreengine/viewdisplayplugin.c +++ b/coreengine/viewdisplayplugin.c @@ -1,556 +1,556 @@ -#include "viewdisplayplugin.h"
-#include "../config.h"
-/***********************************************************
-* cViewPlugin
-***********************************************************/
-cViewPlugin::cViewPlugin(int id, int plugId) {
- this->id = id;
- this->plugId = plugId;
- viewId = eViewType::DisplayPlugin;
- viewName = strdup("displayplugin");
- if (id == 0)
- numViews = plgManager->GetNumSubviews(plugId) + 1;
- else
- numViews = 1;
- views = new cViewPlugin*[numViews];
- views[0] = this;
- for (int i=1; i < numViews; i++) {
- views[i] = NULL;
- }
- numViewElements = plgManager->GetNumViewElements(plugId, id);
- viewElements = new cViewElement*[numViewElements];
- for (int i=0; i < numViewElements; i++) {
- viewElements[i] = NULL;
- }
- SetViewElements();
- numViewGrids = plgManager->GetNumViewGrids(plugId, id);
- viewGrids = new cViewGrid*[numViewGrids];
- for (int i=0; i < numViewGrids; i++) {
- viewGrids[i] = NULL;
- }
- SetViewGrids();
- tabView = NULL;
- viewChanged = true;
- newViewId = 0;
-}
-
-cViewPlugin::~cViewPlugin(void) {
- for (int i=0; i< numViewGrids; i++)
- delete viewGrids[i];
- delete[] viewGrids;
- delete tabView;
- for (int i=1; i < numViews; i++) {
- delete views[i];
- }
- delete[] views;
-}
-
-/***********************************************************
-* Public Functions
-***********************************************************/
-bool cViewPlugin::ReadFromXML(const char *plugName, const char *tplName, cSdOsd *osd) {
- cString xmlFile = cString::sprintf("plug-%s-%s", plugName, tplName);
- cXmlParser parser;
- if (osd)
- parser.SetOsd(osd);
- else
- parser.SetOsd(&sdOsd);
- if (!parser.ReadView(this, *xmlFile)) {
- return false;
- }
- if (!parser.ParsePluginView()) {
- return false;
- }
- return true;
-}
-
-bool cViewPlugin::ReadSubViews(const char *plugName) {
- plgManager->InitPluginSubviewIterator(plugId);
- int svId = -1;
- string svTpl = "";
- while (plgManager->GetNextSubView(svId, svTpl)) {
- cViewPlugin *plugSubView = new cViewPlugin(svId, plugId);
- if (!plugSubView->ReadFromXML(plugName, svTpl.c_str(), &sdOsd))
- return false;
- views[svId] = plugSubView;
- }
- return true;
-}
-
-
-void cViewPlugin::SetGlobals(cGlobals *globals) {
- cView::SetGlobals(globals);
- for (int i=0; i < numViewGrids; i++) {
- if (viewGrids[i])
- viewGrids[i]->SetGlobals(globals);
- }
- for (int i=1; i < numViews; i++) {
- views[i]->SetGlobals(globals);
- }
- if (tabView) {
- tabView->SetGlobals(globals);
- }
-}
-
-void cViewPlugin::AddViewElement(cVePlugin *viewElement) {
- int veId = ViewElementId(viewElement->Name());
- if (veId == ATTR_UNKNOWN)
- return;
- viewElement->SetId(veId);
- viewElement->SetPluginId(plugId);
- viewElement->SetViewId(id);
- viewElement->SetTokenContainer();
- viewElements[veId] = viewElement;
-}
-
-void cViewPlugin::AddViewGrid(cViewGrid *viewGrid) {
- int gId = GridId(viewGrid->Name());
- if (gId == ATTR_UNKNOWN)
- return;
- viewGrid->SetId(gId);
- viewGrid->SetPluginId(plugId);
- viewGrid->SetViewId(id);
- viewGrid->SetTokenContainer();
- viewGrids[gId] = viewGrid;
-}
-
-void cViewPlugin::AddTab(cArea *tab) {
- if (!tabView) {
- tabView = new cPluginTabView(id, plugId);
- tabView->SetOsd(&sdOsd);
- }
- tabView->AddTab(tab);
-}
-
-void cViewPlugin::AddScrollbar(cVeDmScrollbar *scrollbar) {
- if (!tabView) {
- tabView = new cPluginTabView(id, plugId);
- tabView->SetOsd(&sdOsd);
- }
- int id = ViewElementId("scrollbar");
- scrollbar->SetId(id);
- scrollbar->SetTokenContainer();
- tabView->AddScrollbar(scrollbar);
-}
-
-void cViewPlugin::AddTablabels(cVeDmTablabels *tablabels) {
- if (!tabView) {
- tabView = new cPluginTabView(id, plugId);
- tabView->SetOsd(&sdOsd);
- }
- int id = ViewElementId("tablabels");
- tablabels->SetId(id);
- tablabels->SetTokenContainer();
- tabView->AddTablabels(tablabels);
-}
-
-void cViewPlugin::PreCache(void) {
- if (container.Width() > 0) {
- attribs->SetContainer(container.X(), container.Y(), container.Width(), container.Height());
- attribs->Cache();
- }
- cView::PreCache();
- for (int i=0; i < numViewGrids; i++) {
- if (viewGrids[i]) {
- viewGrids[i]->SetContainer(0, 0, attribs->Width(), attribs->Height());
- viewGrids[i]->PreCache();
- }
- }
- for (int i=1; i < numViews; i++) {
- views[i]->SetContainer(0, 0, attribs->Width(), attribs->Height());
- views[i]->PreCache();
- }
- if (tabView) {
- tabView->PreCache(0, 0, attribs->Width(), attribs->Height());
- }
-}
-
-cVePlugin *cViewPlugin::GetViewElement(int veId) {
- if (!viewElements[veId])
- return NULL;
- cVePlugin *ve = dynamic_cast<cVePlugin*>(viewElements[veId]);
- return ve;
-}
-
-cViewGrid *cViewPlugin::GetViewGrid(int gId) {
- return viewGrids[gId];
-}
-
-cPluginTabView *cViewPlugin::GetViewTab(void) {
- return tabView;
-}
-
-void cViewPlugin::Hide(void) {
- for (int i=0; i < numViewGrids; i++) {
- if (viewGrids[i])
- viewGrids[i]->Hide();
- }
- for (int i=0; i < numViewElements; i++) {
- if (viewElements[i])
- viewElements[i]->Hide();
- }
-}
-
-void cViewPlugin::Show(void) {
- for (int i=0; i < numViewGrids; i++) {
- if (viewGrids[i])
- viewGrids[i]->Show();
- }
- for (int i=0; i < numViewElements; i++) {
- if (viewElements[i])
- viewElements[i]->Show();
- }
-}
-/***********************************************************
-* libskindesigner api interface
-***********************************************************/
-bool cViewPlugin::InitOsd(void) {
- return Init();
-}
-
-void cViewPlugin::CloseOsd(void) {
- viewChanged = true;
- newViewId = 0;
- Close();
- for (int i=0 ; i < numViewGrids; i++) {
- if (viewGrids[i])
- viewGrids[i]->Close();
- }
- for (int i=1 ; i < numViews; i++) {
- if (views[i])
- views[i]->Close();
- }
-}
-
-void cViewPlugin::Deactivate(int viewId, bool hide) {
- for (int i=0; i < numViewElements; i++) {
- if (viewElements[i])
- viewElements[i]->StopScrolling(false);
- }
- if (hide)
- views[viewId]->Hide();
-}
-
-void cViewPlugin::Activate(int viewId) {
- viewChanged = true;
- newViewId = viewId;
- views[viewId]->Show();
-}
-
-void cViewPlugin::SetViewElementTokens(int veId, int viewId, skindesignerapi::cTokenContainer *tk) {
- cVePlugin *ve = views[viewId]->GetViewElement(veId);
- if (!ve)
- return;
- ve->Set(tk);
-}
-
-void cViewPlugin::ClearViewElement(int veId, int viewId) {
- cVePlugin *ve = views[viewId]->GetViewElement(veId);
- if (!ve)
- return;
- ve->StopScrolling();
- ve->Clear();
-}
-
-void cViewPlugin::DisplayViewElement(int veId, int viewId) {
- cVePlugin *ve = views[viewId]->GetViewElement(veId);
- if (!ve)
- return;
- if (ve->Parse())
- ve->Render();
-}
-
-void cViewPlugin::SetGrid(long gId, int viewId, int viewGridId, double x, double y, double width, double height, skindesignerapi::cTokenContainer *tk){
- cViewGrid *grid = views[viewId]->GetViewGrid(viewGridId);
- if (!grid)
- return;
- grid->CheckSize(gId);
- grid->PositionGrid(gId, x, y, width, height);
- if (tk) {
- //only set tokens new if necessary
- grid->SetTokens(gId, tk);
- }
-}
-
-void cViewPlugin::SetGridCurrent(long gId, int viewId, int viewGridId, bool current) {
- if (gId < 0)
- return;
- cViewGrid *grid = views[viewId]->GetViewGrid(viewGridId);
- if (!grid)
- return;
- grid->SetCurrentGrid(gId, current);
-}
-
-void cViewPlugin::DeleteGrid(long gId, int viewId, int viewGridId) {
- cViewGrid *grid = views[viewId]->GetViewGrid(viewGridId);
- if (!grid)
- return;
- grid->DeleteGrid(gId);
-}
-
-void cViewPlugin::DisplayGrids(int viewId, int viewGridId) {
- cViewGrid *grid = views[viewId]->GetViewGrid(viewGridId);
- if (!grid)
- return;
- grid->Render();
-}
-
-void cViewPlugin::ClearGrids(int viewId, int viewGridId) {
- cViewGrid *grid = views[viewId]->GetViewGrid(viewGridId);
- if (!grid)
- return;
- grid->ClearGrids();
-}
-
-void cViewPlugin::SetTabTokens(int viewId, skindesignerapi::cTokenContainer *tk) {
- cPluginTabView *tab = views[viewId]->GetViewTab();
- if (!tab)
- return;
- tab->SetOsd(&sdOsd);
- tab->Set(tk);
-}
-
-void cViewPlugin::TabLeft(int viewId) {
- cPluginTabView *tab = views[viewId]->GetViewTab();
- if (!tab)
- return;
- tab->KeyLeft();
-}
-
-void cViewPlugin::TabRight(int viewId) {
- cPluginTabView *tab = views[viewId]->GetViewTab();
- if (!tab)
- return;
- tab->KeyRight();
-}
-
-void cViewPlugin::TabUp(int viewId) {
- cPluginTabView *tab = views[viewId]->GetViewTab();
- if (!tab)
- return;
- tab->KeyUp();
-}
-
-void cViewPlugin::TabDown(int viewId) {
- cPluginTabView *tab = views[viewId]->GetViewTab();
- if (!tab)
- return;
- tab->KeyDown();
-}
-
-void cViewPlugin::DisplayTabs(int viewId) {
- cPluginTabView *tab = views[viewId]->GetViewTab();
- if (!tab)
- return;
- tab->Render();
-}
-
-void cViewPlugin::ClearTab(int viewId) {
- cPluginTabView *tab = views[viewId]->GetViewTab();
- if (!tab)
- return;
- tab->Clear();
-}
-
-void cViewPlugin::Flush(void) {
- if (viewChanged) {
- viewChanged = false;
- newTvFrame = views[newViewId]->GetTvFrame();
- menuInit = true;
- }
- cView::Flush();
-}
-
-bool cViewPlugin::ChannelLogoExists(string channelId) {
- return imgCache->LogoExists(channelId);
-}
-
-string cViewPlugin::GetEpgImagePath(void) {
- return *config.epgImagePath;
-}
-
-/***********************************************************
-* Private Functions
-***********************************************************/
-void cViewPlugin::SetViewElements(void) {
- plgManager->InitViewElementIterator(plugId, id);
- int veId = -1;
- string veName = "";
- while (plgManager->GetNextViewElement(veId, veName)) {
- viewElementNames.insert(pair<string, int>(veName, veId));
- }
-}
-
-void cViewPlugin::SetViewGrids(void) {
- plgManager->InitViewGridIterator(plugId, id);
- int gId = -1;
- string gName = "";
- while (plgManager->GetNextViewGrid(gId, gName)) {
- gridNames.insert(pair<string, int>(gName, gId));
- }
-}
-
-int cViewPlugin::GridId(const char *name) {
- map<string, int>::iterator hit = gridNames.find(name);
- if (hit != gridNames.end())
- return (int)hit->second;
- return ATTR_UNKNOWN;
-}
-
-/***********************************************************
-* cPluginTabView
-***********************************************************/
-cPluginTabView::cPluginTabView(int viewId, int plugId) {
- sdOsd = NULL;
- init = true;
- drawScrollbar = true;
- scrollbar = NULL;
- tablabels = NULL;
- detailView = new cViewDetailAdvancedPlugin(viewId, plugId);
- firstTab = true;
-}
-
-cPluginTabView::~cPluginTabView(void) {
- delete scrollbar;
- delete tablabels;
- delete detailView;
-}
-
-void cPluginTabView::SetGlobals(cGlobals *globals) {
- detailView->SetGlobals(globals);
- if (scrollbar)
- scrollbar->SetGlobals(globals);
- if (tablabels)
- tablabels->SetGlobals(globals);
-}
-
-void cPluginTabView::AddTab(cArea *tab) {
- if (firstTab) {
- tab->SetActiveTab(true);
- firstTab = false;
- }
- detailView->AddArea(tab);
-}
-
-void cPluginTabView::AddScrollbar(cVeDmScrollbar *scrollbar) {
- this->scrollbar = scrollbar;
-}
-
-void cPluginTabView::AddTablabels(cVeDmTablabels *tablabels) {
- this->tablabels = tablabels;
-}
-
-void cPluginTabView::PreCache(int containerX, int containerY, int containerWidth, int containerHeight) {
- detailView->SetOsd(sdOsd);
- detailView->SetTokenContainer();
- detailView->SetContainer(containerX, containerY, containerWidth, containerHeight);
- detailView->Cache();
- if (scrollbar) {
- scrollbar->SetContainer(containerX, containerY, containerWidth, containerHeight);
- scrollbar->Cache();
- }
- if (tablabels) {
- tablabels->SetContainer(containerX, containerY, containerWidth, containerHeight);
- tablabels->Cache();
- }
-}
-
-void cPluginTabView::Set(skindesignerapi::cTokenContainer *tk) {
- detailView->Set(tk);
-}
-
-void cPluginTabView::Render(void) {
- detailView->Render();
- if (drawScrollbar) {
- drawScrollbar = false;
- DrawScrollbar();
- }
- if (!init)
- return;
- init = false;
- vector<const char*> tabs;
- int activeTab = detailView->GetTabs(tabs);
- if (tablabels) {
- tablabels->SetTabs(tabs);
- tablabels->SetActiveTab(activeTab);
- if (tablabels->Parse())
- tablabels->Render();
- }
-}
-
-void cPluginTabView::Clear(void) {
- init = true;
- drawScrollbar = true;
- detailView->ResetTabs();
- detailView->Close();
- if (tablabels)
- tablabels->Close();
- if (scrollbar)
- scrollbar->Close();
-}
-
-void cPluginTabView::KeyLeft(void) {
- if (detailView->NumTabs() > 1) {
- detailView->Clear();
- detailView->PrevTab();
- detailView->SetDirty();
- if (tablabels) {
- tablabels->Clear();
- tablabels->SetActiveTab(detailView->ActiveTab());
- if (tablabels->Parse())
- tablabels->Render();
- }
- sdOsd->Flush();
- drawScrollbar = true;
- } else {
- //scroll page
- if (detailView->ScrollUp(true)) {
- drawScrollbar = true;
- }
- }
-}
-
-void cPluginTabView::KeyRight(void) {
- if (detailView->NumTabs() > 1) {
- detailView->Clear();
- detailView->NextTab();
- detailView->SetDirty();
- if (tablabels) {
- tablabels->Clear();
- tablabels->SetActiveTab(detailView->ActiveTab());
- if (tablabels->Parse())
- tablabels->Render();
- }
- sdOsd->Flush();
- drawScrollbar = true;
- } else {
- //scroll page
- if (detailView->ScrollDown(true)) {
- drawScrollbar = true;
- }
- }
-}
-
-void cPluginTabView::KeyUp(void) {
- if (detailView->ScrollUp()) {
- drawScrollbar = true;
- }
-}
-
-void cPluginTabView::KeyDown(void) {
- if (detailView->ScrollDown()) {
- drawScrollbar = true;
- }
-}
-
-void cPluginTabView::DrawScrollbar(void) {
- if (!scrollbar)
- return;
- int barheight = 0;
- int offset = 0;
- bool end = true;
- detailView->Scrollbar(barheight, offset, end);
- scrollbar->SetDetail(barheight, offset, end);
- scrollbar->Render();
-}
-
+#include "viewdisplayplugin.h" +#include "../config.h" +/*********************************************************** +* cViewPlugin +***********************************************************/ +cViewPlugin::cViewPlugin(int id, int plugId) { + this->id = id; + this->plugId = plugId; + viewId = eViewType::DisplayPlugin; + viewName = strdup("displayplugin"); + if (id == 0) + numViews = plgManager->GetNumSubviews(plugId) + 1; + else + numViews = 1; + views = new cViewPlugin*[numViews]; + views[0] = this; + for (int i=1; i < numViews; i++) { + views[i] = NULL; + } + numViewElements = plgManager->GetNumViewElements(plugId, id); + viewElements = new cViewElement*[numViewElements]; + for (int i=0; i < numViewElements; i++) { + viewElements[i] = NULL; + } + SetViewElements(); + numViewGrids = plgManager->GetNumViewGrids(plugId, id); + viewGrids = new cViewGrid*[numViewGrids]; + for (int i=0; i < numViewGrids; i++) { + viewGrids[i] = NULL; + } + SetViewGrids(); + tabView = NULL; + viewChanged = true; + newViewId = 0; +} + +cViewPlugin::~cViewPlugin(void) { + for (int i=0; i< numViewGrids; i++) + delete viewGrids[i]; + delete[] viewGrids; + delete tabView; + for (int i=1; i < numViews; i++) { + delete views[i]; + } + delete[] views; +} + +/*********************************************************** +* Public Functions +***********************************************************/ +bool cViewPlugin::ReadFromXML(const char *plugName, const char *tplName, cSdOsd *osd) { + cString xmlFile = cString::sprintf("plug-%s-%s", plugName, tplName); + cXmlParser parser; + if (osd) + parser.SetOsd(osd); + else + parser.SetOsd(&sdOsd); + if (!parser.ReadView(this, *xmlFile)) { + return false; + } + if (!parser.ParsePluginView()) { + return false; + } + return true; +} + +bool cViewPlugin::ReadSubViews(const char *plugName) { + plgManager->InitPluginSubviewIterator(plugId); + int svId = -1; + string svTpl = ""; + while (plgManager->GetNextSubView(svId, svTpl)) { + cViewPlugin *plugSubView = new cViewPlugin(svId, plugId); + if (!plugSubView->ReadFromXML(plugName, svTpl.c_str(), &sdOsd)) + return false; + views[svId] = plugSubView; + } + return true; +} + + +void cViewPlugin::SetGlobals(cGlobals *globals) { + cView::SetGlobals(globals); + for (int i=0; i < numViewGrids; i++) { + if (viewGrids[i]) + viewGrids[i]->SetGlobals(globals); + } + for (int i=1; i < numViews; i++) { + views[i]->SetGlobals(globals); + } + if (tabView) { + tabView->SetGlobals(globals); + } +} + +void cViewPlugin::AddViewElement(cVePlugin *viewElement) { + int veId = ViewElementId(viewElement->Name()); + if (veId == ATTR_UNKNOWN) + return; + viewElement->SetId(veId); + viewElement->SetPluginId(plugId); + viewElement->SetViewId(id); + viewElement->SetTokenContainer(); + viewElements[veId] = viewElement; +} + +void cViewPlugin::AddViewGrid(cViewGrid *viewGrid) { + int gId = GridId(viewGrid->Name()); + if (gId == ATTR_UNKNOWN) + return; + viewGrid->SetId(gId); + viewGrid->SetPluginId(plugId); + viewGrid->SetViewId(id); + viewGrid->SetTokenContainer(); + viewGrids[gId] = viewGrid; +} + +void cViewPlugin::AddTab(cArea *tab) { + if (!tabView) { + tabView = new cPluginTabView(id, plugId); + tabView->SetOsd(&sdOsd); + } + tabView->AddTab(tab); +} + +void cViewPlugin::AddScrollbar(cVeDmScrollbar *scrollbar) { + if (!tabView) { + tabView = new cPluginTabView(id, plugId); + tabView->SetOsd(&sdOsd); + } + int id = ViewElementId("scrollbar"); + scrollbar->SetId(id); + scrollbar->SetTokenContainer(); + tabView->AddScrollbar(scrollbar); +} + +void cViewPlugin::AddTablabels(cVeDmTablabels *tablabels) { + if (!tabView) { + tabView = new cPluginTabView(id, plugId); + tabView->SetOsd(&sdOsd); + } + int id = ViewElementId("tablabels"); + tablabels->SetId(id); + tablabels->SetTokenContainer(); + tabView->AddTablabels(tablabels); +} + +void cViewPlugin::PreCache(void) { + if (container.Width() > 0) { + attribs->SetContainer(container.X(), container.Y(), container.Width(), container.Height()); + attribs->Cache(); + } + cView::PreCache(); + for (int i=0; i < numViewGrids; i++) { + if (viewGrids[i]) { + viewGrids[i]->SetContainer(0, 0, attribs->Width(), attribs->Height()); + viewGrids[i]->PreCache(); + } + } + for (int i=1; i < numViews; i++) { + views[i]->SetContainer(0, 0, attribs->Width(), attribs->Height()); + views[i]->PreCache(); + } + if (tabView) { + tabView->PreCache(0, 0, attribs->Width(), attribs->Height()); + } +} + +cVePlugin *cViewPlugin::GetViewElement(int veId) { + if (!viewElements[veId]) + return NULL; + cVePlugin *ve = dynamic_cast<cVePlugin*>(viewElements[veId]); + return ve; +} + +cViewGrid *cViewPlugin::GetViewGrid(int gId) { + return viewGrids[gId]; +} + +cPluginTabView *cViewPlugin::GetViewTab(void) { + return tabView; +} + +void cViewPlugin::Hide(void) { + for (int i=0; i < numViewGrids; i++) { + if (viewGrids[i]) + viewGrids[i]->Hide(); + } + for (int i=0; i < numViewElements; i++) { + if (viewElements[i]) + viewElements[i]->Hide(); + } +} + +void cViewPlugin::Show(void) { + for (int i=0; i < numViewGrids; i++) { + if (viewGrids[i]) + viewGrids[i]->Show(); + } + for (int i=0; i < numViewElements; i++) { + if (viewElements[i]) + viewElements[i]->Show(); + } +} +/*********************************************************** +* libskindesigner api interface +***********************************************************/ +bool cViewPlugin::InitOsd(void) { + return Init(); +} + +void cViewPlugin::CloseOsd(void) { + viewChanged = true; + newViewId = 0; + Close(); + for (int i=0 ; i < numViewGrids; i++) { + if (viewGrids[i]) + viewGrids[i]->Close(); + } + for (int i=1 ; i < numViews; i++) { + if (views[i]) + views[i]->Close(); + } +} + +void cViewPlugin::Deactivate(int viewId, bool hide) { + for (int i=0; i < numViewElements; i++) { + if (viewElements[i]) + viewElements[i]->StopScrolling(false); + } + if (hide) + views[viewId]->Hide(); +} + +void cViewPlugin::Activate(int viewId) { + viewChanged = true; + newViewId = viewId; + views[viewId]->Show(); +} + +void cViewPlugin::SetViewElementTokens(int veId, int viewId, skindesignerapi::cTokenContainer *tk) { + cVePlugin *ve = views[viewId]->GetViewElement(veId); + if (!ve) + return; + ve->Set(tk); +} + +void cViewPlugin::ClearViewElement(int veId, int viewId) { + cVePlugin *ve = views[viewId]->GetViewElement(veId); + if (!ve) + return; + ve->StopScrolling(); + ve->Clear(); +} + +void cViewPlugin::DisplayViewElement(int veId, int viewId) { + cVePlugin *ve = views[viewId]->GetViewElement(veId); + if (!ve) + return; + if (ve->Parse()) + ve->Render(); +} + +void cViewPlugin::SetGrid(long gId, int viewId, int viewGridId, double x, double y, double width, double height, skindesignerapi::cTokenContainer *tk){ + cViewGrid *grid = views[viewId]->GetViewGrid(viewGridId); + if (!grid) + return; + grid->CheckSize(gId); + grid->PositionGrid(gId, x, y, width, height); + if (tk) { + //only set tokens new if necessary + grid->SetTokens(gId, tk); + } +} + +void cViewPlugin::SetGridCurrent(long gId, int viewId, int viewGridId, bool current) { + if (gId < 0) + return; + cViewGrid *grid = views[viewId]->GetViewGrid(viewGridId); + if (!grid) + return; + grid->SetCurrentGrid(gId, current); +} + +void cViewPlugin::DeleteGrid(long gId, int viewId, int viewGridId) { + cViewGrid *grid = views[viewId]->GetViewGrid(viewGridId); + if (!grid) + return; + grid->DeleteGrid(gId); +} + +void cViewPlugin::DisplayGrids(int viewId, int viewGridId) { + cViewGrid *grid = views[viewId]->GetViewGrid(viewGridId); + if (!grid) + return; + grid->Render(); +} + +void cViewPlugin::ClearGrids(int viewId, int viewGridId) { + cViewGrid *grid = views[viewId]->GetViewGrid(viewGridId); + if (!grid) + return; + grid->ClearGrids(); +} + +void cViewPlugin::SetTabTokens(int viewId, skindesignerapi::cTokenContainer *tk) { + cPluginTabView *tab = views[viewId]->GetViewTab(); + if (!tab) + return; + tab->SetOsd(&sdOsd); + tab->Set(tk); +} + +void cViewPlugin::TabLeft(int viewId) { + cPluginTabView *tab = views[viewId]->GetViewTab(); + if (!tab) + return; + tab->KeyLeft(); +} + +void cViewPlugin::TabRight(int viewId) { + cPluginTabView *tab = views[viewId]->GetViewTab(); + if (!tab) + return; + tab->KeyRight(); +} + +void cViewPlugin::TabUp(int viewId) { + cPluginTabView *tab = views[viewId]->GetViewTab(); + if (!tab) + return; + tab->KeyUp(); +} + +void cViewPlugin::TabDown(int viewId) { + cPluginTabView *tab = views[viewId]->GetViewTab(); + if (!tab) + return; + tab->KeyDown(); +} + +void cViewPlugin::DisplayTabs(int viewId) { + cPluginTabView *tab = views[viewId]->GetViewTab(); + if (!tab) + return; + tab->Render(); +} + +void cViewPlugin::ClearTab(int viewId) { + cPluginTabView *tab = views[viewId]->GetViewTab(); + if (!tab) + return; + tab->Clear(); +} + +void cViewPlugin::Flush(void) { + if (viewChanged) { + viewChanged = false; + newTvFrame = views[newViewId]->GetTvFrame(); + menuInit = true; + } + cView::Flush(); +} + +bool cViewPlugin::ChannelLogoExists(string channelId) { + return imgCache->LogoExists(channelId); +} + +string cViewPlugin::GetEpgImagePath(void) { + return *config.epgImagePath; +} + +/*********************************************************** +* Private Functions +***********************************************************/ +void cViewPlugin::SetViewElements(void) { + plgManager->InitViewElementIterator(plugId, id); + int veId = -1; + string veName = ""; + while (plgManager->GetNextViewElement(veId, veName)) { + viewElementNames.insert(pair<string, int>(veName, veId)); + } +} + +void cViewPlugin::SetViewGrids(void) { + plgManager->InitViewGridIterator(plugId, id); + int gId = -1; + string gName = ""; + while (plgManager->GetNextViewGrid(gId, gName)) { + gridNames.insert(pair<string, int>(gName, gId)); + } +} + +int cViewPlugin::GridId(const char *name) { + map<string, int>::iterator hit = gridNames.find(name); + if (hit != gridNames.end()) + return (int)hit->second; + return ATTR_UNKNOWN; +} + +/*********************************************************** +* cPluginTabView +***********************************************************/ +cPluginTabView::cPluginTabView(int viewId, int plugId) { + sdOsd = NULL; + init = true; + drawScrollbar = true; + scrollbar = NULL; + tablabels = NULL; + detailView = new cViewDetailAdvancedPlugin(viewId, plugId); + firstTab = true; +} + +cPluginTabView::~cPluginTabView(void) { + delete scrollbar; + delete tablabels; + delete detailView; +} + +void cPluginTabView::SetGlobals(cGlobals *globals) { + detailView->SetGlobals(globals); + if (scrollbar) + scrollbar->SetGlobals(globals); + if (tablabels) + tablabels->SetGlobals(globals); +} + +void cPluginTabView::AddTab(cArea *tab) { + if (firstTab) { + tab->SetActiveTab(true); + firstTab = false; + } + detailView->AddArea(tab); +} + +void cPluginTabView::AddScrollbar(cVeDmScrollbar *scrollbar) { + this->scrollbar = scrollbar; +} + +void cPluginTabView::AddTablabels(cVeDmTablabels *tablabels) { + this->tablabels = tablabels; +} + +void cPluginTabView::PreCache(int containerX, int containerY, int containerWidth, int containerHeight) { + detailView->SetOsd(sdOsd); + detailView->SetTokenContainer(); + detailView->SetContainer(containerX, containerY, containerWidth, containerHeight); + detailView->Cache(); + if (scrollbar) { + scrollbar->SetContainer(containerX, containerY, containerWidth, containerHeight); + scrollbar->Cache(); + } + if (tablabels) { + tablabels->SetContainer(containerX, containerY, containerWidth, containerHeight); + tablabels->Cache(); + } +} + +void cPluginTabView::Set(skindesignerapi::cTokenContainer *tk) { + detailView->Set(tk); +} + +void cPluginTabView::Render(void) { + detailView->Render(); + if (drawScrollbar) { + drawScrollbar = false; + DrawScrollbar(); + } + if (!init) + return; + init = false; + vector<const char*> tabs; + int activeTab = detailView->GetTabs(tabs); + if (tablabels) { + tablabels->SetTabs(tabs); + tablabels->SetActiveTab(activeTab); + if (tablabels->Parse()) + tablabels->Render(); + } +} + +void cPluginTabView::Clear(void) { + init = true; + drawScrollbar = true; + detailView->ResetTabs(); + detailView->Close(); + if (tablabels) + tablabels->Close(); + if (scrollbar) + scrollbar->Close(); +} + +void cPluginTabView::KeyLeft(void) { + if (detailView->NumTabs() > 1) { + detailView->Clear(); + detailView->PrevTab(); + detailView->SetDirty(); + if (tablabels) { + tablabels->Clear(); + tablabels->SetActiveTab(detailView->ActiveTab()); + if (tablabels->Parse()) + tablabels->Render(); + } + sdOsd->Flush(); + drawScrollbar = true; + } else { + //scroll page + if (detailView->ScrollUp(true)) { + drawScrollbar = true; + } + } +} + +void cPluginTabView::KeyRight(void) { + if (detailView->NumTabs() > 1) { + detailView->Clear(); + detailView->NextTab(); + detailView->SetDirty(); + if (tablabels) { + tablabels->Clear(); + tablabels->SetActiveTab(detailView->ActiveTab()); + if (tablabels->Parse()) + tablabels->Render(); + } + sdOsd->Flush(); + drawScrollbar = true; + } else { + //scroll page + if (detailView->ScrollDown(true)) { + drawScrollbar = true; + } + } +} + +void cPluginTabView::KeyUp(void) { + if (detailView->ScrollUp()) { + drawScrollbar = true; + } +} + +void cPluginTabView::KeyDown(void) { + if (detailView->ScrollDown()) { + drawScrollbar = true; + } +} + +void cPluginTabView::DrawScrollbar(void) { + if (!scrollbar) + return; + int barheight = 0; + int offset = 0; + bool end = true; + detailView->Scrollbar(barheight, offset, end); + scrollbar->SetDetail(barheight, offset, end); + scrollbar->Render(); +} + |