diff options
author | chriszero <zerov83@gmail.com> | 2015-04-12 12:45:12 +0200 |
---|---|---|
committer | chriszero <zerov83@gmail.com> | 2015-04-12 12:45:12 +0200 |
commit | 18194b793d6542340080b27d72f0b66e656ae7bf (patch) | |
tree | b4f7e848a1a1bc358255fb83a785ab8d689b0d8d | |
parent | 4bf454247a21b684f2bb0ac763adeea18a86d153 (diff) | |
download | vdr-plugin-plex-18194b793d6542340080b27d72f0b66e656ae7bf.tar.gz vdr-plugin-plex-18194b793d6542340080b27d72f0b66e656ae7bf.tar.bz2 |
libskindesignerapi support
-rw-r--r-- | Directory.cpp | 2 | ||||
-rw-r--r-- | Directory.h | 4 | ||||
-rw-r--r-- | Makefile | 8 | ||||
-rw-r--r-- | PVideo.cpp | 2 | ||||
-rw-r--r-- | PVideo.h | 4 | ||||
-rw-r--r-- | browserGrid.cpp | 12 | ||||
-rw-r--r-- | browserGrid.h | 18 | ||||
-rw-r--r-- | detailView.cpp | 2 | ||||
-rw-r--r-- | detailView.h | 2 | ||||
-rw-r--r-- | libskindesigner/osdelements.cpp | 205 | ||||
-rw-r--r-- | libskindesigner/osdelements.h | 93 | ||||
-rw-r--r-- | libskindesigner/services.h | 131 | ||||
-rw-r--r-- | libskindesigner/skindesignerosdbase.cpp | 211 | ||||
-rw-r--r-- | libskindesigner/skindesignerosdbase.h | 86 | ||||
-rw-r--r-- | plex.cpp | 15 | ||||
-rw-r--r-- | plexSdOsd.cpp | 2 | ||||
-rw-r--r-- | plexSdOsd.h | 8 | ||||
-rw-r--r-- | po/de_DE.po | 35 | ||||
-rw-r--r-- | skins/blackhole/xmlfiles/plug-plex-root.xml | 35 | ||||
-rw-r--r-- | viewGridNavigator.cpp | 4 | ||||
-rw-r--r-- | viewGridNavigator.h | 16 | ||||
-rw-r--r-- | viewHeader.cpp | 4 | ||||
-rw-r--r-- | viewHeader.h | 6 |
23 files changed, 116 insertions, 789 deletions
diff --git a/Directory.cpp b/Directory.cpp index eeb8c1d..57853a4 100644 --- a/Directory.cpp +++ b/Directory.cpp @@ -49,7 +49,7 @@ std::string Directory::GetTitle() } } -void Directory::AddTokens(std::shared_ptr<cOsdElement> grid, bool clear, std::function<void(cGridElement*)> OnCached) +void Directory::AddTokens(std::shared_ptr<skindesignerapi::cOsdElement> grid, bool clear, std::function<void(cGridElement*)> OnCached) { if(clear) grid->ClearTokens(); grid->AddStringToken("title", m_sTitle); diff --git a/Directory.h b/Directory.h index 8ccea87..89406e6 100644 --- a/Directory.h +++ b/Directory.h @@ -12,7 +12,7 @@ #include <Poco/String.h> #include <memory> -#include "libskindesigner/osdelements.h" +#include <libskindesignerapi/osdelements.h> #include "XmlObject.h" #include "MediaContainer.h" @@ -64,7 +64,7 @@ public: std::string ArtUri(); std::string ThumbUri(); // gridElement - virtual void AddTokens(std::shared_ptr<cOsdElement> grid, bool clear = true, std::function<void(cGridElement*)> OnCached = NULL); + virtual void AddTokens(std::shared_ptr<skindesignerapi::cOsdElement> grid, bool clear = true, std::function<void(cGridElement*)> OnCached = NULL); }; } @@ -11,6 +11,7 @@ PLUGIN = plex VERSION := $(shell git describe --tags master) LIBS += -lPocoUtil -lPocoNet -lPocoNetSSL -lPocoXML -lPocoFoundation -lpcrecpp +LIBS += $(shell pkg-config --libs libskindesignerapi) ### Configuration (edit this for your needs) @@ -59,8 +60,9 @@ SOFILE = libvdr-$(PLUGIN).so ### Includes and Defines (add further entries here): -INCLUDES += +INCLUDES += $(shell pkg-config --cflags libskindesignerapi) +DEFINES += -DLIBSKINDESIGNERAPIVERSION='"$(shell pkg-config --modversion libskindesignerapi)"' DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"' -DPLUGIN='"$(PLUGIN)"' -D_GNU_SOURCE $(CONFIG) \ $(if $(GIT_REV), -DGIT_REV='"$(GIT_REV)"') @@ -93,9 +95,7 @@ OBJS = $(PLUGIN).o \ browserGrid.o \ viewHeader.o \ detailView.o \ - pictureCache.o \ - libskindesigner/skindesignerosdbase.o \ - libskindesigner/osdelements.o \ + pictureCache.o SRCS = $(wildcard $(OBJS:.o=.c)) $(PLUGIN).cpp @@ -209,7 +209,7 @@ bool Video::SetWatched() } } -void Video::AddTokens(std::shared_ptr<cOsdElement> grid, bool clear, std::function<void(cGridElement*)> OnCached) +void Video::AddTokens(std::shared_ptr<skindesignerapi::cOsdElement> grid, bool clear, std::function<void(cGridElement*)> OnCached) { if(clear) grid->ClearTokens(); grid->AddStringToken("title", m_sTitle); @@ -15,7 +15,7 @@ #include <vector> #include <iostream> #include <memory> -#include "libskindesigner/osdelements.h" +#include <libskindesignerapi/osdelements.h> #include "viewGridNavigator.h" #include "XmlObject.h" @@ -88,7 +88,7 @@ public: std::string ArtUri(); // gridElement - virtual void AddTokens(std::shared_ptr<cOsdElement> grid, bool clear = true, std::function<void(cGridElement*)> OnCached = NULL); + virtual void AddTokens(std::shared_ptr<skindesignerapi::cOsdElement> grid, bool clear = true, std::function<void(cGridElement*)> OnCached = NULL); }; } diff --git a/browserGrid.cpp b/browserGrid.cpp index 6a0417f..18fcf9f 100644 --- a/browserGrid.cpp +++ b/browserGrid.cpp @@ -6,12 +6,12 @@ #include "plex.h" #include "pictureCache.h" -cBrowserGrid::cBrowserGrid(cOsdView* rootView) : cViewGridNavigator(rootView, rootView->GetViewGrid(eViewGrids::vgBrowser) ) +cBrowserGrid::cBrowserGrid(skindesignerapi::cOsdView* rootView) : cViewGridNavigator(rootView, rootView->GetViewGrid(eViewGrids::vgBrowser) ) { - m_pBackground = std::shared_ptr<cViewElement>(rootView->GetViewElement(eViewElementsRoot::verBackground)); + m_pBackground = std::shared_ptr<skindesignerapi::cViewElement>(rootView->GetViewElement(eViewElementsRoot::verBackground)); m_pViewHeader = std::shared_ptr<cViewHeader>( new cViewHeader(rootView->GetViewElement(eViewElementsRoot::verHeader))); - m_pfooter = std::shared_ptr<cViewElement>(rootView->GetViewElement(eViewElementsRoot::verFooter)); - m_pInfopane = std::shared_ptr<cViewElement>(rootView->GetViewElement(eViewElementsRoot::verInfopane)); + m_pfooter = std::shared_ptr<skindesignerapi::cViewElement>(rootView->GetViewElement(eViewElementsRoot::verFooter)); + m_pInfopane = std::shared_ptr<skindesignerapi::cViewElement>(rootView->GetViewElement(eViewElementsRoot::verInfopane)); m_rows = Config::GetInstance().GridRows; m_columns = Config::GetInstance().GridColumns; @@ -253,7 +253,7 @@ void cBrowserGrid::PrevTab() * cDummyElement */ -void cDummyElement::AddTokens(std::shared_ptr<cOsdElement> grid, bool clear, std::function<void(cGridElement*)> OnCached) +void cDummyElement::AddTokens(std::shared_ptr<skindesignerapi::cOsdElement> grid, bool clear, std::function<void(cGridElement*)> OnCached) { if(clear) grid->ClearTokens(); grid->AddIntToken("isdummy", 1); @@ -276,7 +276,7 @@ cServerElement::cServerElement(plexclient::PlexServer* server, std::string start m_sStartName = startName; } -void cServerElement::AddTokens(std::shared_ptr<cOsdElement> grid, bool clear, std::function<void(cGridElement*)> OnCached) +void cServerElement::AddTokens(std::shared_ptr<skindesignerapi::cOsdElement> grid, bool clear, std::function<void(cGridElement*)> OnCached) { if(clear) grid->ClearTokens(); grid->AddIntToken("isserver", 1); diff --git a/browserGrid.h b/browserGrid.h index ce641b4..c1cf194 100644 --- a/browserGrid.h +++ b/browserGrid.h @@ -9,13 +9,13 @@ #include "PlexServer.h" #include "viewGridNavigator.h" #include "viewHeader.h" -#include "libskindesigner/osdelements.h" +#include <libskindesignerapi/osdelements.h> class cDummyElement : public cGridElement { public: virtual std::string GetTitle(); - virtual void AddTokens(std::shared_ptr<cOsdElement> grid, bool clear = true, std::function<void(cGridElement*)> OnCached = NULL); + virtual void AddTokens(std::shared_ptr<skindesignerapi::cOsdElement> grid, bool clear = true, std::function<void(cGridElement*)> OnCached = NULL); }; class cServerElement : public cGridElement @@ -27,7 +27,7 @@ private: public: cServerElement(plexclient::PlexServer* server, std::string startPath, std::string startName); virtual std::string GetTitle(); - virtual void AddTokens(std::shared_ptr<cOsdElement> grid, bool clear = true, std::function<void(cGridElement*)> OnCached = NULL); + virtual void AddTokens(std::shared_ptr<skindesignerapi::cOsdElement> grid, bool clear = true, std::function<void(cGridElement*)> OnCached = NULL); std::string StartPath() { return m_sStartPath; } plexclient::PlexServer* Server() { return m_pServer; } }; @@ -36,10 +36,10 @@ class cBrowserGrid : public cViewGridNavigator { private: std::shared_ptr<cViewHeader> m_pViewHeader; - std::shared_ptr<cViewElement> m_pBackground; - std::shared_ptr<cViewElement> m_pfooter; - std::shared_ptr<cViewElement> m_pInfopane; - std::shared_ptr<cViewElement> m_pScrollbar; + std::shared_ptr<skindesignerapi::cViewElement> m_pBackground; + std::shared_ptr<skindesignerapi::cViewElement> m_pfooter; + std::shared_ptr<skindesignerapi::cViewElement> m_pInfopane; + std::shared_ptr<skindesignerapi::cViewElement> m_pScrollbar; bool m_bServersAreRoot; std::vector<cServerElement> m_vServerElements; @@ -54,9 +54,9 @@ private: void DrawInfopane(); public: - cBrowserGrid(cOsdView* rootView); + cBrowserGrid(skindesignerapi::cOsdView* rootView); ~cBrowserGrid(); - //cBrowserGrid(cViewGrid* viewGrid, std::shared_ptr<plexclient::Plexservice> service); + //cBrowserGrid(skindesignerapi::cViewGrid* viewGrid, std::shared_ptr<plexclient::Plexservice> service); std::shared_ptr<plexclient::MediaContainer> MediaContainer() { return m_pContainer; } void DrawGrid(); diff --git a/detailView.cpp b/detailView.cpp index b9bc9a1..ec7aee3 100644 --- a/detailView.cpp +++ b/detailView.cpp @@ -1,6 +1,6 @@ #include "detailView.h" -cDetailView::cDetailView(cOsdView *detailView, const cGridElement *element) +cDetailView::cDetailView(skindesignerapi::cOsdView *detailView, const cGridElement *element) { } diff --git a/detailView.h b/detailView.h index 9917fd0..d72e6d4 100644 --- a/detailView.h +++ b/detailView.h @@ -6,7 +6,7 @@ class cDetailView { public: - cDetailView(cOsdView *detailView, const cGridElement *element); + cDetailView(skindesignerapi::cOsdView *detailView, const cGridElement *element); ~cDetailView(); }; diff --git a/libskindesigner/osdelements.cpp b/libskindesigner/osdelements.cpp deleted file mode 100644 index 3722cbf..0000000 --- a/libskindesigner/osdelements.cpp +++ /dev/null @@ -1,205 +0,0 @@ -#include "osdelements.h" - -using namespace std; - -/********************************************************************** -* cOsdElement -**********************************************************************/ -cOsdElement::cOsdElement(cSkinDisplayPlugin *view) { - this->view = view; -} - -cOsdElement::~cOsdElement() { -} - -void cOsdElement::ClearTokens(void) { - stringTokens.clear(); - intTokens.clear(); - loopTokens.clear(); -} - -void cOsdElement::AddStringToken(string key, string value) { - stringTokens.insert(pair<string,string>(key, value)); -} - -void cOsdElement::AddIntToken(string key, int value) { - intTokens.insert(pair<string,int>(key, value)); -} - -void cOsdElement::AddLoopToken(string loopName, map<string, string> &tokens) { - map<string, vector<map<string, string> > >::iterator hitLoop = loopTokens.find(loopName); - if (hitLoop == loopTokens.end()) { - vector<map<string, string> > tokenVector; - tokenVector.push_back(tokens); - loopTokens.insert(pair<string, vector<map<string, string> > >(loopName, tokenVector)); - } else { - vector<map<string, string> > *tokenVector = &hitLoop->second; - tokenVector->push_back(tokens); - } -} - -bool cOsdElement::ChannelLogoExists(string channelId) { - return view->ChannelLogoExists(channelId); -} - -string cOsdElement::GetEpgImagePath(void) { - return view->GetEpgImagePath(); -} - - -/********************************************************************** -* cViewElement -**********************************************************************/ -cViewElement::cViewElement(cSkinDisplayPlugin *view, int viewElementID) : cOsdElement(view) { - this->viewElementID = viewElementID; -} - -cViewElement::~cViewElement() { -} - -void cViewElement::Clear(void) { - if (!view) - return; - view->ClearViewElement(viewElementID); -} - -void cViewElement::Display(void) { - if (!view) - return; - view->SetViewElementIntTokens(&intTokens); - view->SetViewElementStringTokens(&stringTokens); - view->SetViewElementLoopTokens(&loopTokens); - view->DisplayViewElement(viewElementID); -} - -/********************************************************************** -* cViewGrid -**********************************************************************/ -cViewGrid::cViewGrid(cSkinDisplayPlugin *view, int viewGridID) : cOsdElement(view) { - this->viewGridID = viewGridID; -} - -cViewGrid::~cViewGrid() { -} - -void cViewGrid::SetGrid(long gridID, double x, double y, double width, double height) { - if (!view) - return; - view->SetGrid(viewGridID, gridID, x, y, width, height, &intTokens, &stringTokens); -} - -void cViewGrid::SetCurrent(long gridID, bool current) { - if (!view) - return; - view->SetGridCurrent(viewGridID, gridID, current); -} - -void cViewGrid::MoveGrid(long gridID, double x, double y, double width, double height) { - if (!view) - return; - view->SetGrid(viewGridID, gridID, x, y, width, height, NULL, NULL); -} - -void cViewGrid::Delete(long gridID) { - if (!view) - return; - view->DeleteGrid(viewGridID, gridID); -} - -void cViewGrid::Clear(void) { - if (!view) - return; - view->ClearGrids(viewGridID); -} - -void cViewGrid::Display(void) { - if (!view) - return; - view->DisplayGrids(viewGridID); -} - -/********************************************************************** -* cViewTab -**********************************************************************/ -cViewTab::cViewTab(cSkinDisplayPlugin *view) : cOsdElement(view) { -} - -cViewTab::~cViewTab() { -} - -void cViewTab::Init(void) { - view->SetTabIntTokens(&intTokens); - view->SetTabStringTokens(&stringTokens); - view->SetTabLoopTokens(&loopTokens); - view->SetTabs(); -} - -void cViewTab::Left(void) { - view->TabLeft(); -} - -void cViewTab::Right(void) { - view->TabRight(); -} - -void cViewTab::Up(void) { - view->TabUp(); -} - -void cViewTab::Down(void) { - view->TabDown(); -} - -void cViewTab::Display(void) { - if (!view) - return; - view->DisplayTabs(); -} - -/********************************************************************** -* cOsdView -**********************************************************************/ -cOsdView::cOsdView(cSkinDisplayPlugin *displayPlugin) { - this->displayPlugin = displayPlugin; -} - -cOsdView::~cOsdView() { - delete displayPlugin; -} - -void cOsdView::Deactivate(bool hide) { - if (!displayPlugin) - return; - displayPlugin->Deactivate(hide); -} - -void cOsdView::Activate(void) { - if (!displayPlugin) - return; - displayPlugin->Activate(); -} - -cViewElement *cOsdView::GetViewElement(int viewElementID) { - if (!displayPlugin) - return NULL; - return new cViewElement(displayPlugin, viewElementID); -} - -cViewGrid *cOsdView::GetViewGrid(int viewGridID) { - if (!displayPlugin) - return NULL; - displayPlugin->InitGrids(viewGridID); - return new cViewGrid(displayPlugin, viewGridID); -} - -cViewTab *cOsdView::GetViewTabs(void) { - if (!displayPlugin) - return NULL; - return new cViewTab(displayPlugin); -} - -void cOsdView::Display(void) { - if (!displayPlugin) - return; - displayPlugin->Flush(); -} diff --git a/libskindesigner/osdelements.h b/libskindesigner/osdelements.h deleted file mode 100644 index 147de7a..0000000 --- a/libskindesigner/osdelements.h +++ /dev/null @@ -1,93 +0,0 @@ -#ifndef __OSDELEMENTS_H -#define __OSDELEMENTS_H - -using namespace std; - -#include <vdr/plugin.h> -#include "services.h" - -/********************************************************************** -* cOsdElement -**********************************************************************/ - -class cOsdElement { -protected: - cSkinDisplayPlugin *view; - map < string, string > stringTokens; - map < string, int > intTokens; - map < string, vector< map< string, string > > > loopTokens; -public: - cOsdElement(cSkinDisplayPlugin *view); - virtual ~cOsdElement(); - void AddLoopToken(string loopName, map<string, string> &tokens); - void AddStringToken(string key, string value); - void AddIntToken(string key, int value); - void ClearTokens(void); - bool ChannelLogoExists(string channelId); - string GetEpgImagePath(void); -}; - -/********************************************************************** -* cViewElement -**********************************************************************/ -class cViewElement : public cOsdElement { -private: - int viewElementID; -public: - cViewElement(cSkinDisplayPlugin *view, int viewElementID); - virtual ~cViewElement(); - void Clear(void); - void Display(void); -}; - -/********************************************************************** -* cViewGrid -**********************************************************************/ -class cViewGrid : public cOsdElement { -private: - int viewGridID; -public: - cViewGrid(cSkinDisplayPlugin *view, int viewGridID); - virtual ~cViewGrid(); - void SetGrid(long gridID, double x, double y, double width, double height); - void SetCurrent(long gridID, bool current); - void MoveGrid(long gridID, double x, double y, double width, double height); - void Delete(long gridID); - void Clear(void); - void Display(void); -}; - -/********************************************************************** -* cViewTab -**********************************************************************/ -class cViewTab : public cOsdElement { -private: -public: - cViewTab(cSkinDisplayPlugin *view); - virtual ~cViewTab(); - void Init(void); - void Left(void); - void Right(void); - void Up(void); - void Down(void); - void Display(void); -}; - -/********************************************************************** -* cOsdView -**********************************************************************/ -class cOsdView { -private: - cSkinDisplayPlugin *displayPlugin; -public: - cOsdView(cSkinDisplayPlugin *displayPlugin); - virtual ~cOsdView(); - void Deactivate(bool hide); - void Activate(void); - cViewElement *GetViewElement(int viewElementID); - cViewGrid *GetViewGrid(int viewGridID); - cViewTab *GetViewTabs(void); - void Display(void); -}; - -#endif // __OSDELEMENTS_H
\ No newline at end of file diff --git a/libskindesigner/services.h b/libskindesigner/services.h deleted file mode 100644 index 8fa9c69..0000000 --- a/libskindesigner/services.h +++ /dev/null @@ -1,131 +0,0 @@ -#ifndef __SKINDESIGNERSERVICES_H -#define __SKINDESIGNERSERVICES_H - -using namespace std; - -#include <string> -#include <vector> -#include <map> - -enum eMenuType { - mtList, - mtText -}; - -class cSDDisplayMenu : public cSkinDisplayMenu { -public: - virtual void SetTitle(const char *Title); - virtual void SetPluginMenu(string name, int menu, int type, bool init); - virtual bool SetItemPlugin(map<string,string> *stringTokens, map<string,int> *intTokens, map<string,vector<map<string,string> > > *loopTokens, int Index, bool Current, bool Selectable); - virtual bool SetPluginText(map<string,string> *stringTokens, map<string,int> *intTokens, map<string,vector<map<string,string> > > *loopTokens); -}; - -class cSkinDisplayPlugin { -public: - cSkinDisplayPlugin(void); - virtual ~cSkinDisplayPlugin(void); - virtual void Deactivate(bool hide); - virtual void Activate(void); - virtual void ClearViewElement(int id); - virtual void DisplayViewElement(int id); - virtual void SetViewElementIntTokens(map<string,int> *intTokens); - virtual void SetViewElementStringTokens(map<string,string> *stringTokens); - virtual void SetViewElementLoopTokens(map<string,vector<map<string,string> > > *loopTokens); - virtual void InitGrids(int viewGridID); - virtual void SetGrid(int viewGridID, long gridID, double x, double y, double width, double height, map<string,int> *intTokens, map<string,string> *stringTokens); - virtual void SetGridCurrent(int viewGridID, long gridID, bool current); - virtual void DeleteGrid(int viewGridID, long gridID); - virtual void DisplayGrids(int viewGridID); - virtual void ClearGrids(int viewGridID); - virtual void SetTabIntTokens(map<string,int> *intTokens); - virtual void SetTabStringTokens(map<string,string> *stringTokens); - virtual void SetTabLoopTokens(map<string,vector<map<string,string> > > *loopTokens); - virtual void SetTabs(void); - virtual void TabLeft(void); - virtual void TabRight(void); - virtual void TabUp(void); - virtual void TabDown(void); - virtual void DisplayTabs(void); - virtual void Flush(void); - virtual bool ChannelLogoExists(string channelId); - virtual string GetEpgImagePath(void); -}; - -/********************************************************************* -* Data Structures for Service Calls -*********************************************************************/ - -// Data structure for service "RegisterPlugin" -class RegisterPlugin { -public: - RegisterPlugin(void) { - name = ""; - }; - void SetMenu(int key, string templateName) { - menus.insert(pair<int, string>(key, templateName)); - } - void SetView(int key, string templateName) { - views.insert(pair<int, string>(key, templateName)); - } - void SetSubView(int view, int subView, string templateName) { - pair<int, string> sub = make_pair(subView, templateName); - subViews.insert(pair<int, pair<int, string> >(view, sub)); - } - void SetViewElement(int view, int viewElement, string name) { - map< int, map<int, string> >::iterator hit = viewElements.find(view); - if (hit == viewElements.end()) { - map<int, string> vE; - vE.insert(pair<int, string >(viewElement, name)); - viewElements.insert(pair<int, map < int, string > >(view, vE)); - } else { - (hit->second).insert(pair<int, string >(viewElement, name)); - } - } - void SetViewGrid(int view, int viewGrid, string name) { - map< int, map<int, string> >::iterator hit = viewGrids.find(view); - if (hit == viewGrids.end()) { - map<int, string> vG; - vG.insert(pair<int, string >(viewGrid, name)); - viewGrids.insert(pair<int, map < int, string > >(view, vG)); - } else { - (hit->second).insert(pair<int, string >(viewGrid, name)); - } - } -// in - string name; //name of plugin - map< int, string > menus; //menus as key -> templatename hashmap - map< int, string> views; //standalone views as key -> templatename hashmap - multimap< int, pair <int, string> > subViews; //subviews of standalone views as view -> (subview, templatename) multimap - map< int, map <int, string> > viewElements; //viewelements as key -> (viewelement, viewelementname) hashmap - map< int, map <int, string> > viewGrids; //viewgrids as key -> (viewgrid, viewgridname) hashmap -//out -}; - -// Data structure for service "GetDisplayMenu" -class GetDisplayMenu { -public: - GetDisplayMenu(void) { - displayMenu = NULL; - }; -// in -//out - cSDDisplayMenu *displayMenu; -}; - -// Data structure for service "GetDisplayPlugin" -class GetDisplayPlugin { -public: - GetDisplayPlugin(void) { - pluginName = ""; - viewID = -1; - subViewID = -1; - displayPlugin = NULL; - }; -// in - string pluginName; - int viewID; - int subViewID; -//out - cSkinDisplayPlugin *displayPlugin; -}; -#endif //__SKINDESIGNERSERVICES_H diff --git a/libskindesigner/skindesignerosdbase.cpp b/libskindesigner/skindesignerosdbase.cpp deleted file mode 100644 index 02e1558..0000000 --- a/libskindesigner/skindesignerosdbase.cpp +++ /dev/null @@ -1,211 +0,0 @@ -#include "skindesignerosdbase.h" -#include "osdelements.h" - -using namespace std; - -/********************************************************************** -* cSkindesignerOsdObject -**********************************************************************/ - -cSkindesignerOsdObject::cSkindesignerOsdObject(void) { - pSkinDesigner = NULL; - pluginName = ""; -} - -cSkindesignerOsdObject::~cSkindesignerOsdObject() { -} - -bool cSkindesignerOsdObject::InitSkindesignerInterface(string pluginName) { - this->pluginName = pluginName; - pSkinDesigner = cPluginManager::GetPlugin("skindesigner"); - if (!pSkinDesigner) { - return false; - } - return true; -} - -cOsdView *cSkindesignerOsdObject::GetOsdView(int viewID, int subViewID) { - cSkinDisplayPlugin *displayPlugin = NULL; - cOsdView *view = NULL; - GetDisplayPlugin call; - call.pluginName = pluginName; - call.viewID = viewID; - call.subViewID = subViewID; - bool ok = pSkinDesigner->Service("GetDisplayPlugin", &call); - if (ok) { - displayPlugin = call.displayPlugin; - view = new cOsdView(displayPlugin); - } - return view; -} - -/********************************************************************** -* cSkindesignerOsdItem -**********************************************************************/ -cSkindesignerOsdItem::cSkindesignerOsdItem(eOSState State) : cOsdItem(State) { - sdDisplayMenu = NULL; -} - -cSkindesignerOsdItem::cSkindesignerOsdItem(const char *Text, eOSState State, bool Selectable) : cOsdItem(Text, State, Selectable) { - sdDisplayMenu = NULL; -} - -cSkindesignerOsdItem::~cSkindesignerOsdItem() { - -} - -void cSkindesignerOsdItem::SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable) { - if (sdDisplayMenu) { - if (!sdDisplayMenu->SetItemPlugin(&stringTokens, &intTokens, &loopTokens, Index, Current, Selectable)) { - DisplayMenu->SetItem(Text(), Index, Current, Selectable); - } - } else { - DisplayMenu->SetItem(Text(), Index, Current, Selectable); - } -} - -void cSkindesignerOsdItem::AddStringToken(string key, string value) { - stringTokens.insert(pair<string,string>(key, value)); -} - -void cSkindesignerOsdItem::AddIntToken(string key, int value) { - intTokens.insert(pair<string,int>(key, value)); -} - -void cSkindesignerOsdItem::AddLoopToken(string loopName, map<string, string> &tokens) { - map<string, vector<map<string, string> > >::iterator hitLoop = loopTokens.find(loopName); - if (hitLoop == loopTokens.end()) { - vector<map<string, string> > tokenVector; - tokenVector.push_back(tokens); - loopTokens.insert(pair<string, vector<map<string, string> > >(loopName, tokenVector)); - } else { - vector<map<string, string> > *tokenVector = &hitLoop->second; - tokenVector->push_back(tokens); - } -} - - -/********************************************************************** -* cSkindesignerOsdMenu -**********************************************************************/ -cSkindesignerOsdMenu::cSkindesignerOsdMenu(const char *Title, int c0, int c1, int c2, int c3, int c4) : cOsdMenu(Title, c0, c1, c2, c3, c4) { - init = true; - displayText = false; - sdDisplayMenu = NULL; - pluginName = ""; - SetMenuCategory(mcPlugin); - SetSkinDesignerDisplayMenu(); -} - -cSkindesignerOsdMenu::~cSkindesignerOsdMenu() { - -} - -void cSkindesignerOsdMenu::SetPluginMenu(int menu, eMenuType type) { - if (type == mtList) - displayText = false; - else if (type == mtText) - displayText = true; - - if (sdDisplayMenu) { - sdDisplayMenu->SetPluginMenu(pluginName, menu, type, init); - } - init = false; -} - -bool cSkindesignerOsdMenu::SetSkinDesignerDisplayMenu(void) { - static cPlugin *pSkinDesigner = cPluginManager::GetPlugin("skindesigner"); - if (!pSkinDesigner) { - return false; - } - GetDisplayMenu call; - bool ok = pSkinDesigner->Service("GetDisplayMenu", &call); - if (ok && call.displayMenu) { - sdDisplayMenu = call.displayMenu; - return true; - } - return false; -} - -void cSkindesignerOsdMenu::ClearTokens(void) { - text = ""; - stringTokens.clear(); - intTokens.clear(); - loopTokens.clear(); -} - -void cSkindesignerOsdMenu::AddStringToken(string key, string value) { - stringTokens.insert(pair<string,string>(key, value)); -} - -void cSkindesignerOsdMenu::AddIntToken(string key, int value) { - intTokens.insert(pair<string,int>(key, value)); -} - -void cSkindesignerOsdMenu::AddLoopToken(string loopName, map<string, string> &tokens) { - map<string, vector<map<string, string> > >::iterator hitLoop = loopTokens.find(loopName); - if (hitLoop == loopTokens.end()) { - vector<map<string, string> > tokenVector; - tokenVector.push_back(tokens); - loopTokens.insert(pair<string, vector<map<string, string> > >(loopName, tokenVector)); - } else { - vector<map<string, string> > *tokenVector = &hitLoop->second; - tokenVector->push_back(tokens); - } -} - -void cSkindesignerOsdMenu::TextKeyLeft(void) { - if (!displayText) - return; - DisplayMenu()->Scroll(true, true); -} - -void cSkindesignerOsdMenu::TextKeyRight(void) { - if (!displayText) - return; - DisplayMenu()->Scroll(false, true); -} - -void cSkindesignerOsdMenu::TextKeyUp(void) { - if (!displayText) - return; - DisplayMenu()->Scroll(true, false); -} - -void cSkindesignerOsdMenu::TextKeyDown(void) { - if (!displayText) - return; - DisplayMenu()->Scroll(false, false); -} - -void cSkindesignerOsdMenu::Display(void) { - if (displayText) { - if (sdDisplayMenu) { - sdDisplayMenu->SetTitle(Title()); - if (sdDisplayMenu->SetPluginText(&stringTokens, &intTokens, &loopTokens)) { - sdDisplayMenu->Flush(); - } else { - DisplayMenu()->Clear(); - DisplayMenu()->SetTitle(Title()); - DisplayMenu()->SetText(text.c_str(), false); - DisplayMenu()->Flush(); - } - } else { - DisplayMenu()->Clear(); - DisplayMenu()->SetTitle(Title()); - DisplayMenu()->SetText(text.c_str(), false); - DisplayMenu()->Flush(); - } - return; - } - if (sdDisplayMenu) { - sdDisplayMenu->SetTitle(Title()); - for (cOsdItem *item = First(); item; item = Next(item)) { - cSkindesignerOsdItem *sdItem = dynamic_cast<cSkindesignerOsdItem*>(item); - if (sdItem) { - sdItem->SetDisplayMenu(sdDisplayMenu); - } - } - } - cOsdMenu::Display(); -} diff --git a/libskindesigner/skindesignerosdbase.h b/libskindesigner/skindesignerosdbase.h deleted file mode 100644 index 4c992f4..0000000 --- a/libskindesigner/skindesignerosdbase.h +++ /dev/null @@ -1,86 +0,0 @@ -#ifndef __SKINDESIGNEROSDBASE_H -#define __SKINDESIGNEROSDBASE_H - -using namespace std; - -#include <string> -#include <vector> -#include <map> -#include <set> -#include <sstream> -#include <vdr/osdbase.h> -#include <vdr/plugin.h> -#include "services.h" - -class cOsdView; - -/********************************************************************** -* cSkindesignerOsdObject -**********************************************************************/ -class cSkindesignerOsdObject : public cOsdObject { -protected: - string pluginName; - cPlugin *pSkinDesigner; - bool InitSkindesignerInterface(string pluginName); - cOsdView *GetOsdView(int viewID, int subViewID = -1); -public: - cSkindesignerOsdObject(void); - virtual ~cSkindesignerOsdObject(); - virtual void Show(void) {}; -}; - -/********************************************************************** -* cSkindesignerOsdItem -**********************************************************************/ -class cSkindesignerOsdItem : public cOsdItem { -private: - cSDDisplayMenu *sdDisplayMenu; - map < string, string > stringTokens; - map < string, int > intTokens; - map < string, vector< map< string, string > > > loopTokens; -protected: -public: - cSkindesignerOsdItem(eOSState State = osUnknown); - cSkindesignerOsdItem(const char *Text, eOSState State = osUnknown, bool Selectable = true); - virtual ~cSkindesignerOsdItem(); - virtual void SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable); - void SetDisplayMenu(cSDDisplayMenu *sdDisplayMenu) { this->sdDisplayMenu = sdDisplayMenu; }; - void AddStringToken(string key, string value); - void AddIntToken(string key, int value); - void AddLoopToken(string loopName, map<string, string> &tokens); -}; - -/********************************************************************** -* cSkindesignerOsdMenu -**********************************************************************/ -class cSkindesignerOsdMenu : public cOsdMenu { -private: - bool init; - bool displayText; - string pluginName; - cSDDisplayMenu *sdDisplayMenu; - string text; - map < string, string > stringTokens; - map < string, int > intTokens; - map < string, vector< map< string, string > > > loopTokens; - bool SetSkinDesignerDisplayMenu(void); -protected: - void ClearTokens(void); - void SetPluginName(string name) {pluginName = name; }; - void SetPluginMenu(int menu, eMenuType type); - void SetText(string text) { this->text = text; }; - void AddStringToken(string key, string value); - void AddIntToken(string key, int value); - void AddLoopToken(string loopName, map<string, string> &tokens); - void TextKeyLeft(void); - void TextKeyRight(void); - void TextKeyUp(void); - void TextKeyDown(void); -public: - cSkindesignerOsdMenu(const char *Title, int c0 = 0, int c1 = 0, int c2 = 0, int c3 = 0, int c4 = 0); - virtual ~cSkindesignerOsdMenu(); - virtual void Display(void); -}; - -#endif // __SKINDESIGNEROSDBASE_H - @@ -5,7 +5,7 @@ #include "plexSdOsd.h" #include "pictureCache.h" -#include "libskindesigner/services.h" +#include <libskindesignerapi/skindesignerapi.h> ////////////////////////////////////////////////////////////////////////////// // cPlugin @@ -58,8 +58,9 @@ const char *cMyPlugin::Description(void) bool cMyPlugin::Start(void) { - RegisterPlugin reg; + skindesignerapi::cPluginStructure reg; reg.name = "plex"; + reg.libskindesignerAPIVersion = LIBSKINDESIGNERAPIVERSION; reg.SetView(viRootView, "root.xml"); reg.SetViewGrid(eViews::viRootView, eViewGrids::vgBrowser, "browser"); @@ -67,19 +68,17 @@ bool cMyPlugin::Start(void) reg.SetViewElement(viRootView, verBackground, "background"); reg.SetViewElement(viRootView, verInfopane, "infopane"); reg.SetViewElement(viRootView, verFooter, "footer"); - +/* reg.SetSubView(viRootView, viDetailView, "detail.xml"); reg.SetViewElement(viDetailView, vedBackground, "background"); reg.SetViewElement(viDetailView, vedHeader, "header"); reg.SetViewElement(viDetailView, vedFooter, "footer"); - - static cPlugin *pSkinDesigner = cPluginManager::GetPlugin("skindesigner"); - if (pSkinDesigner) { - pSkinDesigner->Service("RegisterPlugin", ®); +*/ + if (skindesignerapi::SkindesignerAPI::RegisterPlugin(®)) { m_pSdCheck = new cPlexSdOsd(); cMyPlugin::bSkindesigner = m_pSdCheck->SdSupport(); } else { - esyslog("[plex]: skindesigner not available"); + esyslog("[plex]: %s skindesigner not available", __FUNCTION__); } return true; } diff --git a/plexSdOsd.cpp b/plexSdOsd.cpp index 376f857..799c311 100644 --- a/plexSdOsd.cpp +++ b/plexSdOsd.cpp @@ -19,7 +19,7 @@ bool cPlexSdOsd::SdSupport() bool skinDesignerAvailable = InitSkindesignerInterface("plex"); if (skinDesignerAvailable) { - cOsdView *rootView = GetOsdView(eViews::viRootView); + skindesignerapi::cOsdView *rootView = GetOsdView(eViews::viRootView); if (!rootView) { esyslog("[plex]: used skindesigner skin does not support plex"); return false; diff --git a/plexSdOsd.h b/plexSdOsd.h index b039aa5..f87676e 100644 --- a/plexSdOsd.h +++ b/plexSdOsd.h @@ -17,8 +17,8 @@ #include "hlsPlayerControl.h" #include "browserGrid.h" -#include "libskindesigner/osdelements.h" -#include "libskindesigner/skindesignerosdbase.h" +#include <libskindesignerapi/osdelements.h> +#include <libskindesignerapi/skindesignerosdbase.h> enum eViews { viRootView, @@ -42,12 +42,12 @@ enum eViewElementsDetail { vedFooter }; -class cPlexSdOsd : public cSkindesignerOsdObject +class cPlexSdOsd : public skindesignerapi::cSkindesignerOsdObject { private: std::shared_ptr<cBrowserGrid> m_pBrowserGrid; - cOsdView* m_pRootView; + skindesignerapi::cOsdView* m_pRootView; void Flush(); void SwitchGrid(ePlexMenuTab currentTab); diff --git a/po/de_DE.po b/po/de_DE.po index ce76e7d..05500c9 100644 --- a/po/de_DE.po +++ b/po/de_DE.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: vdr-plex 0.1.0\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2015-03-15 11:38+0100\n" +"POT-Creation-Date: 2015-04-06 19:45+0200\n" "PO-Revision-Date: 2015-03-05 20:08+0200\n" "Last-Translator: Chris <zerov83@gmail.com>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -18,6 +18,18 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Virtaal 0.7.1\n" +msgid "Prev. Tab" +msgstr "" + +msgid "Next Tab" +msgstr "" + +msgid "Unscrobble" +msgstr "Ungesehen" + +msgid "Scrobble" +msgstr "Gesehen" + msgid "Hide main menu entry" msgstr "Verstecke Hauptmenüeintrag" @@ -33,6 +45,21 @@ msgstr "Plex Benutzername" msgid "Plex Password" msgstr "Plex Passwort" +msgid "Use Custom Server" +msgstr "" + +msgid "Server Host" +msgstr "" + +msgid "Server Port" +msgstr "" + +msgid "Grid Columns" +msgstr "" + +msgid "Grid Rows" +msgstr "" + msgid "Current UUID" msgstr "Aktuelle UUID" @@ -67,12 +94,6 @@ msgstr "Wiedergabe ab Minute %ld starten?" msgid "Info" msgstr "Info" -msgid "Unscrobble" -msgstr "Ungesehen" - -msgid "Scrobble" -msgstr "Gesehen" - #, c-format msgid "Browse Plex - %s" msgstr "Durchsuche Plex - %s" diff --git a/skins/blackhole/xmlfiles/plug-plex-root.xml b/skins/blackhole/xmlfiles/plug-plex-root.xml index b1c0d83..d474681 100644 --- a/skins/blackhole/xmlfiles/plug-plex-root.xml +++ b/skins/blackhole/xmlfiles/plug-plex-root.xml @@ -99,7 +99,8 @@ {banner} --> - <grid name="browser" x="0" y="15%" width="75%" height="75%"> + <!-- + <grid name="browser" x="0" y="15%" width="75%" height="75%"> <area layer="3"> <drawtext x="1%" y="2%" width="98%" font="{light}" fontsize="5%" color="{clrWhite}" text="{title}" /> <drawtext condition="{current}" x="1%" y="20%" width="98%" font="{light}" fontsize="5%" color="{clrWhite}" text="Active" /> @@ -114,6 +115,38 @@ <drawtext condition="{isepisode}" x="1%" y="40%" width="98%" font="{light}" fontsize="5%" color="{clrWhite}" text="Episode" /> </area> </grid> + --> + + <grid name="browser" x="0" y="15%" width="75%" height="75%"> + <area layer="3" condition="{ismovie}"> + <drawimage name="thumb" condition="not{hasthumb}" imagetype="skinpart" path="plexplaceholder" x="0" y="0" width="100%" height="100%" /> + <drawimage name="thumb" condition="{hasthumb}" imagetype="image" path="{thumb}" x="0" y="0" width="100%" height="100%" /> + <drawtext x="0" y="{height(thumb)*1.1}" width="100%" font="{light}" fontsize="5%" color="{clrWhite}" text="{title}" /> + <drawtext x="0" y="{height(thumb)*1.1}" width="50%" font="{light}" fontsize="5%" color="{clrWhite}" text="{year}" /> + <drawtext x="50%" y="{height(thumb)*1.1}" width="50%" font="{light}" fontsize="5%" color="{clrWhite}" text="{duration}" /> + </area> + <area layer="3" condition="{isepisode}" > + <drawtext x="1%" y="2%" width="98%" font="{light}" fontsize="5%" color="{clrWhite}" text="{title}" /> + <drawtext condition="{current}" x="1%" y="20%" width="98%" font="{light}" fontsize="5%" color="{clrWhite}" text="Active" /> + </area> + <area layer="3" condition="{isdirectory}" > + <drawtext x="1%" y="2%" width="98%" font="{light}" fontsize="5%" color="{clrWhite}" text="{title}" /> + <drawtext condition="{current}" x="1%" y="20%" width="98%" font="{light}" fontsize="5%" color="{clrWhite}" text="Active" /> + </area> + <area layer="3" condition="{isshow}" > + <drawtext x="1%" y="2%" width="98%" font="{light}" fontsize="5%" color="{clrWhite}" text="{title}" /> + <drawtext condition="{current}" x="1%" y="20%" width="98%" font="{light}" fontsize="5%" color="{clrWhite}" text="Active" /> + </area> + <area layer="3" condition="{isseason}" > + <drawtext x="1%" y="2%" width="98%" font="{light}" fontsize="5%" color="{clrWhite}" text="{title}" /> + <drawtext condition="{current}" x="1%" y="20%" width="98%" font="{light}" fontsize="5%" color="{clrWhite}" text="Active" /> + </area> + <area layer="3" condition="{isdummy}" > + <drawtext x="1%" y="2%" width="98%" font="{light}" fontsize="5%" color="{clrWhite}" text="{title}" /> + <drawtext condition="{current}" x="1%" y="20%" width="98%" font="{light}" fontsize="5%" color="{clrWhite}" text="Active" /> + </area> + </grid> + <!-- Available Variables Footer: {red1} true if red button is button 1 diff --git a/viewGridNavigator.cpp b/viewGridNavigator.cpp index 60e57cf..e315008 100644 --- a/viewGridNavigator.cpp +++ b/viewGridNavigator.cpp @@ -12,14 +12,14 @@ cGridElement::cGridElement() m_bInit = true; } -cViewGridNavigator::cViewGridNavigator(cOsdView* rootView, cViewGrid* viewGrid) +cViewGridNavigator::cViewGridNavigator(skindesignerapi::cOsdView* rootView, skindesignerapi::cViewGrid* viewGrid) { m_columns = 2; m_rows = 2; m_newDimensions = true; m_setIterator = true; - m_pGrid = std::shared_ptr<cViewGrid>(viewGrid); + m_pGrid = std::shared_ptr<skindesignerapi::cViewGrid>(viewGrid); m_pRootView = rootView; } diff --git a/viewGridNavigator.h b/viewGridNavigator.h index 906257b..41b1f2b 100644 --- a/viewGridNavigator.h +++ b/viewGridNavigator.h @@ -1,10 +1,10 @@ -#ifndef CVIEWGRIDNAVIGATOR_H -#define CVIEWGRIDNAVIGATOR_H +#ifndef cViewGridNAVIGATOR_H +#define cViewGridNAVIGATOR_H #include <memory> #include <vector> #include <functional> -#include "libskindesigner/osdelements.h" +#include <libskindesignerapi/osdelements.h> class cGridElement { @@ -27,7 +27,7 @@ public: bool IsVisible() { return Position > -1; } void SetPosition(double x, double y) { m_posX = x; m_posY = y; }; void GetPosition(double &x, double &y) { x = m_posX; y = m_posY; }; - virtual void AddTokens(std::shared_ptr<cOsdElement> osdElem, bool clear = true, std::function<void(cGridElement*)> OnCached = NULL) = 0; + virtual void AddTokens(std::shared_ptr<skindesignerapi::cOsdElement> osdElem, bool clear = true, std::function<void(cGridElement*)> OnCached = NULL) = 0; int Position; }; @@ -37,8 +37,8 @@ protected: int m_rows; int m_columns; - std::shared_ptr<cViewGrid> m_pGrid; - cOsdView* m_pRootView; + std::shared_ptr<skindesignerapi::cViewGrid> m_pGrid; + skindesignerapi::cOsdView* m_pRootView; bool m_newDimensions; bool m_setIterator; @@ -52,7 +52,7 @@ protected: void SetGridElementData(cGridElement *obj); public: - cViewGridNavigator(cOsdView* rootView, cViewGrid* viewGrid); + cViewGridNavigator(skindesignerapi::cOsdView* rootView, skindesignerapi::cViewGrid* viewGrid); void SetGridDimensions(int rows, int columns); virtual void Flush() { m_pGrid->Display(); }; virtual void Clear() { m_pGrid->Clear(); }; @@ -66,4 +66,4 @@ public: cGridElement* SelectedObject() { return *m_activeElementIter; } }; -#endif // CVIEWGRIDNAVIGATOR_H +#endif // cViewGridNAVIGATOR_H diff --git a/viewHeader.cpp b/viewHeader.cpp index 6f12bb0..d02b032 100644 --- a/viewHeader.cpp +++ b/viewHeader.cpp @@ -1,8 +1,8 @@ #include "viewHeader.h" -cViewHeader::cViewHeader(cViewElement* viewElem) +cViewHeader::cViewHeader(skindesignerapi::cViewElement* viewElem) { - m_pViewElem = std::shared_ptr<cViewElement>(viewElem); + m_pViewElem = std::shared_ptr<skindesignerapi::cViewElement>(viewElem); m_eCurrentTab = ePlexMenuTab::pmtOnDeck; } diff --git a/viewHeader.h b/viewHeader.h index 00aacbb..a40c4df 100644 --- a/viewHeader.h +++ b/viewHeader.h @@ -2,7 +2,7 @@ #define CVIEWHEADER_H #include <memory> -#include "libskindesigner/osdelements.h" +#include <libskindesignerapi/osdelements.h> #include "viewGridNavigator.h" enum ePlexMenuTab { @@ -15,10 +15,10 @@ class cViewHeader { private: ePlexMenuTab m_eCurrentTab; - std::shared_ptr<cViewElement> m_pViewElem; + std::shared_ptr<skindesignerapi::cViewElement> m_pViewElem; public: - cViewHeader(cViewElement* viewElem); + cViewHeader(skindesignerapi::cViewElement* viewElem); void Draw(cGridElement* elem); ePlexMenuTab NextTab(); ePlexMenuTab PrevTab(); |