summaryrefslogtreecommitdiff
path: root/coreengine/viewdisplayplugin.c
diff options
context:
space:
mode:
authorlouis <louis.braun@gmx.de>2016-02-06 09:55:15 +0100
committerlouis <louis.braun@gmx.de>2016-02-06 09:55:15 +0100
commitac0e6dbc8d1ea8fd24712dd03fea154cea6a7135 (patch)
tree3f8ab3640f7c0645592c8bbd0d4ce34821816ad7 /coreengine/viewdisplayplugin.c
parent8ef68f8ab82e511ad0df96a910daa1547923633b (diff)
downloadvdr-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.c1112
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();
+}
+