diff options
author | louis <louis.braun@gmx.de> | 2015-03-12 17:28:35 +0100 |
---|---|---|
committer | louis <louis.braun@gmx.de> | 2015-03-12 17:28:35 +0100 |
commit | 44680b6ce80221e91cb14dca9ca7fad7015f1297 (patch) | |
tree | 8af805db50568ba41ebb461309d5724320295441 | |
parent | 45cb6c1663d66ebc22bed8dbc8cdbacdc82ad4a8 (diff) | |
download | vdr-plugin-skindesigner-0.3.0.tar.gz vdr-plugin-skindesigner-0.3.0.tar.bz2 |
version 0.3.00.3.0
180 files changed, 7675 insertions, 1150 deletions
@@ -202,4 +202,9 @@ Version 0.2.2 - added replay onpause view in blackhole skin - implemented SetTitle() in displayreplay - fixed header icon for plugin menus +- added function "drawtextvertical" +- implemented advanced plugin interface +- added tvguideng templates for all skins + +Version 0.3.0 @@ -66,6 +66,7 @@ OBJS = $(PLUGIN).o \ displaytracks.o \ displayvolume.o \ displayplugin.o \ + libcore/cairoimage.o \ libcore/pixmapcontainer.o \ libcore/fontmanager.o \ libcore/imagecache.o \ @@ -293,10 +293,12 @@ void cDesignerConfig::AddPluginMenus(string name, map< int, string > menus) { } void cDesignerConfig::AddPluginViews(string name, - map< int, string > views, + map< int, string > views, + multimap< int, pair <int, string> > subViews, map< int, map <int, string> > viewElements, map< int, map <int, string> > viewGrids) { pluginViews.insert(pair< string, map < int, string > >(name, views)); + pluginSubViews.insert(pair< string, multimap< int, pair <int, string> > >(name, subViews)); pluginViewElements.insert(pair< string, map< int, map <int, string> > >(name, viewElements)); pluginViewGrids.insert(pair< string, map< int, map <int, string> > >(name, viewGrids)); } @@ -327,6 +329,25 @@ map <int,string> *cDesignerConfig::GetPluginViews(string &name) { return views; } +map <int,string> cDesignerConfig::GetPluginSubViews(string name, int viewID) { + map <int,string> subViews; + + map < string, multimap< int, pair <int, string> > >::iterator hit = pluginSubViews.find(name); + if (hit == pluginSubViews.end()) + return subViews; + + multimap< int, pair<int, string> > subs = hit->second; + + pair < multimap< int, pair<int, string> >::iterator, multimap< int, pair<int, string> >::iterator> viewSubViews; + viewSubViews = subs.equal_range(viewID); + + for (multimap< int, pair<int, string> >::iterator it=viewSubViews.first; it!=viewSubViews.second; ++it) { + pair<int, string> subViewFound = it->second; + subViews.insert(pair<int,string>(subViewFound.first, subViewFound.second)); + } + return subViews; +} + int cDesignerConfig::GetPluginViewElementID(string pluginName, string viewElementName, int viewID) { map < string, map< int, map <int, string> > >::iterator hit = pluginViewElements.find(pluginName); if (hit == pluginViewElements.end()) @@ -32,6 +32,7 @@ private: map < string, map < int, string > >::iterator plugMenuIt; map < string, map < int, string > > pluginViews; map < string, map < int, string > >::iterator plugViewIt; + map < string, multimap< int, pair <int, string> > > pluginSubViews; map < string, map< int, map <int, string> > > pluginViewElements; map < string, map< int, map <int, string> > > pluginViewGrids; map < string, cSkinSetup* > skinSetups; @@ -72,11 +73,12 @@ public: bool OsdLanguageChanged(void); cString GetSkinRessourcePath(void); void AddPluginMenus(string name, map< int, string > menus); - void AddPluginViews(string name, map< int, string > views, map< int, map <int, string> > viewElements, map< int, map <int, string> > viewGrids); + void AddPluginViews(string name, map< int, string > views, multimap< int, pair <int, string> > subViews, map< int, map <int, string> > viewElements, map< int, map <int, string> > viewGrids); void InitPluginMenuIterator(void); map <int,string> *GetPluginTemplates(string &name); void InitPluginViewIterator(void); map <int,string> *GetPluginViews(string &name); + map <int,string> GetPluginSubViews(string name, int viewID); int GetPluginViewElementID(string pluginName, string viewElementName, int viewID); int GetPluginViewGridID(string pluginName, string viewGridName, int viewID); cString skinPath; @@ -107,7 +107,7 @@ cSkinDisplayMessage *cSkinDesigner::DisplayMessage(void) { return displayMessage; } -cSkinDisplayPlugin *cSkinDesigner::DisplayPlugin(string pluginName, int viewID) { +cSkinDisplayPlugin *cSkinDesigner::DisplayPlugin(string pluginName, int viewID, int subViewID) { currentMenu = NULL; if (useBackupSkin) return NULL; @@ -119,7 +119,7 @@ cSkinDisplayPlugin *cSkinDesigner::DisplayPlugin(string pluginName, int viewID) map <int, cTemplate*>::iterator hit2 = (hit->second).find(viewID); if (hit2 == (hit->second).end()) return NULL; - return new cSkinDisplayPlugin(hit2->second); + return new cSkinDisplayPlugin(hit2->second, subViewID); } @@ -344,15 +344,23 @@ bool cSkinDesigner::LoadTemplates(void) { string plugName; while ( plugViews = config.GetPluginViews(plugName) ) { for (map <int,string>::iterator v = plugViews->begin(); v != plugViews->end(); v++) { + int viewID = v->first; stringstream templateName; templateName << "plug-" << plugName << "-" << v->second.c_str(); - cTemplate *plgTemplate = new cTemplate(vtDisplayPlugin, plugName, v->first); + cTemplate *plgTemplate = new cTemplate(vtDisplayPlugin, plugName, viewID); plgTemplate->SetGlobals(globals); ok = plgTemplate->ReadFromXML(templateName.str()); if (!ok) { esyslog("skindesigner: error reading plugin %s template", plugName.c_str()); - DeleteTemplates(); - return false; + delete plgTemplate; + pluginTemplates.erase(plugName); + break; + } + ok = plgTemplate->SetSubViews(plugName, viewID); + if (!ok) { + delete plgTemplate; + pluginTemplates.erase(plugName); + break; } plgTemplate->Translate(); map< string, map <int, cTemplate*> >::iterator hit = pluginTemplates.find(plugName); @@ -43,7 +43,7 @@ public: virtual cSkinDisplayVolume *DisplayVolume(void); virtual cSkinDisplayTracks *DisplayTracks(const char *Title, int NumTracks, const char * const *Tracks); virtual cSkinDisplayMessage *DisplayMessage(void); - virtual cSkinDisplayPlugin *DisplayPlugin(string pluginName, int viewID); + virtual cSkinDisplayPlugin *DisplayPlugin(string pluginName, int viewID, int subViewID); void ActivateBackupSkin(void) { useBackupSkin = true; }; void Reload(void); void ListAvailableFonts(void); diff --git a/displaymenu.c b/displaymenu.c index d64e920..9cfe2b7 100644 --- a/displaymenu.c +++ b/displaymenu.c @@ -11,7 +11,7 @@ cSDDisplayMenu::cSDDisplayMenu(cTemplate *menuTemplate) { pluginMenuType = mtUnknown; if (!menuTemplate) { doOutput = false; - esyslog("skindesigner: displayMenu no valid template - aborting"); + dsyslog("skindesigner: displayMenu no valid template - aborting"); return; } rootView = new cDisplayMenuRootView(menuTemplate->GetRootView()); @@ -19,7 +19,6 @@ cSDDisplayMenu::cSDDisplayMenu(cTemplate *menuTemplate) { doOutput = false; return; } - esyslog("skindesigner: menu opened"); } cSDDisplayMenu::~cSDDisplayMenu() { @@ -27,7 +26,6 @@ cSDDisplayMenu::~cSDDisplayMenu() { delete rootView; if (textAreaFont) delete textAreaFont; - esyslog("skindesigner: menu closed"); } void cSDDisplayMenu::Scroll(bool Up, bool Page) { @@ -186,7 +184,6 @@ bool cSDDisplayMenu::SetItemPlugin(map<string,string> *stringTokens, map<string, } void cSDDisplayMenu::SetItem(const char *Text, int Index, bool Current, bool Selectable) { - esyslog("skindesigner: Item %s %s", Text, Current ? " -- ACTIVE --" : ""); if (!doOutput) return; cDisplayMenuListView *list = rootView->GetListView(); diff --git a/displayplugin.c b/displayplugin.c index ad5965f..28085a9 100644 --- a/displayplugin.c +++ b/displayplugin.c @@ -1,6 +1,7 @@ +#include "config.h" #include "displayplugin.h" -cSkinDisplayPlugin::cSkinDisplayPlugin(cTemplate *pluginTemplate) { +cSkinDisplayPlugin::cSkinDisplayPlugin(cTemplate *pluginTemplate, int subViewID) { if (!pluginTemplate) { doOutput = false; return; @@ -8,8 +9,17 @@ cSkinDisplayPlugin::cSkinDisplayPlugin(cTemplate *pluginTemplate) { doOutput = true; } initial = true; - pluginView = new cDisplayPluginView(pluginTemplate->GetRootView()); - if (!pluginView->createOsd()) { + if (subViewID > -1) { + cTemplateView *subView = pluginTemplate->GetRootView()->GetSubView((eSubView)subViewID); + if (!subView) { + doOutput = false; + return; + } + pluginView = new cDisplayPluginView(subView, false); + } else { + pluginView = new cDisplayPluginView(pluginTemplate->GetRootView(), true); + } + if (!pluginView->createOsd() && subViewID < 0) { doOutput = false; return; } @@ -22,6 +32,35 @@ cSkinDisplayPlugin::~cSkinDisplayPlugin(void) { } } +void cSkinDisplayPlugin::Deactivate(bool hide) { + if (!doOutput) { + return; + } + pluginView->Deactivate(hide); +} + +void cSkinDisplayPlugin::Activate(void) { + if (!doOutput) { + return; + } + pluginView->Activate(); +} + + +void cSkinDisplayPlugin::ClearViewElement(int id) { + if (!doOutput) { + return; + } + pluginView->CleanViewElement(id); +} + +void cSkinDisplayPlugin::DisplayViewElement(int id) { + if (!doOutput) { + return; + } + pluginView->DisplayViewElement(id); +} + void cSkinDisplayPlugin::SetViewElementIntTokens(map<string,int> *intTokens) { if (pluginView) pluginView->SetIntTokens(intTokens); @@ -37,13 +76,6 @@ void cSkinDisplayPlugin::SetViewElementLoopTokens(map<string,vector<map<string,s pluginView->SetLoopTokens(loopTokens); } -void cSkinDisplayPlugin::DisplayViewElement(int id) { - if (!doOutput) { - return; - } - pluginView->DisplayViewElement(id); -} - void cSkinDisplayPlugin::InitGrids(int viewGridID) { if (!doOutput) { return; @@ -88,10 +120,81 @@ void cSkinDisplayPlugin::ClearGrids(int viewGridID) { pluginView->ClearGrids(viewGridID); } +void cSkinDisplayPlugin::SetTabIntTokens(map<string,int> *intTokens) { + if (!doOutput) { + return; + } + pluginView->SetTabIntTokens(intTokens); +} + +void cSkinDisplayPlugin::SetTabStringTokens(map<string,string> *stringTokens) { + if (!doOutput) { + return; + } + pluginView->SetTabStringTokens(stringTokens); +} + +void cSkinDisplayPlugin::SetTabLoopTokens(map<string,vector<map<string,string> > > *loopTokens) { + if (!doOutput) { + return; + } + pluginView->SetTabLoopTokens(loopTokens); +} + +void cSkinDisplayPlugin::SetTabs(void) { + if (!doOutput) { + return; + } + pluginView->SetTabs(); +} + +void cSkinDisplayPlugin::TabLeft(void) { + if (!doOutput) { + return; + } + pluginView->TabLeft(); +} + +void cSkinDisplayPlugin::TabRight(void) { + if (!doOutput) { + return; + } + pluginView->TabRight(); +} + +void cSkinDisplayPlugin::TabUp(void) { + if (!doOutput) { + return; + } + pluginView->TabUp(); +} + +void cSkinDisplayPlugin::TabDown(void) { + if (!doOutput) { + return; + } + pluginView->TabDown(); +} + +void cSkinDisplayPlugin::DisplayTabs(void) { + if (!doOutput) { + return; + } + pluginView->DisplayTab(); +} + void cSkinDisplayPlugin::Flush(void) { if (initial) { pluginView->DoStart(); initial = false; } pluginView->Flush(); +} + +bool cSkinDisplayPlugin::ChannelLogoExists(string channelId) { + return imgCache->LogoExists(channelId); +} + +string cSkinDisplayPlugin::GetEpgImagePath(void) { + return *config.epgImagePath; }
\ No newline at end of file diff --git a/displayplugin.h b/displayplugin.h index 6fef255..8c15ec1 100644 --- a/displayplugin.h +++ b/displayplugin.h @@ -11,8 +11,11 @@ private: cDisplayPluginView *pluginView; public: cSkinDisplayPlugin(void) {}; - cSkinDisplayPlugin(cTemplate *pluginTemplate); + cSkinDisplayPlugin(cTemplate *pluginTemplate, int subViewID); 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); @@ -23,7 +26,18 @@ public: 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); }; #endif //__DISPLAYPLUGIN_H diff --git a/dtd/displayplugin.dtd b/dtd/displayplugin.dtd index df18160..c9e7a10 100644 --- a/dtd/displayplugin.dtd +++ b/dtd/displayplugin.dtd @@ -2,7 +2,7 @@ <!ENTITY % functions SYSTEM "functions.dtd">
-<!ELEMENT displayplugin (viewelement|grid)* >
+<!ELEMENT displayplugin (viewelement|grid|tab|scrollbar|tablabels)* >
<!ATTLIST displayplugin
x CDATA #REQUIRED
y CDATA #REQUIRED
@@ -21,4 +21,28 @@ debug CDATA #IMPLIED
>
+<!ELEMENT scrollbar (area|areascroll)*>
+<!ATTLIST scrollbar
+ debug CDATA #IMPLIED
+>
+
+<!ELEMENT tablabels (area|areascroll)*>
+<!ATTLIST tablabels
+ debug CDATA #IMPLIED
+>
+
+<!ELEMENT tab (loop|fill|drawtext|drawtextbox|drawimage|drawrectangle|drawellipse)*>
+<!ATTLIST tab
+ x CDATA #REQUIRED
+ y CDATA #REQUIRED
+ width CDATA #REQUIRED
+ height CDATA #REQUIRED
+ layer CDATA #REQUIRED
+ name CDATA #REQUIRED
+ scrollheight CDATA #REQUIRED
+ transparency CDATA #IMPLIED
+ condition CDATA #IMPLIED
+ debug (true|false) #IMPLIED
+>
+
%functions;
diff --git a/dtd/functions.dtd b/dtd/functions.dtd index 9e474e4..5d6e782 100644 --- a/dtd/functions.dtd +++ b/dtd/functions.dtd @@ -1,4 +1,4 @@ -<!ELEMENT area (loop|fill|drawtext|drawtextbox|drawimage|drawrectangle|drawellipse|drawslope)*> +<!ELEMENT area (loop|fill|drawtext|drawtextbox|drawimage|drawtextvertical|drawrectangle|drawellipse|drawslope)*> <!ATTLIST area x CDATA #IMPLIED y CDATA #IMPLIED @@ -10,7 +10,7 @@ debug (true|false) #IMPLIED > -<!ELEMENT areascroll (loop|fill|drawtext|drawtextbox|drawimage|drawrectangle|drawellipse|drawslope)*> +<!ELEMENT areascroll (loop|fill|drawtext|drawtextbox|drawtextvertical|drawimage|drawrectangle|drawellipse|drawslope)*> <!ATTLIST areascroll x CDATA #IMPLIED y CDATA #IMPLIED @@ -37,7 +37,7 @@ debug (true|false) #IMPLIED > -<!ELEMENT loop (drawtext|drawtextbox|drawimage|drawrectangle|drawellipse|drawslope)+> +<!ELEMENT loop (drawtext|drawtextbox|drawtextvertical|drawimage|drawrectangle|drawellipse|drawslope)+> <!ATTLIST loop x CDATA #REQUIRED y CDATA #REQUIRED @@ -95,6 +95,22 @@ debug NMTOKEN #IMPLIED > +<!ELEMENT drawtextvertical EMPTY> +<!ATTLIST drawtextvertical + x CDATA #IMPLIED + y CDATA #IMPLIED + width CDATA #IMPLIED + align (left|center|right) #IMPLIED + valign (top|center|bottom) #IMPLIED + color CDATA #REQUIRED + font CDATA #REQUIRED + fontsize CDATA #REQUIRED + name NMTOKEN #IMPLIED + text CDATA #REQUIRED + condition CDATA #IMPLIED + debug (true|false) #IMPLIED +> + <!ELEMENT drawrectangle EMPTY> <!ATTLIST drawrectangle x CDATA #REQUIRED diff --git a/libcore/cairoimage.c b/libcore/cairoimage.c new file mode 100644 index 0000000..a8b56c3 --- /dev/null +++ b/libcore/cairoimage.c @@ -0,0 +1,92 @@ +#include "cairoimage.h" + +cCairoImage::cCairoImage(void) { + surface = NULL; + cr = NULL; +} + +cCairoImage::~cCairoImage() { + if (cr) + cairo_destroy (cr); + if (surface) + cairo_surface_destroy (surface); +} + +void cCairoImage::InitCairoImage(int width, int height) { + this->width = width; + this->height = height; + + surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height); + cr = cairo_create(surface); + cairo_set_antialias(cr, CAIRO_ANTIALIAS_BEST); +} + +void cCairoImage::DrawTextVertical(string text, tColor color, string font, int size) { + + int imgHeight = GetTextWidth(text, font, size); + InitCairoImage(size * 1.2, imgHeight); + + SetColor(color); + cairo_move_to (cr, size, imgHeight); + cairo_font_weight_t fontWeight = CAIRO_FONT_WEIGHT_NORMAL; + cairo_font_slant_t fontSlant = CAIRO_FONT_SLANT_NORMAL; + cairo_select_font_face (cr, font.c_str(), fontSlant, fontWeight); + cairo_set_font_size (cr, size); + cairo_rotate(cr, 3*M_PI/2); + cairo_show_text (cr, text.c_str()); +} + +cImage *cCairoImage::GetImage(void) { + if (!cr || !surface) + return NULL; + + unsigned char *data = cairo_image_surface_get_data(surface); + cImage *image = new cImage(cSize(width, height), (tColor*)data); + return image; +} + +/********************************************************************************** +* Private Functions +**********************************************************************************/ + +int cCairoImage::GetTextWidth(string text, string font, int size) { + cairo_surface_t *tmpSurface; + cairo_t *tmpCr; + + double width = 300; + double height = (double)size *1.3; + + cairo_font_weight_t fontWeight = CAIRO_FONT_WEIGHT_NORMAL; + cairo_font_slant_t fontSlant = CAIRO_FONT_SLANT_NORMAL; + + tmpSurface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height); + tmpCr = cairo_create (tmpSurface); + + cairo_select_font_face (tmpCr, font.c_str(), fontSlant, fontWeight); + cairo_set_font_size (tmpCr, size); + + cairo_text_extents_t te; + cairo_text_extents (tmpCr, text.c_str(), &te); + int textWidth = te.width; + + cairo_destroy (tmpCr); + cairo_surface_destroy (tmpSurface); + + return (double)textWidth * 1.1; +} + +void cCairoImage::SetColor(tColor color) { + if (!cr || !surface) + return; + tIndex tAlpha = (color & 0xFF000000) >> 24; + tIndex tRed = (color & 0x00FF0000) >> 16; + tIndex tGreen = (color & 0x0000FF00) >> 8; + tIndex tBlue = (color & 0x000000FF); + + double a = (int)tAlpha / (double)255; + double r = (int)tRed / (double)255; + double g = (int)tGreen / (double)255; + double b = (int)tBlue / (double)255; + + cairo_set_source_rgba(cr, r, g, b, a); +}
\ No newline at end of file diff --git a/libcore/cairoimage.h b/libcore/cairoimage.h new file mode 100644 index 0000000..02e9c89 --- /dev/null +++ b/libcore/cairoimage.h @@ -0,0 +1,26 @@ +#ifndef __CAIROIMAGE_H +#define __CAIROIMAGE_H + +#include <cairo.h> +#include <vdr/osd.h> +#include <string> +#include <sstream> + +using namespace std; + +class cCairoImage { +private: + int width; + int height; + cairo_surface_t *surface; + cairo_t *cr; + void SetColor(tColor color); + int GetTextWidth(string text, string font, int size); +public: + cCairoImage(void); + virtual ~cCairoImage(); + void InitCairoImage(int width, int height); + void DrawTextVertical(string text, tColor color, string font, int size); + cImage *GetImage(void); +}; +#endif //__CAIROIMAGE_H
\ No newline at end of file diff --git a/libcore/imagecache.c b/libcore/imagecache.c index 2a9a948..e6188d2 100644 --- a/libcore/imagecache.c +++ b/libcore/imagecache.c @@ -4,6 +4,7 @@ #include <fstream> #include <sys/stat.h> #include "imagecache.h" +#include "cairoimage.h" #include "../config.h" #include "helpers.h" @@ -331,6 +332,28 @@ cImage *cImageCache::GetSkinpart(string name, int width, int height) { return NULL; } +cImage *cImageCache::GetVerticalText(string text, tColor color, string font, int size) { + cMutexLock MutexLock(&mutex); + stringstream buf; + buf << text << "_" << size; + string imgName = buf.str(); + map<string, cImage*>::iterator hit = cairoImageCache.find(imgName); + if (hit != cairoImageCache.end()) { + return (cImage*)hit->second; + } else { + cCairoImage c; + c.DrawTextVertical(text, color, font, size); + cImage *image = c.GetImage(); + cairoImageCache.insert(pair<string, cImage*>(imgName, image)); + hit = cairoImageCache.find(imgName); + if (hit != cairoImageCache.end()) { + return (cImage*)hit->second; + } + } + return NULL; +} + + bool cImageCache::LoadIcon(eImageType type, string name) { cString subdir(""); if (type == itMenuIcon) @@ -409,11 +432,17 @@ void cImageCache::Clear(void) { } channelLogoCache.clear(); - for(map<std::string, cImage*>::const_iterator it = skinPartsCache.begin(); it != skinPartsCache.end(); it++) { + for(map<string, cImage*>::const_iterator it = skinPartsCache.begin(); it != skinPartsCache.end(); it++) { cImage *img = (cImage*)it->second; delete img; } skinPartsCache.clear(); + + for(map<string, cImage*>::const_iterator it = cairoImageCache.begin(); it != cairoImageCache.end(); it++) { + cImage *img = (cImage*)it->second; + delete img; + } + cairoImageCache.clear(); } void cImageCache::Debug(bool full) { diff --git a/libcore/imagecache.h b/libcore/imagecache.h index 086d8e4..f2c04f3 100644 --- a/libcore/imagecache.h +++ b/libcore/imagecache.h @@ -30,6 +30,8 @@ public: //skinparts void CacheSkinpart(string path, int width, int height); cImage *GetSkinpart(string name, int width, int height); + //cairo special images + cImage *GetVerticalText(string text, tColor color, string font, int size); //helpers void Clear(void); void Debug(bool full); @@ -48,6 +50,7 @@ private: map<string, cImage*> iconCache; map<string, cImage*> channelLogoCache; map<string, cImage*> skinPartsCache; + map<string, cImage*> cairoImageCache; bool LoadIcon(eImageType type, string name); bool LoadLogo(const cChannel *channel); bool LoadSeparatorLogo(string name); diff --git a/libcore/pixmapcontainer.c b/libcore/pixmapcontainer.c index b3ea83e..3e5e60a 100644 --- a/libcore/pixmapcontainer.c +++ b/libcore/pixmapcontainer.c @@ -16,6 +16,7 @@ cPixmapContainer::cPixmapContainer(int numPixmaps) { pixmaps[i] = NULL; pixmapsTransparency[i] = 0; } + pixmapsLayer = NULL; mutex.Unlock(); checkRunning = false; fadeTime = 0; @@ -33,6 +34,9 @@ cPixmapContainer::~cPixmapContainer(void) { } delete[] pixmaps; delete[] pixmapsTransparency; + if (pixmapsLayer) + delete[] pixmapsLayer; + if (deleteOsdOnExit && osd) { mutex.Lock(); delete osd; @@ -65,12 +69,6 @@ void cPixmapContainer::OpenFlush(void) { flushState = fsOpen; } -bool cPixmapContainer::PixmapExists(int num) { - cMutexLock MutexLock(&mutex); - if (pixmaps[num]) - return true; - return false; -} void cPixmapContainer::DoFlush(void) { cMutexLock MutexLock(&mutex); @@ -81,6 +79,41 @@ void cPixmapContainer::DoFlush(void) { } } +void cPixmapContainer::HidePixmaps(void) { + cMutexLock MutexLock(&mutex); + pixmapsLayer = new int[numPixmaps]; + for(int i=0; i < numPixmaps; i++) { + if (!pixmaps[i]) { + pixmapsLayer[i] = 0; + continue; + } + pixmapsLayer[i] = pixmaps[i]->Layer(); + pixmaps[i]->SetLayer(-1); + } +} + +void cPixmapContainer::ShowPixmaps(void) { + cMutexLock MutexLock(&mutex); + if (!pixmapsLayer) + return; + for(int i=0; i < numPixmaps; i++) { + if (!pixmaps[i]) + continue; + pixmaps[i]->SetLayer(pixmapsLayer[i]); + } +} + +/****************************************************************************************************** +* Protected Functions +******************************************************************************************************/ + +bool cPixmapContainer::PixmapExists(int num) { + cMutexLock MutexLock(&mutex); + if (pixmaps[num]) + return true; + return false; +} + void cPixmapContainer::CreatePixmap(int num, int Layer, const cRect &ViewPort, const cRect &DrawPort) { cMutexLock MutexLock(&mutex); if (!osd || (checkRunning && !Running())) diff --git a/libcore/pixmapcontainer.h b/libcore/pixmapcontainer.h index 8fe1dfe..3b367c8 100644 --- a/libcore/pixmapcontainer.h +++ b/libcore/pixmapcontainer.h @@ -20,13 +20,14 @@ private: int numPixmaps; cPixmap **pixmaps; int *pixmapsTransparency; + int *pixmapsLayer; bool checkRunning; int fadeTime; bool deleteOsdOnExit; protected: void SetInitFinished(void) { pixContainerInit = false; }; bool CreateOsd(int Left, int Top, int Width, int Height); - void DeleteOsdOnExit(void) { deleteOsdOnExit = true; }; + void DeleteOsdOnExit(bool doDelete = true) { deleteOsdOnExit = doDelete; }; //Wrappers for access to pixmaps bool PixmapExists(int num); int NumPixmaps(void) { return numPixmaps; }; @@ -69,6 +70,8 @@ public: void LockFlush(void); void OpenFlush(void); void DoFlush(void); + void HidePixmaps(void); + void ShowPixmaps(void); virtual void Action(void) {}; }; diff --git a/libskindesigner/osdelements.c b/libskindesigner/osdelements.c new file mode 100644 index 0000000..11915a8 --- /dev/null +++ b/libskindesigner/osdelements.c @@ -0,0 +1,203 @@ +#include "osdelements.h" + +/********************************************************************** +* 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 new file mode 100644 index 0000000..057a1fd --- /dev/null +++ b/libskindesigner/osdelements.h @@ -0,0 +1,91 @@ +#ifndef __OSDELEMENTS_H +#define __OSDELEMENTS_H + +#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 new file mode 100644 index 0000000..8fa9c69 --- /dev/null +++ b/libskindesigner/services.h @@ -0,0 +1,131 @@ +#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/skindesclient-0.0.1/libskindesigner/skindesignerosdbase.c b/libskindesigner/skindesignerosdbase.c index 821efdc..4d40615 100644 --- a/skindesclient-0.0.1/libskindesigner/skindesignerosdbase.c +++ b/libskindesigner/skindesignerosdbase.c @@ -1,4 +1,41 @@ #include "skindesignerosdbase.h" +#include "osdelements.h" + +/********************************************************************** +* 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 diff --git a/skindesclient-0.0.1/libskindesigner/skindesignerosdbase.h b/libskindesigner/skindesignerosdbase.h index 88068af..060ec11 100644 --- a/skindesclient-0.0.1/libskindesigner/skindesignerosdbase.h +++ b/libskindesigner/skindesignerosdbase.h @@ -10,6 +10,26 @@ #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; @@ -28,7 +48,9 @@ public: void AddLoopToken(string loopName, map<string, string> &tokens); }; - +/********************************************************************** +* cSkindesignerOsdMenu +**********************************************************************/ class cSkindesignerOsdMenu : public cOsdMenu { private: bool init; diff --git a/libtemplate/template.c b/libtemplate/template.c index 01a7b28..189efd0 100644 --- a/libtemplate/template.c +++ b/libtemplate/template.c @@ -56,7 +56,8 @@ bool cTemplate::ReadFromXML(string xmlfile) { if (!parser.ParseView()) { return false; } - //read additional plugin templates + + //read additional plugin menu templates bool ok = true; if (viewType == vtDisplayMenu) { config.InitPluginMenuIterator(); @@ -114,6 +115,39 @@ void cTemplate::CacheImages(void) { } } +bool cTemplate::SetSubViews(string plugName, int viewID) { + map <int,string> subViews = config.GetPluginSubViews(plugName, viewID); + + if (subViews.size() == 0) { + return true; + } + + for (map<int,string>::iterator it = subViews.begin(); it != subViews.end(); it ++) { + int subViewID = it->first; + stringstream templateName; + templateName << "plug-" << plugName << "-" << it->second; + string subViewTemplate = templateName.str(); + cTemplateView *plgTemplateView = new cTemplateViewPlugin(plugName, subViewID); + plgTemplateView->SetGlobals(globals); + cXmlParser parser; + if (!parser.ReadView(plgTemplateView, subViewTemplate)) { + esyslog("skindesigner: error reading plugin %s template", plugName.c_str()); + delete plgTemplateView; + return false; + } + if (!parser.ParseView()) { + esyslog("skindesigner: error reading plugin %s template", plugName.c_str()); + delete plgTemplateView; + return false; + } + stringstream svid; + svid << subViewID; + rootView->AddSubView(svid.str(), plgTemplateView); + } + return true; +} + + void cTemplate::Debug(void) { rootView->Debug(); } diff --git a/libtemplate/template.h b/libtemplate/template.h index 79a824b..75dce5c 100644 --- a/libtemplate/template.h +++ b/libtemplate/template.h @@ -52,6 +52,8 @@ public: //get fonts for pre caching vector< pair<string, int> > GetUsedFonts(void); void CacheImages(void); + //Set Plugin Subviews + bool SetSubViews(string plugName, int viewID); //Debug void Debug(void); }; diff --git a/libtemplate/templatefunction.c b/libtemplate/templatefunction.c index 0b3de8a..8156633 100644 --- a/libtemplate/templatefunction.c +++ b/libtemplate/templatefunction.c @@ -725,11 +725,16 @@ bool cTemplateFunction::SetNumericParameter(eParamType type, string value) { break;
case ptY:
case ptHeight:
- case ptFontSize:
case ptScaleTvY:
case ptScaleTvHeight:
param.SetVertical();
break;
+ case ptFontSize: {
+ if (this->type == ftDrawTextVertical)
+ param.SetHorizontal();
+ else
+ param.SetVertical();
+ break; }
case ptLayer:
param.SetDefault(1);
break;
diff --git a/libtemplate/templatefunction.h b/libtemplate/templatefunction.h index f7af25c..e63850e 100644 --- a/libtemplate/templatefunction.h +++ b/libtemplate/templatefunction.h @@ -29,6 +29,7 @@ enum eFuncType { ftFill, ftDrawText, ftDrawTextBox, + ftDrawTextVertical, ftDrawImage, ftDrawRectangle, ftDrawEllipse, @@ -198,6 +199,8 @@ public: //Dynamic width or height parameter int GetWidth(bool cutted = true); int GetHeight(void); + int GetContainerWidth(void) { return containerWidth; }; + int GetContainerHeight(void) { return containerHeight; }; void GetNeededWidths(multimap<eParamType,string> *widths); void GetNeededHeights(multimap<eParamType,string> *heights); void GetNeededPosX(multimap<eParamType,string> *posXs); diff --git a/libtemplate/templatepixmap.c b/libtemplate/templatepixmap.c index 40e35a3..52ae63f 100644 --- a/libtemplate/templatepixmap.c +++ b/libtemplate/templatepixmap.c @@ -124,6 +124,8 @@ void cTemplatePixmap::AddFunction(string name, vector<pair<string, string> > &pa type = ftDrawText;
} else if (!name.compare("drawtextbox")) {
type = ftDrawTextBox;
+ } else if (!name.compare("drawtextvertical")) {
+ type = ftDrawTextVertical;
} else if (!name.compare("drawimage")) {
type = ftDrawImage;
} else if (!name.compare("drawrectangle")) {
diff --git a/libtemplate/templateview.c b/libtemplate/templateview.c index 753b242..c37b5f0 100644 --- a/libtemplate/templateview.c +++ b/libtemplate/templateview.c @@ -642,6 +642,22 @@ void cTemplateView::SetFunctionDefinitions(void) { attributes.insert("floatheight"); funcsAllowed.insert(pair< string, set<string> >(name, attributes)); + name = "drawtextvertical"; + attributes.clear(); + attributes.insert("debug"); + attributes.insert("condition"); + attributes.insert("name"); + attributes.insert("x"); + attributes.insert("y"); + attributes.insert("height"); + attributes.insert("align"); + attributes.insert("valign"); + attributes.insert("font"); + attributes.insert("fontsize"); + attributes.insert("color"); + attributes.insert("text"); + funcsAllowed.insert(pair< string, set<string> >(name, attributes)); + name = "drawimage"; attributes.clear(); attributes.insert("debug"); @@ -1849,6 +1865,20 @@ cTemplateViewPlugin::cTemplateViewPlugin(string pluginName, int viewID) { attributes.insert("scaletvheight"); funcsAllowed.insert(pair< string, set<string> >(viewName, attributes)); + //definition of allowed parameters for viewtab + attributes.clear(); + attributes.insert("debug"); + attributes.insert("name"); + attributes.insert("condition"); + attributes.insert("x"); + attributes.insert("y"); + attributes.insert("width"); + attributes.insert("height"); + attributes.insert("layer"); + attributes.insert("transparency"); + attributes.insert("scrollheight"); + funcsAllowed.insert(pair< string, set<string> >("tab", attributes)); + attributes.clear(); attributes.insert("x"); attributes.insert("y"); @@ -1858,15 +1888,23 @@ cTemplateViewPlugin::cTemplateViewPlugin(string pluginName, int viewID) { funcsAllowed.insert(pair< string, set<string> >("grid", attributes)); viewElementsAllowed.insert("viewelement"); + viewElementsAllowed.insert("scrollbar"); + viewElementsAllowed.insert("tablabels"); viewGridsAllowed.insert("grid"); } cTemplateViewPlugin::~cTemplateViewPlugin() { } +void cTemplateViewPlugin::AddSubView(string sSubView, cTemplateView *subView) { + int subViewId = atoi(sSubView.c_str()); + subViews.insert(pair< eSubView, cTemplateView* >((eSubView)subViewId, subView)); +} + void cTemplateViewPlugin::AddPixmap(string sViewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes) { eViewElement ve = veUndefined; string viewElementName = ""; + int viewElementID = -1; bool found = false; for (vector<pair<string, string> >::iterator it = viewElementattributes.begin(); it != viewElementattributes.end(); it++) { if (!(it->first).compare("name")) { @@ -1875,15 +1913,22 @@ void cTemplateViewPlugin::AddPixmap(string sViewElement, cTemplatePixmap *pix, v break; } } - if (!found) { - esyslog("skindesigner: no name defined for plugin %s viewelement", pluginName.c_str()); - } - - int viewElementID = config.GetPluginViewElementID(pluginName, viewElementName, viewID); - if (viewElementID == -1) { - esyslog("skindesigner: %s: unknown ViewElement in displayplugin: %s", pluginName.c_str(), viewElementName.c_str()); - return; + if (found) { + viewElementID = config.GetPluginViewElementID(pluginName, viewElementName, viewID); + } else { + //check for internal view elements + ePluginInteralViewElements pve = pveUndefined; + if (!sViewElement.compare("scrollbar")) { + pve = pveScrollbar; + } else if (!sViewElement.compare("tablabels")) { + pve = pveTablabels; + } + if (pve == pveUndefined) { + esyslog("skindesigner: %s: unknown ViewElement in displayplugin: %s", pluginName.c_str(), viewElementName.c_str()); + return; + } + viewElementID = pve; } pix->SetGlobals(globals); @@ -1932,3 +1977,7 @@ void cTemplateViewPlugin::AddPixmapGrid(cTemplatePixmap *pix, vector<pair<string (hit->second)->AddPixmap(pix); } } + +void cTemplateViewPlugin::AddViewTab(cTemplateViewTab *viewTab) { + viewTabs.push_back(viewTab); +} diff --git a/libtemplate/templateview.h b/libtemplate/templateview.h index 7e0d43e..79564b7 100644 --- a/libtemplate/templateview.h +++ b/libtemplate/templateview.h @@ -211,7 +211,7 @@ public: void AddViewList(string sViewList, cTemplateViewList *viewList); }; -// --- cTemplateViewAudioTracks ------------------------------------------------------------- +// --- cTemplateViewPlugin ------------------------------------------------------------- class cTemplateViewPlugin : public cTemplateView { private: @@ -220,8 +220,10 @@ private: public: cTemplateViewPlugin(string pluginName, int viewID); virtual ~cTemplateViewPlugin(void); + void AddSubView(string sSubView, cTemplateView *subView); void AddPixmap(string viewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes); void AddPixmapGrid(cTemplatePixmap *pix, vector<pair<string, string> > &gridAttributes); + void AddViewTab(cTemplateViewTab *viewTab); }; #endif //__TEMPLATEVIEW_H diff --git a/libtemplate/templateviewelement.h b/libtemplate/templateviewelement.h index ebddcd2..be7bb74 100644 --- a/libtemplate/templateviewelement.h +++ b/libtemplate/templateviewelement.h @@ -70,6 +70,12 @@ enum eViewElement { veVolume
};
+enum ePluginInteralViewElements {
+ pveScrollbar = -1,
+ pveTablabels = -2,
+ pveUndefined = 0
+};
+
class cTemplateViewElement {
protected:
bool debugTokens;
diff --git a/libtemplate/xmlparser.c b/libtemplate/xmlparser.c index e086ba4..aa7d498 100644 --- a/libtemplate/xmlparser.c +++ b/libtemplate/xmlparser.c @@ -200,6 +200,8 @@ bool cXmlParser::ParseView(void) { vector<pair<string, string> > attribs; ParseAttributes(attr, node, attribs); ParseGrid(node->xmlChildrenNode, attribs); + } else if (!xmlStrcmp(node->name, (const xmlChar *) "tab")) { + ParseViewTab(node, view); } else { return false; } @@ -22,6 +22,10 @@ public: 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()) { @@ -43,11 +47,12 @@ public: } } // 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 - map< int, map <int, string> > viewElements; //viewelements as key -> (viewelement, viewelementname) hashmap - map< int, map <int, string> > viewGrids; //viewgrids as key -> (viewgrid, viewgridname) hashmap + 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 }; @@ -68,11 +73,13 @@ public: GetDisplayPlugin(void) { pluginName = ""; viewID = -1; + subViewID = -1; displayPlugin = NULL; }; // in string pluginName; int viewID; + int subViewID; //out cSkinDisplayPlugin *displayPlugin; }; diff --git a/skindesclient-0.0.1/COPYING b/skindesclient-0.0.1/COPYING deleted file mode 100644 index f90922e..0000000 --- a/skindesclient-0.0.1/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - <signature of Ty Coon>, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/skindesclient-0.0.1/Makefile b/skindesclient-0.0.1/Makefile deleted file mode 100644 index 7e19d59..0000000 --- a/skindesclient-0.0.1/Makefile +++ /dev/null @@ -1,123 +0,0 @@ -# -# Makefile for a Video Disk Recorder plugin -# -# $Id$ - -# The official name of this plugin. -# This name will be used in the '-P...' option of VDR to load the plugin. -# By default the main source file also carries this name. - -PLUGIN = skindesclient - -### The version number of this plugin (taken from the main source file): - -VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).c | awk '{ print $$6 }' | sed -e 's/[";]//g') - -### The directory environment: - -# Use package data if installed...otherwise assume we're under the VDR source directory: -PKGCFG = $(if $(VDRDIR),$(shell pkg-config --variable=$(1) $(VDRDIR)/vdr.pc),$(shell pkg-config --variable=$(1) vdr || pkg-config --variable=$(1) ../../../vdr.pc)) -LIBDIR = $(call PKGCFG,libdir) -LOCDIR = $(call PKGCFG,locdir) -PLGCFG = $(call PKGCFG,plgcfg) -# -TMPDIR ?= /tmp - -### The compiler options: - -export CFLAGS = $(call PKGCFG,cflags) -export CXXFLAGS = $(call PKGCFG,cxxflags) - -### The version number of VDR's plugin API: - -APIVERSION = $(call PKGCFG,apiversion) - -### Allow user defined options to overwrite defaults: - --include $(PLGCFG) - -### The name of the distribution archive: - -ARCHIVE = $(PLUGIN)-$(VERSION) -PACKAGE = vdr-$(ARCHIVE) - -### The name of the shared object file: - -SOFILE = libvdr-$(PLUGIN).so - -### Includes and Defines (add further entries here): - -INCLUDES += - -DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"' - -### The object files (add further files here): - -OBJS = $(PLUGIN).o \ - libskindesigner/skindesignerosdbase.o - -### The main target: - -all: $(SOFILE) i18n - -### Implicit rules: - -%.o: %.c - $(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) -o $@ $< - -### Dependencies: - -MAKEDEP = $(CXX) -MM -MG -DEPFILE = .dependencies -$(DEPFILE): Makefile - @$(MAKEDEP) $(CXXFLAGS) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@ - --include $(DEPFILE) - -### Internationalization (I18N): - -PODIR = po -I18Npo = $(wildcard $(PODIR)/*.po) -I18Nmo = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file)))) -I18Nmsgs = $(addprefix $(DESTDIR)$(LOCDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file)))))) -I18Npot = $(PODIR)/$(PLUGIN).pot - -%.mo: %.po - msgfmt -c -o $@ $< - -$(I18Npot): $(wildcard *.c) - xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --package-name=vdr-$(PLUGIN) --package-version=$(VERSION) --msgid-bugs-address='<see README>' -o $@ `ls $^` - -%.po: $(I18Npot) - msgmerge -U --no-wrap --no-location --backup=none -q -N $@ $< - @touch $@ - -$(I18Nmsgs): $(DESTDIR)$(LOCDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo - install -D -m644 $< $@ - -.PHONY: i18n -i18n: $(I18Nmo) $(I18Npot) - -install-i18n: $(I18Nmsgs) - -### Targets: - -$(SOFILE): $(OBJS) - $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) -o $@ - -install-lib: $(SOFILE) - install -D $^ $(DESTDIR)$(LIBDIR)/$^.$(APIVERSION) - -install: install-lib install-i18n - -dist: $(I18Npo) clean - @-rm -rf $(TMPDIR)/$(ARCHIVE) - @mkdir $(TMPDIR)/$(ARCHIVE) - @cp -a * $(TMPDIR)/$(ARCHIVE) - @tar czf $(PACKAGE).tgz -C $(TMPDIR) $(ARCHIVE) - @-rm -rf $(TMPDIR)/$(ARCHIVE) - @echo Distribution package created as $(PACKAGE).tgz - -clean: - @-rm -f $(PODIR)/*.mo $(PODIR)/*.pot - @-rm -f $(OBJS) $(DEPFILE) *.so *.tgz core* *~ diff --git a/skindesclient-0.0.1/README b/skindesclient-0.0.1/README deleted file mode 100644 index 3b270ac..0000000 --- a/skindesclient-0.0.1/README +++ /dev/null @@ -1,16 +0,0 @@ -This is a "plugin" for the Video Disk Recorder (VDR). - -Written by: Louis Braun <louis.braun@gmx.de> - -Project's homepage: --- - -Latest version available at: --- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. -See the file COPYING for more information. - -Description: This is just an example how to use the skindesigner -template engine with a VDR plugin diff --git a/skindesclient-0.0.1/libskindesigner/services.h b/skindesclient-0.0.1/libskindesigner/services.h deleted file mode 100644 index 0a016fa..0000000 --- a/skindesclient-0.0.1/libskindesigner/services.h +++ /dev/null @@ -1,52 +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); -}; - -/********************************************************************* -* 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)); - } -// in - string name; //name of plugin - map< int, string > menus; //menus as key -> templatename hashmap -//out -}; - -// Data structure for service "GetDisplayMenu" -class GetDisplayMenu { -public: - GetDisplayMenu(void) { - displayMenu = NULL; - }; -// in -//out - cSDDisplayMenu *displayMenu; -}; -#endif //__SKINDESIGNERSERVICES_H
\ No newline at end of file diff --git a/skindesclient-0.0.1/osdmenu.c b/skindesclient-0.0.1/osdmenu.c deleted file mode 100644 index e32b2d1..0000000 --- a/skindesclient-0.0.1/osdmenu.c +++ /dev/null @@ -1,148 +0,0 @@ -#include <vdr/osdbase.h> -#include <string> -#include <vector> -#include <map> -#include <set> -#include <sstream> -#include "libskindesigner/skindesignerosdbase.h" - -enum eMenus { - meListMain, - meListSub, - meDetail -}; - -class cPlugOsdMenu : public cSkindesignerOsdMenu { -private: - void SetMenu(int numItems, bool subfolder = false); - void SetDetailView(int element); -public: - cPlugOsdMenu(void); - virtual ~cPlugOsdMenu(); - virtual eOSState ProcessKey(eKeys key); -}; - - -//*************************************************************************** -// Public Functions -//*************************************************************************** - -cPlugOsdMenu::cPlugOsdMenu(void) : cSkindesignerOsdMenu("Skindesigner Client") { - SetPluginName("skindesclient"); - SetMenu(10); -} - -cPlugOsdMenu::~cPlugOsdMenu(void) { - -} - -eOSState cPlugOsdMenu::ProcessKey(eKeys key) { - eOSState state = cOsdMenu::ProcessKey(key); - switch (key) { - case kOk: { - int element = Current(); - if (element%2) - SetDetailView(element); - else - SetMenu(25, true); - state = osContinue; - break; - } case kLeft: { - TextKeyLeft(); - state = osContinue; - break; - } case kRight: { - TextKeyRight(); - state = osContinue; - break; - } case kUp: { - TextKeyUp(); - state = osContinue; - break; - } case kDown: { - TextKeyDown(); - state = osContinue; - break; - } - default: - break; - } - return state; -} - -//*************************************************************************** -// Private Functions -//*************************************************************************** - -void cPlugOsdMenu::SetMenu(int numItems, bool subfolder) { - eMenus menu = subfolder ? meListSub : meListMain; - SetPluginMenu(menu, mtList); - Clear(); - - for (int i=0; i < numItems; i++) { - cSkindesignerOsdItem *item = new cSkindesignerOsdItem(); - //add some tokens to the menu item - stringstream text; - if (i%2) - text << "DetailItem" << (i+1); - else - text << "FolderItem" << (i+1); - item->SetText(text.str().c_str()); - item->AddIntToken("itemnumber", i); - item->AddStringToken("menuitemtext", text.str().c_str()); - - stringstream text2; - text2 << "CurrentItemText" << (i+1) << "\n"; - text2 << "CurrentItemText" << (i+1) << "\n"; - text2 << "CurrentItemText" << (i+1) << "\n"; - text2 << "CurrentItemText" << (i+1) << "\n"; - text2 << "CurrentItemText" << (i+1) << "\n"; - text2 << "CurrentItemText" << (i+1) << "\n"; - item->AddStringToken("currentitemtext", text2.str().c_str()); - - //Loop Token Example - for (int row=0; row<20; row++) { - map<string, string> tokens; - for (int col=0; col<3; col++) { - stringstream key; - stringstream value; - key << "loop1[" << "col" << col << "]"; - value << "menuitem" << i << "-" << row << "x" << col; - tokens.insert(pair<string,string>(key.str(), value.str())); - } - item->AddLoopToken("loop1", tokens); - } - //Add item - bool current = (i==0)?true:false; - Add(item, current); - } - SetHelp("Red", "Green", "Yellow", "Blue"); - Display(); -} - -void cPlugOsdMenu::SetDetailView(int element) { - SetPluginMenu(meDetail, mtText); - Clear(); - ClearTokens(); - - SetText("Text to be displayed if skindesigner templates are not available"); - - AddIntToken("menuitem", element); - AddStringToken("tabtext", "String Token to be displayed if skindesigner template is available"); - - //Loop Token Example - for (int row=0; row<25; row++) { - map<string, string> tokens; - for (int col=0; col<10; col++) { - stringstream key; - stringstream value; - key << "loop1[" << "col" << col << "]"; - value << "row" << row << "-" << "col" << "-" << col; - tokens.insert(pair<string,string>(key.str(), value.str())); - } - AddLoopToken("loop1", tokens); - } - - SetHelp("Red", "Green", "Yellow", "Blue"); - Display(); -} diff --git a/skindesclient-0.0.1/skindesclient.c b/skindesclient-0.0.1/skindesclient.c deleted file mode 100644 index 01bff96..0000000 --- a/skindesclient-0.0.1/skindesclient.c +++ /dev/null @@ -1,147 +0,0 @@ -/* - * skindesclient.c: A plugin for the Video Disk Recorder - * - * See the README file for copyright information and how to reach the author. - * - * $Id$ - */ - -#include <vdr/plugin.h> -#include "osdmenu.c" -#include "libskindesigner/services.h" - -static const char *VERSION = "0.0.1"; -static const char *DESCRIPTION = "SkinDesigner Test Client"; -static const char *MAINMENUENTRY = "Skindesclient"; - -class cPluginSkindesclient : public cPlugin { -private: - // Add any member variables or functions you may need here. -public: - cPluginSkindesclient(void); - virtual ~cPluginSkindesclient(); - virtual const char *Version(void) { return VERSION; } - virtual const char *Description(void) { return DESCRIPTION; } - virtual const char *CommandLineHelp(void); - virtual bool ProcessArgs(int argc, char *argv[]); - virtual bool Initialize(void); - virtual bool Start(void); - virtual void Stop(void); - virtual void Housekeeping(void); - virtual void MainThreadHook(void); - virtual cString Active(void); - virtual time_t WakeupTime(void); - virtual const char *MainMenuEntry(void) { return MAINMENUENTRY; } - virtual cOsdObject *MainMenuAction(void); - virtual cMenuSetupPage *SetupMenu(void); - virtual bool SetupParse(const char *Name, const char *Value); - virtual bool Service(const char *Id, void *Data = NULL); - virtual const char **SVDRPHelpPages(void); - virtual cString SVDRPCommand(const char *Command, const char *Option, int &ReplyCode); - }; - -cPluginSkindesclient::cPluginSkindesclient(void) -{ - -} - -cPluginSkindesclient::~cPluginSkindesclient() -{ -} - -const char *cPluginSkindesclient::CommandLineHelp(void) -{ - return NULL; -} - -bool cPluginSkindesclient::ProcessArgs(int argc, char *argv[]) -{ - return true; -} - -bool cPluginSkindesclient::Initialize(void) -{ - return true; -} - -bool cPluginSkindesclient::Start(void) -{ - RegisterPlugin reg; - reg.name = "skindesclient"; - reg.SetMenu(meListMain, "menulistmain.xml"); - reg.SetMenu(meListSub, "menulistsub.xml"); - reg.SetMenu(meDetail, "menudetail.xml"); - static cPlugin *pSkinDesigner = cPluginManager::GetPlugin("skindesigner"); - if (pSkinDesigner) { - bool ok = pSkinDesigner->Service("RegisterPlugin", ®); - } else { - esyslog("skindesclient: skindesigner not available"); - } - return true; -} - -void cPluginSkindesclient::Stop(void) -{ - // Stop any background activities the plugin is performing. -} - -void cPluginSkindesclient::Housekeeping(void) -{ - // Perform any cleanup or other regular tasks. -} - -void cPluginSkindesclient::MainThreadHook(void) -{ - // Perform actions in the context of the main program thread. - // WARNING: Use with great care - see PLUGINS.html! -} - -cString cPluginSkindesclient::Active(void) -{ - // Return a message string if shutdown should be postponed - return NULL; -} - -time_t cPluginSkindesclient::WakeupTime(void) -{ - // Return custom wakeup time for shutdown script - return 0; -} - -cOsdObject *cPluginSkindesclient::MainMenuAction(void) -{ - cOsdObject *menu = new cPlugOsdMenu(); - return menu; -} - -cMenuSetupPage *cPluginSkindesclient::SetupMenu(void) -{ - // Return a setup menu in case the plugin supports one. - return NULL; -} - -bool cPluginSkindesclient::SetupParse(const char *Name, const char *Value) -{ - // Parse your own setup parameters and store their values. - return false; -} - -bool cPluginSkindesclient::Service(const char *Id, void *Data) -{ - // Handle custom service requests from other plugins - return false; -} - -const char **cPluginSkindesclient::SVDRPHelpPages(void) -{ - // Return help text for SVDRP commands this plugin implements - return NULL; -} - -cString cPluginSkindesclient::SVDRPCommand(const char *Command, const char *Option, int &ReplyCode) -{ - // Process SVDRP commands this plugin implements - return NULL; -} - -VDRPLUGINCREATOR(cPluginSkindesclient); // Don't touch this! diff --git a/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menudetail.xml b/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menudetail.xml deleted file mode 100644 index 82f13ab..0000000 --- a/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menudetail.xml +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE menuplugin SYSTEM "../../../dtd/displaymenuplugin.dtd"> - -<menuplugin x="0" y="0" width="100%" height="100%" fadetime="0"> - <background> - <area x="0" y="0" width="100%" height="100%" layer="1"> - <fill color="{clrTransBlack}" /> - </area> - </background> - <!-- dummyheader --> - <header> - <area x="0" y="0" width="1" height="1" layer="1"> - <fill color="{clrTransparent}" /> - </area> - </header> - <datetime> - <area x="0" y="0" width="1" height="1" layer="1"> - <fill color="{clrTransparent}" /> - </area> - </datetime> - <colorbuttons> - </colorbuttons> - <!-- Available Variables in detail header: - {menuitem} Number of menu item element from list - {tabtext} Text for Tab - --> - <detailheader> - <area x="0" y="0" width="100%" height="20%" layer="2"> - <fill color="{clrTransBlueLight}" /> - </area> - <area x="0" y="0" width="100%" height="20%" layer="3"> - <drawtext x="20" valign="center" font="{light}" fontsize="40%" color="{clrWhite}" text="Header for menuitem {menuitem} detailed information" /> - </area> - </detailheader> - <!-- Available Variables scrollbar: - {height} height in one-tenth of a percent of total height - {offset} offset from top in one-tenth of a percent of total height - --> - <scrollbar> - <area x="98%" y="20%" width="2%" height="65%" layer="3"> - <fill color="{clrWhite}" /> - <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" /> - <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrWhite}" /> - </area> - </scrollbar> - <!-- Available Variables in tab elements: - {menuitem} Number of menu item element from list - {tabtext} Text for Tab - {loop1[]} test array - {loop1[col0]} test array first col - ... - {loop1[col3]} test array fourth col - --> - <!-- TAB TEST1 --> - <tab name="Test1" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4"> - <drawtextbox x="0" y="0" width="96%" font="{light}" fontsize="8%" color="{clrWhite}" text="{tabtext}" /> - </tab> - <!-- TAB TEST2 --> - <tab name="Test2" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4"> - <drawtext x="10" y="0" width="96%" font="{light}" fontsize="8%" color="{clrWhite}" text="{tabtext}" /> - <loop name="loop1" x="0" y="9%" width="{areawidth} - 40" orientation="vertical"> - <drawtext x="20" y="0" width="{areawidth} - 20" font="{light}" fontsize="8%" color="{clrWhite}" text="{loop1[col0]} {loop1[col1]} {loop1[col2]} {loop1[col3]}" /> - </loop> - </tab> - <!-- Available Variables tablabels: - {tabs[]} array with available tab labels - {tabs[title]} title of tab - {tabs[current]} true if tab is displayed currently - --> - <tablabels> - <area x="0" y="85%" width="98%" height="5%" layer="3"> - <loop name="tabs" x="0" y="0" orientation="horizontal"> - <drawrectangle condition="{tabs[current]}" x="0" y="0" width="{width(label)}" height="100%" color="{clrTransBlueLight}" /> - <drawrectangle condition="not{tabs[current]}" x="0" y="0" width="{width(label)}" height="100%" color="{clrTransBlueLight}" /> - <drawrectangle condition="not{tabs[current]}" x="2" y="2" width="{width(label)} - 4" height="{areaheight}-4" color="{clrTransparent}" /> - <drawtext name="label" x="0" valign="center" font="{light}" fontsize="95%" color="{clrWhite}" text=" {tabs[title]} " /> - </loop> - </area> - </tablabels> -</menuplugin>
\ No newline at end of file diff --git a/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menulistmain.xml b/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menulistmain.xml deleted file mode 100644 index 2d88c32..0000000 --- a/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menulistmain.xml +++ /dev/null @@ -1,67 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE menuplugin SYSTEM "../../../dtd/displaymenuplugin.dtd"> - -<menuplugin x="0" y="0" width="100%" height="100%" fadetime="0"> - <!-- Available Variables header: - {title} title of current menu - {vdrversion} running VDR Version - {hasicon} true if a menu icon is available - {icon} path of menu icon - --> - <header> - </header> - - <menuitems x="0" y="10%" orientation="vertical" width="100%" height="82%" align="center" numlistelements="6"> - <!-- Available Variables schedules menu listelement: - {nummenuitem} number of item in list, starts with 1 - {current} - {separator} - {itemnumber} - {menuitemtext} - {currentitemtext} - --> - <listelement> - <!-- Background --> - <area x="1%" width="58%" layer="2"> - <fill condition="not{current}" color="{clrTransparent}" /> - <fill condition="{current}" color="{clrTransBlueLight}" /> - </area> - <area x="1%" width="58%" layer="3"> - <drawtext x="10" valign="center" font="{light}" fontsize="95%" color="{clrWhite}" text="{itemnumber} {menuitemtext}" /> - </area> - </listelement> - <!-- additional element which is drawn for current element --> - <!-- Available Variables schedules menu currentelement: - {itemnumber} - {menuitemtext} - {currentitemtext} - {loop1[]} test array - {loop1[col0]} test array first col - ... - {loop1[col2]} test array third col - --> - <currentelement delay="500" fadetime="0"> - <area x="63%" y="0" width="36%" height="85%" layer="3"> - <drawtext align="center" y="0" font="{semibold}" width="{areawidth}-20" fontsize="15%" color="{clrWhite}" text="{itemnumber}" /> - <drawtext align="center" y="15%" font="{semibold}" width="{areawidth}-20" fontsize="8%" color="{clrWhite}" text="{menuitemtext}" /> - <drawtextbox x="10" y="{areaheight}/3" width="{areawidth}-20" font="{light}" fontsize="{areaheight}/15" color="{clrWhite}" text="{currentitemtext}" /> - </area> - <areascroll mode="carriagereturn" orientation="vertical" delay="1000" scrollspeed="medium" x="63%" y="85%" width="36%" height="15%" layer="3"> - <loop name="loop1" x="0" y="0" orientation="vertical"> - <drawtext x="10" font="{light}" width="{areawidth}-20" fontsize="20%" color="{clrWhite}" text="{loop1[col0]} {loop1[col1]} {loop1[col2]}" /> - </loop> - </areascroll> - </currentelement> - </menuitems> - <!-- Available Variables scrollbar: - {height} height in one-tenth of a percent of total height - {offset} offset from top in one-tenth of a percent of total height - --> - <scrollbar> - <area x="60%" y="10%" width="2%" height="82%" layer="3"> - <fill color="{clrWhite}" /> - <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" /> - <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrWhite}" /> - </area> - </scrollbar> -</menuplugin>
\ No newline at end of file diff --git a/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menulistsub.xml b/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menulistsub.xml deleted file mode 100644 index acc3341..0000000 --- a/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menulistsub.xml +++ /dev/null @@ -1,67 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE menuplugin SYSTEM "../../../dtd/displaymenuplugin.dtd"> - -<menuplugin x="0" y="0" width="100%" height="100%" fadetime="0"> - <!-- Available Variables header: - {title} title of current menu - {vdrversion} running VDR Version - {hasicon} true if a menu icon is available - {icon} path of menu icon - --> - <header> - </header> - - <menuitems x="0" y="10%" orientation="vertical" width="100%" height="82%" align="center" numlistelements="12"> - <!-- Available Variables schedules menu listelement: - {nummenuitem} number of item in list, starts with 1 - {current} - {separator} - {itemnumber} - {menuitemtext} - {currentitemtext} - --> - <listelement> - <!-- Background --> - <area x="1%" width="58%" layer="2"> - <fill condition="not{current}" color="{clrTransparent}" /> - <fill condition="{current}" color="{clrTransBlueLight}" /> - </area> - <area x="1%" width="58%" layer="3"> - <drawtext x="10" valign="center" font="{light}" fontsize="95%" color="{clrWhite}" text="{itemnumber} {menuitemtext}" /> - </area> - </listelement> - <!-- additional element which is drawn for current element --> - <!-- Available Variables schedules menu currentelement: - {itemnumber} - {menuitemtext} - {currentitemtext} - {loop1[]} test array - {loop1[col0]} test array first col - ... - {loop1[col2]} test array third col - --> - <currentelement delay="500" fadetime="0"> - <area x="63%" y="0" width="36%" height="85%" layer="3"> - <drawtext align="center" y="0" font="{semibold}" width="{areawidth}-20" fontsize="15%" color="{clrWhite}" text="{itemnumber}" /> - <drawtext align="center" y="15%" font="{semibold}" width="{areawidth}-20" fontsize="8%" color="{clrWhite}" text="{menuitemtext}" /> - <drawtextbox x="10" y="{areaheight}/3" width="{areawidth}-20" font="{light}" fontsize="{areaheight}/15" color="{clrWhite}" text="{currentitemtext}" /> - </area> - <areascroll mode="carriagereturn" orientation="vertical" delay="1000" scrollspeed="medium" x="63%" y="85%" width="36%" height="15%" layer="3"> - <loop name="loop1" x="0" y="0" orientation="vertical"> - <drawtext x="10" font="{light}" width="{areawidth}-20" fontsize="20%" color="{clrWhite}" text="{loop1[col0]} {loop1[col1]} {loop1[col2]}" /> - </loop> - </areascroll> - </currentelement> - </menuitems> - <!-- Available Variables scrollbar: - {height} height in one-tenth of a percent of total height - {offset} offset from top in one-tenth of a percent of total height - --> - <scrollbar> - <area x="60%" y="10%" width="2%" height="82%" layer="3"> - <fill color="{clrWhite}" /> - <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" /> - <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrWhite}" /> - </area> - </scrollbar> -</menuplugin>
\ No newline at end of file diff --git a/skindesigner.c b/skindesigner.c index dff54a7..36d9387 100644 --- a/skindesigner.c +++ b/skindesigner.c @@ -19,7 +19,7 @@ #endif -static const char *VERSION = "0.2.2"; +static const char *VERSION = "0.3.0"; static const char *DESCRIPTION = trNOOP("Skin Designer"); class cPluginSkinDesigner : public cPlugin { @@ -168,7 +168,7 @@ bool cPluginSkinDesigner::Service(const char *Id, void *Data) { return false; } config.AddPluginMenus(call->name, call->menus); - config.AddPluginViews(call->name, call->views, call->viewElements, call->viewGrids); + config.AddPluginViews(call->name, call->views, call->subViews, call->viewElements, call->viewGrids); if (call->menus.size() > 0) dsyslog("skindesigner: plugin %s has registered %ld menus", call->name.c_str(), call->menus.size()); if (call->views.size() > 0) @@ -195,7 +195,7 @@ bool cPluginSkinDesigner::Service(const char *Id, void *Data) { cSkin *current = Skins.Current(); for (vector<cSkinDesigner*>::iterator skin = skins.begin(); skin != skins.end(); skin++) { if (*skin == current) { - cSkinDisplayPlugin *displayPlugin = (*skin)->DisplayPlugin(call->pluginName, call->viewID); + cSkinDisplayPlugin *displayPlugin = (*skin)->DisplayPlugin(call->pluginName, call->viewID, call->subViewID); if (displayPlugin) { call->displayPlugin = displayPlugin; return true; diff --git a/skins/blackhole/themes/default/icons/ico_activetimer.png b/skins/blackhole/themes/default/icons/ico_activetimer.png Binary files differnew file mode 100644 index 0000000..af4c33c --- /dev/null +++ b/skins/blackhole/themes/default/icons/ico_activetimer.png diff --git a/skins/blackhole/themes/default/icons/ico_arrow_left.png b/skins/blackhole/themes/default/icons/ico_arrow_left.png Binary files differnew file mode 100644 index 0000000..57800c7 --- /dev/null +++ b/skins/blackhole/themes/default/icons/ico_arrow_left.png diff --git a/skins/blackhole/themes/default/icons/ico_arrow_right.png b/skins/blackhole/themes/default/icons/ico_arrow_right.png Binary files differnew file mode 100644 index 0000000..ea45f3a --- /dev/null +++ b/skins/blackhole/themes/default/icons/ico_arrow_right.png diff --git a/skins/blackhole/themes/default/icons/ico_delete_active.png b/skins/blackhole/themes/default/icons/ico_delete_active.png Binary files differnew file mode 100644 index 0000000..f473717 --- /dev/null +++ b/skins/blackhole/themes/default/icons/ico_delete_active.png diff --git a/skins/blackhole/themes/default/icons/ico_delete_inactive.png b/skins/blackhole/themes/default/icons/ico_delete_inactive.png Binary files differnew file mode 100644 index 0000000..21b0a88 --- /dev/null +++ b/skins/blackhole/themes/default/icons/ico_delete_inactive.png diff --git a/skins/blackhole/themes/default/icons/ico_edit_active.png b/skins/blackhole/themes/default/icons/ico_edit_active.png Binary files differnew file mode 100644 index 0000000..ec39699 --- /dev/null +++ b/skins/blackhole/themes/default/icons/ico_edit_active.png diff --git a/skins/blackhole/themes/default/icons/ico_edit_inactive.png b/skins/blackhole/themes/default/icons/ico_edit_inactive.png Binary files differnew file mode 100644 index 0000000..71f016c --- /dev/null +++ b/skins/blackhole/themes/default/icons/ico_edit_inactive.png diff --git a/skins/blackhole/themes/default/icons/ico_info_active.png b/skins/blackhole/themes/default/icons/ico_info_active.png Binary files differnew file mode 100644 index 0000000..c88f76d --- /dev/null +++ b/skins/blackhole/themes/default/icons/ico_info_active.png diff --git a/skins/blackhole/themes/default/icons/ico_info_inactive.png b/skins/blackhole/themes/default/icons/ico_info_inactive.png Binary files differnew file mode 100644 index 0000000..37eeed2 --- /dev/null +++ b/skins/blackhole/themes/default/icons/ico_info_inactive.png diff --git a/skins/blackhole/themes/default/icons/ico_no.png b/skins/blackhole/themes/default/icons/ico_no.png Binary files differnew file mode 100644 index 0000000..47cdba0 --- /dev/null +++ b/skins/blackhole/themes/default/icons/ico_no.png diff --git a/skins/blackhole/themes/default/icons/ico_record_active.png b/skins/blackhole/themes/default/icons/ico_record_active.png Binary files differnew file mode 100644 index 0000000..476da99 --- /dev/null +++ b/skins/blackhole/themes/default/icons/ico_record_active.png diff --git a/skins/blackhole/themes/default/icons/ico_record_inactive.png b/skins/blackhole/themes/default/icons/ico_record_inactive.png Binary files differnew file mode 100644 index 0000000..2a91da3 --- /dev/null +++ b/skins/blackhole/themes/default/icons/ico_record_inactive.png diff --git a/skins/blackhole/themes/default/icons/ico_search_active.png b/skins/blackhole/themes/default/icons/ico_search_active.png Binary files differnew file mode 100644 index 0000000..7bf7bc7 --- /dev/null +++ b/skins/blackhole/themes/default/icons/ico_search_active.png diff --git a/skins/blackhole/themes/default/icons/ico_search_inactive.png b/skins/blackhole/themes/default/icons/ico_search_inactive.png Binary files differnew file mode 100644 index 0000000..4a210bb --- /dev/null +++ b/skins/blackhole/themes/default/icons/ico_search_inactive.png diff --git a/skins/blackhole/themes/default/icons/ico_switchtimer.svg b/skins/blackhole/themes/default/icons/ico_switchtimer.svg new file mode 100644 index 0000000..533305d --- /dev/null +++ b/skins/blackhole/themes/default/icons/ico_switchtimer.svg @@ -0,0 +1,162 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="50" + height="50" + id="svg2" + version="1.1" + inkscape:version="0.91pre2 r13516" + viewBox="0 0 49.999999 50.000001" + sodipodi:docname="ico_switchtimer.svg"> + <defs + id="defs4"> + <linearGradient + inkscape:collect="always" + id="linearGradient4240"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop4242" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop4244" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient4214"> + <stop + style="stop-color:#ffffff;stop-opacity:1" + offset="0" + id="stop4216" /> + <stop + style="stop-color:#000000;stop-opacity:1" + offset="1" + id="stop4218" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient4173"> + <stop + style="stop-color:#2c4255;stop-opacity:1;" + offset="0" + id="stop4175" /> + <stop + style="stop-color:#000000;stop-opacity:1" + offset="1" + id="stop4177" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4173" + id="linearGradient4179" + x1="6.1765633" + y1="1047.7924" + x2="39.66613" + y2="1009.4264" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4214" + id="linearGradient4220" + x1="8.7948284" + y1="1042.3796" + x2="43.393124" + y2="1014.2346" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4240" + id="radialGradient4246" + cx="42.006367" + cy="1003.2948" + fx="42.006367" + fy="1003.2948" + r="23.434333" + gradientTransform="translate(0,-8.3618257e-5)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4214" + id="linearGradient4155" + gradientUnits="userSpaceOnUse" + x1="8.7948284" + y1="1042.3796" + x2="43.393124" + y2="1014.2346" + gradientTransform="matrix(1.0231507,0,0,1.0231507,-0.57876763,-23.784214)" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="10.055058" + inkscape:cx="-0.844769" + inkscape:cy="23.850628" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + inkscape:window-width="1846" + inkscape:window-height="1058" + inkscape:window-x="66" + inkscape:window-y="-8" + inkscape:window-maximized="1" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Ebene 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1002.3622)"> + <circle + style="opacity:1;fill:#ff7f2a;fill-opacity:1;stroke:url(#linearGradient4155);stroke-width:2.046;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4196" + cy="1027.3622" + cx="25" + r="23.976849" + d="M 48.976849,1027.3622 A 23.976849,23.976849 0 0 1 25,1051.339 23.976849,23.976849 0 0 1 1.0231514,1027.3622 23.976849,23.976849 0 0 1 25,1003.3853 a 23.976849,23.976849 0 0 1 23.976849,23.9769 z" /> + <ellipse + cx="25" + cy="1027.3623" + rx="23.434328" + ry="23.43433" + id="ellipse4226" + style="opacity:1;fill:url(#radialGradient4246);fill-opacity:1;stroke:url(#linearGradient4220);stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="M 48.434328,1027.3623 A 23.434328,23.43433 0 0 1 25,1050.7966 23.434328,23.43433 0 0 1 1.5656719,1027.3623 23.434328,23.43433 0 0 1 25,1003.928 a 23.434328,23.43433 0 0 1 23.434328,23.4343 z" /> + <path + style="opacity:0.75;fill:#cccccc;fill-opacity:1;stroke:url(#linearGradient4179);stroke-width:2.0349884;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4137" + r="23.982506" + cy="1027.3622" + cx="24.999998" /> + <ellipse + style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#00ffff;stroke-width:2.0599978;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4164" + cx="24.99999" + cy="1027.3622" + r="23.970001" /> + </g> +</svg> diff --git a/skins/blackhole/themes/default/icons/ico_yes.png b/skins/blackhole/themes/default/icons/ico_yes.png Binary files differnew file mode 100644 index 0000000..2f1af98 --- /dev/null +++ b/skins/blackhole/themes/default/icons/ico_yes.png diff --git a/skins/blackhole/themes/default/skinparts/tvguide_grid_active_hor.svg b/skins/blackhole/themes/default/skinparts/tvguide_grid_active_hor.svg new file mode 100644 index 0000000..5ca5628 --- /dev/null +++ b/skins/blackhole/themes/default/skinparts/tvguide_grid_active_hor.svg @@ -0,0 +1,193 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="300" + height="90" + viewBox="0 0 300 90" + id="svg10995" + version="1.1" + inkscape:version="0.91pre3 r13670" + sodipodi:docname="tvguide_grid_active.svg"> + <defs + id="defs10997"> + <linearGradient + inkscape:collect="always" + id="linearGradient11584"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop11586" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop11588" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient11570"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop11572" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop11574" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient11570" + id="radialGradient11576" + cx="150" + cy="1051.8622" + fx="150" + fy="1051.8622" + r="150" + gradientTransform="matrix(1,0,0,0.00333333,0,1048.356)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient11570" + id="radialGradient11580" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.00333333,0,959.35596)" + cx="150" + cy="1051.8622" + fx="150" + fy="1051.8622" + r="150" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient11584" + id="radialGradient11590" + cx="0.5" + cy="1007.3622" + fx="0.5" + fy="1007.3622" + r="0.5" + gradientTransform="matrix(1,0,0,90,0,-89655.234)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient11584" + id="radialGradient11594" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,90,299,-89655.234)" + cx="0.5" + cy="1007.3622" + fx="0.5" + fy="1007.3622" + r="0.5" /> + <linearGradient + gradientTransform="matrix(0.29739198,0,0,1.2857141,-7.7321871,756.64803)" + inkscape:collect="always" + xlink:href="#linearGradient5073" + id="linearGradient5079" + x1="571.08295" + y1="223.60255" + x2="573.04272" + y2="164.76302" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient5073"> + <stop + style="stop-color:#00284a;stop-opacity:1;" + offset="0" + id="stop5075" /> + <stop + style="stop-color:#000000;stop-opacity:1" + offset="1" + id="stop5077" /> + </linearGradient> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2.502027" + inkscape:cx="168.30828" + inkscape:cy="138.77937" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + inkscape:window-width="1531" + inkscape:window-height="878" + inkscape:window-x="61" + inkscape:window-y="-8" + inkscape:window-maximized="1" /> + <metadata + id="metadata11000"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Ebene 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-962.36218)"> + <rect + style="display:inline;opacity:1;fill:url(#linearGradient5079);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4576" + width="300" + height="89.999992" + x="4.9999999e-006" + y="962.36218" + ry="0.13425298" /> + <rect + style="opacity:1;fill:url(#radialGradient11576);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect11568" + width="300" + height="1" + x="0" + y="1051.3622" /> + <rect + y="962.36218" + x="0" + height="1" + width="300" + id="rect11578" + style="opacity:1;fill:url(#radialGradient11580);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="opacity:1;fill:url(#radialGradient11590);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect11582" + width="1" + height="90" + x="0" + y="962.36218" /> + <rect + y="962.36218" + x="299" + height="90" + width="1" + id="rect11592" + style="opacity:1;fill:url(#radialGradient11594);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="opacity:1;fill:#000000;fill-opacity:0;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4166" + width="364.90414" + height="161.46909" + x="-51.15852" + y="910.07751" /> + </g> +</svg> diff --git a/skins/blackhole/themes/default/skinparts/tvguide_grid_active_ver.svg b/skins/blackhole/themes/default/skinparts/tvguide_grid_active_ver.svg new file mode 100644 index 0000000..dccad1b --- /dev/null +++ b/skins/blackhole/themes/default/skinparts/tvguide_grid_active_ver.svg @@ -0,0 +1,193 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="300" + height="300" + viewBox="0 0 300 300" + id="svg10995" + version="1.1" + inkscape:version="0.91pre3 r13670" + sodipodi:docname="tvguide_grid_active_ver.svg"> + <defs + id="defs10997"> + <linearGradient + inkscape:collect="always" + id="linearGradient11584"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop11586" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop11588" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient11570"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop11572" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop11574" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient11570" + id="radialGradient11576" + cx="150" + cy="1051.8622" + fx="150" + fy="1051.8622" + r="150" + gradientTransform="matrix(1,0,0,0.00333333,0,1048.356)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient11570" + id="radialGradient11580" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.00333333,0,749.35595)" + cx="150" + cy="1051.8622" + fx="150" + fy="1051.8622" + r="150" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient11584" + id="radialGradient11590" + cx="0.5" + cy="1007.3622" + fx="0.5" + fy="1007.3622" + r="0.5" + gradientTransform="matrix(1,0,0,300,0,-301306.29)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient11584" + id="radialGradient11594" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,300,299,-301306.29)" + cx="0.5" + cy="1007.3622" + fx="0.5" + fy="1007.3622" + r="0.5" /> + <linearGradient + gradientTransform="matrix(0.29739197,0,0,4.2857138,-7.7321827,66.64835)" + inkscape:collect="always" + xlink:href="#linearGradient5073" + id="linearGradient5079" + x1="571.08295" + y1="223.60255" + x2="578.41846" + y2="158.79453" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient5073"> + <stop + style="stop-color:#00284a;stop-opacity:1;" + offset="0" + id="stop5075" /> + <stop + style="stop-color:#000000;stop-opacity:1" + offset="1" + id="stop5077" /> + </linearGradient> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2.502027" + inkscape:cx="104.75981" + inkscape:cy="167.10004" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + inkscape:window-width="1531" + inkscape:window-height="878" + inkscape:window-x="61" + inkscape:window-y="-8" + inkscape:window-maximized="1" /> + <metadata + id="metadata11000"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Ebene 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-752.36218)"> + <rect + style="display:inline;opacity:1;fill:url(#linearGradient5079);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4576" + width="300" + height="299.99997" + x="9.1287093e-006" + y="752.36218" + ry="0.44750994" /> + <rect + style="opacity:1;fill:url(#radialGradient11576);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect11568" + width="300" + height="1" + x="0" + y="1051.3622" /> + <rect + y="752.36218" + x="0" + height="1" + width="300" + id="rect11578" + style="opacity:1;fill:url(#radialGradient11580);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="opacity:1;fill:url(#radialGradient11590);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect11582" + width="1" + height="300" + x="0" + y="752.36218" /> + <rect + y="752.36218" + x="299" + height="300" + width="1" + id="rect11592" + style="opacity:1;fill:url(#radialGradient11594);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="opacity:1;fill:#000000;fill-opacity:0;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4166" + width="364.90414" + height="161.46909" + x="-51.15852" + y="910.07751" /> + </g> +</svg> diff --git a/skins/blackhole/themes/default/skinparts/tvguide_grid_bright_hor.svg b/skins/blackhole/themes/default/skinparts/tvguide_grid_bright_hor.svg new file mode 100644 index 0000000..2451550 --- /dev/null +++ b/skins/blackhole/themes/default/skinparts/tvguide_grid_bright_hor.svg @@ -0,0 +1,184 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="300" + height="90" + viewBox="0 0 300 90" + id="svg10995" + version="1.1" + inkscape:version="0.91pre3 r13670" + sodipodi:docname="tvguide_grid_bright.svg"> + <defs + id="defs10997"> + <linearGradient + inkscape:collect="always" + id="linearGradient11584"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop11586" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop11588" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient11570"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop11572" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop11574" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient11560"> + <stop + style="stop-color:#000000;stop-opacity:1" + offset="0" + id="stop11562" /> + <stop + style="stop-color:#444444;stop-opacity:1" + offset="1" + id="stop11564" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient11560" + id="linearGradient11566" + x1="4.3964353" + y1="1040.9349" + x2="295.20389" + y2="978.58551" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient11570" + id="radialGradient11576" + cx="150" + cy="1051.8622" + fx="150" + fy="1051.8622" + r="150" + gradientTransform="matrix(1,0,0,0.00333333,0,1048.356)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient11570" + id="radialGradient11580" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.00333333,0,959.35596)" + cx="150" + cy="1051.8622" + fx="150" + fy="1051.8622" + r="150" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient11584" + id="radialGradient11590" + cx="0.5" + cy="1007.3622" + fx="0.5" + fy="1007.3622" + r="0.5" + gradientTransform="matrix(1,0,0,90,0,-89655.234)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient11584" + id="radialGradient11594" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,90,299,-89655.234)" + cx="0.5" + cy="1007.3622" + fx="0.5" + fy="1007.3622" + r="0.5" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2.502027" + inkscape:cx="107.8801" + inkscape:cy="42.857143" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + inkscape:window-width="1531" + inkscape:window-height="878" + inkscape:window-x="61" + inkscape:window-y="-8" + inkscape:window-maximized="1" /> + <metadata + id="metadata11000"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Ebene 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-962.36218)"> + <rect + style="opacity:1;fill:url(#linearGradient11566);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect11543" + width="300" + height="90" + x="0" + y="962.36218" /> + <rect + style="opacity:1;fill:url(#radialGradient11576);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect11568" + width="300" + height="1" + x="0" + y="1051.3622" /> + <rect + y="962.36218" + x="0" + height="1" + width="300" + id="rect11578" + style="opacity:1;fill:url(#radialGradient11580);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="opacity:1;fill:url(#radialGradient11590);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect11582" + width="1" + height="90" + x="0" + y="962.36218" /> + <rect + y="962.36218" + x="299" + height="90" + width="1" + id="rect11592" + style="opacity:1;fill:url(#radialGradient11594);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> +</svg> diff --git a/skins/blackhole/themes/default/skinparts/tvguide_grid_bright_ver.svg b/skins/blackhole/themes/default/skinparts/tvguide_grid_bright_ver.svg new file mode 100644 index 0000000..a4ee2c5 --- /dev/null +++ b/skins/blackhole/themes/default/skinparts/tvguide_grid_bright_ver.svg @@ -0,0 +1,185 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="300" + height="300" + viewBox="0 0 300 300" + id="svg10995" + version="1.1" + inkscape:version="0.91pre3 r13670" + sodipodi:docname="tvguide_grid_bright_ver.svg"> + <defs + id="defs10997"> + <linearGradient + inkscape:collect="always" + id="linearGradient11584"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop11586" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop11588" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient11570"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop11572" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop11574" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient11560"> + <stop + style="stop-color:#000000;stop-opacity:1" + offset="0" + id="stop11562" /> + <stop + style="stop-color:#444444;stop-opacity:1" + offset="1" + id="stop11564" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient11560" + id="linearGradient11566" + x1="4.3964353" + y1="1040.9349" + x2="295.20389" + y2="978.58551" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.3333333,0,-2455.5118)" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient11570" + id="radialGradient11576" + cx="150" + cy="1051.8622" + fx="150" + fy="1051.8622" + r="150" + gradientTransform="matrix(1,0,0,0.00333333,0,1048.356)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient11570" + id="radialGradient11580" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.00333333,0,749.35596)" + cx="150" + cy="1051.8622" + fx="150" + fy="1051.8622" + r="150" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient11584" + id="radialGradient11590" + cx="0.5" + cy="1007.3622" + fx="0.5" + fy="1007.3622" + r="0.5" + gradientTransform="matrix(1,0,0,300,0,-301306.29)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient11584" + id="radialGradient11594" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,300,299,-301306.29)" + cx="0.5" + cy="1007.3622" + fx="0.5" + fy="1007.3622" + r="0.5" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2.502027" + inkscape:cx="131.96205" + inkscape:cy="138.77937" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + inkscape:window-width="1531" + inkscape:window-height="878" + inkscape:window-x="61" + inkscape:window-y="-8" + inkscape:window-maximized="1" /> + <metadata + id="metadata11000"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Ebene 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-752.36218)"> + <rect + style="opacity:1;fill:url(#linearGradient11566);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect11543" + width="300" + height="300" + x="0" + y="752.36218" /> + <rect + style="opacity:1;fill:url(#radialGradient11576);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect11568" + width="300" + height="1" + x="0" + y="1051.3622" /> + <rect + y="752.36218" + x="0" + height="1" + width="300" + id="rect11578" + style="opacity:1;fill:url(#radialGradient11580);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="opacity:1;fill:url(#radialGradient11590);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect11582" + width="1" + height="300" + x="0" + y="752.36218" /> + <rect + y="752.36218" + x="299" + height="300" + width="1" + id="rect11592" + style="opacity:1;fill:url(#radialGradient11594);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> +</svg> diff --git a/skins/blackhole/themes/default/skinparts/tvguide_grid_dark_hor.svg b/skins/blackhole/themes/default/skinparts/tvguide_grid_dark_hor.svg new file mode 100644 index 0000000..7208924 --- /dev/null +++ b/skins/blackhole/themes/default/skinparts/tvguide_grid_dark_hor.svg @@ -0,0 +1,184 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="300" + height="90" + viewBox="0 0 300 90" + id="svg10995" + version="1.1" + inkscape:version="0.91pre3 r13670" + sodipodi:docname="tvguide_grid_dark.svg"> + <defs + id="defs10997"> + <linearGradient + inkscape:collect="always" + id="linearGradient11584"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop11586" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop11588" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient11570"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop11572" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop11574" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient11560"> + <stop + style="stop-color:#000000;stop-opacity:1" + offset="0" + id="stop11562" /> + <stop + style="stop-color:#222222;stop-opacity:1" + offset="1" + id="stop11564" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient11560" + id="linearGradient11566" + x1="1.9983797" + y1="1039.736" + x2="297.60196" + y2="977.38647" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient11570" + id="radialGradient11576" + cx="150" + cy="1051.8622" + fx="150" + fy="1051.8622" + r="150" + gradientTransform="matrix(1,0,0,0.00333333,0,1048.356)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient11570" + id="radialGradient11580" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.00333333,0,959.35596)" + cx="150" + cy="1051.8622" + fx="150" + fy="1051.8622" + r="150" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient11584" + id="radialGradient11590" + cx="0.5" + cy="1007.3622" + fx="0.5" + fy="1007.3622" + r="0.5" + gradientTransform="matrix(1,0,0,90,0,-89655.234)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient11584" + id="radialGradient11594" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,90,299,-89655.234)" + cx="0.5" + cy="1007.3622" + fx="0.5" + fy="1007.3622" + r="0.5" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2.502027" + inkscape:cx="107.8801" + inkscape:cy="42.857143" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + inkscape:window-width="1531" + inkscape:window-height="878" + inkscape:window-x="61" + inkscape:window-y="-8" + inkscape:window-maximized="1" /> + <metadata + id="metadata11000"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Ebene 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-962.36218)"> + <rect + style="opacity:1;fill:url(#linearGradient11566);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect11543" + width="300" + height="90" + x="0" + y="962.36218" /> + <rect + style="opacity:1;fill:url(#radialGradient11576);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect11568" + width="300" + height="1" + x="0" + y="1051.3622" /> + <rect + y="962.36218" + x="0" + height="1" + width="300" + id="rect11578" + style="opacity:1;fill:url(#radialGradient11580);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="opacity:1;fill:url(#radialGradient11590);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect11582" + width="1" + height="90" + x="0" + y="962.36218" /> + <rect + y="962.36218" + x="299" + height="90" + width="1" + id="rect11592" + style="opacity:1;fill:url(#radialGradient11594);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> +</svg> diff --git a/skins/blackhole/themes/default/skinparts/tvguide_grid_dark_ver.svg b/skins/blackhole/themes/default/skinparts/tvguide_grid_dark_ver.svg new file mode 100644 index 0000000..bef7868 --- /dev/null +++ b/skins/blackhole/themes/default/skinparts/tvguide_grid_dark_ver.svg @@ -0,0 +1,185 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="300" + height="300" + viewBox="0 0 300 300" + id="svg10995" + version="1.1" + inkscape:version="0.91pre3 r13670" + sodipodi:docname="tvguide_grid_dark_ver.svg"> + <defs + id="defs10997"> + <linearGradient + inkscape:collect="always" + id="linearGradient11584"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop11586" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop11588" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient11570"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop11572" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop11574" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient11560"> + <stop + style="stop-color:#000000;stop-opacity:1" + offset="0" + id="stop11562" /> + <stop + style="stop-color:#222222;stop-opacity:1" + offset="1" + id="stop11564" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient11560" + id="linearGradient11566" + x1="1.9983797" + y1="1039.736" + x2="297.60196" + y2="977.38647" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.3333333,0,-2455.5118)" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient11570" + id="radialGradient11576" + cx="150" + cy="1051.8622" + fx="150" + fy="1051.8622" + r="150" + gradientTransform="matrix(1,0,0,0.00333333,0,1048.356)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient11570" + id="radialGradient11580" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.00333333,0,749.35596)" + cx="150" + cy="1051.8622" + fx="150" + fy="1051.8622" + r="150" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient11584" + id="radialGradient11590" + cx="0.5" + cy="1007.3622" + fx="0.5" + fy="1007.3622" + r="0.5" + gradientTransform="matrix(1.1,0,0,300,0,-301306.29)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient11584" + id="radialGradient11594" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,300,299,-301306.29)" + cx="0.5" + cy="1007.3622" + fx="0.5" + fy="1007.3622" + r="0.5" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2.502027" + inkscape:cx="140.90371" + inkscape:cy="42.857143" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + inkscape:window-width="1531" + inkscape:window-height="878" + inkscape:window-x="61" + inkscape:window-y="-8" + inkscape:window-maximized="1" /> + <metadata + id="metadata11000"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Ebene 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-752.36218)"> + <rect + style="opacity:1;fill:url(#linearGradient11566);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect11543" + width="300" + height="300" + x="0" + y="752.36218" /> + <rect + style="opacity:1;fill:url(#radialGradient11576);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect11568" + width="300" + height="1" + x="0" + y="1051.3622" /> + <rect + y="752.36218" + x="0" + height="1" + width="300" + id="rect11578" + style="opacity:1;fill:url(#radialGradient11580);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="opacity:1;fill:url(#radialGradient11590);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect11582" + width="1.1" + height="300" + x="0" + y="752.36218" /> + <rect + y="752.36218" + x="299" + height="300" + width="1" + id="rect11592" + style="opacity:1;fill:url(#radialGradient11594);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> +</svg> diff --git a/skins/blackhole/themes/default/skinparts/tvguide_timelinegrid_bright_hor.svg b/skins/blackhole/themes/default/skinparts/tvguide_timelinegrid_bright_hor.svg new file mode 100644 index 0000000..b3bd1c6 --- /dev/null +++ b/skins/blackhole/themes/default/skinparts/tvguide_timelinegrid_bright_hor.svg @@ -0,0 +1,185 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="220" + height="54" + viewBox="0 0 220 54.000001" + id="svg10367" + version="1.1" + inkscape:version="0.91pre3 r13670" + sodipodi:docname="tvguide_timelinegrid_bright.svg"> + <defs + id="defs10369"> + <linearGradient + inkscape:collect="always" + id="linearGradient10951"> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop10953" /> + <stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop10955" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient10937"> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop10939" /> + <stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop10941" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient10925"> + <stop + style="stop-color:#aaaaaa;stop-opacity:1" + offset="0" + id="stop10927" /> + <stop + style="stop-color:#dddddd;stop-opacity:1" + offset="1" + id="stop10929" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient10925" + id="linearGradient10931" + x1="0.45233849" + y1="1025.76" + x2="220.45234" + y2="1025.76" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-0.45233849,-0.39786977)" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient10937" + id="radialGradient10943" + cx="110" + cy="1051.8622" + fx="110" + fy="1051.8622" + r="110" + gradientTransform="matrix(1,0,0,0.00454545,0,1047.081)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient10937" + id="radialGradient10947" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.00454545,0,994.08096)" + cx="110" + cy="1051.8622" + fx="110" + fy="1051.8622" + r="110" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient10951" + id="radialGradient10957" + cx="0.5" + cy="1025.3621" + fx="0.5" + fy="1025.3621" + r="0.5" + gradientTransform="matrix(1,0,0,54,0,-54344.192)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient10951" + id="radialGradient10961" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,54,219,-54344.192)" + cx="0.5" + cy="1025.3621" + fx="0.5" + fy="1025.3621" + r="0.5" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="4.4214676" + inkscape:cx="113.12449" + inkscape:cy="43.594485" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + inkscape:window-width="1531" + inkscape:window-height="878" + inkscape:window-x="61" + inkscape:window-y="-8" + inkscape:window-maximized="1" /> + <metadata + id="metadata10372"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Ebene 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-998.36214)"> + <rect + style="opacity:1;fill:url(#linearGradient10931);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect10915" + width="220" + height="54" + x="0" + y="998.36212" /> + <rect + style="opacity:1;fill:url(#radialGradient10943);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect10935" + width="220" + height="1" + x="0" + y="1051.3622" /> + <rect + y="998.36212" + x="0" + height="1" + width="220" + id="rect10945" + style="opacity:1;fill:url(#radialGradient10947);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="opacity:1;fill:url(#radialGradient10957);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect10949" + width="1" + height="54" + x="0" + y="998.36212" /> + <rect + y="998.36212" + x="219" + height="54" + width="1" + id="rect10959" + style="opacity:1;fill:url(#radialGradient10961);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> +</svg> diff --git a/skins/blackhole/themes/default/skinparts/tvguide_timelinegrid_bright_ver.svg b/skins/blackhole/themes/default/skinparts/tvguide_timelinegrid_bright_ver.svg new file mode 100644 index 0000000..e170a67 --- /dev/null +++ b/skins/blackhole/themes/default/skinparts/tvguide_timelinegrid_bright_ver.svg @@ -0,0 +1,186 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="150" + height="75" + viewBox="0 0 150 75.000001" + id="svg10367" + version="1.1" + inkscape:version="0.91pre3 r13670" + sodipodi:docname="tvguide_timelinegrid_bright_ver.svg"> + <defs + id="defs10369"> + <linearGradient + inkscape:collect="always" + id="linearGradient10951"> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop10953" /> + <stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop10955" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient10937"> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop10939" /> + <stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop10941" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient10925"> + <stop + style="stop-color:#aaaaaa;stop-opacity:1" + offset="0" + id="stop10927" /> + <stop + style="stop-color:#dddddd;stop-opacity:1" + offset="1" + id="stop10929" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient10925" + id="linearGradient10931" + x1="0.45233849" + y1="1025.76" + x2="220.45235" + y2="1025.76" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.68181818,0,0,1.3888889,-0.30841261,-409.80453)" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient10937" + id="radialGradient10943" + cx="110" + cy="1051.8622" + fx="110" + fy="1051.8622" + r="110" + gradientTransform="matrix(0.68181818,0,0,0.00454545,0,1047.081)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient10937" + id="radialGradient10947" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.68181818,0,0,0.00454545,0,973.08098)" + cx="110" + cy="1051.8622" + fx="110" + fy="1051.8622" + r="110" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient10951" + id="radialGradient10957" + cx="0.5" + cy="1025.3621" + fx="0.5" + fy="1025.3621" + r="0.5" + gradientTransform="matrix(1,0,0,75,0,-75887.296)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient10951" + id="radialGradient10961" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,75,149,-75887.296)" + cx="0.5" + cy="1025.3621" + fx="0.5" + fy="1025.3621" + r="0.5" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="4.4214676" + inkscape:cx="109.67027" + inkscape:cy="34.547715" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + inkscape:window-width="1531" + inkscape:window-height="878" + inkscape:window-x="61" + inkscape:window-y="-8" + inkscape:window-maximized="1" + borderlayer="true" /> + <metadata + id="metadata10372"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Ebene 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-977.36214)"> + <rect + style="opacity:1;fill:url(#linearGradient10931);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect10915" + width="150" + height="75" + x="0" + y="977.36212" /> + <rect + style="opacity:1;fill:url(#radialGradient10943);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect10935" + width="150" + height="1" + x="0" + y="1051.3622" /> + <rect + y="977.36212" + x="0" + height="1" + width="150" + id="rect10945" + style="opacity:1;fill:url(#radialGradient10947);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="opacity:1;fill:url(#radialGradient10957);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect10949" + width="1" + height="75" + x="0" + y="977.36212" /> + <rect + y="977.36212" + x="149" + height="75" + width="1" + id="rect10959" + style="opacity:1;fill:url(#radialGradient10961);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> +</svg> diff --git a/skins/blackhole/themes/default/skinparts/tvguide_timelinegrid_dark_hor.svg b/skins/blackhole/themes/default/skinparts/tvguide_timelinegrid_dark_hor.svg new file mode 100644 index 0000000..cf20435 --- /dev/null +++ b/skins/blackhole/themes/default/skinparts/tvguide_timelinegrid_dark_hor.svg @@ -0,0 +1,209 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="220" + height="54" + viewBox="0 0 220 54.000001" + id="svg10367" + version="1.1" + inkscape:version="0.91pre3 r13670" + sodipodi:docname="tvguide_timelinegrid_dark.svg"> + <defs + id="defs10369"> + <linearGradient + inkscape:collect="always" + id="linearGradient10987"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop10989" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop10991" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient10979"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop10981" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop10983" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient10971"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop10973" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop10975" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient10963"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop10965" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop10967" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient10925"> + <stop + style="stop-color:#000000;stop-opacity:1" + offset="0" + id="stop10927" /> + <stop + style="stop-color:#444444;stop-opacity:1" + offset="1" + id="stop10929" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient10925" + id="linearGradient10931" + x1="0.45233849" + y1="1025.76" + x2="220.45234" + y2="1025.76" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-0.45233849,-0.39786977)" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient10963" + id="radialGradient10969" + cx="110" + cy="998.86212" + fx="110" + fy="998.86212" + r="110" + gradientTransform="matrix(1,0,0,0.00454545,0,994.32184)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient10971" + id="radialGradient10977" + cx="219.5" + cy="1025.3621" + fx="219.5" + fy="1025.3621" + r="0.5" + gradientTransform="matrix(1,0,0,54,0,-54344.192)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient10979" + id="radialGradient10985" + cx="110" + cy="1051.8622" + fx="110" + fy="1051.8622" + r="110" + gradientTransform="matrix(1,0,0,0.00454545,0,1047.081)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient10987" + id="radialGradient10993" + cx="0.5" + cy="1025.3621" + fx="0.5" + fy="1025.3621" + r="0.5" + gradientTransform="matrix(1,0,0,54,0,-54344.192)" + gradientUnits="userSpaceOnUse" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="4.4214676" + inkscape:cx="113.12449" + inkscape:cy="43.594485" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + inkscape:window-width="1531" + inkscape:window-height="878" + inkscape:window-x="61" + inkscape:window-y="-8" + inkscape:window-maximized="1" /> + <metadata + id="metadata10372"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Ebene 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-998.36214)"> + <rect + style="opacity:1;fill:url(#linearGradient10931);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect10915" + width="220" + height="54" + x="0" + y="998.36212" /> + <rect + style="opacity:1;fill:url(#radialGradient10985);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect10935" + width="220" + height="1" + x="0" + y="1051.3622" /> + <rect + y="998.36212" + x="0" + height="1" + width="220" + id="rect10945" + style="opacity:1;fill:url(#radialGradient10969);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="opacity:1;fill:url(#radialGradient10993);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect10949" + width="1" + height="54" + x="0" + y="998.36212" /> + <rect + y="998.36212" + x="219" + height="54" + width="1" + id="rect10959" + style="opacity:1;fill:url(#radialGradient10977);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> +</svg> diff --git a/skins/blackhole/themes/default/skinparts/tvguide_timelinegrid_dark_ver.svg b/skins/blackhole/themes/default/skinparts/tvguide_timelinegrid_dark_ver.svg new file mode 100644 index 0000000..7ea3449 --- /dev/null +++ b/skins/blackhole/themes/default/skinparts/tvguide_timelinegrid_dark_ver.svg @@ -0,0 +1,209 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="150" + height="75" + viewBox="0 0 150 75.000001" + id="svg10367" + version="1.1" + inkscape:version="0.91pre3 r13670" + sodipodi:docname="tvguide_timelinegrid_dark_ver.svg"> + <defs + id="defs10369"> + <linearGradient + inkscape:collect="always" + id="linearGradient10987"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop10989" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop10991" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient10979"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop10981" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop10983" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient10971"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop10973" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop10975" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient10963"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop10965" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop10967" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient10925"> + <stop + style="stop-color:#000000;stop-opacity:1" + offset="0" + id="stop10927" /> + <stop + style="stop-color:#444444;stop-opacity:1" + offset="1" + id="stop10929" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient10925" + id="linearGradient10931" + x1="0.45233849" + y1="1025.76" + x2="220.45235" + y2="1025.76" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.68181818,0,0,1.3888889,-0.30841261,-409.80453)" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient10963" + id="radialGradient10969" + cx="110" + cy="998.86212" + fx="110" + fy="998.86212" + r="110" + gradientTransform="matrix(0.68181818,0,0,0.00454545,0,973.32186)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient10971" + id="radialGradient10977" + cx="219.5" + cy="1025.3621" + fx="219.5" + fy="1025.3621" + r="0.5" + gradientTransform="matrix(1,0,0,75,-70,-75887.296)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient10979" + id="radialGradient10985" + cx="110" + cy="1051.8622" + fx="110" + fy="1051.8622" + r="110" + gradientTransform="matrix(0.68181818,0,0,0.00454545,0,1047.081)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient10987" + id="radialGradient10993" + cx="0.5" + cy="1025.3621" + fx="0.5" + fy="1025.3621" + r="0.5" + gradientTransform="matrix(1,0,0,75,0,-75887.296)" + gradientUnits="userSpaceOnUse" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="4.4214676" + inkscape:cx="95.855427" + inkscape:cy="43.594485" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + inkscape:window-width="1531" + inkscape:window-height="878" + inkscape:window-x="61" + inkscape:window-y="-8" + inkscape:window-maximized="1" /> + <metadata + id="metadata10372"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Ebene 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-977.36214)"> + <rect + style="opacity:1;fill:url(#linearGradient10931);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect10915" + width="150" + height="75" + x="0" + y="977.36212" /> + <rect + style="opacity:1;fill:url(#radialGradient10985);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect10935" + width="150" + height="1" + x="0" + y="1051.3622" /> + <rect + y="977.36212" + x="0" + height="1" + width="150" + id="rect10945" + style="opacity:1;fill:url(#radialGradient10969);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="opacity:1;fill:url(#radialGradient10993);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect10949" + width="1" + height="75" + x="0" + y="977.36212" /> + <rect + y="977.36212" + x="149" + height="75" + width="1" + id="rect10959" + style="opacity:1;fill:url(#radialGradient10977);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> +</svg> diff --git a/skins/blackhole/themes/default/skinparts/tvguideheader.svg b/skins/blackhole/themes/default/skinparts/tvguideheader.svg new file mode 100644 index 0000000..15d8a00 --- /dev/null +++ b/skins/blackhole/themes/default/skinparts/tvguideheader.svg @@ -0,0 +1,171 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="1920" + height="216" + viewBox="0 0 1920 216" + id="svg8417" + version="1.1" + inkscape:version="0.91pre3 r13670" + sodipodi:docname="tvguideheader.svg"> + <defs + id="defs8419"> + <linearGradient + inkscape:collect="always" + id="linearGradient8989"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop8991" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop8993" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient8975"> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop8977" /> + <stop + style="stop-color:#999999;stop-opacity:1" + offset="1" + id="stop8979" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient8975" + id="linearGradient8981" + x1="0.7203052" + y1="946.20978" + x2="2208.1833" + y2="857.31635" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-2.0203052,-838.20978)" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8989" + id="radialGradient8995" + cx="1199" + cy="944.79773" + fx="1199" + fy="944.79773" + r="1" + gradientTransform="matrix(1,0,0,100,0,-93534.975)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8989" + id="radialGradient8995-8" + cx="1199" + cy="944.79773" + fx="1199" + fy="944.79773" + r="1" + gradientTransform="matrix(1,0,0,100,348,-93534.974)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8989" + id="radialGradient9031" + cx="1371.6094" + cy="842.61261" + fx="1371.6094" + fy="842.61261" + r="174" + gradientTransform="matrix(1,0,0,0.00574713,2,842.51954)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8989" + id="radialGradient9035" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.00574713,0,1038.5195)" + cx="1371.6094" + cy="842.61261" + fx="1371.6094" + fy="842.61261" + r="174" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.3330036" + inkscape:cx="907.03522" + inkscape:cy="-144.31449" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + inkscape:window-width="1531" + inkscape:window-height="878" + inkscape:window-x="61" + inkscape:window-y="-8" + inkscape:window-maximized="1" /> + <metadata + id="metadata8422"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Ebene 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-836.36214)"> + <path + style="opacity:1;fill:url(#linearGradient8981);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="M 0 0 L 0 216 L 1920 216 L 1920 0 L 0 0 z M 1200 12 L 1546 12 L 1546 206 L 1200 206 L 1200 12 z " + transform="translate(0,836.36214)" + id="rect8965" /> + <rect + style="opacity:1;fill:url(#radialGradient8995);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect8987" + width="2" + height="200" + x="1198" + y="844.79773" /> + <rect + style="opacity:1;fill:url(#radialGradient8995-8);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect8987-9" + width="2" + height="200" + x="1546" + y="844.79816" /> + <rect + style="opacity:1;fill:url(#radialGradient9031);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect9023" + width="348" + height="2" + x="1199.6094" + y="846.36212" /> + <rect + y="1042.3621" + x="1197.6094" + height="2" + width="348" + id="rect9033" + style="opacity:1;fill:url(#radialGradient9035);fill-opacity:1;stroke:none;stroke-width:2.5999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> +</svg> diff --git a/skins/blackhole/themes/default/theme.xml b/skins/blackhole/themes/default/theme.xml index 4eb66a9..6598af8 100644 --- a/skins/blackhole/themes/default/theme.xml +++ b/skins/blackhole/themes/default/theme.xml @@ -14,8 +14,10 @@ <color name="clrWhite">FFFFFFFF</color> <color name="clrBlack">FF000000</color> <color name="clrGray">FF999999</color> + <color name="clrGray2">FF777777</color> <color name="clrRedTrans">55FF0000</color> <color name="clrBlackTrans">99000000</color> + <color name="clrBlueMenu">FF00284A</color> </colors> <!-- these variables can be used everywhere in the templates diff --git a/skins/blackhole/xmlfiles/plug-tvguideng-detail.xml b/skins/blackhole/xmlfiles/plug-tvguideng-detail.xml index f7a0aab..dbe61ef 100644 --- a/skins/blackhole/xmlfiles/plug-tvguideng-detail.xml +++ b/skins/blackhole/xmlfiles/plug-tvguideng-detail.xml @@ -1,15 +1,454 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE displayplugin SYSTEM "../../../dtd/displayplugin.dtd"> -<displayplugin x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="55%" scaletvy="30%" scaletvwidth="40%" scaletvheight="40%"> +<displayplugin x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="55%" scaletvy="10%" scaletvwidth="40%" scaletvheight="40%"> <viewelement name="background"> - <area x="0" y="0" width="100%" height="30%" layer="1"> - <fill color="{clrRed}" /> + <area x="0" y="0" width="100%" height="100%" layer="1"> + <drawimage imagetype="skinpart" path="displaymenubacktv" x="0" y="0" width="100%" height="100%"/> </area> - <area x="0" y="0" width="100%" height="30%" layer="2"> - <drawtext align="center" valign="center" font="{regular}" fontsize="20%" color="{clrWhite}" text="{backtext} {zahl}" /> + <area x="0" y="0" width="83%" height="8%" layer="2"> + <drawimage imagetype="skinpart" path="displaymenuheader" x="0" y="0" width="100%" height="100%"/> + </area> + <area x="74%" y="0" width="26%" height="46%" layer="3"> + <drawimage imagetype="skinpart" path="displaymenucorner" x="0" y="0" width="100%" height="100%"/> + </area> + <area x="{areawidth}*0.865" y="{areawidth}*0.005" width="13%" height="{areawidth}*0.13" layer="4"> + <drawimage imagetype="skinpart" path="watchback" x="0" y="0" width="100%" height="100%"/> + </area> + </viewelement> + + <scrollbar> + <area x="52%" y="10%" width="2%" height="80%" layer="2"> + <drawimage imagetype="skinpart" path="scrollbarback" x="0" y="0" width="100%" height="100%"/> + </area> + <area x="52%" y="10%" width="2%" height="80%" layer="3"> + <drawimage imagetype="skinpart" path="scrollbar" x="0" y="{areaheight} * {offset} / 1000" width="100%" height="{areaheight} * {height} / 1000"/> + </area> + </scrollbar> + + <!-- Available Variables Footer: + {red1} true if red button is button 1 + {red2} true if red button is button 2 + {red3} true if red button is button 3 + {red4} true if red button is button 4 + {green1} true if green button is button 1 + {green2} true if green button is button 2 + {green3} true if green button is button 3 + {green4} true if green button is button 4 + {yellow1} true if yellow button is button 1 + {yellow2} true if yellow button is button 2 + {yellow3} true if yellow button is button 3 + {yellow4} true if yellow button is button 4 + {blue1} true if blue button is button 1 + {blue2} true if blue button is button 2 + {blue3} true if blue button is button 3 + {blue4} true if blue button is button 4 + {red} label of red button + {green} label of green button + {yellow} label of yellow button + {blue} label of blue button + --> + <viewelement name="footer"> + <area condition="{red1}" x="0" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonred" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{red1}" x="0" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{red}" /> + </area> + <area condition="{green1}" x="0" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttongreen" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{green1}" x="0" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{green}" /> + </area> + <area condition="{yellow1}" x="0" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonyellow" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{yellow1}" x="0" y="90%" width="25%" height="10%" layer="4"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{yellow}" /> + </area> + <area condition="{blue1}" x="0" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonblue" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{blue1}" x="0" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{blue}" /> + </area> + + <area condition="{red2}" x="25%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonred" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{red2}" x="25%" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{red}" /> + </area> + <area condition="{green2}" x="25%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttongreen" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{green2}" x="25%" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{green}" /> + </area> + <area condition="{yellow2}" x="25%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonyellow" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{yellow2}" x="25%" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{yellow}" /> + </area> + <area condition="{blue2}" x="25%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonblue" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{blue2}" x="25%" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{blue}" /> + </area> + + <area condition="{red3}" x="50%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonred" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{red3}" x="50%" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{red}" /> + </area> + <area condition="{green3}" x="50%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttongreen" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{green3}" x="50%" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{green}" /> + </area> + <area condition="{yellow3}" x="50%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonyellow" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{yellow3}" x="50%" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{yellow}" /> + </area> + <area condition="{blue3}" x="50%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonblue" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{blue3}" x="50%" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{blue}" /> + </area> + + <area condition="{red4}" x="75%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonred" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{red4}" x="75%" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{red}" /> + </area> + <area condition="{green4}" x="75%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttongreen" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{green4}" x="60%" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{green}" /> + </area> + <area condition="{yellow4}" x="75%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonyellow" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{yellow4}" x="75%" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{yellow}" /> + </area> + <area condition="{blue4}" x="75%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonblue" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{blue4}" x="75%" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{blue}" /> </area> </viewelement> + <!-- Available Variables time: + {time} timestring in hh:mm + {sec} current seconds + {min} current minutes + {hour} current hours + {hmins} current "hourminutes" to display an hour hand + --> + <viewelement name="time"> + <area x="81%" y="0" width="7%" height="5%" layer="5"> + <drawtext x="0" valign="center" font="{digital}" fontsize="90%" color="{clrWhite}" text="{time}" /> + </area> + <area x="{areawidth}*0.865" y="{areawidth}*0.005" width="13%" height="{areawidth}*0.13" layer="5"> + <drawimage imagetype="skinpart" path="watchhands/s_{sec}" x="0" y="0" width="100%" height="100%"/> + </area> + <area x="{areawidth}*0.865" y="{areawidth}*0.005" width="13%" height="{areawidth}*0.13" layer="6"> + <drawimage imagetype="skinpart" path="watchhands/m_{min}" x="0" y="0" width="100%" height="100%"/> + </area> + <area x="{areawidth}*0.865" y="{areawidth}*0.005" width="13%" height="{areawidth}*0.13" layer="7"> + <drawimage imagetype="skinpart" path="watchhands/h_{hmins}" x="0" y="0" width="100%" height="100%"/> + </area> + </viewelement> + + + <!-- Available Variables in detailheader elements: + {title} title of event + {shorttext} shorttext of event + {start} event start time in hh::mm + {stop} event stop time + {day} Day of event as three letter abrivation + {date} date of current event in dd.mm.yy + {daynumeric} day as number + {month} month as number + {year} year as number + {running} true if event is currently running + {elapsed} elapsed time of event, if not running 0 + {duration} duration of event + {durationhours} duration, full hours + {durationminutes} duration, rest of minutes + {vps} vps description string + {channelname} Channelname of event + {channelnumber} Channelnumber of event + {channellogoexists} true if a channel logo exists + {channelid} ChannelID as path to display channel logo + {ismovie} true if event is scraped as a movie + {isseries} true if event is scraped as a series + {posteravailable} true if a poster is available + {posterwidth} width of scraped poster + {posterheight} height of scraped poster + {posterpath} absolute path of scraped poster + {banneravailable} true if a banner is available + {bannerwidth} width of banner + {bannerheight} height of banner + {bannerpath} path of banner + {epgpicavailable} true if a epg picture is available + {epgpicpath} path of epg picture + --> + <viewelement name="header"> + <area x="0" y="0" width="83%" height="8%" layer="3"> + <drawimage name="logo" imagetype="channellogo" path="{channelid}" x="1%" width="5%" height="90%" align="left" valign="center" /> + <drawtext x="{posx(logo)} + {width(logo)}+20" valign="center" font="{semibold}" fontsize="80%" color="{clrWhite}" text="{channelnumber} - {channelname}" /> + </area> + <area x="1%" y="10%" width="50%" height="80%" layer="2"> + <drawimage imagetype="skinpart" path="displaymendetailback" x="0" y="0" width="100%" height="100%" /> + </area> + <area x="55%" y="52%" width="43%" height="38%" layer="2"> + <drawimage imagetype="skinpart" path="displaymenucurrentback" x="0" y="0" width="100%" height="100%"/> + </area> + <area condition="not{ismovie}++not{isseries}" x="55%" y="52%" width="43%" height="20%" layer="3"> + <drawtext x="3%" y="15%" font="{regular}" fontsize="15%" color="{clrWhite}" text="{day} {date} {start} - {stop} ({duration} mins)" /> + <drawtext x="3%" y="30%" width="96%" font="{semibold}" fontsize="30%" color="{clrWhite}" text="{title}" /> + <drawtext x="3%" y="60%" width="96%" font="{regular}" fontsize="20%" color="{clrWhite}" text="{shorttext}" /> + </area> + <area condition="{isseries}" x="55%" y="52%" width="43%" height="20%" layer="3"> + <drawimage name="banner" imagetype="image" path="{bannerpath}" align="center" y="1%" width="70%" height="{areawidth} * 0.7 * {bannerheight} / {bannerwidth}"/> + <drawtext name="datetime" x="3%" y="{posy(banner)} + {height(banner)} + 5" font="{regular}" fontsize="15%" color="{clrWhite}" text="{day} {date} {start} - {stop} ({duration} mins)" /> + <drawtext x="3%" y="{posy(datetime)} + {height(datetime)}" width="96%" font="{semibold}" fontsize="30%" color="{clrWhite}" text="{title} - {shorttext}" /> + </area> + <area condition="{ismovie}" x="55%" y="52%" width="43%" height="20%" layer="3"> + <drawimage name="poster" imagetype="image" path="{posterpath}" x="1%" valign="center" width="{areaheight} * {posterwidth} / {posterheight}" height="{areaheight}-20"/> + <drawtext x="{posx(poster)} + {width(poster)} + 10" y="15%" font="{regular}" fontsize="15%" color="{clrWhite}" text="{day} {date} {start} - {stop} ({duration} mins)" /> + <drawtext x="{posx(poster)} + {width(poster)} + 10" y="30%" width="{areawidth} - {posx(poster)} - {width(poster)} - 20" font="{semibold}" fontsize="30%" color="{clrWhite}" text="{title}" /> + <drawtext x="{posx(poster)} + {width(poster)} + 10" y="60%" width="{areawidth} - {posx(poster)} - {width(poster)} - 20" font="{regular}" fontsize="20%" color="{clrWhite}" text="{shorttext}" /> + </area> + <area x="56%" y="72%" width="41%" height="17%" layer="2"> + <drawimage imagetype="skinpart" path="tabback" x="0" y="0" width="100%" height="100%"/> + </area> + </viewelement> + + <!-- Available Variables in tab elements: + {title} title of event + {shorttext} shorttext of event + {description} description of event + {start} event start time in hh::mm + {stop} event stop time + {day} Day of event as three letter abrivation + {date} date of current event in dd.mm.yy + {daynumeric} day as number + {month} month as number + {year} year as number + {running} true if event is currently running + {elapsed} elapsed time of event, if not running 0 + {duration} duration of event + {durationhours} duration, full hours + {durationminutes} duration, rest of minutes + {vps} vps description string + {channellogoexists} true if a channel logo exists + {channelid} ChannelID as path to display channel logo + {hasreruns} true if reruns of this event are found + {reruns[]} array with reruns + {reruns[title]} title of rerun + {reruns[shorttext]} shorttext of rerun + {reruns[date]} date of rerun in dd:mm + {reruns[day]} short dayname of rerun + {reruns[start]} start time of rerun in hh:mm + {reruns[stop]} stop time of rerun in hh:mm + {reruns[channelname]} name of channel on which rerun occurs + {reruns[channelnumber]} number of channel on which rerun occurs + {reruns[channelid]} id of channel on which rerun occurs to display channel logo + {reruns[channellogoexists]} true if channel logo exists + {epgpic1avaialble} true if first epg picture is available + {epgpic2avaialble} true if first epg picture is available + {epgpic3avaialble} true if first epg picture is available + {epgpic1path} path of first epg picture + {epgpic2path} path of second epg picture + {epgpic3path} path of third epg picture + + {ismovie} true if event is scraped as a movie + Available variables for movies: + {movietitle} movie title from themoviedb + {movieoriginalTitle} movie original title from themoviedb + {movietagline} movie tagline from themoviedb + {movieoverview} movie overview from themoviedb + {movieadult} true if movie is rated as adult + {moviebudget} movie budget from themoviedb in $ + {movierevenue} movie revenue from themoviedb in $ + {moviegenres} movie genres from themoviedb + {moviehomepage} movie homepage from themoviedb + {moviereleasedate} movie release date from themoviedb + {movieruntime} movie runtime from themoviedb + {moviepopularity} movie popularity from themoviedb + {movievoteaverage} movie vote average from themoviedb + {posterwidth} width of scraped poster + {posterheight} height of scraped poster + {posterpath} absolute path of scraped poster + {fanartwidth} width of scraped fanart + {fanartheight} height of scraped fanart + {fanartpath} absolute path of scraped fanart + {movieiscollection} true if movie is part of a collection + {moviecollectionName} name of movie collection + {collectionposterwidth} width of scraped collection poster + {collectionposterheight} height of scraped collection poster + {collectionposterpath} absolute path of scraped collection poster + {collectionfanartwidth} width of scraped collection fanart + {collectionfanartheight} height of scraped collection fanart + {collectionfanartpath} absolute path of scraped collection fanart + {actors[]} array with movie actors + {actors[name]} real name of actor + {actors[role]} actor role + {actors[thumb]} absolute path of scraped actor thumb + {actors[thumbwidth]} width of scraped actor thumb + {actors[thumbheight]} height of scraped actor thumb + + {isseries} true if event is scraped as a series + Available variables for series: + {seriesname} name of series + {seriesoverview} series overview + {seriesfirstaired} first aired date + {seriesnetwork} network which produces series + {seriesgenre} series genre + {seriesrating} series thetvdb rating + {seriesstatus} status of series (running / finished) + {episodetitle} title of episode + {episodenumber} number of episode + {episodeseason} season of episode + {episodefirstaired} first aired date of episode + {episodegueststars} guest stars of episode + {episodeoverview} episode overview + {episoderating} user rating for episode + {episodeimagewidth} episode image width + {episodeimageheight} episode image height + {episodeimagepath} episode image path + {seasonposterwidth} episode season poster width + {seasonposterheight} episode season poster height + {seasonposterpath} episode season poster path + {seriesposter1width} width of 1st poster + {seriesposter1height} height of 1st poster + {seriesposter1path} path of 1st poster + {seriesposter2width} width of 2nd poster + {seriesposter2height} height of 2nd poster + {seriesposter2path} path of 2nd poster + {seriesposter3width} width of 3rd poster + {seriesposter3height} height of 3rd poster + {seriesposter3path} path of 3rd poster + {seriesfanart1width} width of 1st fanart + {seriesfanart1height} height of 1st fanart + {seriesfanart1path} path of 1st fanart + {seriesfanart2width} width of 2nd fanart + {seriesfanart2height} height of 2nd fanart + {seriesfanart2path} path of 2nd fanart + {seriesfanart3width} width of 3rd fanart + {seriesfanart3height} height of 3rd fanart + {seriesfanart3path} path of 3rd fanart + {seriesbanner1width} width of 1st banner + {seriesbanner1height} height of 1st banner + {seriesbanner1path} path of 1st banner + {seriesbanner2width} width of 2nd banner + {seriesbanner2height} height of 2nd banner + {seriesbanner2path} path of 2nd banner + {seriesbanner3width} width of 3rd banner + {seriesbanner3height} height of 3rd banner + {seriesbanner3path} path of 3rd fanart + {actors[]} array with movie actors + {actors[name]} real name of actor + {actors[role]} actor role + {actors[thumb]} absolute path of scraped actor thumb + {actors[thumbwidth]} width of scraped actor thumb + {actors[thumbheight]} height of scraped actor thumb + --> + + <!-- a tab is one scrolling area, just position and draw as inside a normal area --> + <!-- just define as many tabs as needed --> + + <!-- TAB EPGINFO --> + <tab name="EPG Info" x="2%" y="11%" width="48%" height="78%" layer="3" scrollheight="{areaheight}/4"> + <drawtext x="0" y="0" font="{semibold}" fontsize="6%" color="{clrWhite}" text="{day} {date} {start} - {stop} ({duration} mins)" /> + <drawtext x="0" y="6%" width="100%" font="{semibold}" fontsize="9%" color="{clrWhite}" text="{title}" /> + <drawtext x="0" y="14%" width="100%" font="{regular}" fontsize="7%" color="{clrWhite}" text="{shorttext}" /> + + <drawtextbox condition="not{isseries}++not{ismovie}" x="0" y="24%" width="96%" font="{regular}" fontsize="5%" color="{clrWhite}" text="{description}" /> + <drawimage condition="{isseries}" name="seriesposter" imagetype="image" path="{seriesposter1path}" x="{areawidth}*0.7" y="20%" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {seriesposter1height} / {seriesposter1width}"/> + <drawimage condition="{ismovie}" name="movieposter" imagetype="image" path="{posterpath}" x="{areawidth}*0.7" y="20%" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {posterheight} / {posterwidth}" /> + <drawtextbox condition="{isseries}" x="0" y="24%" width="96%" float="topright" floatwidth="{width(seriesposter)} + 10" floatheight="{height(seriesposter)} + 20" font="{regular}" fontsize="5%" color="{clrWhite}" text="{description}" /> + <drawtextbox condition="{ismovie}" x="0" y="24%" width="96%" float="topright" floatwidth="{width(movieposter)} + 10" floatheight="{height(movieposter)} + 20" font="{regular}" fontsize="5%" color="{clrWhite}" text="{description}" /> + + </tab> + <!-- TAB RERUNS --> + <tab name="{tr(reruns)}" x="2%" y="11%" width="48%" height="78%" layer="3" scrollheight="{areaheight}/4"> + <drawtext align="center" y="0" width="100%" name="title" font="{semibold}" fontsize="6%" color="{clrWhite}" text="{tr(rerunsof)} '{title}'" /> + <loop name="reruns" x="0" y="{height(title)} + 10" width="{areawidth}" orientation="vertical"> + <drawimage name="logo" condition="{reruns[channellogoexists]}" imagetype="channellogo" path="{reruns[channelid]}" x="0" width="10%" height="10%" /> + <drawtext name="channelname" condition="not{reruns[channellogoexists]}" x="0" y="2%" font="{regular}" fontsize="5%" color="{clrWhite}" text="{reruns[channelname]}" /> + <drawtext condition="{reruns[channellogoexists]}" x="{width(logo)}+20" y="0" width="{areawidth} - {width(logo)} - 20" font="{regular}" fontsize="5%" color="{clrWhite}" text="{reruns[day]} {reruns[date]} {reruns[start]} - {reruns[stop]}" /> + <drawtext condition="{reruns[channellogoexists]}" x="{width(logo)}+20" y="4%" width="{areawidth} - {width(logo)} - 20" font="{semibold}" fontsize="5%" color="{clrWhite}" text="{reruns[title]} {reruns[shorttext]}" /> + <drawtext condition="not{reruns[channellogoexists]}" x="{width(channelname)}+20" y="0" width="{areawidth} - {width(logo)} - 20" font="{regular}" fontsize="5%" color="{clrWhite}" text="{reruns[day]} {reruns[date]} {reruns[start]} - {reruns[stop]}" /> + <drawtext condition="not{reruns[channellogoexists]}" x="{width(channelname)}+20" y="4%" width="{areawidth} - {width(logo)} - 20" font="{semibold}" fontsize="5%" color="{clrWhite}" text="{reruns[title]} {reruns[shorttext]}" /> + </loop> + </tab> + <!-- TAB ACTORS --> + <tab condition="{isseries}||{ismovie}" name="{tr(actors)}" x="2%" y="11%" width="48%" height="78%" layer="3" scrollheight="{areaheight}/4"> + <drawtext align="center" name="title" y="0" font="{semibold}" fontsize="15%" color="{clrWhite}" text="{tr(actors)}" /> + <loop name="actors" x="0" y="{height(title)} + 10" width="{areawidth}" orientation="horizontal" columnwidth="{areawidth}*0.3" rowheight="{areawidth}*0.3*1.8" overflow="linewrap"> + <drawimage name="thumb" imagetype="image" path="{actors[thumb]}" x="20" y="0" width="{columnwidth}-40" height="{columnwidth} * {actors[thumbheight]} / {actors[thumbwidth]} - 40 * {actors[thumbheight]} / {actors[thumbwidth]}"/> + <drawtext align="center" y="{height(thumb)} + 10" width="{columnwidth}" name="actorname" font="{regular}" fontsize="7%" color="{clrWhite}" text="{actors[name]}" /> + <drawtext align="center" y="{height(thumb)} + 10 + {height(actorname)}" width="{columnwidth}" font="{regular}" fontsize="7%" color="{clrWhite}" text="{actors[role]}" /> + </loop> + </tab> + <!-- TAB TVDBINFO --> + <tab condition="{isseries}" name="TvDBInfo" x="2%" y="11%" width="48%" height="78%" layer="3" scrollheight="{areaheight}/4"> + <drawimage name="banner" imagetype="image" path="{seriesbanner1path}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner1height} / {seriesbanner1width}"/> + <drawimage name="episodeimage" imagetype="image" path="{episodeimagepath}" x="{areawidth}*0.7" y="{height(banner)} + 20" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {episodeimageheight} / {episodeimagewidth}"/> + <drawimage name="seasonposter" imagetype="image" path="{seasonposterpath}" x="{areawidth}*0.7" y="{height(banner)} + {height(episodeimage)} + 30" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {seasonposterheight} / {seasonposterwidth}"/> + <drawtextbox x="0" y="{height(banner)} + 20" width="96%" float="topright" floatwidth="{width(seasonposter)} + 10" floatheight="{height(episodeimage)} + {height(seasonposter)} + 30" font="{regular}" fontsize="6%" color="{clrWhite}" text="{tr(episode)}: {episodetitle} ({tr(season)} {episodeseason}, {tr(episode)} {episodenumber}) {episodeoverview}| {tr(gueststars)}: {episodegueststars}|| {tr(seriesfirstaired)}: {seriesfirstaired}|| {tr(episodefirstaired)}: {episodefirstaired}|| {tr(network)}: {seriesnetwork}|| {tr(genre)}: {seriesgenre}|| {tr(status)}: {seriesstatus}|| {tr(rating)}: {seriesrating}|| {tr(episoderating)}: {episoderating} |{seriesoverview} " /> + </tab> + <!-- TAB SERIESGALERY --> + <tab condition="{isseries}" name="{tr(seriesgalery)}" x="2%" y="11%" width="48%" height="78%" layer="3" scrollheight="{areaheight}/4"> + <drawimage name="banner1" imagetype="image" path="{seriesbanner1path}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner1height} / {seriesbanner1width}"/> + <drawimage name="fanart1" imagetype="image" path="{seriesfanart1path}" align="center" y="{posy(banner1)} + {height(banner1)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart1height} / {seriesfanart1width}"/> + <drawimage name="banner2" imagetype="image" path="{seriesbanner2path}" align="center" y="{posy(fanart1)} + {height(fanart1)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner2height} / {seriesbanner2width}"/> + <drawimage name="fanart2" imagetype="image" path="{seriesfanart2path}" align="center" y="{posy(banner2)} + {height(banner2)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart2height} / {seriesfanart2width}"/> + <drawimage name="banner3" imagetype="image" path="{seriesbanner3path}" align="center" y="{posy(fanart2)} + {height(fanart2)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner3height} / {seriesbanner3width}"/> + <drawimage name="fanart3" imagetype="image" path="{seriesfanart3path}" align="center" y="{posy(banner3)} + {height(banner3)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart3height} / {seriesfanart3width}"/> + <drawimage name="poster1" imagetype="image" path="{seriesposter1path}" align="center" y="{posy(fanart3)} + {height(fanart3)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter1height} / {seriesposter1width}"/> + <drawimage name="poster2" imagetype="image" path="{seriesposter2path}" align="center" y="{posy(poster1)} + {height(poster1)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter2height} / {seriesposter2width}"/> + <drawimage name="poster3" imagetype="image" path="{seriesposter3path}" align="center" y="{posy(poster2)} + {height(poster2)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter3height} / {seriesposter3width}"/> + </tab> + <!-- TAB MOVIEDBINFO --> + <tab condition="{ismovie}" name="MovieDBInfo" x="2%" y="11%" width="48%" height="78%" layer="3" scrollheight="{areaheight}/4"> + <drawimage name="poster" imagetype="image" path="{posterpath}" x="70%" y="10" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {posterheight} / {posterwidth}"/> + <drawtextbox x="0" y="10" width="96%" float="topright" floatwidth="{width(poster)} + 10" floatheight="{height(poster)} + 20" font="{regular}" fontsize="6%" color="{clrWhite}" text="{tr(originaltitle)}: {movieoriginalTitle} |{tr(genre)}: {moviegenres} ||{movietagline} |{movieoverview} |{tr(budget)}: {moviebudget} ||{tr(revenue)}: {movierevenue} ||{tr(adult)}: {movieadult} ||{tr(releasedate)}: {moviereleasedate} ||{tr(runtime)}: {movieruntime} min || {tr(popularity)}: {moviepopularity} || {tr(voteaverage)}: {movievoteaverage} || {tr(homepage)}: {moviehomepage}| " /> + </tab> + <!-- TAB MOVIEGALERY --> + <tab condition="{ismovie}" name="{tr(moviegalery)}" x="2%" y="11%" width="48%" height="78%" layer="3" scrollheight="{areaheight}/4"> + <drawimage name="fanart" imagetype="image" path="{fanartpath}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {fanartheight} / {fanartwidth}"/> + <drawimage name="poster" imagetype="image" path="{posterpath}" align="center" y="{height(fanart)} + 30" width="{areawidth}*0.6" height="{areawidth} * 0.6 * {posterheight} / {posterwidth}"/> + <drawimage condition="{movieiscollection}" name="collectionfanart" imagetype="image" path="{collectionfanartpath}" align="center" y="{posy(poster)} + {height(poster)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {collectionfanartheight} / {collectionfanartwidth}"/> + <drawimage condition="{movieiscollection}" name="collectionposter" imagetype="image" path="{collectionposterpath}" align="center" y="{posy(collectionfanart)} + {height(collectionfanart)} + 20" width="{areawidth}*0.6" height="{areawidth} * 0.6 * {collectionposterheight} / {collectionposterwidth}"/> + </tab> + + <tablabels> + <area x="56%" y="72%" width="41%" height="9%" layer="3"> + <drawtext align="center" y="0" width="100%" font="{semibold}" fontsize="100%" color="{clrWhite}" text="{currenttab}" /> + </area> + <area x="56%" y="81%" width="18%" height="8%" layer="3"> + <drawtext align="center" valign="center" width="100%" font="{regular}" fontsize="60%" color="{clrGray}" text="{prevtab}" /> + </area> + <area x="79%" y="81%" width="17%" height="8%" layer="3"> + <drawtext align="center" valign="center" width="100%" font="{regular}" fontsize="60%" color="{clrGray}" text="{nexttab}" /> + </area> + </tablabels> + </displayplugin> diff --git a/skins/blackhole/xmlfiles/plug-tvguideng-recmenu.xml b/skins/blackhole/xmlfiles/plug-tvguideng-recmenu.xml new file mode 100644 index 0000000..4d1bfb9 --- /dev/null +++ b/skins/blackhole/xmlfiles/plug-tvguideng-recmenu.xml @@ -0,0 +1,454 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE displayplugin SYSTEM "../../../dtd/displayplugin.dtd"> + +<displayplugin x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="0.625*{areawidth}" scaletvy="1%" scaletvwidth="18%" scaletvheight="18%"> + + <!-- Available Variables Background: + {menuwidth} menuwidth in percent of screenwidth + {menuheight} menuheight in percent of screenheight + {hasscrollbar} true if menu needs a scrollbar + --> + <viewelement name="background"> + <area x="0" y="0" width="100%" height="100%" layer="4"> + <fill color="{clrBlackTrans}" /> + </area> + <area condition="not{hasscrollbar}" x="0" y="0" width="100%" height="100%" layer="4"> + <drawrectangle x="{areawidth}/2 - {menuwidth}*{areawidth}/100/2" y="{areaheight}/2 - {menuheight}*{areaheight}/100/2" width="{menuwidth}*{areawidth}/100" height="{menuheight}*{areaheight}/100" color="{clrBlack}" /> + </area> + <area condition="{hasscrollbar}" x="0" y="0" width="100%" height="100%" layer="4"> + <drawrectangle x="{areawidth}/2 - {menuwidth}*{areawidth}/100/2" y="{areaheight}/2 - {menuheight}*{areaheight}/100/2" width="{menuwidth}*{areawidth}/100 + {areawidth}*0.03" height="{menuheight}*{areaheight}/100" color="{clrBlack}"/> + </area> + </viewelement> + + <!-- Available Variables Scrollbar: + {menuwidth} menuwidth in percent of screenwidth + {posy} y position of scrollbar start in percent of screenheight + {totalheight} height of complete scrollbar in percent of screenheight + {height} height in tenth of a percent of total height + {offset} offset in tenth of a percent + --> + <viewelement name="scrollbar"> + <area x="0" y="0" width="100%" height="100%" layer="5"> + <drawimage imagetype="skinpart" path="scrollbarback" x="{areawidth}/2 + {menuwidth}*{areawidth}/100/2" y="{posy}*{areaheight}/100" width="2%" height="{totalheight}*{areaheight}/100"/> + </area> + <area x="0" y="0" width="100%" height="100%" layer="6"> + <drawimage imagetype="skinpart" path="scrollbar" x="{areawidth}/2 + {menuwidth}*{areawidth}/100/2" y="{posy}*{areaheight}/100 + {totalheight}*{areaheight}/100 * {offset} / 1000" width="2%" height="{totalheight}*{areaheight}/100 * {height} / 1000"/> + </area> + </viewelement> + + <grid name="recmenu" x="0" y="0" width="100%" height="100%"> + <!-- Background + {current} true if item is currently selected + --> + <area condition="not{info}++not{buttonyesno}++not{timerconflictheader}++not{timerconflict}++not{timelineheader}++not{timelinetimer}" layer="5"> + <drawimage condition="not{current}" imagetype="skinpart" path="menubutton" x="0" y="0" width="100%" height="100%"/> + <drawimage condition="{current}" imagetype="skinpart" path="menubuttonactive" x="0" y="0" width="100%" height="100%"/> + </area> + <!-- info item + {info} true + {lines} number of lines to display (max. 4) + {line1} text of line 1 + {line2} text of line 1 + {line3} text of line 1 + {line4} text of line 1 + --> + <area condition="{info}" layer="5"> + <drawtext condition="eq({lines}, 1)" align="center" valign="center" font="{regular}" fontsize="60%" color="{clrWhite}" text="{line1}" /> + + <drawtext condition="eq({lines}, 2)" align="center" y="5%" font="{regular}" fontsize="40%" color="{clrWhite}" text="{line1}" /> + <drawtext condition="eq({lines}, 2)" align="center" y="52%" font="{regular}" fontsize="40%" color="{clrWhite}" text="{line2}" /> + + <drawtext condition="eq({lines}, 3)" align="center" y="0%" font="{regular}" fontsize="28%" color="{clrWhite}" text="{line1}" /> + <drawtext condition="eq({lines}, 3)" align="center" y="33%" font="{regular}" fontsize="28%" color="{clrWhite}" text="{line2}" /> + <drawtext condition="eq({lines}, 3)" align="center" y="66%" font="{regular}" fontsize="28%" color="{clrWhite}" text="{line3}" /> + + <drawtext condition="eq({lines}, 4)" align="center" y="0%" font="{regular}" fontsize="22%" color="{clrWhite}" text="{line1}" /> + <drawtext condition="eq({lines}, 4)" align="center" y="25%" font="{regular}" fontsize="22%" color="{clrWhite}" text="{line2}" /> + <drawtext condition="eq({lines}, 4)" align="center" y="50%" font="{regular}" fontsize="22%" color="{clrWhite}" text="{line3}" /> + <drawtext condition="eq({lines}, 4)" align="center" y="75%" font="{regular}" fontsize="22%" color="{clrWhite}" text="{line4}" /> + </area> + <!-- button + {button} true + {buttontext} text to display on button + --> + <area condition="{button}" layer="6"> + <drawtext align="center" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{buttontext}" /> + </area> + + <!-- yes / no button + {buttonyesno} true + {yes} true if button is set to yes + {textyes} text to display on yes button + {textno} text to display on no button + --> + <area condition="{buttonyesno}" layer="5"> + <drawimage condition="not{current}" imagetype="skinpart" path="menubutton" x="2%" y="5%" width="46%" height="90%"/> + <drawimage condition="not{current}" imagetype="skinpart" path="menubutton" x="52%" y="5%" width="46%" height="90%"/> + <drawimage condition="{current}++{yes}" imagetype="skinpart" path="menubuttonactive" x="2%" y="5%" width="46%" height="90%"/> + <drawimage condition="{current}++{yes}" imagetype="skinpart" path="menubutton" x="52%" y="5%" width="46%" height="90%"/> + <drawimage condition="{current}++not{yes}" imagetype="skinpart" path="menubutton" x="2%" y="5%" width="46%" height="90%"/> + <drawimage condition="{current}++not{yes}" imagetype="skinpart" path="menubuttonactive" x="52%" y="5%" width="46%" height="90%"/> + </area> + <area condition="{buttonyesno}" layer="6"> + <drawtext name="yestext" x="{areawidth}/4 - {width(yestext)}/2" valign="center" font="{light}" fontsize="70%" color="{clrWhite}" text="{textyes}" /> + <drawtext name="notext" x="3*{areawidth}/4 - {width(notext)}/2" valign="center" font="{light}" fontsize="70%" color="{clrWhite}" text="{textno}" /> + </area> <!-- Int Selector + {intselector} true + {text} title of selector + {value} current value of selector, integer + --> + <area condition="{intselector}" layer="6"> + <drawtext x="1%" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{text}" /> + <drawtext align="right" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{value} " /> + </area> + <!-- Bool Selector + {boolselector} true + {text} title of selector + {value} current value of selector, true or false + --> + <area condition="{boolselector}" layer="6"> + <drawtext x="1%" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{text}" /> + <drawimage condition="{value}" imagetype="icon" path="ico_yes" x="{areawidth} - {areaheight}*0.8" y="10%" width="{areaheight}*0.8" height="{areaheight}*0.8"/> + <drawimage condition="not{value}" imagetype="icon" path="ico_no" x="{areawidth} - {areaheight}*0.8" y="10%" width="{areaheight}*0.8" height="{areaheight}*0.8"/> + </area> + <!-- String Selector + {stringselector} true + {text} title of selector + {value} current value of selector, string + --> + <area condition="{stringselector}" layer="6"> + <drawtext x="1%" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{text}" /> + <drawimage imagetype="icon" path="ico_arrow_right" x="{areawidth} - {areaheight}*0.8" y="10%" width="{areaheight}*0.8" height="{areaheight}*0.8"/> + <drawtext name="value" x="{areawidth} - {width(value)} - {areaheight}" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{value}" /> + <drawimage imagetype="icon" path="ico_arrow_left" x="{areawidth} - {width(value)} - 2*{areaheight}" y="10%" width="{areaheight}*0.8" height="{areaheight}*0.8"/> + </area> + <!-- Text Input + {textinput} true + {editmode} true if currently in edit mode + {text} title of selector + {value} current value of selector, string + --> + <area condition="{textinput}" layer="6"> + <drawtext x="1%" y="10%" font="{light}" fontsize="40%" color="{clrWhite}" text="{text}" /> + <drawrectangle condition="not{editmode}" x="1%" y="55%" width="98%" height="40%" color="{clrWhite}"/> + <drawrectangle condition="{editmode}" x="1%" y="55%" width="98%" height="40%" color="{clrRed}"/> + </area> + <area condition="{textinput}" layer="7"> + <drawtext align="right" y="55%" font="{light}" fontsize="40%" color="{clrBlack}" text="{value} " /> + </area> + <!-- Time Selector + {timeselector} true + {text} title of selector + {value} current value of selector, hh:mm + --> + <area condition="{timeselector}" layer="6"> + <drawtext x="1%" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{text}" /> + <drawtext align="right" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{value} " /> + </area> + <!-- Day Selector + {dayselector} true + {text} title of selector + {value} current value of selector, dd.mm + --> + <area condition="{dayselector}" layer="6"> + <drawtext x="1%" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{text}" /> + <drawtext align="right" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{value} " /> + </area> + <!-- Channel Selector + {channelselector} true + {text} title of selector + {channelnumber} number of currently selected channel, 0 for "all channels" + {channelname} name of channel or "all channels" + {channelid} id of channel + {channellogoexisis} true if channel logo exists + --> + <area condition="{channelselector}" layer="6"> + <drawtext x="1%" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{text}" /> + <drawimage condition="{channellogoexisis}" imagetype="channellogo" path="{channelid}" x="{areawidth}-{areaheight}" valign="center" width="{areaheight}*0.9" height="{areaheight}*0.9" /> + <drawtext name="channelnumberlogo" condition="{channellogoexisis}" x="{areawidth}-{areaheight}-{width(channelnumberlogo)}-10" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{channelnumber}" /> + <drawtext condition="not{channellogoexisis}++{channelnumber}" align="right" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{channelnumber} {channelname} " /> + <drawtext condition="not{channelnumber}" align="right" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{channelname} " /> + </area> + <!-- Weekday Selector + {weekdayselector} true + {text} title of selector + {dayselected} number of currently selected day (0 - 6) + {day0abbr} ... {day6abbr} localized one character abbrevation for weekdays from Monday to Sunday + {day0set} ... {day6set} true if according weekday from Monday to Sunday is set + --> + <area condition="{weekdayselector}" layer="6"> + <drawtext x="1%" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{text}" /> + + <drawrectangle x="{areawidth} - {areaheight}*4" y="25%" width="{areaheight}*3.5" height="50%" color="{clrWhite}" /> + + <drawrectangle condition="not{day0set}" x="{areawidth} - {areaheight}*4.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrGray2}" /> + <drawrectangle condition="{day0set}" x="{areawidth} - {areaheight}*4.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrBlueMenu}" /> + + <drawrectangle condition="not{day1set}" x="{areawidth} - {areaheight}*3.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrGray2}" /> + <drawrectangle condition="{day1set}" x="{areawidth} - {areaheight}*3.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrBlueMenu}" /> + + <drawrectangle condition="not{day2set}" x="{areawidth} - {areaheight}*3.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrGray2}" /> + <drawrectangle condition="{day2set}" x="{areawidth} - {areaheight}*3.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrBlueMenu}" /> + + <drawrectangle condition="not{day3set}" x="{areawidth} - {areaheight}*2.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrGray2}" /> + <drawrectangle condition="{day3set}" x="{areawidth} - {areaheight}*2.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrBlueMenu}" /> + + <drawrectangle condition="not{day4set}" x="{areawidth} - {areaheight}*2.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrGray2}" /> + <drawrectangle condition="{day4set}" x="{areawidth} - {areaheight}*2.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrBlueMenu}" /> + + <drawrectangle condition="not{day5set}" x="{areawidth} - {areaheight}*1.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrGray2}" /> + <drawrectangle condition="{day5set}" x="{areawidth} - {areaheight}*1.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrBlueMenu}" /> + + <drawrectangle condition="not{day6set}" x="{areawidth} - {areaheight}*1.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrGray2}" /> + <drawrectangle condition="{day6set}" x="{areawidth} - {areaheight}*1.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrBlueMenu}" /> + </area> + <area condition="{weekdayselector}" layer="7"> + <drawrectangle condition="{current}++eq({dayselected}, 0)" x="{areawidth} - {areaheight}*4.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrBlackTrans}" /> + <drawrectangle condition="{current}++eq({dayselected}, 1)" x="{areawidth} - {areaheight}*3.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrBlackTrans}" /> + <drawrectangle condition="{current}++eq({dayselected}, 2)" x="{areawidth} - {areaheight}*3.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrBlackTrans}" /> + <drawrectangle condition="{current}++eq({dayselected}, 3)" x="{areawidth} - {areaheight}*2.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrBlackTrans}" /> + <drawrectangle condition="{current}++eq({dayselected}, 4)" x="{areawidth} - {areaheight}*2.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrBlackTrans}" /> + <drawrectangle condition="{current}++eq({dayselected}, 5)" x="{areawidth} - {areaheight}*1.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrBlackTrans}" /> + <drawrectangle condition="{current}++eq({dayselected}, 6)" x="{areawidth} - {areaheight}*1.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrBlackTrans}" /> + + <drawtext name="day0" x="{areawidth} - {areaheight}*4.0 + {areaheight}/4 - {width(day0)}/2" valign="center" font="{light}" fontsize="50%" color="{clrWhite}" text="{day0abbr}" /> + <drawtext name="day1" x="{areawidth} - {areaheight}*3.5 + {areaheight}/4 - {width(day1)}/2" valign="center" font="{light}" fontsize="50%" color="{clrWhite}" text="{day1abbr}" /> + <drawtext name="day2" x="{areawidth} - {areaheight}*3.0 + {areaheight}/4 - {width(day2)}/2" valign="center" font="{light}" fontsize="50%" color="{clrWhite}" text="{day2abbr}" /> + <drawtext name="day3" x="{areawidth} - {areaheight}*2.5 + {areaheight}/4 - {width(day3)}/2" valign="center" font="{light}" fontsize="50%" color="{clrWhite}" text="{day3abbr}" /> + <drawtext name="day4" x="{areawidth} - {areaheight}*2.0 + {areaheight}/4 - {width(day4)}/2" valign="center" font="{light}" fontsize="50%" color="{clrWhite}" text="{day4abbr}" /> + <drawtext name="day5" x="{areawidth} - {areaheight}*1.5 + {areaheight}/4 - {width(day5)}/2" valign="center" font="{light}" fontsize="50%" color="{clrWhite}" text="{day5abbr}" /> + <drawtext name="day6" x="{areawidth} - {areaheight}*1.0 + {areaheight}/4 - {width(day6)}/2" valign="center" font="{light}" fontsize="50%" color="{clrWhite}" text="{day6abbr}" /> + </area> + <!-- Directory Selector + {directoryselector} true + {text} title of selector + {folder} current folder of selector, string + --> + <area condition="{directoryselector}" layer="6"> + <drawtext x="1%" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{text}" /> + <drawimage imagetype="icon" path="ico_arrow_right" x="{areawidth} - {areaheight}*0.8" y="10%" width="{areaheight}*0.8" height="{areaheight}*0.8"/> + <drawtext name="folder" x="{areawidth} - {width(folder)} - {areaheight}" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{folder}" /> + <drawimage imagetype="icon" path="ico_arrow_left" x="{areawidth} - {width(folder)} - 2*{areaheight}" y="10%" width="{areaheight}*0.8" height="{areaheight}*0.8"/> + </area> + <!-- Timerconflict Header + {timerconflictheader} true + {text} title of Timerconflict Header + {conflictstart} start of conflict in hh:mm + {conflictstop} end of conflict in hh:mm + {overlapstart} start of overlap in hh:mm + {overlapstop} end of overlap in hh:mm + {overlapstartpercent} start of overlap in percent of total conflict time width + {overlapwidthpercent} width of overlap in percent of total conflict time width + --> + <area condition="{timerconflictheader}" layer="5"> + <drawtext name="title" x="{areawidth}*0.7*0.5 - {width(title)}/2" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{text}" /> + <drawrectangle x="70%" y="0" width="30%" height="100%" color="{clrWhite}"/> + </area> + <area condition="{timerconflictheader}" layer="6"> + <drawtext x="{areawidth}*0.7" y="0" font="{light}" fontsize="50%" color="{clrBlack}" text="{conflictstart}" /> + <drawtext align="right" y="0" font="{light}" fontsize="50%" color="{clrBlack}" text="{conflictstop}" /> + <drawtext name="olstart" x="{areawidth}*0.7 + {overlapstartpercent}*{areawidth}*0.3/100 - 70" y="50%" font="{light}" fontsize="50%" color="{clrRed}" text="{overlapstart}" /> + <drawtext x="{areawidth}*0.7 + {overlapstartpercent}*{areawidth}*0.3/100 + {overlapwidthpercent}*{areawidth}*0.3/100 + 5" y="50%" font="{light}" fontsize="50%" color="{clrRed}" text="{overlapstop}" /> + <drawrectangle x="{areawidth}*0.7 + {overlapstartpercent}*{areawidth}*0.3/100" y="50%" width="{overlapwidthpercent}*{areawidth}*0.3/100" height="50%" color="{clrRedTrans}"/> + </area> + <!-- Timerconflict + {timerconflict} true + {timertitle} title of timer + {channelname} name of channel + {channelid} channel ID + {transponder} transponder of channel + {starttime} start of timer in hh:mm + {stoptime} end of timer in hh:mm + {date} date of timer in dd.mm.yy + {weekday} weekday of timer, 3 letter abrivation + {infoactive} true if info icon is active + {deleteactive} true if delete icon is active + {editactive} true if edit icon is active + {searchactive} true if search icon is active + {timerstartpercent} start of timer in percent of total conflict time width + {timerwidthpercent} end of timer in percent of total conflict time width + {overlapstartpercent} start of overlap in percent of total conflict time width + {overlapwidthpercent} width of overlap in percent of total conflict time width + --> + <area condition="{timerconflict}" layer="5"> + <drawimage condition="not{current}" imagetype="skinpart" path="menubutton" x="0" y="0" width="70%" height="100%"/> + <drawimage condition="{current}" imagetype="skinpart" path="menubuttonactive" x="0" y="0" width="70%" height="100%"/> + </area> + <area condition="{timerconflict}" layer="6"> + <drawimage condition="{current}++{infoactive}" imagetype="icon" path="ico_info_active" x="{areaheight}*0.05" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}||not{infoactive}" imagetype="icon" path="ico_info_inactive" x="{areaheight}*0.05" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="{current}++{deleteactive}" imagetype="icon" path="ico_delete_active" x="{areaheight}*0.6" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}||not{deleteactive}" imagetype="icon" path="ico_delete_inactive" x="{areaheight}*0.6" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="{current}++{editactive}" imagetype="icon" path="ico_edit_active" x="{areaheight}*1.15" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}||not{editactive}" imagetype="icon" path="ico_edit_inactive" x="{areaheight}*1.15" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="{current}++{searchactive}" imagetype="icon" path="ico_search_active" x="{areaheight}*1.7" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}||not{searchactive}" imagetype="icon" path="ico_search_inactive" x="{areaheight}*1.7" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawtext x="{areaheight}*2.3" width="{areawidth}*0.7 - {areaheight}*2.4" y="0" font="{regular}" fontsize="40%" color="{clrWhite}" text="{timertitle}" /> + <drawtext x="{areaheight}*2.3" y="40%" font="{light}" fontsize="30%" color="{clrWhite}" text="{weekday} {date} {starttime} - {stoptime}" /> + <drawtext x="{areaheight}*2.3" y="70%" font="{light}" fontsize="30%" color="{clrWhite}" text="{channelname}, Transp. {transponder}" /> + <drawrectangle x="70%" y="0" width="30%" height="100%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.7 + {timerstartpercent}*{areawidth}*0.3/100" y="30%" width="{timerwidthpercent}*{areawidth}*0.3/100" height="40%" color="{clrBlack}"/> + </area> + <area condition="{timerconflict}" layer="7"> + <drawrectangle x="{areawidth}*0.7 + {overlapstartpercent}*{areawidth}*0.3/100" y="0" width="{overlapwidthpercent}*{areawidth}*0.3/100" height="100%" color="{clrRedTrans}"/> + </area> + <!-- Event + {event} true + {title} title of event + {shorttext} shorttext of event + {starttime} start of event in hh:mm + {stoptime} end of event in hh:mm + {date} date of event in dd.mm.yy + {weekday} weekday of event, 3 letter abrivation + {channelnumber} number of channel + {channelname} name of channel + {channelid} id of channel + {channellogoexisis} true if channel logo exists + {hastimer} true if event has a timer + --> + <area condition="{event}" layer="6"> + <drawimage condition="{current}" imagetype="icon" path="ico_info_active" x="{areaheight}*0.05" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}" imagetype="icon" path="ico_info_inactive" x="{areaheight}*0.05" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="{channellogoexisis}" imagetype="channellogo" path="{channelid}" x="{areaheight}*0.8" valign="center" width="{areaheight}" height="{areaheight}" /> + <drawtext x="{areaheight}*2.2" y="2" font="{light}" fontsize="30%" color="{clrWhite}" text="{weekday} {date} {starttime} - {stoptime} {channelname}" /> + <drawtext x="{areaheight}*2.2" y="30%" width="{areawidth} - 3*{areaheight}" font="{regular}" fontsize="45%" color="{clrWhite}" text="{title}" /> + <drawtext x="{areaheight}*2.2" y="69%" width="{areawidth} - 3*{areaheight}" font="{light}" fontsize="30%" color="{clrWhite}" text="{shorttext}" /> + <drawimage condition="{current}++not{hastimer}" imagetype="icon" path="ico_record_active" x="{areawidth} - {areaheight}*0.6" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}++not{hastimer}" imagetype="icon" path="ico_record_inactive" x="{areawidth} - {areaheight}*0.6" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="{hastimer}" imagetype="icon" path="ico_activetimer" x="{areawidth} - {areaheight}*0.6" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + </area> + <!-- Recording + {recording} true + {recname} title of recording + {recstarttime} start of recording in hh:mm + {recdate} date of recording in dd.mm.yy + {recduration} duration of recording in min + {channelnumber} number of channel + {channelname} name of channel + {channelid} id of channel + {channellogoexisis} true if channel logo exists + --> + <area condition="{recording}" layer="6"> + <drawtext x="1%" y="0" font="{light}" width="98%" fontsize="50%" color="{clrWhite}" text="{recname}" /> + <drawtext x="55%" y="0" font="{light}" width="98%" fontsize="35%" color="{clrWhite}" text="{recdate} {recstarttime} - {recduration} min, {channelname}" /> + </area> + <!-- Searchtimer + {searchtimer} true + {timeractive} true if searchtimer is active + {searchstring} searchtimer search string + {activetimers} number of active timers caused by this searchtimer + {recordingsdone} number of recordings done by this searchtimer + {searchactive} true if search icon is active + {editactive} true if edit icon is active + {deleteactive} true if delete icon is active + --> + <area condition="{searchtimer}" layer="6"> + <drawimage condition="{current}++{searchactive}" imagetype="icon" path="ico_search_active" x="{areaheight}*0.05" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}||not{searchactive}" imagetype="icon" path="ico_search_inactive" x="{areaheight}*0.05" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="{current}++{editactive}" imagetype="icon" path="ico_edit_active" x="{areaheight}*0.6" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}||not{editactive}" imagetype="icon" path="ico_edit_inactive" x="{areaheight}*0.6" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="{current}++{deleteactive}" imagetype="icon" path="ico_delete_active" x="{areaheight}*1.15" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}||not{deleteactive}" imagetype="icon" path="ico_delete_inactive" x="{areaheight}*1.15" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawtext x="{areaheight}*1.8" width="{areawidth} - {areaheight}*2" y="5%" font="{regular}" fontsize="45%" color="{clrWhite}" text="{searchstring}" /> + <drawtext condition="{timeractive}" align="right" y="5%" font="{regular}" fontsize="35%" color="{clrWhite}" text="active " /> + <drawtext x="{areaheight}*1.8" y="55%" font="{light}" fontsize="35%" color="{clrWhite}" text="Active Timers: {activetimers}, Recordings: {recordingsdone}" /> + </area> + <!-- Timeline Header + {timelineheader} true + {date} date of current day in weekdayname dd.mm.yyyy + {timerset} true if timer info is set + {channelname} name of channel of timer + {channelid} channel ID of channel of timer + {channellogoexisis} true if channel logo exists + {channelnumber} number of channel of timer + {channeltransponder} transponder of channel of timer + {timerstart} start of timer in hh:mm + {timerstop} end of timer in hh:mm + {eventtitle} title of according event + {eventshorttext} short text of according event + {eventstart} start time of according event + {eventstop} end time of according event + --> + <area condition="{timelineheader}" layer="5"> + <drawtext align="center" y="1%" font="{regular}" fontsize="35%" color="{clrWhite}" text="Timer for {date}" /> + <drawrectangle x="{areawidth}*0.05" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.0875" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.125" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.1625" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.2" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.2375" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.275" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.3125" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.35" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.3875" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.425" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.4625" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.5" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.5375" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.575" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.6125" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.65" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.6875" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.725" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.7625" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.8" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.8375" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.875" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.9125" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + </area> + <area condition="{timelineheader}" layer="6"> + <drawtext name="text0" x="{areawidth}*0.05 + {areawidth}*0.0375/2 - {width(text0)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrWhite}" text="0"/> + <drawtext name="text1" x="{areawidth}*0.0875 + {areawidth}*0.0375/2 - {width(text1)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrBlack}" text="1"/> + <drawtext name="text2" x="{areawidth}*0.125 + {areawidth}*0.0375/2 - {width(text2)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrWhite}" text="2"/> + <drawtext name="text3" x="{areawidth}*0.1625 + {areawidth}*0.0375/2 - {width(text3)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrBlack}" text="3"/> + <drawtext name="text4" x="{areawidth}*0.2 + {areawidth}*0.0375/2 - {width(text4)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrWhite}" text="4"/> + <drawtext name="text5" x="{areawidth}*0.2375 + {areawidth}*0.0375/2 - {width(text5)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrBlack}" text="5"/> + <drawtext name="text6" x="{areawidth}*0.275 + {areawidth}*0.0375/2 - {width(text6)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrWhite}" text="6"/> + <drawtext name="text7" x="{areawidth}*0.3125 + {areawidth}*0.0375/2 - {width(text7)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrBlack}" text="7"/> + <drawtext name="text8" x="{areawidth}*0.35 + {areawidth}*0.0375/2 - {width(text8)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrWhite}" text="8"/> + <drawtext name="text9" x="{areawidth}*0.3875 + {areawidth}*0.0375/2 - {width(text9)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrBlack}" text="9"/> + <drawtext name="text10" x="{areawidth}*0.425 + {areawidth}*0.0375/2 - {width(text10)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrWhite}" text="10"/> + <drawtext name="text11" x="{areawidth}*0.4625 + {areawidth}*0.0375/2 - {width(text11)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrBlack}" text="11"/> + <drawtext name="text12" x="{areawidth}*0.5 + {areawidth}*0.0375/2 - {width(text12)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrWhite}" text="12"/> + <drawtext name="text13" x="{areawidth}*0.5375 + {areawidth}*0.0375/2 - {width(text13)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrBlack}" text="13"/> + <drawtext name="text14" x="{areawidth}*0.575 + {areawidth}*0.0375/2 - {width(text14)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrWhite}" text="14"/> + <drawtext name="text15" x="{areawidth}*0.6125 + {areawidth}*0.0375/2 - {width(text15)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrBlack}" text="15"/> + <drawtext name="text16" x="{areawidth}*0.65 + {areawidth}*0.0375/2 - {width(text16)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrWhite}" text="16"/> + <drawtext name="text17" x="{areawidth}*0.6875 + {areawidth}*0.0375/2 - {width(text17)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrBlack}" text="17"/> + <drawtext name="text18" x="{areawidth}*0.725 + {areawidth}*0.0375/2 - {width(text18)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrWhite}" text="18"/> + <drawtext name="text19" x="{areawidth}*0.7625 + {areawidth}*0.0375/2 - {width(text19)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrBlack}" text="19"/> + <drawtext name="text20" x="{areawidth}*0.8 + {areawidth}*0.0375/2 - {width(text20)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrWhite}" text="20"/> + <drawtext name="text21" x="{areawidth}*0.8375 + {areawidth}*0.0375/2 - {width(text21)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrBlack}" text="21"/> + <drawtext name="text22" x="{areawidth}*0.875 + {areawidth}*0.0375/2 - {width(text22)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrWhite}" text="22"/> + <drawtext name="text23" x="{areawidth}*0.9125 + {areawidth}*0.0375/2 - {width(text23)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrBlack}" text="23"/> + </area> + <area condition="{timelineheader}++{timerset}" layer="6"> + <drawimage condition="{channellogoexisis}" imagetype="channellogo" path="{channelid}" x="1%" y="30%" width="{areaheight}*0.5" height="{areaheight}*0.5" /> + <drawtext condition="not{channellogoexisis}" x="1%" width="{areaheight}*0.7" y="40%" font="{light}" fontsize="20%" color="{clrWhite}" text="{channelname}"/> + <drawtext x="{areaheight}*0.8" y="36%" font="{light}" fontsize="25%" color="{clrWhite}" text="{eventstart} - {eventstop} (Rec. {timerstart} - {timerstop}), Transp. {channeltransponder}"/> + <drawtext x="{areaheight}*0.8" y="57%" width="{areawidth}-{areaheight}" font="{light}" fontsize="25%" color="{clrWhite}" text="{eventtitle} - {eventshorttext}"/> + </area> + <!-- Timeline Timer + {timelinetimer} true + {timerstart} start of timer in tenth percent of complete 24h width + {timerwidth} width of timer in tenth percent of complete 24h width + --> + <area condition="{timelinetimer}" layer="5"> + <drawrectangle condition="{current}" x="5%" y="0" width="90%" height="100%" color="{clrBlueMenu}"/> + <drawrectangle condition="not{current}" x="5%" y="0" width="90%" height="100%" color="{clrGray}"/> + <drawrectangle x="5%" y="{areaheight}-1" width="90%" height="1" color="{clrBlack}"/> + </area> + <area condition="{timelinetimer}" layer="6"> + <drawrectangle x="{areawidth}*0.05 + {timerstart}*{areawidth}*0.9/1000" y="25%" width="{timerwidth}*{areawidth}*0.9/1000" height="50%" color="{clrBlack}"/> + </area> + <!-- Favorites + {favorite} true + {favdesc} description of favorite + --> + <area condition="{favorite}" layer="6"> + <drawimage condition="{current}" imagetype="icon" path="ico_search_active" x="{areaheight}*0.1" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}" imagetype="icon" path="ico_search_inactive" x="{areaheight}*0.1" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawtext x="{areaheight}" valign="center" font="{light}" width="{areawidth} - {areaheight}" fontsize="80%" color="{clrWhite}" text="{favdesc}" /> + </area> + </grid> +</displayplugin> diff --git a/skins/blackhole/xmlfiles/plug-tvguideng-root.xml b/skins/blackhole/xmlfiles/plug-tvguideng-root.xml index 342af31..bb7fc94 100644 --- a/skins/blackhole/xmlfiles/plug-tvguideng-root.xml +++ b/skins/blackhole/xmlfiles/plug-tvguideng-root.xml @@ -1,45 +1,270 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE displayplugin SYSTEM "../../../dtd/displayplugin.dtd"> -<displayplugin x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="70%" scaletvy="0" scaletvwidth="30%" scaletvheight="15%"> +<displayplugin x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="0.625*{areawidth}" scaletvy="1%" scaletvwidth="18%" scaletvheight="18%"> - <viewelement name="background"> - <area x="0" y="20%" width="100%" height="65%" layer="1"> - <fill color="{clrGray}" /> + <viewelement name="background_hor"> + <area x="0" y="0" width="100%" height="20%" layer="1"> + <drawimage imagetype="skinpart" path="tvguideheader" x="0" y="0" width="100%" height="100%"/> + </area> + <area x="5%" y="20%" width="8%" height="5%" layer="1"> + <drawimage imagetype="skinpart" path="tvguide_timelinegrid_dark_hor" x="0" y="0" width="100%" height="100%"/> + </area> + <area x="74%" y="0" width="26%" height="46%" layer="2"> + <drawimage imagetype="skinpart" path="displaymenucorner" x="0" y="0" width="100%" height="100%"/> + </area> + <area x="{areawidth}*0.865" y="{areawidth}*0.005" width="13%" height="{areawidth}*0.13" layer="3"> + <drawimage imagetype="skinpart" path="watchback" x="0" y="0" width="100%" height="100%"/> + </area> + </viewelement> + + <viewelement name="background_ver"> + <area x="0" y="0" width="100%" height="20%" layer="1"> + <drawimage imagetype="skinpart" path="tvguideheader" x="0" y="0" width="100%" height="100%"/> + </area> + <area x="0" y="20%" width="8%" height="15%" layer="2"> + <drawimage imagetype="skinpart" path="tvguide_timelinegrid_dark_ver" x="0" y="0" width="100%" height="100%"/> + </area> + <area x="74%" y="0" width="26%" height="46%" layer="2"> + <drawimage imagetype="skinpart" path="displaymenucorner" x="0" y="0" width="100%" height="100%"/> + </area> + <area x="{areawidth}*0.865" y="{areawidth}*0.005" width="13%" height="{areawidth}*0.13" layer="3"> + <drawimage imagetype="skinpart" path="watchback" x="0" y="0" width="100%" height="100%"/> </area> </viewelement> + <!-- Tokens available in Header + {isdummy} true if active element is a dummy element + {title} title of event of active grid + {shorttext} shorttext of event of active grid + {description} detailed description of event of active grid + {start} event start time in hh::mm + {stop} event stop time + {day} day of event of active grid + {date} date of event of active grid in dd.mm.yy + {daynumeric} day as number + {month} month as number + {year} year as number + {running} true if event is currently running + {elapsed} elapsed time of event, if not running 0 + {duration} duration of event + {durationhours} duration, full hours + {durationminutes} duration, rest of minutes + {channelname} Channel Name + {channelnumber} Channel Number + {channelid} ChannelID as path to display channel logo + {channellogoexists} true if channel logo exists + {hasposter} true if a scraped poster is available for this element + {posterwidth} width of scraped poster + {posterheight} height of scraped poster + {posterpath} absolute path of scraped poster + --> <viewelement name="header"> - <area x="0" y="0" width="70%" height="15%" layer="1"> - <fill color="{clrRed}" /> + <areascroll condition="not{isdummy}++not{hasposter}" orientation="vertical" mode="forthandback" delay="1000" scrollspeed="medium" x="1%" y="1%" width="58%" height="18%" layer="2"> + <drawtext x="0" y="0" font="{semibold}" width="100%" fontsize="20%" color="{clrWhite}" text="{day} {daynumeric}.{month} {start} - {stop}" /> + <drawtext x="0" y="20%" font="{semibold}" width="100%" fontsize="25%" color="{clrWhite}" text="{title}" /> + <drawtextbox name="shorttext" x="0" y="45%" width="100%" font="{regular}" fontsize="15%" color="{clrWhite}" text="{shorttext}" /> + <drawtextbox x="0" y="{posy(shorttext)} + {height(shorttext)}" width="100%" font="{regular}" fontsize="15%" color="{clrWhite}" text="{description}" /> + </areascroll> + <area condition="not{isdummy}++{hasposter}" x="1%" y="1%" width="{areaheight}*0.18*{posterwidth}/{posterheight}" height="18%" layer="2"> + <drawimage imagetype="image" path="{posterpath}" x="0" y="0" width="100%" height="100%"/> </area> - <area x="0" y="0" width="70%" height="20%" layer="2"> - <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{headertext}" /> + <areascroll condition="not{isdummy}++{hasposter}" orientation="vertical" mode="forthandback" delay="1000" scrollspeed="medium" x="12%" y="1%" width="46%" height="18%" layer="2"> + <drawtext x="0" y="0" font="{semibold}" width="100%" fontsize="20%" color="{clrWhite}" text="{day} {daynumeric}.{month} {start} - {stop}" /> + <drawtext x="0" y="20%" font="{semibold}" width="100%" fontsize="25%" color="{clrWhite}" text="{title}" /> + <drawtextbox name="shorttext" x="0" y="45%" width="100%" font="{regular}" fontsize="15%" color="{clrWhite}" text="{shorttext}" /> + <drawtextbox x="0" y="{posy(shorttext)} + {height(shorttext)}" width="100%" font="{regular}" fontsize="15%" color="{clrWhite}" text="{description}" /> + </areascroll> + <area condition="{isdummy}" x="1%" y="1%" width="58%" height="18%" layer="2"> + <drawtext x="0" y="20%" font="{semibold}" width="100%" fontsize="35%" color="{clrWhite}" text="{title}" /> </area> </viewelement> + <!-- Available Variables Footer: + {red1} true if red button is button 1 + {red2} true if red button is button 2 + {red3} true if red button is button 3 + {red4} true if red button is button 4 + {green1} true if green button is button 1 + {green2} true if green button is button 2 + {green3} true if green button is button 3 + {green4} true if green button is button 4 + {yellow1} true if yellow button is button 1 + {yellow2} true if yellow button is button 2 + {yellow3} true if yellow button is button 3 + {yellow4} true if yellow button is button 4 + {blue1} true if blue button is button 1 + {blue2} true if blue button is button 2 + {blue3} true if blue button is button 3 + {blue4} true if blue button is button 4 + {red} label of red button + {green} label of green button + {yellow} label of yellow button + {blue} label of blue button + --> <viewelement name="footer"> - <area x="0" y="85%" width="100%" height="15%" layer="1"> - <fill color="{clrBlue}" /> + <area condition="{red1}" x="0" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonred" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{red1}" x="0" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{red}" /> + </area> + <area condition="{green1}" x="0" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttongreen" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{green1}" x="0" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{green}" /> + </area> + <area condition="{yellow1}" x="0" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonyellow" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{yellow1}" x="0" y="90%" width="25%" height="10%" layer="4"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{yellow}" /> + </area> + <area condition="{blue1}" x="0" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonblue" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{blue1}" x="0" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{blue}" /> + </area> + + <area condition="{red2}" x="25%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonred" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{red2}" x="25%" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{red}" /> + </area> + <area condition="{green2}" x="25%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttongreen" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{green2}" x="25%" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{green}" /> + </area> + <area condition="{yellow2}" x="25%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonyellow" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{yellow2}" x="25%" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{yellow}" /> </area> - <area x="0" y="85%" width="100%" height="15%" layer="2"> - <drawtext align="center" valign="center" font="{regular}" fontsize="60%" color="{clrWhite}" text="{footertext}" /> + <area condition="{blue2}" x="25%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonblue" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{blue2}" x="25%" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{blue}" /> + </area> + + <area condition="{red3}" x="50%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonred" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{red3}" x="50%" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{red}" /> + </area> + <area condition="{green3}" x="50%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttongreen" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{green3}" x="50%" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{green}" /> + </area> + <area condition="{yellow3}" x="50%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonyellow" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{yellow3}" x="50%" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{yellow}" /> + </area> + <area condition="{blue3}" x="50%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonblue" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{blue3}" x="50%" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{blue}" /> + </area> + + <area condition="{red4}" x="75%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonred" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{red4}" x="75%" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{red}" /> + </area> + <area condition="{green4}" x="75%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttongreen" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{green4}" x="60%" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{green}" /> + </area> + <area condition="{yellow4}" x="75%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonyellow" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{yellow4}" x="75%" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{yellow}" /> + </area> + <area condition="{blue4}" x="75%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonblue" align="center" valign="center" width="90%" height="60%"/> + </area> + <area condition="{blue4}" x="75%" y="90%" width="25%" height="10%" layer="3"> + <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{blue}" /> </area> </viewelement> - <viewelement name="datetimeline"> - <area x="0" y="15%" width="15%" height="5%" layer="1"> - <fill color="{clrBlack}" /> + <!-- Available Variables time: + {time} timestring in hh:mm + {sec} current seconds + {min} current minutes + {hour} current hours + {hmins} current "hourminutes" to display an hour hand + --> + <viewelement name="time"> + <area x="81%" y="0" width="7%" height="5%" layer="3"> + <drawtext x="0" valign="center" font="{digital}" fontsize="90%" color="{clrWhite}" text="{time}" /> + </area> + <area x="{areawidth}*0.865" y="{areawidth}*0.005" width="13%" height="{areawidth}*0.13" layer="4"> + <drawimage imagetype="skinpart" path="watchhands/s_{sec}" x="0" y="0" width="100%" height="100%"/> + </area> + <area x="{areawidth}*0.865" y="{areawidth}*0.005" width="13%" height="{areawidth}*0.13" layer="4"> + <drawimage imagetype="skinpart" path="watchhands/m_{min}" x="0" y="0" width="100%" height="100%"/> + </area> + <area x="{areawidth}*0.865" y="{areawidth}*0.005" width="13%" height="{areawidth}*0.13" layer="5"> + <drawimage imagetype="skinpart" path="watchhands/h_{hmins}" x="0" y="0" width="100%" height="100%"/> + </area> + </viewelement> + + <!-- Tokens available in datetimeline + {weekday} weekday of current display + {date} date of current display + --> + <viewelement name="datetimeline_hor"> + <area x="0" y="20%" width="13%" height="5%" layer="2"> + <drawtext align="center" valign="center" font="{light}" fontsize="70%" color="{clrWhite}" text="{weekday} {date}" /> + </area> + </viewelement> + + <viewelement name="datetimeline_ver"> + <area x="0" y="20%" width="8%" height="15%" layer="2"> + <drawtext align="center" y="10%" font="{light}" fontsize="40%" color="{clrWhite}" text="{weekday}" /> + <drawtext align="center" y="50%" font="{light}" fontsize="40%" color="{clrWhite}" text="{date}" /> + </area> + </viewelement> + + <!-- Tokens available in timeindicator + {percenttotal} position of current time indicator in tenth of a percent of complete time shown + --> + <viewelement name="timeindicator_hor"> + <area x="13%" y="20%" width="87%" height="70%" layer="3"> + <drawrectangle x="{percenttotal}*{areawidth}/1000" y="0" width="1" height="100%" color="{clrRed}" /> </area> - <area x="0" y="15%" width="15%" height="5%" layer="2"> - <drawtext align="center" valign="center" font="{regular}" fontsize="80%" color="{clrWhite}" text="{date}" /> + </viewelement> + + <viewelement name="timeindicator_ver"> + <area x="0" y="35%" width="100%" height="55%" layer="3"> + <drawrectangle x="0" y="{percenttotal}*{areaheight}/1000" width="100%" height="1" color="{clrRed}" /> </area> </viewelement> - <grid debug="true" name="timeline" x="15%" y="15%" width="85%" height="5%"> + <!-- Tokens available in timeline + {timestring} time of grid in hh:mm + --> + <grid name="timeline_hor" x="13%" y="20%" width="87%" height="5%"> <area layer="1"> - <fill condition="{fullhour}" color="{clrWhite}" /> - <fill condition="not{fullhour}" color="{clrBlack}" /> + <drawimage condition="{fullhour}" imagetype="skinpart" path="tvguide_timelinegrid_bright_hor" x="0" y="0" width="100%" height="100%"/> + <drawimage condition="not{fullhour}" imagetype="skinpart" path="tvguide_timelinegrid_dark_hor" x="0" y="0" width="100%" height="100%"/> </area> <area layer="2"> <drawtext condition="{fullhour}" x="5%" valign="center" font="{light}" fontsize="80%" color="{clrBlack}" text="{timestring}" /> @@ -47,26 +272,122 @@ </area> </grid> - <grid debug="true" name="channels" x="0" y="20%" width="15%" height="65%"> + <grid name="timeline_ver" x="0" y="35%" width="8%" height="55%"> <area layer="1"> - <fill color="{clrYellow}" /> + <drawimage condition="{fullhour}" imagetype="skinpart" path="tvguide_timelinegrid_bright_ver" x="0" y="0" width="100%" height="100%"/> + <drawimage condition="not{fullhour}" imagetype="skinpart" path="tvguide_timelinegrid_dark_ver" x="0" y="0" width="100%" height="100%"/> </area> <area layer="2"> - <drawtext x="1%" valign="center" width="98%" font="{light}" fontsize="40%" color="{clrWhite}" text="{number} {name}" /> + <drawtext condition="{fullhour}" align="center" y="5%" font="{light}" fontsize="60%" color="{clrBlack}" text="{timestring}" /> + <drawtext condition="not{fullhour}" align="center" y="5%" font="{light}" fontsize="60%" color="{clrWhite}" text="{timestring}" /> </area> </grid> - <grid name="schedules" x="15%" y="20%" width="85%" height="65%"> + <!-- Tokens available in channels + {name} name of channel + {number} number of channel + {channelid} id of channel to display channel logo + {channellogoexists} true if channel logo exists + --> + <grid name="channels_hor" x="5%" y="25%" width="8%" height="65%"> <area layer="1"> - <fill condition="{color}++not{current}" color="{clrBlue}" /> - <fill condition="not{color}++not{current}" color="{clrGreen}" /> - <fill condition="{current}" color="{clrRed}" /> + <drawimage imagetype="skinpart" path="tvguide_grid_active_hor" x="0" y="0" width="100%" height="100%"/> </area> <area layer="2"> - <drawtext condition="not{dummy}" x="1%" y="5%" width="98%" font="{light}" fontsize="30%" color="{clrWhite}" text="{start} - {stop}" /> - <drawtext condition="not{dummy}" x="1%" y="50%" width="98%" font="{light}" fontsize="30%" color="{clrWhite}" text="{title}" /> - <drawtext condition="{dummy}" x="1%" valign="center" width="98%" font="{light}" fontsize="40%" color="{clrWhite}" text="{title}" /> + <drawtext x="1%" valign="center" font="{light}" fontsize="45%" color="{clrWhite}" text="{number}" /> + <drawimage condition="{channellogoexists}" imagetype="channellogo" path="{channelid}" x="19%" valign="center" width="80%" height="80%" /> + <drawtext condition="not{channellogoexists}" x="19%" valign="center" width="94%" font="{light}" fontsize="45%" color="{clrWhite}" text="{name}" /> </area> </grid> + <grid name="channels_ver" x="8%" y="25%" width="92%" height="10%"> + <area layer="1"> + <drawimage imagetype="skinpart" path="tvguide_grid_active_ver" x="0" y="0" width="100%" height="100%"/> + </area> + <area layer="2"> + <drawimage condition="{channellogoexists}" imagetype="channellogo" path="{channelid}" align="center" valign="center" width="80%" height="80%" /> + <drawtext condition="not{channellogoexists}" align="center" valign="center" width="98%" font="{light}" fontsize="30%" color="{clrWhite}" text="{name}" /> + </area> + </grid> + + <!-- Tokens available in channelgroups + {color} alternates grid by grid from true to false + {group} name of channel group + --> + <grid name="channelgroups_hor" x="0" y="25%" width="5%" height="65%"> + <area layer="1"> + <drawimage condition="{color}" imagetype="skinpart" path="tvguide_grid_bright_ver" x="0" y="0" width="100%" height="100%"/> + <drawimage condition="not{color}" imagetype="skinpart" path="tvguide_grid_dark_ver" x="0" y="0" width="100%" height="100%"/> + </area> + <area layer="2"> + <drawtextvertical align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{group}" /> + </area> + </grid> + + <grid name="channelgroups_ver" x="8%" y="20%" width="92%" height="5%"> + <area layer="1"> + <drawimage condition="{color}" imagetype="skinpart" path="tvguide_grid_bright_hor" x="0" y="0" width="100%" height="100%"/> + <drawimage condition="not{color}" imagetype="skinpart" path="tvguide_grid_dark_hor" x="0" y="0" width="100%" height="100%"/> + </area> + <area layer="2"> + <drawtext align="center" valign="center" font="{regular}" fontsize="80%" color="{clrWhite}" text="{group}" /> + </area> + </grid> + + <!-- Tokens available in schedules + {color} alternates grid by grid from true to false + {dummy} true if grid is a dummy grid + {timer} true if a timer is set for the according event + {switchtimer} true if a switchtimer is set for the according event + {title} title of grid + {shorttext} shorttext of grid + {start} start time in hh:mm + {stop} stop time in hh:dd + --> + <grid name="schedules_hor" x="13%" y="25%" width="87%" height="65%"> + <area layer="1"> + <drawimage condition="{color}++not{current}" imagetype="skinpart" path="tvguide_grid_bright_hor" x="0" y="0" width="100%" height="100%"/> + <drawimage condition="not{color}++not{current}" imagetype="skinpart" path="tvguide_grid_dark_hor" x="0" y="0" width="100%" height="100%"/> + <drawimage condition="{current}" imagetype="skinpart" path="tvguide_grid_active_hor" x="0" y="0" width="100%" height="100%"/> + </area> + <area layer="2"> + <drawtext condition="not{dummy}" x="1%" y="2%" width="98%" font="{light}" fontsize="45%" color="{clrWhite}" text="{start} - {stop}" /> + <drawtext condition="not{dummy}" x="1%" y="50%" width="98%" font="{regular}" fontsize="50%" color="{clrWhite}" text="{title}" /> + <drawtext condition="{dummy}" x="1%" valign="center" width="98%" font="{regular}" fontsize="50%" color="{clrWhite}" text="{title}" /> + <drawimage condition="{timer}" imagetype="icon" path="ico_rec_on" x="{areawidth} - {areaheight}*0.42" y="58%" width="{areaheight}*0.4" height="{areaheight}*0.4"/> + <drawimage condition="{switchtimer}++not{timer}" imagetype="icon" path="ico_switchtimer" x="{areawidth} - {areaheight}*0.42" y="58%" width="{areaheight}*0.4" height="{areaheight}*0.4"/> + <drawimage condition="{switchtimer}++{timer}" imagetype="icon" path="ico_switchtimer" x="{areawidth} - {areaheight}*0.84" y="58%" width="{areaheight}*0.4" height="{areaheight}*0.4"/> + </area> + </grid> + + <grid name="schedules_ver" x="8%" y="35%" width="92%" height="55%"> + <area layer="1"> + <drawimage condition="{color}++not{current}" imagetype="skinpart" path="tvguide_grid_bright_ver" x="0" y="0" width="100%" height="100%"/> + <drawimage condition="not{color}++not{current}" imagetype="skinpart" path="tvguide_grid_dark_ver" x="0" y="0" width="100%" height="100%"/> + <drawimage condition="{current}" imagetype="skinpart" path="tvguide_grid_active_ver" x="0" y="0" width="100%" height="100%"/> + </area> + <area layer="2"> + <drawtext condition="not{dummy}" x="2%" y="0" width="96%" font="{light}" fontsize="{areawidth}*0.16" color="{clrWhite}" text="{start} - {stop}" /> + <drawtextbox name="title" condition="not{dummy}" x="2%" y="{areawidth}*0.16" width="96%" font="{regular}" fontsize="{areawidth}*0.15" color="{clrWhite}" text="{title}" /> + <drawtextbox condition="not{dummy}" x="2%" y="{posy(title)} + {height(title)} - {areawidth}*0.1" width="96%" height="{areaheight}*1.1 - {posy(title)} - {height(title)}" font="{light}" fontsize="{areawidth}*0.12" color="{clrWhite}" text="{shorttext}" /> + <drawtextbox condition="{dummy}" x="2%" y="5%" width="96%" font="{regular}" fontsize="{areawidth}*0.2" color="{clrWhite}" text="{title}" /> + <drawimage condition="{timer}" imagetype="icon" path="ico_rec_on" x="82%" y="{areaheight}-{areawidth}*0.18" width="15%" height="{areawidth}*0.15"/> + <drawimage condition="{switchtimer}++not{timer}" imagetype="icon" path="ico_switchtimer" x="82%" y="{areaheight}-{areawidth}*0.18" width="15%" height="{areawidth}*0.15"/> + <drawimage condition="{switchtimer}++{timer}" imagetype="icon" path="ico_switchtimer" x="65%" y="{areaheight}-{areawidth}*0.18" width="15%" height="{areawidth}*0.15"/> + </area> + </grid> + + <!-- Tokens available in channeljump + {channel} current user input for channel jump + --> + <viewelement name="channeljump"> + <area x="40%" y="40%" width="20%" height="20%" layer="3"> + <fill color="{clrBlack}" /> + </area> + <area x="40%" y="40%" width="20%" height="20%" layer="4"> + <drawtext align="center" y="10%" font="{bold}" fontsize="30%" color="{clrWhite}" text="Channel" /> + <drawtext align="center" y="45%" font="{light}" fontsize="50%" color="{clrWhite}" text="{channel}" /> + </area> + </viewelement> + </displayplugin> diff --git a/skins/metrixhd/themes/default/icons/ico_switchtimer.svg b/skins/metrixhd/themes/default/icons/ico_switchtimer.svg new file mode 100644 index 0000000..5e2da04 --- /dev/null +++ b/skins/metrixhd/themes/default/icons/ico_switchtimer.svg @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="45" + height="23" + id="svg2" + version="1.1" + inkscape:version="0.91pre2 r13516" + viewBox="0 0 45 23" + sodipodi:docname="ico_switchtimer.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="5.6" + inkscape:cx="13.069196" + inkscape:cy="16.082332" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1846" + inkscape:window-height="1058" + inkscape:window-x="66" + inkscape:window-y="-8" + inkscape:window-maximized="1" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1029.3622)"> + <rect + style="fill:#ff7f2a;fill-opacity:1;stroke:#ececec;stroke-width:0;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-opacity:1" + id="rect4148" + width="45" + height="23" + x="4.9999999e-006" + y="1029.3622" + ry="8.9285717" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="1.4285712" + y="1045.0408" + id="text4150" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4152" + x="1.4285712" + y="1045.0408">Switch</tspan></text> + </g> +</svg> diff --git a/skins/metrixhd/themes/default/theme.xml b/skins/metrixhd/themes/default/theme.xml index 9c65d2a..7822178 100644 --- a/skins/metrixhd/themes/default/theme.xml +++ b/skins/metrixhd/themes/default/theme.xml @@ -10,6 +10,7 @@ <color name="clrGreen">FF5FE200</color> <color name="clrYellow">FFE2DA00</color> <color name="clrBlue">FF007FE2</color> + <color name="clrBlack">FF000000</color> <color name="clrTransBlack">C0000000</color> <color name="clrSemiTransBlack">D0000000</color> <color name="clrBlueLight">FF1E8BD7</color> @@ -17,6 +18,7 @@ <color name="clrTransWhite">C0FFFFFF</color> <color name="clrWhite">FFFFFFFF</color> <color name="clrDarkGray">FF14141E</color> + <color name="clrRedTrans">55FF0000</color> <color name="clrTransparent">00000000</color> </colors> <!-- diff --git a/skins/metrixhd/xmlfiles/plug-tvguideng-detail.xml b/skins/metrixhd/xmlfiles/plug-tvguideng-detail.xml new file mode 100644 index 0000000..ef8403d --- /dev/null +++ b/skins/metrixhd/xmlfiles/plug-tvguideng-detail.xml @@ -0,0 +1,365 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE displayplugin SYSTEM "../../../dtd/displayplugin.dtd"> + +<displayplugin x="0" y="0" width="100%" height="100%"> + + <viewelement name="background"> + <area x="0" y="0" width="100%" height="100%" layer="1"> + <fill color="{clrTransBlack}" /> + </area> + <area x="0" y="0" width="100%" height="20%" layer="2"> + <fill color="{clrTransBlueLight}" /> + </area> + <area x="0" y="85%" width="100%" height="2" layer="3"> + <fill color="{clrTransBlueLight}" /> + </area> + </viewelement> + + <!-- Available Variables scrollbar: + {height} height of scrollbar in tenth of a percent of total height + {offset} offset in tenth of a percent of total height + --> + <scrollbar> + <area x="98%" y="20%" width="2%" height="65%" layer="3"> + <fill color="{clrWhite}" /> + <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" /> + <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrWhite}" /> + </area> + </scrollbar> + + <!-- Available Variables Footer: + {red1} true if red button is button 1 + {red2} true if red button is button 2 + {red3} true if red button is button 3 + {red4} true if red button is button 4 + {green1} true if green button is button 1 + {green2} true if green button is button 2 + {green3} true if green button is button 3 + {green4} true if green button is button 4 + {yellow1} true if yellow button is button 1 + {yellow2} true if yellow button is button 2 + {yellow3} true if yellow button is button 3 + {yellow4} true if yellow button is button 4 + {blue1} true if blue button is button 1 + {blue2} true if blue button is button 2 + {blue3} true if blue button is button 3 + {blue4} true if blue button is button 4 + {red} label of red button + {green} label of green button + {yellow} label of yellow button + {blue} label of blue button + --> + <viewelement name="footer"> + <area x="0" y="92%" width="25%" height="8%" layer="2"> + <drawtext condition="{red1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" /> + <drawrectangle condition="{red1}" x="0" y="0" width="10" height="100%" color="{clrRed}" /> + <drawtext condition="{green1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" /> + <drawrectangle condition="{green1}" x="0" y="0" width="10" height="100%" color="{clrGreen}" /> + <drawtext condition="{yellow1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" /> + <drawrectangle condition="{yellow1}" x="0" y="0" width="10" height="100%" color="{clrYellow}" /> + <drawtext condition="{blue1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" /> + <drawrectangle condition="{blue1}" x="0" y="0" width="10" height="100%" color="{clrBlue}" /> + </area> + <area x="25%" y="92%" width="25%" height="8%" layer="2"> + <drawtext condition="{red2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" /> + <drawrectangle condition="{red2}" x="0" y="0" width="10" height="100%" color="{clrRed}" /> + <drawtext condition="{green2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" /> + <drawrectangle condition="{green2}" x="0" y="0" width="10" height="100%" color="{clrGreen}" /> + <drawtext condition="{yellow2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" /> + <drawrectangle condition="{yellow2}" x="0" y="0" width="10" height="100%" color="{clrYellow}" /> + <drawtext condition="{blue2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" /> + <drawrectangle condition="{blue2}" x="0" y="0" width="10" height="100%" color="{clrBlue}" /> + </area> + <area x="50%" y="92%" width="25%" height="8%" layer="2"> + <drawtext condition="{red3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" /> + <drawrectangle condition="{red3}" x="0" y="0" width="10" height="100%" color="{clrRed}" /> + <drawtext condition="{green3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" /> + <drawrectangle condition="{green3}" x="0" y="0" width="10" height="100%" color="{clrGreen}" /> + <drawtext condition="{yellow3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" /> + <drawrectangle condition="{yellow3}" x="0" y="0" width="10" height="100%" color="{clrYellow}" /> + <drawtext condition="{blue3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" /> + <drawrectangle condition="{blue3}" x="0" y="0" width="10" height="100%" color="{clrBlue}" /> + </area> + <area x="75%" y="92%" width="25%" height="8%" layer="2"> + <drawtext condition="{red4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" /> + <drawrectangle condition="{red4}" x="0" y="0" width="10" height="100%" color="{clrRed}" /> + <drawtext condition="{green4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" /> + <drawrectangle condition="{green4}" x="0" y="0" width="10" height="100%" color="{clrGreen}" /> + <drawtext condition="{yellow4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" /> + <drawrectangle condition="{yellow4}" x="0" y="0" width="10" height="100%" color="{clrYellow}" /> + <drawtext condition="{blue4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" /> + <drawrectangle condition="{blue4}" x="0" y="0" width="10" height="100%" color="{clrBlue}" /> + </area> + </viewelement> + + <!-- Available Variables time: + {time} timestring in hh:mm + {sec} current seconds + {min} current minutes + {hour} current hours + {hmins} current "hourminutes" to display an hour hand + --> + <viewelement name="time"> + </viewelement> + + + <!-- Available Variables in detailheader elements: + {title} title of event + {shorttext} shorttext of event + {start} event start time in hh::mm + {stop} event stop time + {day} Day of event as three letter abrivation + {date} date of current event in dd.mm.yy + {daynumeric} day as number + {month} month as number + {year} year as number + {running} true if event is currently running + {elapsed} elapsed time of event, if not running 0 + {duration} duration of event + {durationhours} duration, full hours + {durationminutes} duration, rest of minutes + {vps} vps description string + {channelname} Channelname of event + {channelnumber} Channelnumber of event + {channellogoexists} true if a channel logo exists + {channelid} ChannelID as path to display channel logo + {ismovie} true if event is scraped as a movie + {isseries} true if event is scraped as a series + {posteravailable} true if a poster is available + {posterwidth} width of scraped poster + {posterheight} height of scraped poster + {posterpath} absolute path of scraped poster + {banneravailable} true if a banner is available + {bannerwidth} width of banner + {bannerheight} height of banner + {bannerpath} path of banner + {epgpicavailable} true if a epg picture is available + {epgpicpath} path of epg picture + --> + <viewelement name="header"> + <area x="1%" y="0" width="98%" height="20%" layer="3"> + <drawimage name="logo" imagetype="channellogo" path="{channelid}" x="0" width="15%" height="80%" valign="center" /> + <drawimage condition="{isseries}++{banneravailable}++not{epgpicavailable}" imagetype="image" path="{bannerpath}" x="{areawidth} - {areawidth}/3 - 10" valign="center" width="{areawidth}/3" height="{areawidth}/3 * {bannerheight} / {bannerwidth}"/> + <drawimage condition="{ismovie}++{posteravailable}++not{epgpicavailable}" imagetype="image" path="{posterpath}" x="{areawidth} - {areaheight}*8/10" valign="center" width="{areaheight}*8 / 10 * {posterheight} / {posterwidth}" height="{areaheight}*8 / 10"/> + <drawimage condition="{epgpicavailable}" imagetype="image" path="{epgpicpath}" x="{areawidth} - {areaheight}*8/10 * 174 / 130" valign="center" width="{areaheight}*8/10 * 174 / 130" height="{areaheight}*8 / 10"/> + + <drawtext name="title" x="{width(logo)} + 20" valign="center" font="{semibold}" fontsize="35%" color="{clrWhite}" text="{title}" /> + <drawtext name="datetime" x="{width(logo)} + 20" y="{posy(title)} - {height(datetime)}" font="{light}" fontsize="25%" color="{clrWhite}" text="{day} {date} {start} - {stop} ({duration} mins)" /> + <drawtext name="shorttext" x="{width(logo)} + 20" y="{posy(title)} + {height(title)}" font="{light}" fontsize="25%" color="{clrWhite}" text="{shorttext}" /> + </area> + </viewelement> + + <!-- Available Variables in tab elements: + {title} title of event + {shorttext} shorttext of event + {description} description of event + {start} event start time in hh::mm + {stop} event stop time + {day} Day of event as three letter abrivation + {date} date of current event in dd.mm.yy + {daynumeric} day as number + {month} month as number + {year} year as number + {running} true if event is currently running + {elapsed} elapsed time of event, if not running 0 + {duration} duration of event + {durationhours} duration, full hours + {durationminutes} duration, rest of minutes + {vps} vps description string + {channellogoexists} true if a channel logo exists + {channelid} ChannelID as path to display channel logo + {hasreruns} true if reruns of this event are found + {reruns[]} array with reruns + {reruns[title]} title of rerun + {reruns[shorttext]} shorttext of rerun + {reruns[date]} date of rerun in dd:mm + {reruns[day]} short dayname of rerun + {reruns[start]} start time of rerun in hh:mm + {reruns[stop]} stop time of rerun in hh:mm + {reruns[channelname]} name of channel on which rerun occurs + {reruns[channelnumber]} number of channel on which rerun occurs + {reruns[channelid]} id of channel on which rerun occurs to display channel logo + {reruns[channellogoexists]} true if channel logo exists + {epgpic1avaialble} true if first epg picture is available + {epgpic2avaialble} true if first epg picture is available + {epgpic3avaialble} true if first epg picture is available + {epgpic1path} path of first epg picture + {epgpic2path} path of second epg picture + {epgpic3path} path of third epg picture + + {ismovie} true if event is scraped as a movie + Available variables for movies: + {movietitle} movie title from themoviedb + {movieoriginalTitle} movie original title from themoviedb + {movietagline} movie tagline from themoviedb + {movieoverview} movie overview from themoviedb + {movieadult} true if movie is rated as adult + {moviebudget} movie budget from themoviedb in $ + {movierevenue} movie revenue from themoviedb in $ + {moviegenres} movie genres from themoviedb + {moviehomepage} movie homepage from themoviedb + {moviereleasedate} movie release date from themoviedb + {movieruntime} movie runtime from themoviedb + {moviepopularity} movie popularity from themoviedb + {movievoteaverage} movie vote average from themoviedb + {posterwidth} width of scraped poster + {posterheight} height of scraped poster + {posterpath} absolute path of scraped poster + {fanartwidth} width of scraped fanart + {fanartheight} height of scraped fanart + {fanartpath} absolute path of scraped fanart + {movieiscollection} true if movie is part of a collection + {moviecollectionName} name of movie collection + {collectionposterwidth} width of scraped collection poster + {collectionposterheight} height of scraped collection poster + {collectionposterpath} absolute path of scraped collection poster + {collectionfanartwidth} width of scraped collection fanart + {collectionfanartheight} height of scraped collection fanart + {collectionfanartpath} absolute path of scraped collection fanart + {actors[]} array with movie actors + {actors[name]} real name of actor + {actors[role]} actor role + {actors[thumb]} absolute path of scraped actor thumb + {actors[thumbwidth]} width of scraped actor thumb + {actors[thumbheight]} height of scraped actor thumb + + {isseries} true if event is scraped as a series + Available variables for series: + {seriesname} name of series + {seriesoverview} series overview + {seriesfirstaired} first aired date + {seriesnetwork} network which produces series + {seriesgenre} series genre + {seriesrating} series thetvdb rating + {seriesstatus} status of series (running / finished) + {episodetitle} title of episode + {episodenumber} number of episode + {episodeseason} season of episode + {episodefirstaired} first aired date of episode + {episodegueststars} guest stars of episode + {episodeoverview} episode overview + {episoderating} user rating for episode + {episodeimagewidth} episode image width + {episodeimageheight} episode image height + {episodeimagepath} episode image path + {seasonposterwidth} episode season poster width + {seasonposterheight} episode season poster height + {seasonposterpath} episode season poster path + {seriesposter1width} width of 1st poster + {seriesposter1height} height of 1st poster + {seriesposter1path} path of 1st poster + {seriesposter2width} width of 2nd poster + {seriesposter2height} height of 2nd poster + {seriesposter2path} path of 2nd poster + {seriesposter3width} width of 3rd poster + {seriesposter3height} height of 3rd poster + {seriesposter3path} path of 3rd poster + {seriesfanart1width} width of 1st fanart + {seriesfanart1height} height of 1st fanart + {seriesfanart1path} path of 1st fanart + {seriesfanart2width} width of 2nd fanart + {seriesfanart2height} height of 2nd fanart + {seriesfanart2path} path of 2nd fanart + {seriesfanart3width} width of 3rd fanart + {seriesfanart3height} height of 3rd fanart + {seriesfanart3path} path of 3rd fanart + {seriesbanner1width} width of 1st banner + {seriesbanner1height} height of 1st banner + {seriesbanner1path} path of 1st banner + {seriesbanner2width} width of 2nd banner + {seriesbanner2height} height of 2nd banner + {seriesbanner2path} path of 2nd banner + {seriesbanner3width} width of 3rd banner + {seriesbanner3height} height of 3rd banner + {seriesbanner3path} path of 3rd fanart + {actors[]} array with movie actors + {actors[name]} real name of actor + {actors[role]} actor role + {actors[thumb]} absolute path of scraped actor thumb + {actors[thumbwidth]} width of scraped actor thumb + {actors[thumbheight]} height of scraped actor thumb + --> + + <!-- a tab is one scrolling area, just position and draw as inside a normal area --> + <!-- just define as many tabs as needed --> + + <!-- TAB EPGINFO --> + <tab name="EPG Info" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4"> + <drawtextbox condition="not{isseries}++not{ismovie}" x="0" y="0" width="96%" font="{light}" fontsize="8%" color="{clrWhite}" text="{description}" /> + <drawimage condition="{isseries}" name="seriesposter" imagetype="image" path="{seriesposter1path}" x="{areawidth}*0.75" y="0" width="{areawidth}*0.25" height="{areawidth} * 0.25 * {seriesposter1height} / {seriesposter1width}"/> + <drawimage condition="{ismovie}" name="movieposter" imagetype="image" path="{posterpath}" x="{areawidth}*0.75" y="0" width="{areawidth}*0.25" height="{areawidth} * 0.25 * {posterheight} / {posterwidth}" /> + <drawtextbox condition="{isseries}" x="0" y="0" width="96%" float="topright" floatwidth="{width(seriesposter)} + 10" floatheight="{height(seriesposter)} + 20" font="{light}" fontsize="8%" color="{clrWhite}" text="{description}" /> + <drawtextbox condition="{ismovie}" x="0" y="0" width="96%" float="topright" floatwidth="{width(movieposter)} + 10" floatheight="{height(movieposter)} + 20" font="{light}" fontsize="8%" color="{clrWhite}" text="{description}" /> + </tab> + <!-- TAB RERUNS --> + <tab condition="{hasreruns}" name="{tr(reruns)}" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4"> + <drawtext align="center" y="0" name="title" font="{light}" fontsize="10%" color="{clrWhite}" text="{tr(rerunsof)} '{title}'" /> + <loop name="reruns" x="0" y="{height(title)} + 10" width="{areawidth}" orientation="vertical"> + <drawimage name="logo" condition="{reruns[channellogoexists]}" imagetype="channellogo" path="{reruns[channelid]}" x="0" width="10%" height="10%" /> + <drawtext name="channelname" condition="not{reruns[channellogoexists]}" x="-5" font="{light}" fontsize="10%" color="{clrWhite}" text="{reruns[channelname]}" /> + <drawtext condition="{reruns[channellogoexists]}" x="{width(logo)}+20" y="-5" width="{areawidth} - {width(logo)} - 20" font="{light}" fontsize="8%" color="{clrWhite}" text="{reruns[day]} {reruns[date]} {reruns[start]} - {reruns[stop]}: {reruns[title]} {reruns[shorttext]}" /> + <drawtext condition="not{reruns[channellogoexists]}" x="{width(channelname)}+20" y="-5" width="{areawidth} - {width(logo)} - 20" font="{light}" fontsize="8%" color="{clrWhite}" text="{reruns[day]} {reruns[date]} {reruns[start]} - {reruns[stop]}: {reruns[title]} {reruns[shorttext]}" /> + </loop> + </tab> + <!-- TAB ACTORS --> + <tab condition="{isseries}||{ismovie}" name="{tr(actors)}" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4"> + <drawtext align="center" name="title" y="0" font="{semibold}" fontsize="15%" color="{clrWhite}" text="{tr(actors)}" /> + <loop name="actors" x="0" y="{height(title)} + 10" width="{areawidth}" orientation="horizontal" columnwidth="{areawidth}/5" rowheight="{areawidth}/5*1.8" overflow="linewrap"> + <drawimage name="thumb" imagetype="image" path="{actors[thumb]}" x="20" y="0" width="{columnwidth}-40" height="{columnwidth} * {actors[thumbheight]} / {actors[thumbwidth]} - 40 * {actors[thumbheight]} / {actors[thumbwidth]}"/> + <drawtext align="center" y="{height(thumb)} + 10" width="{columnwidth}" name="actorname" font="{light}" fontsize="7%" color="{clrWhite}" text="{actors[name]}" /> + <drawtext align="center" y="{height(thumb)} + 10 + {height(actorname)}" width="{columnwidth}" font="{light}" fontsize="7%" color="{clrWhite}" text="{actors[role]}" /> + </loop> + </tab> + <!-- TAB TVDBINFO --> + <tab condition="{isseries}" name="TvDBInfo" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4"> + <drawimage name="banner" imagetype="image" path="{seriesbanner1path}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner1height} / {seriesbanner1width}"/> + <drawimage name="episodeimage" imagetype="image" path="{episodeimagepath}" x="{areawidth}*0.7" y="{height(banner)} + 20" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {episodeimageheight} / {episodeimagewidth}"/> + <drawimage name="seasonposter" imagetype="image" path="{seasonposterpath}" x="{areawidth}*0.7" y="{height(banner)} + {height(episodeimage)} + 30" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {seasonposterheight} / {seasonposterwidth}"/> + <drawtextbox x="0" y="{height(banner)} + 20" width="96%" float="topright" floatwidth="{width(seasonposter)} + 10" floatheight="{height(episodeimage)} + {height(seasonposter)} + 30" font="{light}" fontsize="8%" color="{clrWhite}" text="{tr(episode)}: {episodetitle} ({tr(season)} {episodeseason}, {tr(episode)} {episodenumber}) {episodeoverview}| {tr(gueststars)}: {episodegueststars}|| {tr(seriesfirstaired)}: {seriesfirstaired}|| {tr(episodefirstaired)}: {episodefirstaired}|| {tr(network)}: {seriesnetwork}|| {tr(genre)}: {seriesgenre}|| {tr(status)}: {seriesstatus}|| {tr(rating)}: {seriesrating}|| {tr(episoderating)}: {episoderating} |{seriesoverview} " /> + </tab> + <!-- TAB SERIESGALERY --> + <tab condition="{isseries}" name="{tr(seriesgalery)}" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4"> + <drawimage name="banner1" imagetype="image" path="{seriesbanner1path}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner1height} / {seriesbanner1width}"/> + <drawimage name="fanart1" imagetype="image" path="{seriesfanart1path}" align="center" y="{posy(banner1)} + {height(banner1)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart1height} / {seriesfanart1width}"/> + <drawimage name="banner2" imagetype="image" path="{seriesbanner2path}" align="center" y="{posy(fanart1)} + {height(fanart1)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner2height} / {seriesbanner2width}"/> + <drawimage name="fanart2" imagetype="image" path="{seriesfanart2path}" align="center" y="{posy(banner2)} + {height(banner2)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart2height} / {seriesfanart2width}"/> + <drawimage name="banner3" imagetype="image" path="{seriesbanner3path}" align="center" y="{posy(fanart2)} + {height(fanart2)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner3height} / {seriesbanner3width}"/> + <drawimage name="fanart3" imagetype="image" path="{seriesfanart3path}" align="center" y="{posy(banner3)} + {height(banner3)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart3height} / {seriesfanart3width}"/> + <drawimage name="poster1" imagetype="image" path="{seriesposter1path}" align="center" y="{posy(fanart3)} + {height(fanart3)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter1height} / {seriesposter1width}"/> + <drawimage name="poster2" imagetype="image" path="{seriesposter2path}" align="center" y="{posy(poster1)} + {height(poster1)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter2height} / {seriesposter2width}"/> + <drawimage name="poster3" imagetype="image" path="{seriesposter3path}" align="center" y="{posy(poster2)} + {height(poster2)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter3height} / {seriesposter3width}"/> + </tab> + <!-- TAB MOVIEDBINFO --> + <tab condition="{ismovie}" name="MovieDBInfo" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4"> + <drawimage name="poster" imagetype="image" path="{posterpath}" x="70%" y="10" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {posterheight} / {posterwidth}"/> + <drawtextbox x="0" y="10" width="96%" float="topright" floatwidth="{width(poster)} + 10" floatheight="{height(poster)} + 20" font="{light}" fontsize="8%" color="{clrWhite}" text="{tr(originaltitle)}: {movieoriginalTitle} |{tr(genre)}: {moviegenres} ||{movietagline} |{movieoverview} |{tr(budget)}: {moviebudget} ||{tr(revenue)}: {movierevenue} ||{tr(adult)}: {movieadult} ||{tr(releasedate)}: {moviereleasedate} ||{tr(runtime)}: {movieruntime} min || {tr(popularity)}: {moviepopularity} || {tr(voteaverage)}: {movievoteaverage} || {tr(homepage)}: {moviehomepage}| " /> + </tab> + <!-- TAB MOVIEGALERY --> + <tab condition="{ismovie}" name="{tr(moviegalery)}" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4"> + <drawimage name="fanart" imagetype="image" path="{fanartpath}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {fanartheight} / {fanartwidth}"/> + <drawimage name="poster" imagetype="image" path="{posterpath}" align="center" y="{height(fanart)} + 30" width="{areawidth}*0.6" height="{areawidth} * 0.6 * {posterheight} / {posterwidth}"/> + <drawimage condition="{movieiscollection}" name="collectionfanart" imagetype="image" path="{collectionfanartpath}" align="center" y="{posy(poster)} + {height(poster)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {collectionfanartheight} / {collectionfanartwidth}"/> + <drawimage condition="{movieiscollection}" name="collectionposter" imagetype="image" path="{collectionposterpath}" align="center" y="{posy(collectionfanart)} + {height(collectionfanart)} + 20" width="{areawidth}*0.6" height="{areawidth} * 0.6 * {collectionposterheight} / {collectionposterwidth}"/> + </tab> + + + <!-- Available Variables tablabels: + {currenttab} name of currently active tab + {prevtab} name of prev tab + {nexttab} name of next tab + {tabs[]} array with available tab labels + {tabs[title]} title of tab + {tabs[current]} true if tab is displayed currently + --> + <tablabels> + <area x="0" y="85%" width="98%" height="5%" layer="3"> + <loop name="tabs" x="0" y="0" orientation="horizontal"> + <drawrectangle condition="{tabs[current]}" x="0" y="0" width="{width(label)}" height="100%" color="{clrTransBlueLight}" /> + <drawrectangle condition="not{tabs[current]}" x="0" y="0" width="{width(label)}" height="100%" color="{clrTransBlueLight}" /> + <drawrectangle condition="not{tabs[current]}" x="2" y="2" width="{width(label)} - 4" height="{areaheight}-4" color="{clrTransparent}" /> + <drawtext name="label" x="0" valign="center" font="{light}" fontsize="95%" color="{clrWhite}" text=" {tabs[title]} " /> + </loop> + </area> + </tablabels> + +</displayplugin> diff --git a/skins/metrixhd/xmlfiles/plug-tvguideng-recmenu.xml b/skins/metrixhd/xmlfiles/plug-tvguideng-recmenu.xml new file mode 100644 index 0000000..03ae66f --- /dev/null +++ b/skins/metrixhd/xmlfiles/plug-tvguideng-recmenu.xml @@ -0,0 +1,452 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE displayplugin SYSTEM "../../../dtd/displayplugin.dtd"> + +<displayplugin x="0" y="0" width="100%" height="100%"> + <!-- Available Variables Background: + {menuwidth} menuwidth in percent of screenwidth + {menuheight} menuheight in percent of screenheight + {hasscrollbar} true if menu needs a scrollbar + --> + <viewelement name="background"> + <area condition="not{hasscrollbar}" x="0" y="0" width="100%" height="100%" layer="4"> + <drawrectangle x="{areawidth}/2 - {menuwidth}*{areawidth}/100/2" y="{areaheight}/2 - {menuheight}*{areaheight}/100/2" width="{menuwidth}*{areawidth}/100" height="{menuheight}*{areaheight}/100" color="{clrTransBlack}" /> + </area> + <area condition="{hasscrollbar}" x="0" y="0" width="100%" height="100%" layer="4"> + <drawrectangle x="{areawidth}/2 - {menuwidth}*{areawidth}/100/2" y="{areaheight}/2 - {menuheight}*{areaheight}/100/2" width="{menuwidth}*{areawidth}/100 + {areawidth}*0.03" height="{menuheight}*{areaheight}/100" color="{clrTransBlack}"/> + </area> + </viewelement> + + <!-- Available Variables Scrollbar: + {menuwidth} menuwidth in percent of screenwidth + {posy} y position of scrollbar start in percent of screenheight + {totalheight} height of complete scrollbar in percent of screenheight + {height} height in tenth of a percent of total height + {offset} offset in tenth of a percent + --> + <viewelement name="scrollbar"> + <area x="0" y="0" width="100%" height="100%" layer="5"> + <drawrectangle x="{areawidth}/2 + {menuwidth}*{areawidth}/100/2" y="{posy}*{areaheight}/100" width="2%" height="{totalheight}*{areaheight}/100" color="{clrWhite}" /> + <drawrectangle x="{areawidth}/2 + {menuwidth}*{areawidth}/100/2 + 2" y="{posy}*{areaheight}/100 + 2" width="{areawidth}*0.02 - 4" height="{totalheight}*{areaheight}/100 - 4" color="{clrTransparent}" /> + </area> + <area x="0" y="0" width="100%" height="100%" layer="6"> + <drawrectangle x="{areawidth}/2 + {menuwidth}*{areawidth}/100/2 + 4" y="{posy}*{areaheight}/100 + {totalheight}*{areaheight}/100 * {offset} / 1000 + 4" width="{areawidth}*0.02 - 8" height="{totalheight}*{areaheight}/100 * {height} / 1000 - 8" color="{clrWhite}" /> + </area> + </viewelement> + + <grid name="recmenu" x="0" y="0" width="100%" height="100%"> + <!-- Background + {current} true if item is currently selected + --> + <area condition="not{info}++not{buttonyesno}++not{timerconflictheader}++not{timerconflict}++not{timelineheader}++not{timelinetimer}" layer="5"> + <fill condition="{current}" color="{clrTransBlueLight}" /> + <fill condition="not{current}" color="{clrTransBlack}" /> + </area> + <!-- info item + {info} true + {lines} number of lines to display (max. 4) + {line1} text of line 1 + {line2} text of line 1 + {line3} text of line 1 + {line4} text of line 1 + --> + <area condition="{info}" layer="5"> + <drawtext condition="eq({lines}, 1)" align="center" valign="center" font="{semibold}" fontsize="60%" color="{clrWhite}" text="{line1}" /> + + <drawtext condition="eq({lines}, 2)" align="center" y="5%" font="{semibold}" fontsize="40%" color="{clrWhite}" text="{line1}" /> + <drawtext condition="eq({lines}, 2)" align="center" y="52%" font="{semibold}" fontsize="40%" color="{clrWhite}" text="{line2}" /> + + <drawtext condition="eq({lines}, 3)" align="center" y="0%" font="{semibold}" fontsize="28%" color="{clrWhite}" text="{line1}" /> + <drawtext condition="eq({lines}, 3)" align="center" y="33%" font="{semibold}" fontsize="28%" color="{clrWhite}" text="{line2}" /> + <drawtext condition="eq({lines}, 3)" align="center" y="66%" font="{semibold}" fontsize="28%" color="{clrWhite}" text="{line3}" /> + + <drawtext condition="eq({lines}, 4)" align="center" y="0%" font="{semibold}" fontsize="22%" color="{clrWhite}" text="{line1}" /> + <drawtext condition="eq({lines}, 4)" align="center" y="25%" font="{semibold}" fontsize="22%" color="{clrWhite}" text="{line2}" /> + <drawtext condition="eq({lines}, 4)" align="center" y="50%" font="{semibold}" fontsize="22%" color="{clrWhite}" text="{line3}" /> + <drawtext condition="eq({lines}, 4)" align="center" y="75%" font="{semibold}" fontsize="22%" color="{clrWhite}" text="{line4}" /> + </area> + <!-- button + {button} true + {buttontext} text to display on button + --> + <area condition="{button}" layer="6"> + <drawtext align="center" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{buttontext}" /> + </area> + + <!-- yes / no button + {buttonyesno} true + {yes} true if button is set to yes + {textyes} text to display on yes button + {textno} text to display on no button + --> + <area condition="{buttonyesno}" layer="5"> + <drawrectangle condition="not{current}" x="2%" y="5%" width="46%" height="90%" color="{clrDarkGray}"/> + <drawrectangle condition="not{current}" x="52%" y="5%" width="46%" height="90%" color="{clrDarkGray}"/> + <drawrectangle condition="{current}++{yes}" x="2%" y="5%" width="46%" height="90%" color="{clrTransBlueLight}"/> + <drawrectangle condition="{current}++{yes}" x="52%" y="5%" width="46%" height="90%" color="{clrDarkGray}"/> + <drawrectangle condition="{current}++not{yes}" x="2%" y="5%" width="46%" height="90%" color="{clrDarkGray}"/> + <drawrectangle condition="{current}++not{yes}" x="52%" y="5%" width="46%" height="90%" color="{clrTransBlueLight}"/> + </area> + <area condition="{buttonyesno}" layer="6"> + <drawtext name="yestext" x="{areawidth}/4 - {width(yestext)}/2" valign="center" font="{light}" fontsize="70%" color="{clrWhite}" text="{textyes}" /> + <drawtext name="notext" x="3*{areawidth}/4 - {width(notext)}/2" valign="center" font="{light}" fontsize="70%" color="{clrWhite}" text="{textno}" /> + </area> + <!-- Int Selector + {intselector} true + {text} title of selector + {value} current value of selector, integer + --> + <area condition="{intselector}" layer="6"> + <drawtext x="1%" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{text}" /> + <drawtext align="right" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{value} " /> + </area> + <!-- Bool Selector + {boolselector} true + {text} title of selector + {value} current value of selector, true or false + --> + <area condition="{boolselector}" layer="6"> + <drawtext x="1%" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{text}" /> + <drawimage condition="{value}" imagetype="icon" path="ico_yes" x="{areawidth} - {areaheight}*0.8" y="10%" width="{areaheight}*0.8" height="{areaheight}*0.8"/> + <drawimage condition="not{value}" imagetype="icon" path="ico_no" x="{areawidth} - {areaheight}*0.8" y="10%" width="{areaheight}*0.8" height="{areaheight}*0.8"/> + </area> + <!-- String Selector + {stringselector} true + {text} title of selector + {value} current value of selector, string + --> + <area condition="{stringselector}" layer="6"> + <drawtext x="1%" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{text}" /> + <drawimage imagetype="icon" path="ico_arrow_right" x="{areawidth} - {areaheight}*0.8" y="10%" width="{areaheight}*0.8" height="{areaheight}*0.8"/> + <drawtext name="value" x="{areawidth} - {width(value)} - {areaheight}" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{value}" /> + <drawimage imagetype="icon" path="ico_arrow_left" x="{areawidth} - {width(value)} - 2*{areaheight}" y="10%" width="{areaheight}*0.8" height="{areaheight}*0.8"/> + </area> + <!-- Text Input + {textinput} true + {editmode} true if currently in edit mode + {text} title of selector + {value} current value of selector, string + --> + <area condition="{textinput}" layer="6"> + <drawtext x="1%" y="10%" font="{light}" fontsize="40%" color="{clrWhite}" text="{text}" /> + <drawrectangle condition="not{editmode}" x="1%" y="55%" width="98%" height="40%" color="{clrWhite}"/> + <drawrectangle condition="{editmode}" x="1%" y="55%" width="98%" height="40%" color="{clrRed}"/> + </area> + <area condition="{textinput}" layer="7"> + <drawtext align="right" y="55%" font="{light}" fontsize="40%" color="{clrBlack}" text="{value} " /> + </area> + <!-- Time Selector + {timeselector} true + {text} title of selector + {value} current value of selector, hh:mm + --> + <area condition="{timeselector}" layer="6"> + <drawtext x="1%" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{text}" /> + <drawtext align="right" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{value} " /> + </area> + <!-- Day Selector + {dayselector} true + {text} title of selector + {value} current value of selector, dd.mm + --> + <area condition="{dayselector}" layer="6"> + <drawtext x="1%" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{text}" /> + <drawtext align="right" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{value} " /> + </area> + <!-- Channel Selector + {channelselector} true + {text} title of selector + {channelnumber} number of currently selected channel, 0 for "all channels" + {channelname} name of channel or "all channels" + {channelid} id of channel + {channellogoexisis} true if channel logo exists + --> + <area condition="{channelselector}" layer="6"> + <drawtext x="1%" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{text}" /> + <drawimage condition="{channellogoexisis}" imagetype="channellogo" path="{channelid}" x="{areawidth}-{areaheight}" valign="center" width="{areaheight}*0.9" height="{areaheight}*0.9" /> + <drawtext name="channelnumberlogo" condition="{channellogoexisis}" x="{areawidth}-{areaheight}-{width(channelnumberlogo)}-10" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{channelnumber}" /> + <drawtext condition="not{channellogoexisis}++{channelnumber}" align="right" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{channelnumber} {channelname} " /> + <drawtext condition="not{channelnumber}" align="right" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{channelname} " /> + </area> + <!-- Weekday Selector + {weekdayselector} true + {text} title of selector + {dayselected} number of currently selected day (0 - 6) + {day0abbr} ... {day6abbr} localized one character abbrevation for weekdays from Monday to Sunday + {day0set} ... {day6set} true if according weekday from Monday to Sunday is set + --> + <area condition="{weekdayselector}" layer="6"> + <drawtext x="1%" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{text}" /> + + <drawrectangle x="{areawidth} - {areaheight}*4" y="25%" width="{areaheight}*3.5" height="50%" color="{clrWhite}" /> + + <drawrectangle condition="not{day0set}" x="{areawidth} - {areaheight}*4.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrDarkGray}" /> + <drawrectangle condition="{day0set}" x="{areawidth} - {areaheight}*4.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrTransBlueLight}" /> + + <drawrectangle condition="not{day1set}" x="{areawidth} - {areaheight}*3.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrDarkGray}" /> + <drawrectangle condition="{day1set}" x="{areawidth} - {areaheight}*3.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrTransBlueLight}" /> + + <drawrectangle condition="not{day2set}" x="{areawidth} - {areaheight}*3.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrDarkGray}" /> + <drawrectangle condition="{day2set}" x="{areawidth} - {areaheight}*3.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrTransBlueLight}" /> + + <drawrectangle condition="not{day3set}" x="{areawidth} - {areaheight}*2.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrDarkGray}" /> + <drawrectangle condition="{day3set}" x="{areawidth} - {areaheight}*2.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrTransBlueLight}" /> + + <drawrectangle condition="not{day4set}" x="{areawidth} - {areaheight}*2.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrDarkGray}" /> + <drawrectangle condition="{day4set}" x="{areawidth} - {areaheight}*2.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrTransBlueLight}" /> + + <drawrectangle condition="not{day5set}" x="{areawidth} - {areaheight}*1.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrDarkGray}" /> + <drawrectangle condition="{day5set}" x="{areawidth} - {areaheight}*1.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrTransBlueLight}" /> + + <drawrectangle condition="not{day6set}" x="{areawidth} - {areaheight}*1.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrDarkGray}" /> + <drawrectangle condition="{day6set}" x="{areawidth} - {areaheight}*1.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrTransBlueLight}" /> + </area> + <area condition="{weekdayselector}" layer="7"> + <drawrectangle condition="{current}++eq({dayselected}, 0)" x="{areawidth} - {areaheight}*4.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrTransBlack}" /> + <drawrectangle condition="{current}++eq({dayselected}, 1)" x="{areawidth} - {areaheight}*3.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrTransBlack}" /> + <drawrectangle condition="{current}++eq({dayselected}, 2)" x="{areawidth} - {areaheight}*3.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrTransBlack}" /> + <drawrectangle condition="{current}++eq({dayselected}, 3)" x="{areawidth} - {areaheight}*2.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrTransBlack}" /> + <drawrectangle condition="{current}++eq({dayselected}, 4)" x="{areawidth} - {areaheight}*2.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrTransBlack}" /> + <drawrectangle condition="{current}++eq({dayselected}, 5)" x="{areawidth} - {areaheight}*1.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrTransBlack}" /> + <drawrectangle condition="{current}++eq({dayselected}, 6)" x="{areawidth} - {areaheight}*1.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrTransBlack}" /> + + <drawtext name="day0" x="{areawidth} - {areaheight}*4.0 + {areaheight}/4 - {width(day0)}/2" valign="center" font="{light}" fontsize="50%" color="{clrWhite}" text="{day0abbr}" /> + <drawtext name="day1" x="{areawidth} - {areaheight}*3.5 + {areaheight}/4 - {width(day1)}/2" valign="center" font="{light}" fontsize="50%" color="{clrWhite}" text="{day1abbr}" /> + <drawtext name="day2" x="{areawidth} - {areaheight}*3.0 + {areaheight}/4 - {width(day2)}/2" valign="center" font="{light}" fontsize="50%" color="{clrWhite}" text="{day2abbr}" /> + <drawtext name="day3" x="{areawidth} - {areaheight}*2.5 + {areaheight}/4 - {width(day3)}/2" valign="center" font="{light}" fontsize="50%" color="{clrWhite}" text="{day3abbr}" /> + <drawtext name="day4" x="{areawidth} - {areaheight}*2.0 + {areaheight}/4 - {width(day4)}/2" valign="center" font="{light}" fontsize="50%" color="{clrWhite}" text="{day4abbr}" /> + <drawtext name="day5" x="{areawidth} - {areaheight}*1.5 + {areaheight}/4 - {width(day5)}/2" valign="center" font="{light}" fontsize="50%" color="{clrWhite}" text="{day5abbr}" /> + <drawtext name="day6" x="{areawidth} - {areaheight}*1.0 + {areaheight}/4 - {width(day6)}/2" valign="center" font="{light}" fontsize="50%" color="{clrWhite}" text="{day6abbr}" /> + </area> + <!-- Directory Selector + {directoryselector} true + {text} title of selector + {folder} current folder of selector, string + --> + <area condition="{directoryselector}" layer="6"> + <drawtext x="1%" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{text}" /> + <drawimage imagetype="icon" path="ico_arrow_right" x="{areawidth} - {areaheight}*0.8" y="10%" width="{areaheight}*0.8" height="{areaheight}*0.8"/> + <drawtext name="folder" x="{areawidth} - {width(folder)} - {areaheight}" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{folder}" /> + <drawimage imagetype="icon" path="ico_arrow_left" x="{areawidth} - {width(folder)} - 2*{areaheight}" y="10%" width="{areaheight}*0.8" height="{areaheight}*0.8"/> + </area> + <!-- Timerconflict Header + {timerconflictheader} true + {text} title of Timerconflict Header + {conflictstart} start of conflict in hh:mm + {conflictstop} end of conflict in hh:mm + {overlapstart} start of overlap in hh:mm + {overlapstop} end of overlap in hh:mm + {overlapstartpercent} start of overlap in percent of total conflict time width + {overlapwidthpercent} width of overlap in percent of total conflict time width + --> + <area condition="{timerconflictheader}" layer="5"> + <drawtext name="title" x="{areawidth}*0.7*0.5 - {width(title)}/2" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{text}" /> + <drawrectangle x="70%" y="0" width="30%" height="100%" color="{clrWhite}"/> + </area> + <area condition="{timerconflictheader}" layer="6"> + <drawtext x="{areawidth}*0.7" y="0" font="{light}" fontsize="50%" color="{clrBlack}" text="{conflictstart}" /> + <drawtext align="right" y="0" font="{light}" fontsize="50%" color="{clrBlack}" text="{conflictstop}" /> + <drawtext name="olstart" x="{areawidth}*0.7 + {overlapstartpercent}*{areawidth}*0.3/100 - 70" y="50%" font="{light}" fontsize="50%" color="{clrRed}" text="{overlapstart}" /> + <drawtext x="{areawidth}*0.7 + {overlapstartpercent}*{areawidth}*0.3/100 + {overlapwidthpercent}*{areawidth}*0.3/100 + 5" y="50%" font="{light}" fontsize="50%" color="{clrRed}" text="{overlapstop}" /> + <drawrectangle x="{areawidth}*0.7 + {overlapstartpercent}*{areawidth}*0.3/100" y="50%" width="{overlapwidthpercent}*{areawidth}*0.3/100" height="50%" color="{clrRedTrans}"/> + </area> + <!-- Timerconflict + {timerconflict} true + {timertitle} title of timer + {channelname} name of channel + {channelid} channel ID + {transponder} transponder of channel + {starttime} start of timer in hh:mm + {stoptime} end of timer in hh:mm + {date} date of timer in dd.mm.yy + {weekday} weekday of timer, 3 letter abrivation + {infoactive} true if info icon is active + {deleteactive} true if delete icon is active + {editactive} true if edit icon is active + {searchactive} true if search icon is active + {timerstartpercent} start of timer in percent of total conflict time width + {timerwidthpercent} end of timer in percent of total conflict time width + {overlapstartpercent} start of overlap in percent of total conflict time width + {overlapwidthpercent} width of overlap in percent of total conflict time width + --> + <area condition="{timerconflict}" layer="5"> + <drawimage condition="not{current}" imagetype="skinpart" path="menubutton" x="0" y="0" width="70%" height="100%"/> + <drawimage condition="{current}" imagetype="skinpart" path="menubuttonactive" x="0" y="0" width="70%" height="100%"/> + </area> + <area condition="{timerconflict}" layer="6"> + <drawimage condition="{current}++{infoactive}" imagetype="icon" path="ico_info_active" x="{areaheight}*0.05" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}||not{infoactive}" imagetype="icon" path="ico_info_inactive" x="{areaheight}*0.05" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="{current}++{deleteactive}" imagetype="icon" path="ico_delete_active" x="{areaheight}*0.6" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}||not{deleteactive}" imagetype="icon" path="ico_delete_inactive" x="{areaheight}*0.6" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="{current}++{editactive}" imagetype="icon" path="ico_edit_active" x="{areaheight}*1.15" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}||not{editactive}" imagetype="icon" path="ico_edit_inactive" x="{areaheight}*1.15" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="{current}++{searchactive}" imagetype="icon" path="ico_search_active" x="{areaheight}*1.7" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}||not{searchactive}" imagetype="icon" path="ico_search_inactive" x="{areaheight}*1.7" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawtext x="{areaheight}*2.3" width="{areawidth}*0.7 - {areaheight}*2.4" y="0" font="{regular}" fontsize="40%" color="{clrWhite}" text="{timertitle}" /> + <drawtext x="{areaheight}*2.3" y="40%" font="{light}" fontsize="30%" color="{clrWhite}" text="{weekday} {date} {starttime} - {stoptime}" /> + <drawtext x="{areaheight}*2.3" y="70%" font="{light}" fontsize="30%" color="{clrWhite}" text="{channelname}, Transp. {transponder}" /> + <drawrectangle x="70%" y="0" width="30%" height="100%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.7 + {timerstartpercent}*{areawidth}*0.3/100" y="30%" width="{timerwidthpercent}*{areawidth}*0.3/100" height="40%" color="{clrBlack}"/> + </area> + <area condition="{timerconflict}" layer="7"> + <drawrectangle x="{areawidth}*0.7 + {overlapstartpercent}*{areawidth}*0.3/100" y="0" width="{overlapwidthpercent}*{areawidth}*0.3/100" height="100%" color="{clrRedTrans}"/> + </area> + <!-- Event + {event} true + {title} title of event + {shorttext} shorttext of event + {starttime} start of event in hh:mm + {stoptime} end of event in hh:mm + {date} date of event in dd.mm.yy + {weekday} weekday of event, 3 letter abrivation + {channelnumber} number of channel + {channelname} name of channel + {channelid} id of channel + {channellogoexisis} true if channel logo exists + {hastimer} true if event has a timer + --> + <area condition="{event}" layer="6"> + <drawimage condition="{current}" imagetype="icon" path="ico_info_active" x="{areaheight}*0.05" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}" imagetype="icon" path="ico_info_inactive" x="{areaheight}*0.05" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="{channellogoexisis}" imagetype="channellogo" path="{channelid}" x="{areaheight}*0.8" valign="center" width="{areaheight}" height="{areaheight}" /> + <drawtext x="{areaheight}*2.2" y="2" font="{light}" fontsize="30%" color="{clrWhite}" text="{weekday} {date} {starttime} - {stoptime} {channelname}" /> + <drawtext x="{areaheight}*2.2" y="30%" width="{areawidth} - 3*{areaheight}" font="{regular}" fontsize="45%" color="{clrWhite}" text="{title}" /> + <drawtext x="{areaheight}*2.2" y="69%" width="{areawidth} - 3*{areaheight}" font="{light}" fontsize="30%" color="{clrWhite}" text="{shorttext}" /> + <drawimage condition="{current}++not{hastimer}" imagetype="icon" path="ico_record_active" x="{areawidth} - {areaheight}*0.6" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}++not{hastimer}" imagetype="icon" path="ico_record_inactive" x="{areawidth} - {areaheight}*0.6" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="{hastimer}" imagetype="icon" path="ico_activetimer" x="{areawidth} - {areaheight}*0.6" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + </area> + <!-- Recording + {recording} true + {recname} title of recording + {recstarttime} start of recording in hh:mm + {recdate} date of recording in dd.mm.yy + {recduration} duration of recording in min + {channelnumber} number of channel + {channelname} name of channel + {channelid} id of channel + {channellogoexisis} true if channel logo exists + --> + <area condition="{recording}" layer="6"> + <drawtext x="1%" y="0" font="{light}" width="98%" fontsize="50%" color="{clrWhite}" text="{recname}" /> + <drawtext x="55%" y="0" font="{light}" width="98%" fontsize="35%" color="{clrWhite}" text="{recdate} {recstarttime} - {recduration} min, {channelname}" /> + </area> + <!-- Searchtimer + {searchtimer} true + {timeractive} true if searchtimer is active + {searchstring} searchtimer search string + {activetimers} number of active timers caused by this searchtimer + {recordingsdone} number of recordings done by this searchtimer + {searchactive} true if search icon is active + {editactive} true if edit icon is active + {deleteactive} true if delete icon is active + --> + <area condition="{searchtimer}" layer="6"> + <drawimage condition="{current}++{searchactive}" imagetype="icon" path="ico_search_active" x="{areaheight}*0.05" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}||not{searchactive}" imagetype="icon" path="ico_search_inactive" x="{areaheight}*0.05" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="{current}++{editactive}" imagetype="icon" path="ico_edit_active" x="{areaheight}*0.6" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}||not{editactive}" imagetype="icon" path="ico_edit_inactive" x="{areaheight}*0.6" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="{current}++{deleteactive}" imagetype="icon" path="ico_delete_active" x="{areaheight}*1.15" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}||not{deleteactive}" imagetype="icon" path="ico_delete_inactive" x="{areaheight}*1.15" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawtext x="{areaheight}*1.8" width="{areawidth} - {areaheight}*2" y="5%" font="{regular}" fontsize="45%" color="{clrWhite}" text="{searchstring}" /> + <drawtext condition="{timeractive}" align="right" y="5%" font="{regular}" fontsize="35%" color="{clrWhite}" text="active " /> + <drawtext x="{areaheight}*1.8" y="55%" font="{light}" fontsize="35%" color="{clrWhite}" text="Active Timers: {activetimers}, Recordings: {recordingsdone}" /> + </area> + <!-- Timeline Header + {timelineheader} true + {date} date of current day in weekdayname dd.mm.yyyy + {timerset} true if timer info is set + {channelname} name of channel of timer + {channelid} channel ID of channel of timer + {channellogoexisis} true if channel logo exists + {channelnumber} number of channel of timer + {channeltransponder} transponder of channel of timer + {timerstart} start of timer in hh:mm + {timerstop} end of timer in hh:mm + {eventtitle} title of according event + {eventshorttext} short text of according event + {eventstart} start time of according event + {eventstop} end time of according event + --> + <area condition="{timelineheader}" layer="5"> + <drawtext align="center" y="1%" font="{regular}" fontsize="35%" color="{clrWhite}" text="Timer for {date}" /> + <drawrectangle x="{areawidth}*0.05" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.0875" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.125" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.1625" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.2" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.2375" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.275" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.3125" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.35" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.3875" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.425" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.4625" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.5" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.5375" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.575" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.6125" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.65" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.6875" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.725" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.7625" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.8" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.8375" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.875" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.9125" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + </area> + <area condition="{timelineheader}" layer="6"> + <drawtext name="text0" x="{areawidth}*0.05 + {areawidth}*0.0375/2 - {width(text0)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrWhite}" text="0"/> + <drawtext name="text1" x="{areawidth}*0.0875 + {areawidth}*0.0375/2 - {width(text1)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrBlack}" text="1"/> + <drawtext name="text2" x="{areawidth}*0.125 + {areawidth}*0.0375/2 - {width(text2)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrWhite}" text="2"/> + <drawtext name="text3" x="{areawidth}*0.1625 + {areawidth}*0.0375/2 - {width(text3)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrBlack}" text="3"/> + <drawtext name="text4" x="{areawidth}*0.2 + {areawidth}*0.0375/2 - {width(text4)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrWhite}" text="4"/> + <drawtext name="text5" x="{areawidth}*0.2375 + {areawidth}*0.0375/2 - {width(text5)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrBlack}" text="5"/> + <drawtext name="text6" x="{areawidth}*0.275 + {areawidth}*0.0375/2 - {width(text6)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrWhite}" text="6"/> + <drawtext name="text7" x="{areawidth}*0.3125 + {areawidth}*0.0375/2 - {width(text7)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrBlack}" text="7"/> + <drawtext name="text8" x="{areawidth}*0.35 + {areawidth}*0.0375/2 - {width(text8)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrWhite}" text="8"/> + <drawtext name="text9" x="{areawidth}*0.3875 + {areawidth}*0.0375/2 - {width(text9)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrBlack}" text="9"/> + <drawtext name="text10" x="{areawidth}*0.425 + {areawidth}*0.0375/2 - {width(text10)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrWhite}" text="10"/> + <drawtext name="text11" x="{areawidth}*0.4625 + {areawidth}*0.0375/2 - {width(text11)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrBlack}" text="11"/> + <drawtext name="text12" x="{areawidth}*0.5 + {areawidth}*0.0375/2 - {width(text12)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrWhite}" text="12"/> + <drawtext name="text13" x="{areawidth}*0.5375 + {areawidth}*0.0375/2 - {width(text13)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrBlack}" text="13"/> + <drawtext name="text14" x="{areawidth}*0.575 + {areawidth}*0.0375/2 - {width(text14)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrWhite}" text="14"/> + <drawtext name="text15" x="{areawidth}*0.6125 + {areawidth}*0.0375/2 - {width(text15)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrBlack}" text="15"/> + <drawtext name="text16" x="{areawidth}*0.65 + {areawidth}*0.0375/2 - {width(text16)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrWhite}" text="16"/> + <drawtext name="text17" x="{areawidth}*0.6875 + {areawidth}*0.0375/2 - {width(text17)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrBlack}" text="17"/> + <drawtext name="text18" x="{areawidth}*0.725 + {areawidth}*0.0375/2 - {width(text18)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrWhite}" text="18"/> + <drawtext name="text19" x="{areawidth}*0.7625 + {areawidth}*0.0375/2 - {width(text19)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrBlack}" text="19"/> + <drawtext name="text20" x="{areawidth}*0.8 + {areawidth}*0.0375/2 - {width(text20)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrWhite}" text="20"/> + <drawtext name="text21" x="{areawidth}*0.8375 + {areawidth}*0.0375/2 - {width(text21)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrBlack}" text="21"/> + <drawtext name="text22" x="{areawidth}*0.875 + {areawidth}*0.0375/2 - {width(text22)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrWhite}" text="22"/> + <drawtext name="text23" x="{areawidth}*0.9125 + {areawidth}*0.0375/2 - {width(text23)}/2" y="80%" font="{regular}" fontsize="20%" color="{clrBlack}" text="23"/> + </area> + <area condition="{timelineheader}++{timerset}" layer="6"> + <drawimage condition="{channellogoexisis}" imagetype="channellogo" path="{channelid}" x="1%" y="30%" width="{areaheight}*0.5" height="{areaheight}*0.5" /> + <drawtext condition="not{channellogoexisis}" x="1%" width="{areaheight}*0.7" y="40%" font="{light}" fontsize="20%" color="{clrWhite}" text="{channelname}"/> + <drawtext x="{areaheight}*0.8" y="36%" font="{light}" fontsize="25%" color="{clrWhite}" text="{eventstart} - {eventstop} (Rec. {timerstart} - {timerstop}), Transp. {channeltransponder}"/> + <drawtext x="{areaheight}*0.8" y="57%" width="{areawidth}-{areaheight}" font="{light}" fontsize="25%" color="{clrWhite}" text="{eventtitle} - {eventshorttext}"/> + </area> + <!-- Timeline Timer + {timelinetimer} true + {timerstart} start of timer in tenth percent of complete 24h width + {timerwidth} width of timer in tenth percent of complete 24h width + --> + <area condition="{timelinetimer}" layer="5"> + <drawrectangle condition="{current}" x="5%" y="0" width="90%" height="100%" color="{clrTransBlueLight}"/> + <drawrectangle condition="not{current}" x="5%" y="0" width="90%" height="100%" color="{clrDarkGray}"/> + <drawrectangle x="5%" y="{areaheight}-1" width="90%" height="1" color="{clrBlack}"/> + </area> + <area condition="{timelinetimer}" layer="6"> + <drawrectangle x="{areawidth}*0.05 + {timerstart}*{areawidth}*0.9/1000" y="25%" width="{timerwidth}*{areawidth}*0.9/1000" height="50%" color="{clrBlack}"/> + </area> + <!-- Favorites + {favorite} true + {favdesc} description of favorite + --> + <area condition="{favorite}" layer="6"> + <drawimage condition="{current}" imagetype="icon" path="ico_search_active" x="{areaheight}*0.1" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}" imagetype="icon" path="ico_search_inactive" x="{areaheight}*0.1" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawtext x="{areaheight}" valign="center" font="{light}" width="{areawidth} - {areaheight}" fontsize="80%" color="{clrWhite}" text="{favdesc}" /> + </area> + </grid> +</displayplugin> diff --git a/skins/metrixhd/xmlfiles/plug-tvguideng-root.xml b/skins/metrixhd/xmlfiles/plug-tvguideng-root.xml new file mode 100644 index 0000000..5de0069 --- /dev/null +++ b/skins/metrixhd/xmlfiles/plug-tvguideng-root.xml @@ -0,0 +1,317 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE displayplugin SYSTEM "../../../dtd/displayplugin.dtd"> + +<displayplugin x="3%" y="5%" width="94%" height="90%"> + + <viewelement name="background_hor"> + <area x="0" y="0" width="100%" height="100%" layer="1"> + <fill color="{clrTransBlack}" /> + </area> + <area x="70%" y="0" width="15%" height="12%" layer="1"> + <fill color="{clrTransBlueLight}" /> + </area> + <area x="0" y="20%" width="15%" height="5%" layer="2"> + <drawrectangle x="1" y="1" width="{areawidth}-2" height="{areaheight}-2" color="{clrTransBlack}"/> + </area> + </viewelement> + + <viewelement name="background_ver"> + <area x="0" y="0" width="100%" height="100%" layer="1"> + <fill color="{clrTransBlack}" /> + </area> + <area x="70%" y="0" width="15%" height="12%" layer="1"> + <fill color="{clrTransBlueLight}" /> + </area> + <area x="0" y="20%" width="8%" height="15%" layer="2"> + <drawrectangle x="1" y="1" width="{areawidth}-2" height="{areaheight}-2" color="{clrTransBlack}"/> + </area> + </viewelement> + + <!-- Tokens available in Header + {isdummy} true if active element is a dummy element + {title} title of event of active grid + {shorttext} shorttext of event of active grid + {description} detailed description of event of active grid + {start} event start time in hh::mm + {stop} event stop time + {day} day of event of active grid + {date} date of event of active grid in dd.mm.yy + {daynumeric} day as number + {month} month as number + {year} year as number + {running} true if event is currently running + {elapsed} elapsed time of event, if not running 0 + {duration} duration of event + {durationhours} duration, full hours + {durationminutes} duration, rest of minutes + {channelname} Channel Name + {channelnumber} Channel Number + {channelid} ChannelID as path to display channel logo + {channellogoexists} true if channel logo exists + {hasposter} true if a scraped poster is available for this element + {posterwidth} width of scraped poster + {posterheight} height of scraped poster + {posterpath} absolute path of scraped poster + --> + <viewelement name="header"> + <areascroll condition="not{isdummy}++not{hasposter}" orientation="vertical" mode="forthandback" delay="1000" scrollspeed="medium" x="1%" y="1%" width="68%" height="19%" layer="2"> + <drawtext x="0" y="0" font="{semibold}" width="100%" fontsize="25%" color="{clrWhite}" text="{day} {daynumeric}.{month} {start} - {stop}" /> + <drawtext x="0" y="20%" font="{semibold}" width="100%" fontsize="30%" color="{clrWhite}" text="{title}" /> + <drawtextbox name="shorttext" x="0" y="50%" width="100%" font="{light}" fontsize="20%" color="{clrWhite}" text="{shorttext}" /> + <drawtextbox x="0" y="{posy(shorttext)} + {height(shorttext)} - {areaheight}*0.15" width="100%" font="{light}" fontsize="20%" color="{clrWhite}" text="{description}" /> + </areascroll> + <area condition="not{isdummy}++{hasposter}" x="1%" y="1%" width="{areaheight}*0.2*{posterwidth}/{posterheight}" height="19%" layer="2"> + <drawimage imagetype="image" path="{posterpath}" x="0" y="0" width="100%" height="100%"/> + </area> + <areascroll condition="not{isdummy}++{hasposter}" orientation="vertical" mode="forthandback" delay="1000" scrollspeed="medium" x="12%" y="1%" width="56%" height="19%" layer="2"> + <drawtext x="0" y="0" font="{semibold}" width="100%" fontsize="25%" color="{clrWhite}" text="{day} {daynumeric}.{month} {start} - {stop}" /> + <drawtext x="0" y="20%" font="{semibold}" width="100%" fontsize="30%" color="{clrWhite}" text="{title}" /> + <drawtextbox name="shorttext" x="0" y="50%" width="100%" font="{light}" fontsize="20%" color="{clrWhite}" text="{shorttext}" /> + <drawtextbox x="0" y="{posy(shorttext)} + {height(shorttext)} - {areaheight}*0.15" width="100%" font="{light}" fontsize="20%" color="{clrWhite}" text="{description}" /> + </areascroll> + <area condition="{isdummy}" x="1%" y="1%" width="68%" height="19%" layer="2"> + <drawtext x="0" y="20%" font="{semibold}" width="100%" fontsize="35%" color="{clrWhite}" text="{title}" /> + </area> + </viewelement> + + <!-- Available Variables Footer: + {red1} true if red button is button 1 + {red2} true if red button is button 2 + {red3} true if red button is button 3 + {red4} true if red button is button 4 + {green1} true if green button is button 1 + {green2} true if green button is button 2 + {green3} true if green button is button 3 + {green4} true if green button is button 4 + {yellow1} true if yellow button is button 1 + {yellow2} true if yellow button is button 2 + {yellow3} true if yellow button is button 3 + {yellow4} true if yellow button is button 4 + {blue1} true if blue button is button 1 + {blue2} true if blue button is button 2 + {blue3} true if blue button is button 3 + {blue4} true if blue button is button 4 + {red} label of red button + {green} label of green button + {yellow} label of yellow button + {blue} label of blue button + --> + <viewelement name="footer"> + <area x="0" y="92%" width="25%" height="8%" layer="2"> + <drawtext condition="{red1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" /> + <drawrectangle condition="{red1}" x="0" y="0" width="10" height="100%" color="{clrRed}" /> + <drawtext condition="{green1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" /> + <drawrectangle condition="{green1}" x="0" y="0" width="10" height="100%" color="{clrGreen}" /> + <drawtext condition="{yellow1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" /> + <drawrectangle condition="{yellow1}" x="0" y="0" width="10" height="100%" color="{clrYellow}" /> + <drawtext condition="{blue1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" /> + <drawrectangle condition="{blue1}" x="0" y="0" width="10" height="100%" color="{clrBlue}" /> + </area> + <area x="25%" y="92%" width="25%" height="8%" layer="2"> + <drawtext condition="{red2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" /> + <drawrectangle condition="{red2}" x="0" y="0" width="10" height="100%" color="{clrRed}" /> + <drawtext condition="{green2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" /> + <drawrectangle condition="{green2}" x="0" y="0" width="10" height="100%" color="{clrGreen}" /> + <drawtext condition="{yellow2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" /> + <drawrectangle condition="{yellow2}" x="0" y="0" width="10" height="100%" color="{clrYellow}" /> + <drawtext condition="{blue2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" /> + <drawrectangle condition="{blue2}" x="0" y="0" width="10" height="100%" color="{clrBlue}" /> + </area> + <area x="50%" y="92%" width="25%" height="8%" layer="2"> + <drawtext condition="{red3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" /> + <drawrectangle condition="{red3}" x="0" y="0" width="10" height="100%" color="{clrRed}" /> + <drawtext condition="{green3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" /> + <drawrectangle condition="{green3}" x="0" y="0" width="10" height="100%" color="{clrGreen}" /> + <drawtext condition="{yellow3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" /> + <drawrectangle condition="{yellow3}" x="0" y="0" width="10" height="100%" color="{clrYellow}" /> + <drawtext condition="{blue3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" /> + <drawrectangle condition="{blue3}" x="0" y="0" width="10" height="100%" color="{clrBlue}" /> + </area> + <area x="75%" y="92%" width="25%" height="8%" layer="2"> + <drawtext condition="{red4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" /> + <drawrectangle condition="{red4}" x="0" y="0" width="10" height="100%" color="{clrRed}" /> + <drawtext condition="{green4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" /> + <drawrectangle condition="{green4}" x="0" y="0" width="10" height="100%" color="{clrGreen}" /> + <drawtext condition="{yellow4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" /> + <drawrectangle condition="{yellow4}" x="0" y="0" width="10" height="100%" color="{clrYellow}" /> + <drawtext condition="{blue4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" /> + <drawrectangle condition="{blue4}" x="0" y="0" width="10" height="100%" color="{clrBlue}" /> + </area> + </viewelement> + + <!-- Available Variables time: + {time} timestring in hh:mm + {sec} current seconds + {min} current minutes + {hour} current hours + {hmins} current "hourminutes" to display an hour hand + {day} day in digits + {dayleadingzero} day in digits with leading 0 + {dayname} Full name of the day + {daynameshort} Short 3 char name of the day + {month} month in digits with leading 0 + {monthname} Full name of the month + {monthnameshort} 3 letter abbrivation of month name + {year} year in yyyy + --> + <viewelement name="time"> + <area x="70%" y="0" width="{areawidth}*0.145" height="12%" layer="2"> + <drawtext align="right" y="5%" font="{light}" fontsize="45%" color="{clrWhite}" text="{dayname}" /> + <drawtext align="right" y="45%" font="{light}" fontsize="45%" color="{clrWhite}" text="{day}. {monthnameshort}" /> + </area> + <area x="85%" y="0" width="15%" height="12%" layer="2"> + <drawtext align="center" valign="center" font="{light}" fontsize="75%" color="{clrWhite}" text="{time}" /> + </area> + </viewelement> + + <!-- Tokens available in datetimeline + {weekday} weekday of current display + {date} date of current display + --> + <viewelement name="datetimeline_hor"> + <area x="0" y="20%" width="15%" height="5%" layer="3"> + <drawtext align="center" valign="center" font="{semibold}" fontsize="90%" color="{clrWhite}" text="{weekday} {date}" /> + </area> + </viewelement> + + <viewelement name="datetimeline_ver"> + <area x="0" y="20%" width="8%" height="15%" layer="2"> + <drawtext align="center" y="10%" font="{light}" fontsize="40%" color="{clrWhite}" text="{weekday}" /> + <drawtext align="center" y="50%" font="{light}" fontsize="40%" color="{clrWhite}" text="{date}" /> + </area> + </viewelement> + + <!-- Tokens available in timeindicator + {percenttotal} position of current time indicator in tenth of a percent of complete time shown + --> + <viewelement name="timeindicator_hor"> + <area x="15%" y="20%" width="85%" height="72%" layer="4"> + <drawrectangle x="{percenttotal}*{areawidth}/1000" y="0" width="1" height="100%" color="{clrRed}" /> + </area> + </viewelement> + + <viewelement name="timeindicator_ver"> + <area x="0" y="35%" width="100%" height="57%" layer="3"> + <drawrectangle x="0" y="{percenttotal}*{areaheight}/1000" width="100%" height="1" color="{clrRed}" /> + </area> + </viewelement> + + <!-- Tokens available in timeline + {timestring} time of grid in hh:mm + --> + <grid name="timeline_hor" x="15%" y="20%" width="85%" height="5%"> + <area layer="2"> + <drawrectangle condition="{fullhour}" x="1" y="1" width="{areawidth}-2" height="{areaheight}-2" color="{clrTransWhite}"/> + <drawrectangle condition="not{fullhour}" x="1" y="1" width="{areawidth}-2" height="{areaheight}-2" color="{clrTransBlack}" /> + </area> + <area layer="2"> + <drawtext condition="{fullhour}" x="5%" valign="center" font="{light}" fontsize="80%" color="{clrBlack}" text="{timestring}" /> + <drawtext condition="not{fullhour}" x="5%" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{timestring}" /> + </area> + </grid> + + <grid name="timeline_ver" x="0" y="35%" width="8%" height="57%"> + <area layer="2"> + <drawrectangle condition="{fullhour}" x="1" y="1" width="{areawidth}-2" height="{areaheight}-2" color="{clrTransWhite}"/> + <drawrectangle condition="not{fullhour}" x="1" y="1" width="{areawidth}-2" height="{areaheight}-2" color="{clrTransBlack}" /> + </area> + <area layer="2"> + <drawtext condition="{fullhour}" align="center" y="5%" font="{light}" fontsize="70%" color="{clrBlack}" text="{timestring}" /> + <drawtext condition="not{fullhour}" align="center" y="5%" font="{light}" fontsize="70%" color="{clrWhite}" text="{timestring}" /> + </area> + </grid> + + <!-- Tokens available in channels + {name} name of channel + {number} number of channel + {channelid} id of channel to display channel logo + {channellogoexists} true if channel logo exists + --> + <grid name="channels_hor" x="5%" y="25%" width="10%" height="67%"> + <area layer="2"> + <drawimage condition="{channellogoexists}" imagetype="channellogo" path="{channelid}" align="center" valign="center" width="80%" height="80%" /> + <drawtext condition="not{channellogoexists}" x="1%" valign="center" width="98%" font="{light}" fontsize="45%" color="{clrWhite}" text="{name}" /> + </area> + </grid> + + <grid name="channels_ver" x="8%" y="25%" width="92%" height="10%"> + <area layer="2"> + <drawimage condition="{channellogoexists}" imagetype="channellogo" path="{channelid}" align="center" valign="center" width="80%" height="80%" /> + <drawtext condition="not{channellogoexists}" align="center" valign="center" width="98%" font="{light}" fontsize="45%" color="{clrWhite}" text="{name}" /> + </area> + </grid> + + <!-- Tokens available in channelgroups + {color} alternates grid by grid from true to false + {group} name of channel group + --> + <grid name="channelgroups_hor" x="0" y="25%" width="5%" height="67%"> + <area layer="2"> + <drawrectangle condition="{color}" x="1" y="1" width="{areawidth}-2" height="{areaheight}-2" color="{clrTransBlack}" /> + <drawrectangle condition="not{color}" x="1" y="1" width="{areawidth}-2" height="{areaheight}-2" color="{clrDarkGray}" /> + </area> + <area layer="3"> + <drawtextvertical align="center" valign="center" font="{semibold}" fontsize="50%" color="{clrWhite}" text="{group}" /> + </area> + </grid> + + <grid name="channelgroups_ver" x="8%" y="20%" width="92%" height="5%"> + <area layer="2"> + <drawrectangle condition="{color}" x="1" y="1" width="{areawidth}-2" height="{areaheight}-2" color="{clrTransBlack}" /> + <drawrectangle condition="not{color}" x="1" y="1" width="{areawidth}-2" height="{areaheight}-2" color="{clrDarkGray}" /> + </area> + <area layer="3"> + <drawtext align="center" valign="center" font="{semibold}" fontsize="90%" color="{clrWhite}" text="{group}" /> + </area> + </grid> + + <!-- Tokens available in schedules + {color} alternates grid by grid from true to false + {dummy} true if grid is a dummy grid + {timer} true if a timer is set for the according event + {switchtimer} true if a switchtimer is set for the according event + {title} title of grid + {shorttext} shorttext of grid + {start} start time in hh:mm + {stop} stop time in hh:dd + --> + <grid name="schedules_hor" x="15%" y="25%" width="85%" height="67%"> + <area layer="2"> + <drawrectangle condition="{color}++not{current}" x="1" y="1" width="{areawidth}-2" height="{areaheight}-2" color="{clrTransBlack}" /> + <drawrectangle condition="not{color}++not{current}" x="1" y="1" width="{areawidth}-2" height="{areaheight}-2" color="{clrDarkGray}" /> + <drawrectangle condition="{current}" x="1" y="1" width="{areawidth}-2" height="{areaheight}-2" color="{clrTransBlueLight}" /> + </area> + <area layer="3"> + <drawtext condition="not{dummy}" x="3" y="2%" font="{light}" fontsize="45%" color="{clrWhite}" text="{start} - {stop}" /> + <drawtext condition="not{dummy}" x="3" y="40%" width="{areawidth}-6" font="{semibold}" fontsize="55%" color="{clrWhite}" text="{title}" /> + <drawtext condition="{dummy}" x="3" valign="center" width="98%" font="{semibold}" fontsize="55%" color="{clrWhite}" text="{title}" /> + <drawimage condition="{timer}" imagetype="icon" path="ico_rec_on" x="{areawidth} - {areaheight}*0.32*45/23" y="68%" width="{areaheight}*0.3*45/23" height="{areaheight}*0.3"/> + <drawimage condition="{switchtimer}++not{timer}" imagetype="icon" path="ico_switchtimer" x="{areawidth} - {areaheight}*0.32*45/23" y="68%" width="{areaheight}*0.3*45/23" height="{areaheight}*0.3"/> + <drawimage condition="{switchtimer}++{timer}" imagetype="icon" path="ico_switchtimer" x="{areawidth} - {areaheight}*0.32*45/23*2 - 5" y="68%" width="{areaheight}*0.3*45/23" height="{areaheight}*0.3" /> + </area> + </grid> + + <grid name="schedules_ver" x="8%" y="35%" width="92%" height="57%"> + <area layer="2"> + <drawrectangle condition="{color}++not{current}" x="1" y="1" width="{areawidth}-2" height="{areaheight}-2" color="{clrTransBlack}" /> + <drawrectangle condition="not{color}++not{current}" x="1" y="1" width="{areawidth}-2" height="{areaheight}-2" color="{clrDarkGray}" /> + <drawrectangle condition="{current}" x="1" y="1" width="{areawidth}-2" height="{areaheight}-2" color="{clrTransBlueLight}" /> + </area> + <area layer="3"> + <drawtext condition="not{dummy}" x="3" y="2%" font="{light}" fontsize="{areawidth}*0.16" color="{clrWhite}" text="{start} - {stop}" /> + <drawtextbox name="title" condition="not{dummy}" x="2%" y="{areawidth}*0.16" width="96%" font="{semibold}" fontsize="{areawidth}*0.15" color="{clrWhite}" text="{title}" /> + <drawtextbox condition="not{dummy}" x="2%" y="{posy(title)} + {height(title)} - {areawidth}*0.1" width="96%" height="{areaheight}*1.1 - {posy(title)} - {height(title)}" font="{light}" fontsize="{areawidth}*0.12" color="{clrWhite}" text="{shorttext}" /> + <drawtextbox condition="{dummy}" x="2%" y="5%" width="96%" font="{regular}" fontsize="{areawidth}*0.2" color="{clrWhite}" text="{title}" /> + <drawimage condition="{timer}" imagetype="icon" path="ico_rec_on" x="{areawidth} - {areaheight}*0.32*45/23" y="68%" width="{areaheight}*0.3*45/23" height="{areaheight}*0.3"/> + <drawimage condition="{switchtimer}++not{timer}" imagetype="icon" path="ico_switchtimer" x="{areawidth} - {areaheight}*0.32*45/23" y="68%" width="{areaheight}*0.3*45/23" height="{areaheight}*0.3"/> + <drawimage condition="{switchtimer}++{timer}" imagetype="icon" path="ico_switchtimer" x="{areawidth} - {areaheight}*0.32*45/23*2 - 5" y="68%" width="{areaheight}*0.3*45/23" height="{areaheight}*0.3" /> + </area> + </grid> + + <!-- Tokens available in channeljump + {channel} current user input for channel jump + --> + <viewelement name="channeljump"> + </viewelement> + +</displayplugin> diff --git a/skins/nopacity/themes/darkred/icons/ico_arrow_left.png b/skins/nopacity/themes/darkred/icons/ico_arrow_left.png Binary files differnew file mode 100644 index 0000000..57800c7 --- /dev/null +++ b/skins/nopacity/themes/darkred/icons/ico_arrow_left.png diff --git a/skins/nopacity/themes/darkred/icons/ico_arrow_right.png b/skins/nopacity/themes/darkred/icons/ico_arrow_right.png Binary files differnew file mode 100644 index 0000000..ea45f3a --- /dev/null +++ b/skins/nopacity/themes/darkred/icons/ico_arrow_right.png diff --git a/skins/nopacity/themes/darkred/icons/ico_delete_active.png b/skins/nopacity/themes/darkred/icons/ico_delete_active.png Binary files differnew file mode 100644 index 0000000..f473717 --- /dev/null +++ b/skins/nopacity/themes/darkred/icons/ico_delete_active.png diff --git a/skins/nopacity/themes/darkred/icons/ico_delete_inactive.png b/skins/nopacity/themes/darkred/icons/ico_delete_inactive.png Binary files differnew file mode 100644 index 0000000..21b0a88 --- /dev/null +++ b/skins/nopacity/themes/darkred/icons/ico_delete_inactive.png diff --git a/skins/nopacity/themes/darkred/icons/ico_edit_active.png b/skins/nopacity/themes/darkred/icons/ico_edit_active.png Binary files differnew file mode 100644 index 0000000..ec39699 --- /dev/null +++ b/skins/nopacity/themes/darkred/icons/ico_edit_active.png diff --git a/skins/nopacity/themes/darkred/icons/ico_edit_inactive.png b/skins/nopacity/themes/darkred/icons/ico_edit_inactive.png Binary files differnew file mode 100644 index 0000000..71f016c --- /dev/null +++ b/skins/nopacity/themes/darkred/icons/ico_edit_inactive.png diff --git a/skins/nopacity/themes/darkred/icons/ico_info_active.png b/skins/nopacity/themes/darkred/icons/ico_info_active.png Binary files differnew file mode 100644 index 0000000..c88f76d --- /dev/null +++ b/skins/nopacity/themes/darkred/icons/ico_info_active.png diff --git a/skins/nopacity/themes/darkred/icons/ico_info_inactive.png b/skins/nopacity/themes/darkred/icons/ico_info_inactive.png Binary files differnew file mode 100644 index 0000000..37eeed2 --- /dev/null +++ b/skins/nopacity/themes/darkred/icons/ico_info_inactive.png diff --git a/skins/nopacity/themes/darkred/icons/ico_rec_on.svg b/skins/nopacity/themes/darkred/icons/ico_rec_on.svg new file mode 100644 index 0000000..91b3e31 --- /dev/null +++ b/skins/nopacity/themes/darkred/icons/ico_rec_on.svg @@ -0,0 +1,81 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="45" + height="23" + id="svg2" + version="1.1" + inkscape:version="0.91pre2 r13516" + viewBox="0 0 45 23" + sodipodi:docname="ico_rec.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="5.6" + inkscape:cx="-13.27009" + inkscape:cy="16.082332" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1846" + inkscape:window-height="1058" + inkscape:window-x="66" + inkscape:window-y="-8" + inkscape:window-maximized="1" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1029.3622)"> + <rect + style="fill:#d40000;fill-opacity:1;stroke:#ececec;stroke-width:0;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-opacity:1" + id="rect4148" + width="45" + height="23" + x="4.9999999e-006" + y="1029.3622" + ry="8.9285717" /> + <g + style="font-style:normal;font-weight:normal;font-size:13.75px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="text4151"> + <path + d="m 18.185688,1046.1122 -1.725464,0 -3.343506,-3.9746 -1.873169,0 0,3.9746 -1.3293454,0 0,-9.997 2.7996824,0 q 0.906372,0 1.51062,0.1209 0.604248,0.1141 1.087647,0.4162 0.543823,0.3425 0.845947,0.8661 0.308838,0.517 0.308838,1.316 0,1.0809 -0.543823,1.8127 -0.543823,0.7251 -1.497193,1.0944 l 3.759766,4.3707 z m -3.10852,-7.1839 q 0,-0.4296 -0.154419,-0.7586 -0.147706,-0.3357 -0.496827,-0.564 -0.288696,-0.1947 -0.684814,-0.2685 -0.396118,-0.081 -0.933228,-0.081 l -1.564331,0 0,3.7732 1.342774,0 q 0.631103,0 1.101074,-0.1074 0.469971,-0.1142 0.79895,-0.4163 0.302124,-0.282 0.443115,-0.6445 0.147706,-0.3693 0.147706,-0.9333 z" + style="font-size:13.75px;fill:#ffffff" + id="path4156" /> + <path + d="m 26.061054,1046.1122 -6.586303,0 0,-9.997 6.586303,0 0,1.1817 -5.256958,0 0,2.7392 5.256958,0 0,1.1817 -5.256958,0 0,3.7127 5.256958,0 0,1.1817 z" + style="font-size:13.75px;fill:#ffffff" + id="path4158" /> + <path + d="m 35.89687,1045.3871 q -0.369263,0.1611 -0.671387,0.3021 -0.29541,0.141 -0.778809,0.2954 -0.409546,0.1276 -0.892944,0.2149 -0.476685,0.094 -1.054077,0.094 -1.087647,0 -1.980591,-0.3022 -0.88623,-0.3088 -1.544189,-0.96 -0.644532,-0.6379 -1.00708,-1.6181 -0.362549,-0.9869 -0.362549,-2.2894 0,-1.2354 0.349121,-2.2089 0.349121,-0.9735 1.00708,-1.6449 0.637817,-0.6512 1.537475,-0.9936 0.906373,-0.3424 2.007447,-0.3424 0.805664,0 1.604614,0.1947 0.805664,0.1947 1.785889,0.6848 l 0,1.5777 -0.100708,0 q -0.825806,-0.6915 -1.638184,-1.007 -0.812378,-0.3156 -1.738892,-0.3156 -0.758667,0 -1.369628,0.2484 -0.604248,0.2417 -1.080933,0.7587 -0.463257,0.5035 -0.725098,1.2756 -0.255127,0.7654 -0.255127,1.7725 0,1.0541 0.281983,1.8127 0.288696,0.7587 0.738525,1.2354 0.469971,0.4968 1.09436,0.7385 0.631104,0.235 1.329346,0.235 0.960083,0 1.799317,-0.329 0.839233,-0.329 1.571045,-0.9869 l 0.09399,0 0,1.5576 z" + style="font-size:13.75px;fill:#ffffff" + id="path4160" /> + </g> + </g> +</svg> diff --git a/skins/nopacity/themes/darkred/icons/ico_record_active.png b/skins/nopacity/themes/darkred/icons/ico_record_active.png Binary files differnew file mode 100644 index 0000000..476da99 --- /dev/null +++ b/skins/nopacity/themes/darkred/icons/ico_record_active.png diff --git a/skins/nopacity/themes/darkred/icons/ico_record_inactive.png b/skins/nopacity/themes/darkred/icons/ico_record_inactive.png Binary files differnew file mode 100644 index 0000000..2a91da3 --- /dev/null +++ b/skins/nopacity/themes/darkred/icons/ico_record_inactive.png diff --git a/skins/nopacity/themes/darkred/icons/ico_search_active.png b/skins/nopacity/themes/darkred/icons/ico_search_active.png Binary files differnew file mode 100644 index 0000000..7bf7bc7 --- /dev/null +++ b/skins/nopacity/themes/darkred/icons/ico_search_active.png diff --git a/skins/nopacity/themes/darkred/icons/ico_search_inactive.png b/skins/nopacity/themes/darkred/icons/ico_search_inactive.png Binary files differnew file mode 100644 index 0000000..4a210bb --- /dev/null +++ b/skins/nopacity/themes/darkred/icons/ico_search_inactive.png diff --git a/skins/nopacity/themes/darkred/icons/ico_switchtimer.svg b/skins/nopacity/themes/darkred/icons/ico_switchtimer.svg new file mode 100644 index 0000000..f3ef884 --- /dev/null +++ b/skins/nopacity/themes/darkred/icons/ico_switchtimer.svg @@ -0,0 +1,93 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="45" + height="23" + id="svg2" + version="1.1" + inkscape:version="0.91pre2 r13516" + viewBox="0 0 45 23" + sodipodi:docname="ico_switchtimer.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="5.6" + inkscape:cx="-13.27009" + inkscape:cy="16.082332" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1846" + inkscape:window-height="1058" + inkscape:window-x="66" + inkscape:window-y="-8" + inkscape:window-maximized="1" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1029.3622)"> + <rect + style="fill:#ff7f2a;fill-opacity:1;stroke:#ececec;stroke-width:0;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-opacity:1" + id="rect4148" + width="45" + height="23" + x="4.9999999e-006" + y="1029.3622" + ry="8.9285717" /> + <g + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="text4150"> + <path + d="m 9.2532783,1042.4468 q 0,0.531 -0.2502442,1.0498 -0.2441406,0.5188 -0.6896973,0.8789 -0.4882812,0.3906 -1.1413574,0.6103 -0.6469726,0.2198 -1.5625,0.2198 -0.982666,0 -1.7700195,-0.1831 -0.78125,-0.1831 -1.5930176,-0.5433 l 0,-1.5136 0.085449,0 q 0.6896973,0.5737 1.5930176,0.885 0.9033203,0.3113 1.6967774,0.3113 1.1230468,0 1.7456054,-0.4212 0.6286621,-0.4211 0.6286621,-1.123 0,-0.6043 -0.2990722,-0.8911 -0.2929688,-0.2869 -0.8972168,-0.4456 -0.4577637,-0.1221 -0.9948731,-0.2014 -0.5310058,-0.079 -1.1291504,-0.2014 -1.2084961,-0.2564 -1.7944336,-0.8728 -0.5798339,-0.6226 -0.5798339,-1.6175 0,-1.1413 0.9643554,-1.8676 0.9643555,-0.7325 2.4475098,-0.7325 0.9582519,0 1.7578125,0.1831 0.7995605,0.1832 1.4160156,0.4517 l 0,1.4282 -0.085449,0 q -0.5187988,-0.4394 -1.3671875,-0.7263 -0.8422852,-0.293 -1.7272949,-0.293 -0.970459,0 -1.5625,0.4029 -0.5859375,0.4028 -0.5859375,1.0376 0,0.5676 0.2929687,0.8911 0.2929688,0.3235 1.0314942,0.4944 0.390625,0.085 1.1108398,0.2075 0.7202149,0.1221 1.2207031,0.2502 1.0131836,0.2686 1.5258789,0.8118 0.5126954,0.5432 0.5126954,1.5198 z" + style="" + id="path4138" /> + <path + d="m 19.678083,1038.2231 -1.776123,6.8177 -1.062012,0 -1.751709,-5.2552 -1.739502,5.2552 -1.055908,0 -1.794434,-6.8177 1.19629,0 1.25122,5.2796 1.702881,-5.2796 0.946045,0 1.745605,5.2796 1.184082,-5.2796 1.153565,0 z" + style="" + id="path4140" /> + <path + d="m 22.565046,1037.0818 -1.293945,0 0,-1.1902 1.293945,0 0,1.1902 z m -0.07324,7.959 -1.147461,0 0,-6.8177 1.147461,0 0,6.8177 z" + style="" + id="path4142" /> + <path + d="m 28.265729,1044.9797 q -0.323486,0.085 -0.708007,0.1404 -0.378418,0.055 -0.677491,0.055 -1.043701,0 -1.586914,-0.5615 -0.543213,-0.5615 -0.543213,-1.8005 l 0,-3.6255 -0.775146,0 0,-0.9644 0.775146,0 0,-1.9592 1.147461,0 0,1.9592 2.368164,0 0,0.9644 -2.368164,0 0,3.1067 q 0,0.5371 0.02441,0.8423 0.02441,0.299 0.170899,0.5615 0.134277,0.2441 0.366211,0.3601 0.238037,0.1099 0.720215,0.1099 0.280761,0 0.585937,-0.079 0.305176,-0.085 0.439453,-0.1404 l 0.06104,0 0,1.0315 z" + style="" + id="path4144" /> + <path + d="m 34.698835,1044.6135 q -0.573731,0.2747 -1.092529,0.4273 -0.512696,0.1526 -1.09253,0.1526 -0.738525,0 -1.35498,-0.2137 -0.616455,-0.2197 -1.055908,-0.6591 -0.445557,-0.4395 -0.689698,-1.1109 -0.24414,-0.6714 -0.24414,-1.5686 0,-1.6723 0.915527,-2.6245 0.921631,-0.9521 2.429199,-0.9521 0.585938,0 1.147461,0.1647 0.567627,0.1648 1.037598,0.4029 l 0,1.2756 -0.06104,0 q -0.524903,-0.4089 -1.086426,-0.6286 -0.55542,-0.2198 -1.086426,-0.2198 -0.976562,0 -1.544189,0.6592 -0.561524,0.6531 -0.561524,1.9226 0,1.2329 0.549317,1.8982 0.55542,0.6592 1.556396,0.6592 0.347901,0 0.708008,-0.092 0.360107,-0.091 0.646973,-0.238 0.250244,-0.1282 0.46997,-0.2686 0.219727,-0.1464 0.347901,-0.2502 l 0.06104,0 0,1.2634 z" + style="" + id="path4146" /> + <path + d="m 41.876569,1045.0408 -1.147461,0 0,-3.8819 q 0,-0.4699 -0.05493,-0.8789 -0.05493,-0.415 -0.201416,-0.6469 -0.152588,-0.2564 -0.439453,-0.3785 -0.286866,-0.1281 -0.744629,-0.1281 -0.469971,0 -0.982666,0.2319 -0.512696,0.2319 -0.982666,0.592 l 0,5.0904 -1.147461,0 0,-9.4971 1.147461,0 0,3.4363 q 0.537109,-0.4456 1.110839,-0.6958 0.573731,-0.2503 1.177979,-0.2503 1.104736,0 1.68457,0.6653 0.579834,0.6653 0.579834,1.9165 l 0,4.4251 z" + style="" + id="path4148" /> + </g> + </g> +</svg> diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_button.png b/skins/nopacity/themes/darkred/skinparts/tvguide_button.png Binary files differnew file mode 100644 index 0000000..7234f08 --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_button.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_button_active.png b/skins/nopacity/themes/darkred/skinparts/tvguide_button_active.png Binary files differnew file mode 100644 index 0000000..ba09ea0 --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_button_active.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_channelgroup_bottom.png b/skins/nopacity/themes/darkred/skinparts/tvguide_channelgroup_bottom.png Binary files differnew file mode 100644 index 0000000..7127ea7 --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_channelgroup_bottom.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_channelgroup_head.png b/skins/nopacity/themes/darkred/skinparts/tvguide_channelgroup_head.png Binary files differnew file mode 100644 index 0000000..bce9d22 --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_channelgroup_head.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_channelgroup_horizontal.png b/skins/nopacity/themes/darkred/skinparts/tvguide_channelgroup_horizontal.png Binary files differnew file mode 100644 index 0000000..13d733c --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_channelgroup_horizontal.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_channelgroup_left.png b/skins/nopacity/themes/darkred/skinparts/tvguide_channelgroup_left.png Binary files differnew file mode 100644 index 0000000..df495b1 --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_channelgroup_left.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_channelgroup_right.png b/skins/nopacity/themes/darkred/skinparts/tvguide_channelgroup_right.png Binary files differnew file mode 100644 index 0000000..42dcf6d --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_channelgroup_right.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_channelgroup_vertical.png b/skins/nopacity/themes/darkred/skinparts/tvguide_channelgroup_vertical.png Binary files differnew file mode 100644 index 0000000..43778d0 --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_channelgroup_vertical.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_channellogoback_horizontal.png b/skins/nopacity/themes/darkred/skinparts/tvguide_channellogoback_horizontal.png Binary files differnew file mode 100644 index 0000000..d9bb54a --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_channellogoback_horizontal.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_channellogoback_vertical.png b/skins/nopacity/themes/darkred/skinparts/tvguide_channellogoback_vertical.png Binary files differnew file mode 100644 index 0000000..06684cc --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_channellogoback_vertical.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_clock.png b/skins/nopacity/themes/darkred/skinparts/tvguide_clock.png Binary files differnew file mode 100644 index 0000000..2e8686e --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_clock.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_date_vertical.png b/skins/nopacity/themes/darkred/skinparts/tvguide_date_vertical.png Binary files differnew file mode 100644 index 0000000..58a72e4 --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_date_vertical.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_grid_active_bottom.png b/skins/nopacity/themes/darkred/skinparts/tvguide_grid_active_bottom.png Binary files differnew file mode 100644 index 0000000..08de467 --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_grid_active_bottom.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_grid_active_head.png b/skins/nopacity/themes/darkred/skinparts/tvguide_grid_active_head.png Binary files differnew file mode 100644 index 0000000..060a908 --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_grid_active_head.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_grid_active_horizontal.png b/skins/nopacity/themes/darkred/skinparts/tvguide_grid_active_horizontal.png Binary files differnew file mode 100644 index 0000000..9319d6b --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_grid_active_horizontal.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_grid_active_left.png b/skins/nopacity/themes/darkred/skinparts/tvguide_grid_active_left.png Binary files differnew file mode 100644 index 0000000..7852d94 --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_grid_active_left.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_grid_active_right.png b/skins/nopacity/themes/darkred/skinparts/tvguide_grid_active_right.png Binary files differnew file mode 100644 index 0000000..73dfbd0 --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_grid_active_right.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_grid_active_vertical.png b/skins/nopacity/themes/darkred/skinparts/tvguide_grid_active_vertical.png Binary files differnew file mode 100644 index 0000000..6d96d34 --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_grid_active_vertical.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_grid_bottom.png b/skins/nopacity/themes/darkred/skinparts/tvguide_grid_bottom.png Binary files differnew file mode 100644 index 0000000..82c20c4 --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_grid_bottom.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_grid_head.png b/skins/nopacity/themes/darkred/skinparts/tvguide_grid_head.png Binary files differnew file mode 100644 index 0000000..f434c11 --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_grid_head.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_grid_horizontal.png b/skins/nopacity/themes/darkred/skinparts/tvguide_grid_horizontal.png Binary files differnew file mode 100644 index 0000000..6f28550 --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_grid_horizontal.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_grid_left.png b/skins/nopacity/themes/darkred/skinparts/tvguide_grid_left.png Binary files differnew file mode 100644 index 0000000..df80f91 --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_grid_left.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_grid_right.png b/skins/nopacity/themes/darkred/skinparts/tvguide_grid_right.png Binary files differnew file mode 100644 index 0000000..d39470f --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_grid_right.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_grid_vertical.png b/skins/nopacity/themes/darkred/skinparts/tvguide_grid_vertical.png Binary files differnew file mode 100644 index 0000000..6ad219d --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_grid_vertical.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_header.png b/skins/nopacity/themes/darkred/skinparts/tvguide_header.png Binary files differnew file mode 100644 index 0000000..56a60a7 --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_header.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_timelinebright_horizontal.png b/skins/nopacity/themes/darkred/skinparts/tvguide_timelinebright_horizontal.png Binary files differnew file mode 100644 index 0000000..9240b37 --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_timelinebright_horizontal.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_timelinebright_vertical.png b/skins/nopacity/themes/darkred/skinparts/tvguide_timelinebright_vertical.png Binary files differnew file mode 100644 index 0000000..dfa06c9 --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_timelinebright_vertical.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_timelinedark_horizontal.png b/skins/nopacity/themes/darkred/skinparts/tvguide_timelinedark_horizontal.png Binary files differnew file mode 100644 index 0000000..4364677 --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_timelinedark_horizontal.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_timelinedark_vertical.png b/skins/nopacity/themes/darkred/skinparts/tvguide_timelinedark_vertical.png Binary files differnew file mode 100644 index 0000000..5466546 --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_timelinedark_vertical.png diff --git a/skins/nopacity/themes/darkred/skinparts/tvguide_tvframe.png b/skins/nopacity/themes/darkred/skinparts/tvguide_tvframe.png Binary files differnew file mode 100644 index 0000000..261fea3 --- /dev/null +++ b/skins/nopacity/themes/darkred/skinparts/tvguide_tvframe.png diff --git a/skins/nopacity/themes/darkred/theme.xml b/skins/nopacity/themes/darkred/theme.xml index 56b7df4..a1d3eea 100644 --- a/skins/nopacity/themes/darkred/theme.xml +++ b/skins/nopacity/themes/darkred/theme.xml @@ -15,6 +15,7 @@ <color name="clrBorder">FF2B0000</color> <color name="clrGray">FF858585</color> <color name="clrBackground">B0000000</color> + <color name="clrBackgroundOpaque">FF000000</color> <color name="clrTransBlack">99000000</color> <color name="clrTransBlackDark">DF000000</color> <color name="clrTransRed">99FF0000</color> diff --git a/skins/nopacity/themes/default/icons/ico_arrow_left.png b/skins/nopacity/themes/default/icons/ico_arrow_left.png Binary files differnew file mode 100644 index 0000000..57800c7 --- /dev/null +++ b/skins/nopacity/themes/default/icons/ico_arrow_left.png diff --git a/skins/nopacity/themes/default/icons/ico_arrow_right.png b/skins/nopacity/themes/default/icons/ico_arrow_right.png Binary files differnew file mode 100644 index 0000000..ea45f3a --- /dev/null +++ b/skins/nopacity/themes/default/icons/ico_arrow_right.png diff --git a/skins/nopacity/themes/default/icons/ico_delete_active.png b/skins/nopacity/themes/default/icons/ico_delete_active.png Binary files differnew file mode 100644 index 0000000..f473717 --- /dev/null +++ b/skins/nopacity/themes/default/icons/ico_delete_active.png diff --git a/skins/nopacity/themes/default/icons/ico_delete_inactive.png b/skins/nopacity/themes/default/icons/ico_delete_inactive.png Binary files differnew file mode 100644 index 0000000..21b0a88 --- /dev/null +++ b/skins/nopacity/themes/default/icons/ico_delete_inactive.png diff --git a/skins/nopacity/themes/default/icons/ico_edit_active.png b/skins/nopacity/themes/default/icons/ico_edit_active.png Binary files differnew file mode 100644 index 0000000..ec39699 --- /dev/null +++ b/skins/nopacity/themes/default/icons/ico_edit_active.png diff --git a/skins/nopacity/themes/default/icons/ico_edit_inactive.png b/skins/nopacity/themes/default/icons/ico_edit_inactive.png Binary files differnew file mode 100644 index 0000000..71f016c --- /dev/null +++ b/skins/nopacity/themes/default/icons/ico_edit_inactive.png diff --git a/skins/nopacity/themes/default/icons/ico_info_active.png b/skins/nopacity/themes/default/icons/ico_info_active.png Binary files differnew file mode 100644 index 0000000..c88f76d --- /dev/null +++ b/skins/nopacity/themes/default/icons/ico_info_active.png diff --git a/skins/nopacity/themes/default/icons/ico_info_inactive.png b/skins/nopacity/themes/default/icons/ico_info_inactive.png Binary files differnew file mode 100644 index 0000000..37eeed2 --- /dev/null +++ b/skins/nopacity/themes/default/icons/ico_info_inactive.png diff --git a/skins/nopacity/themes/default/icons/ico_no.png b/skins/nopacity/themes/default/icons/ico_no.png Binary files differnew file mode 100644 index 0000000..47cdba0 --- /dev/null +++ b/skins/nopacity/themes/default/icons/ico_no.png diff --git a/skins/nopacity/themes/default/icons/ico_rec_on.svg b/skins/nopacity/themes/default/icons/ico_rec_on.svg new file mode 100644 index 0000000..91b3e31 --- /dev/null +++ b/skins/nopacity/themes/default/icons/ico_rec_on.svg @@ -0,0 +1,81 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="45" + height="23" + id="svg2" + version="1.1" + inkscape:version="0.91pre2 r13516" + viewBox="0 0 45 23" + sodipodi:docname="ico_rec.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="5.6" + inkscape:cx="-13.27009" + inkscape:cy="16.082332" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1846" + inkscape:window-height="1058" + inkscape:window-x="66" + inkscape:window-y="-8" + inkscape:window-maximized="1" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1029.3622)"> + <rect + style="fill:#d40000;fill-opacity:1;stroke:#ececec;stroke-width:0;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-opacity:1" + id="rect4148" + width="45" + height="23" + x="4.9999999e-006" + y="1029.3622" + ry="8.9285717" /> + <g + style="font-style:normal;font-weight:normal;font-size:13.75px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="text4151"> + <path + d="m 18.185688,1046.1122 -1.725464,0 -3.343506,-3.9746 -1.873169,0 0,3.9746 -1.3293454,0 0,-9.997 2.7996824,0 q 0.906372,0 1.51062,0.1209 0.604248,0.1141 1.087647,0.4162 0.543823,0.3425 0.845947,0.8661 0.308838,0.517 0.308838,1.316 0,1.0809 -0.543823,1.8127 -0.543823,0.7251 -1.497193,1.0944 l 3.759766,4.3707 z m -3.10852,-7.1839 q 0,-0.4296 -0.154419,-0.7586 -0.147706,-0.3357 -0.496827,-0.564 -0.288696,-0.1947 -0.684814,-0.2685 -0.396118,-0.081 -0.933228,-0.081 l -1.564331,0 0,3.7732 1.342774,0 q 0.631103,0 1.101074,-0.1074 0.469971,-0.1142 0.79895,-0.4163 0.302124,-0.282 0.443115,-0.6445 0.147706,-0.3693 0.147706,-0.9333 z" + style="font-size:13.75px;fill:#ffffff" + id="path4156" /> + <path + d="m 26.061054,1046.1122 -6.586303,0 0,-9.997 6.586303,0 0,1.1817 -5.256958,0 0,2.7392 5.256958,0 0,1.1817 -5.256958,0 0,3.7127 5.256958,0 0,1.1817 z" + style="font-size:13.75px;fill:#ffffff" + id="path4158" /> + <path + d="m 35.89687,1045.3871 q -0.369263,0.1611 -0.671387,0.3021 -0.29541,0.141 -0.778809,0.2954 -0.409546,0.1276 -0.892944,0.2149 -0.476685,0.094 -1.054077,0.094 -1.087647,0 -1.980591,-0.3022 -0.88623,-0.3088 -1.544189,-0.96 -0.644532,-0.6379 -1.00708,-1.6181 -0.362549,-0.9869 -0.362549,-2.2894 0,-1.2354 0.349121,-2.2089 0.349121,-0.9735 1.00708,-1.6449 0.637817,-0.6512 1.537475,-0.9936 0.906373,-0.3424 2.007447,-0.3424 0.805664,0 1.604614,0.1947 0.805664,0.1947 1.785889,0.6848 l 0,1.5777 -0.100708,0 q -0.825806,-0.6915 -1.638184,-1.007 -0.812378,-0.3156 -1.738892,-0.3156 -0.758667,0 -1.369628,0.2484 -0.604248,0.2417 -1.080933,0.7587 -0.463257,0.5035 -0.725098,1.2756 -0.255127,0.7654 -0.255127,1.7725 0,1.0541 0.281983,1.8127 0.288696,0.7587 0.738525,1.2354 0.469971,0.4968 1.09436,0.7385 0.631104,0.235 1.329346,0.235 0.960083,0 1.799317,-0.329 0.839233,-0.329 1.571045,-0.9869 l 0.09399,0 0,1.5576 z" + style="font-size:13.75px;fill:#ffffff" + id="path4160" /> + </g> + </g> +</svg> diff --git a/skins/nopacity/themes/default/icons/ico_record_active.png b/skins/nopacity/themes/default/icons/ico_record_active.png Binary files differnew file mode 100644 index 0000000..476da99 --- /dev/null +++ b/skins/nopacity/themes/default/icons/ico_record_active.png diff --git a/skins/nopacity/themes/default/icons/ico_record_inactive.png b/skins/nopacity/themes/default/icons/ico_record_inactive.png Binary files differnew file mode 100644 index 0000000..2a91da3 --- /dev/null +++ b/skins/nopacity/themes/default/icons/ico_record_inactive.png diff --git a/skins/nopacity/themes/default/icons/ico_search_active.png b/skins/nopacity/themes/default/icons/ico_search_active.png Binary files differnew file mode 100644 index 0000000..7bf7bc7 --- /dev/null +++ b/skins/nopacity/themes/default/icons/ico_search_active.png diff --git a/skins/nopacity/themes/default/icons/ico_search_inactive.png b/skins/nopacity/themes/default/icons/ico_search_inactive.png Binary files differnew file mode 100644 index 0000000..4a210bb --- /dev/null +++ b/skins/nopacity/themes/default/icons/ico_search_inactive.png diff --git a/skins/nopacity/themes/default/icons/ico_switchtimer.svg b/skins/nopacity/themes/default/icons/ico_switchtimer.svg new file mode 100644 index 0000000..f3ef884 --- /dev/null +++ b/skins/nopacity/themes/default/icons/ico_switchtimer.svg @@ -0,0 +1,93 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="45" + height="23" + id="svg2" + version="1.1" + inkscape:version="0.91pre2 r13516" + viewBox="0 0 45 23" + sodipodi:docname="ico_switchtimer.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="5.6" + inkscape:cx="-13.27009" + inkscape:cy="16.082332" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1846" + inkscape:window-height="1058" + inkscape:window-x="66" + inkscape:window-y="-8" + inkscape:window-maximized="1" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1029.3622)"> + <rect + style="fill:#ff7f2a;fill-opacity:1;stroke:#ececec;stroke-width:0;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-opacity:1" + id="rect4148" + width="45" + height="23" + x="4.9999999e-006" + y="1029.3622" + ry="8.9285717" /> + <g + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="text4150"> + <path + d="m 9.2532783,1042.4468 q 0,0.531 -0.2502442,1.0498 -0.2441406,0.5188 -0.6896973,0.8789 -0.4882812,0.3906 -1.1413574,0.6103 -0.6469726,0.2198 -1.5625,0.2198 -0.982666,0 -1.7700195,-0.1831 -0.78125,-0.1831 -1.5930176,-0.5433 l 0,-1.5136 0.085449,0 q 0.6896973,0.5737 1.5930176,0.885 0.9033203,0.3113 1.6967774,0.3113 1.1230468,0 1.7456054,-0.4212 0.6286621,-0.4211 0.6286621,-1.123 0,-0.6043 -0.2990722,-0.8911 -0.2929688,-0.2869 -0.8972168,-0.4456 -0.4577637,-0.1221 -0.9948731,-0.2014 -0.5310058,-0.079 -1.1291504,-0.2014 -1.2084961,-0.2564 -1.7944336,-0.8728 -0.5798339,-0.6226 -0.5798339,-1.6175 0,-1.1413 0.9643554,-1.8676 0.9643555,-0.7325 2.4475098,-0.7325 0.9582519,0 1.7578125,0.1831 0.7995605,0.1832 1.4160156,0.4517 l 0,1.4282 -0.085449,0 q -0.5187988,-0.4394 -1.3671875,-0.7263 -0.8422852,-0.293 -1.7272949,-0.293 -0.970459,0 -1.5625,0.4029 -0.5859375,0.4028 -0.5859375,1.0376 0,0.5676 0.2929687,0.8911 0.2929688,0.3235 1.0314942,0.4944 0.390625,0.085 1.1108398,0.2075 0.7202149,0.1221 1.2207031,0.2502 1.0131836,0.2686 1.5258789,0.8118 0.5126954,0.5432 0.5126954,1.5198 z" + style="" + id="path4138" /> + <path + d="m 19.678083,1038.2231 -1.776123,6.8177 -1.062012,0 -1.751709,-5.2552 -1.739502,5.2552 -1.055908,0 -1.794434,-6.8177 1.19629,0 1.25122,5.2796 1.702881,-5.2796 0.946045,0 1.745605,5.2796 1.184082,-5.2796 1.153565,0 z" + style="" + id="path4140" /> + <path + d="m 22.565046,1037.0818 -1.293945,0 0,-1.1902 1.293945,0 0,1.1902 z m -0.07324,7.959 -1.147461,0 0,-6.8177 1.147461,0 0,6.8177 z" + style="" + id="path4142" /> + <path + d="m 28.265729,1044.9797 q -0.323486,0.085 -0.708007,0.1404 -0.378418,0.055 -0.677491,0.055 -1.043701,0 -1.586914,-0.5615 -0.543213,-0.5615 -0.543213,-1.8005 l 0,-3.6255 -0.775146,0 0,-0.9644 0.775146,0 0,-1.9592 1.147461,0 0,1.9592 2.368164,0 0,0.9644 -2.368164,0 0,3.1067 q 0,0.5371 0.02441,0.8423 0.02441,0.299 0.170899,0.5615 0.134277,0.2441 0.366211,0.3601 0.238037,0.1099 0.720215,0.1099 0.280761,0 0.585937,-0.079 0.305176,-0.085 0.439453,-0.1404 l 0.06104,0 0,1.0315 z" + style="" + id="path4144" /> + <path + d="m 34.698835,1044.6135 q -0.573731,0.2747 -1.092529,0.4273 -0.512696,0.1526 -1.09253,0.1526 -0.738525,0 -1.35498,-0.2137 -0.616455,-0.2197 -1.055908,-0.6591 -0.445557,-0.4395 -0.689698,-1.1109 -0.24414,-0.6714 -0.24414,-1.5686 0,-1.6723 0.915527,-2.6245 0.921631,-0.9521 2.429199,-0.9521 0.585938,0 1.147461,0.1647 0.567627,0.1648 1.037598,0.4029 l 0,1.2756 -0.06104,0 q -0.524903,-0.4089 -1.086426,-0.6286 -0.55542,-0.2198 -1.086426,-0.2198 -0.976562,0 -1.544189,0.6592 -0.561524,0.6531 -0.561524,1.9226 0,1.2329 0.549317,1.8982 0.55542,0.6592 1.556396,0.6592 0.347901,0 0.708008,-0.092 0.360107,-0.091 0.646973,-0.238 0.250244,-0.1282 0.46997,-0.2686 0.219727,-0.1464 0.347901,-0.2502 l 0.06104,0 0,1.2634 z" + style="" + id="path4146" /> + <path + d="m 41.876569,1045.0408 -1.147461,0 0,-3.8819 q 0,-0.4699 -0.05493,-0.8789 -0.05493,-0.415 -0.201416,-0.6469 -0.152588,-0.2564 -0.439453,-0.3785 -0.286866,-0.1281 -0.744629,-0.1281 -0.469971,0 -0.982666,0.2319 -0.512696,0.2319 -0.982666,0.592 l 0,5.0904 -1.147461,0 0,-9.4971 1.147461,0 0,3.4363 q 0.537109,-0.4456 1.110839,-0.6958 0.573731,-0.2503 1.177979,-0.2503 1.104736,0 1.68457,0.6653 0.579834,0.6653 0.579834,1.9165 l 0,4.4251 z" + style="" + id="path4148" /> + </g> + </g> +</svg> diff --git a/skins/nopacity/themes/default/icons/ico_yes.png b/skins/nopacity/themes/default/icons/ico_yes.png Binary files differnew file mode 100644 index 0000000..2f1af98 --- /dev/null +++ b/skins/nopacity/themes/default/icons/ico_yes.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_button.png b/skins/nopacity/themes/default/skinparts/tvguide_button.png Binary files differnew file mode 100644 index 0000000..7a43e01 --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_button.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_button_active.png b/skins/nopacity/themes/default/skinparts/tvguide_button_active.png Binary files differnew file mode 100644 index 0000000..22d167e --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_button_active.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_channelgroup_bottom.png b/skins/nopacity/themes/default/skinparts/tvguide_channelgroup_bottom.png Binary files differnew file mode 100644 index 0000000..c37ba42 --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_channelgroup_bottom.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_channelgroup_head.png b/skins/nopacity/themes/default/skinparts/tvguide_channelgroup_head.png Binary files differnew file mode 100644 index 0000000..75ee8a8 --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_channelgroup_head.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_channelgroup_horizontal.png b/skins/nopacity/themes/default/skinparts/tvguide_channelgroup_horizontal.png Binary files differnew file mode 100644 index 0000000..ead7606 --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_channelgroup_horizontal.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_channelgroup_left.png b/skins/nopacity/themes/default/skinparts/tvguide_channelgroup_left.png Binary files differnew file mode 100644 index 0000000..30e1b45 --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_channelgroup_left.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_channelgroup_right.png b/skins/nopacity/themes/default/skinparts/tvguide_channelgroup_right.png Binary files differnew file mode 100644 index 0000000..d89657c --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_channelgroup_right.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_channelgroup_vertical.png b/skins/nopacity/themes/default/skinparts/tvguide_channelgroup_vertical.png Binary files differnew file mode 100644 index 0000000..64134c7 --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_channelgroup_vertical.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_channellogoback_horizontal.png b/skins/nopacity/themes/default/skinparts/tvguide_channellogoback_horizontal.png Binary files differnew file mode 100644 index 0000000..2df7f52 --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_channellogoback_horizontal.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_channellogoback_vertical.png b/skins/nopacity/themes/default/skinparts/tvguide_channellogoback_vertical.png Binary files differnew file mode 100644 index 0000000..669beeb --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_channellogoback_vertical.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_clock.png b/skins/nopacity/themes/default/skinparts/tvguide_clock.png Binary files differnew file mode 100644 index 0000000..3df1dae --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_clock.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_date_vertical.png b/skins/nopacity/themes/default/skinparts/tvguide_date_vertical.png Binary files differnew file mode 100644 index 0000000..58a72e4 --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_date_vertical.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_grid_active_bottom.png b/skins/nopacity/themes/default/skinparts/tvguide_grid_active_bottom.png Binary files differnew file mode 100644 index 0000000..28fb443 --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_grid_active_bottom.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_grid_active_head.png b/skins/nopacity/themes/default/skinparts/tvguide_grid_active_head.png Binary files differnew file mode 100644 index 0000000..a494d95 --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_grid_active_head.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_grid_active_horizontal.png b/skins/nopacity/themes/default/skinparts/tvguide_grid_active_horizontal.png Binary files differnew file mode 100644 index 0000000..368309f --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_grid_active_horizontal.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_grid_active_left.png b/skins/nopacity/themes/default/skinparts/tvguide_grid_active_left.png Binary files differnew file mode 100644 index 0000000..0548e21 --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_grid_active_left.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_grid_active_right.png b/skins/nopacity/themes/default/skinparts/tvguide_grid_active_right.png Binary files differnew file mode 100644 index 0000000..2aee1d6 --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_grid_active_right.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_grid_active_vertical.png b/skins/nopacity/themes/default/skinparts/tvguide_grid_active_vertical.png Binary files differnew file mode 100644 index 0000000..6aba9d1 --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_grid_active_vertical.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_grid_bottom.png b/skins/nopacity/themes/default/skinparts/tvguide_grid_bottom.png Binary files differnew file mode 100644 index 0000000..e90e05e --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_grid_bottom.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_grid_head.png b/skins/nopacity/themes/default/skinparts/tvguide_grid_head.png Binary files differnew file mode 100644 index 0000000..4196cd8 --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_grid_head.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_grid_horizontal.png b/skins/nopacity/themes/default/skinparts/tvguide_grid_horizontal.png Binary files differnew file mode 100644 index 0000000..6bccb3f --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_grid_horizontal.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_grid_left.png b/skins/nopacity/themes/default/skinparts/tvguide_grid_left.png Binary files differnew file mode 100644 index 0000000..7b17046 --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_grid_left.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_grid_right.png b/skins/nopacity/themes/default/skinparts/tvguide_grid_right.png Binary files differnew file mode 100644 index 0000000..17fe003 --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_grid_right.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_grid_vertical.png b/skins/nopacity/themes/default/skinparts/tvguide_grid_vertical.png Binary files differnew file mode 100644 index 0000000..e7192ac --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_grid_vertical.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_header.png b/skins/nopacity/themes/default/skinparts/tvguide_header.png Binary files differnew file mode 100644 index 0000000..24fd20c --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_header.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_timelinebright_horizontal.png b/skins/nopacity/themes/default/skinparts/tvguide_timelinebright_horizontal.png Binary files differnew file mode 100644 index 0000000..9240b37 --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_timelinebright_horizontal.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_timelinebright_vertical.png b/skins/nopacity/themes/default/skinparts/tvguide_timelinebright_vertical.png Binary files differnew file mode 100644 index 0000000..5466546 --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_timelinebright_vertical.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_timelinedark_horizontal.png b/skins/nopacity/themes/default/skinparts/tvguide_timelinedark_horizontal.png Binary files differnew file mode 100644 index 0000000..4364677 --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_timelinedark_horizontal.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_timelinedark_vertical.png b/skins/nopacity/themes/default/skinparts/tvguide_timelinedark_vertical.png Binary files differnew file mode 100644 index 0000000..dfa06c9 --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_timelinedark_vertical.png diff --git a/skins/nopacity/themes/default/skinparts/tvguide_tvframe.png b/skins/nopacity/themes/default/skinparts/tvguide_tvframe.png Binary files differnew file mode 100644 index 0000000..cdb800c --- /dev/null +++ b/skins/nopacity/themes/default/skinparts/tvguide_tvframe.png diff --git a/skins/nopacity/themes/default/theme.xml b/skins/nopacity/themes/default/theme.xml index 82c075c..36af8e4 100644 --- a/skins/nopacity/themes/default/theme.xml +++ b/skins/nopacity/themes/default/theme.xml @@ -15,6 +15,7 @@ <color name="clrBorder">FF4C5C11</color> <color name="clrGray">FF858585</color> <color name="clrBackground">B012273F</color> + <color name="clrBackgroundOpaque">FF12273F</color> <color name="clrTransBlack">99000000</color> <color name="clrTransBlackDark">CC000000</color> <color name="clrTransRed">99FF0000</color> diff --git a/skins/nopacity/xmlfiles/plug-tvguideng-detail.xml b/skins/nopacity/xmlfiles/plug-tvguideng-detail.xml new file mode 100644 index 0000000..2ad6b76 --- /dev/null +++ b/skins/nopacity/xmlfiles/plug-tvguideng-detail.xml @@ -0,0 +1,386 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE displayplugin SYSTEM "../../../dtd/displayplugin.dtd"> + +<displayplugin x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="80%" scaletvy="0" scaletvwidth="20%" scaletvheight="20%"> + + <viewelement name="background"> + <area x="0" y="0" width="100%" height="20%" layer="1"> + <drawimage imagetype="skinpart" path="tvguide_header" x="0" y="0" width="80%" height="100%"/> + <drawimage imagetype="skinpart" path="tvguide_tvframe" x="80%" y="0" width="20%" height="100%"/> + </area> + <area x="0" y="20%" width="100%" height="80%" layer="1"> + <fill color="{clrBackground}" /> + </area> + </viewelement> + + <!-- Available Variables scrollbar: + {height} height of scrollbar in tenth of a percent of total height + {offset} offset in tenth of a percent of total height + --> + <scrollbar> + <area x="97%" y="20%" width="2%" height="65%" layer="2"> + <fill color="{clrBorder}" /> + <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" /> + <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrScrollbar}" /> + </area> + </scrollbar> + + <!-- Available Variables Footer: + {red1} true if red button is button 1 + {red2} true if red button is button 2 + {red3} true if red button is button 3 + {red4} true if red button is button 4 + {green1} true if green button is button 1 + {green2} true if green button is button 2 + {green3} true if green button is button 3 + {green4} true if green button is button 4 + {yellow1} true if yellow button is button 1 + {yellow2} true if yellow button is button 2 + {yellow3} true if yellow button is button 3 + {yellow4} true if yellow button is button 4 + {blue1} true if blue button is button 1 + {blue2} true if blue button is button 2 + {blue3} true if blue button is button 3 + {blue4} true if blue button is button 4 + {red} label of red button + {green} label of green button + {yellow} label of yellow button + {blue} label of blue button + --> + <viewelement name="footer"> + <area condition="{red1}" x="0" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonred" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{red}" /> + </area> + <area condition="{green1}" x="0" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttongreen" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{green}" /> + </area> + <area condition="{yellow1}" x="0" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonyellow" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{yellow}" /> + </area> + <area condition="{blue1}" x="0" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonblue" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{blue}" /> + </area> + + <area condition="{red2}" x="25%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonred" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{red}" /> + </area> + <area condition="{green2}" x="25%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttongreen" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{green}" /> + </area> + <area condition="{yellow2}" x="25%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonyellow" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{yellow}" /> + </area> + <area condition="{blue2}" x="25%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonblue" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{blue}" /> + </area> + + <area condition="{red3}" x="50%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonred" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{red}" /> + </area> + <area condition="{green3}" x="50%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttongreen" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{green}" /> + </area> + <area condition="{yellow3}" x="50%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonyellow" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{yellow}" /> + </area> + <area condition="{blue3}" x="50%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonblue" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{blue}" /> + </area> + + <area condition="{red4}" x="75%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonred" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{red}" /> + </area> + <area condition="{green4}" x="75%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttongreen" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{green}" /> + </area> + <area condition="{yellow4}" x="75%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonyellow" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{yellow}" /> + </area> + <area condition="{blue4}" x="75%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonblue" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{blue}" /> + </area> + </viewelement> + + <!-- Available Variables time: + {time} timestring in hh:mm + {sec} current seconds + {min} current minutes + {hour} current hours + {hmins} current "hourminutes" to display an hour hand + --> + <viewelement name="time"> + </viewelement> + + + <!-- Available Variables in detailheader elements: + {title} title of event + {shorttext} shorttext of event + {start} event start time in hh::mm + {stop} event stop time + {day} Day of event as three letter abrivation + {date} date of current event in dd.mm.yy + {daynumeric} day as number + {month} month as number + {year} year as number + {running} true if event is currently running + {elapsed} elapsed time of event, if not running 0 + {duration} duration of event + {durationhours} duration, full hours + {durationminutes} duration, rest of minutes + {vps} vps description string + {channelname} Channelname of event + {channelnumber} Channelnumber of event + {channellogoexists} true if a channel logo exists + {channelid} ChannelID as path to display channel logo + {ismovie} true if event is scraped as a movie + {isseries} true if event is scraped as a series + {posteravailable} true if a poster is available + {posterwidth} width of scraped poster + {posterheight} height of scraped poster + {posterpath} absolute path of scraped poster + {banneravailable} true if a banner is available + {bannerwidth} width of banner + {bannerheight} height of banner + {bannerpath} path of banner + {epgpicavailable} true if a epg picture is available + {epgpicpath} path of epg picture + --> + <viewelement name="header"> + <area x="1%" y="1%" width="75%" height="18%" layer="2"> + <drawimage name="logo" imagetype="channellogo" path="{channelid}" x="0" width="15%" height="80%" valign="center" /> + <drawtext name="title" x="{width(logo)} + 20" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{title}" /> + <drawtext name="datetime" x="{width(logo)} + 20" y="{posy(title)} - {height(datetime)}" font="{vdrOsd}" fontsize="25%" color="{clrWhite}" text="{day} {date} {start} - {stop} ({duration} mins)" /> + <drawtext name="shorttext" x="{width(logo)} + 20" y="{posy(title)} + {height(title)}" font="{vdrOsd}" fontsize="25%" color="{clrWhite}" text="{shorttext}" /> + </area> + </viewelement> + + <!-- Available Variables in tab elements: + {title} title of event + {shorttext} shorttext of event + {description} description of event + {start} event start time in hh::mm + {stop} event stop time + {day} Day of event as three letter abrivation + {date} date of current event in dd.mm.yy + {daynumeric} day as number + {month} month as number + {year} year as number + {running} true if event is currently running + {elapsed} elapsed time of event, if not running 0 + {duration} duration of event + {durationhours} duration, full hours + {durationminutes} duration, rest of minutes + {vps} vps description string + {channellogoexists} true if a channel logo exists + {channelid} ChannelID as path to display channel logo + {hasreruns} true if reruns of this event are found + {reruns[]} array with reruns + {reruns[title]} title of rerun + {reruns[shorttext]} shorttext of rerun + {reruns[date]} date of rerun in dd:mm + {reruns[day]} short dayname of rerun + {reruns[start]} start time of rerun in hh:mm + {reruns[stop]} stop time of rerun in hh:mm + {reruns[channelname]} name of channel on which rerun occurs + {reruns[channelnumber]} number of channel on which rerun occurs + {reruns[channelid]} id of channel on which rerun occurs to display channel logo + {reruns[channellogoexists]} true if channel logo exists + {epgpic1avaialble} true if first epg picture is available + {epgpic2avaialble} true if first epg picture is available + {epgpic3avaialble} true if first epg picture is available + {epgpic1path} path of first epg picture + {epgpic2path} path of second epg picture + {epgpic3path} path of third epg picture + + {ismovie} true if event is scraped as a movie + Available variables for movies: + {movietitle} movie title from themoviedb + {movieoriginalTitle} movie original title from themoviedb + {movietagline} movie tagline from themoviedb + {movieoverview} movie overview from themoviedb + {movieadult} true if movie is rated as adult + {moviebudget} movie budget from themoviedb in $ + {movierevenue} movie revenue from themoviedb in $ + {moviegenres} movie genres from themoviedb + {moviehomepage} movie homepage from themoviedb + {moviereleasedate} movie release date from themoviedb + {movieruntime} movie runtime from themoviedb + {moviepopularity} movie popularity from themoviedb + {movievoteaverage} movie vote average from themoviedb + {posterwidth} width of scraped poster + {posterheight} height of scraped poster + {posterpath} absolute path of scraped poster + {fanartwidth} width of scraped fanart + {fanartheight} height of scraped fanart + {fanartpath} absolute path of scraped fanart + {movieiscollection} true if movie is part of a collection + {moviecollectionName} name of movie collection + {collectionposterwidth} width of scraped collection poster + {collectionposterheight} height of scraped collection poster + {collectionposterpath} absolute path of scraped collection poster + {collectionfanartwidth} width of scraped collection fanart + {collectionfanartheight} height of scraped collection fanart + {collectionfanartpath} absolute path of scraped collection fanart + {actors[]} array with movie actors + {actors[name]} real name of actor + {actors[role]} actor role + {actors[thumb]} absolute path of scraped actor thumb + {actors[thumbwidth]} width of scraped actor thumb + {actors[thumbheight]} height of scraped actor thumb + + {isseries} true if event is scraped as a series + Available variables for series: + {seriesname} name of series + {seriesoverview} series overview + {seriesfirstaired} first aired date + {seriesnetwork} network which produces series + {seriesgenre} series genre + {seriesrating} series thetvdb rating + {seriesstatus} status of series (running / finished) + {episodetitle} title of episode + {episodenumber} number of episode + {episodeseason} season of episode + {episodefirstaired} first aired date of episode + {episodegueststars} guest stars of episode + {episodeoverview} episode overview + {episoderating} user rating for episode + {episodeimagewidth} episode image width + {episodeimageheight} episode image height + {episodeimagepath} episode image path + {seasonposterwidth} episode season poster width + {seasonposterheight} episode season poster height + {seasonposterpath} episode season poster path + {seriesposter1width} width of 1st poster + {seriesposter1height} height of 1st poster + {seriesposter1path} path of 1st poster + {seriesposter2width} width of 2nd poster + {seriesposter2height} height of 2nd poster + {seriesposter2path} path of 2nd poster + {seriesposter3width} width of 3rd poster + {seriesposter3height} height of 3rd poster + {seriesposter3path} path of 3rd poster + {seriesfanart1width} width of 1st fanart + {seriesfanart1height} height of 1st fanart + {seriesfanart1path} path of 1st fanart + {seriesfanart2width} width of 2nd fanart + {seriesfanart2height} height of 2nd fanart + {seriesfanart2path} path of 2nd fanart + {seriesfanart3width} width of 3rd fanart + {seriesfanart3height} height of 3rd fanart + {seriesfanart3path} path of 3rd fanart + {seriesbanner1width} width of 1st banner + {seriesbanner1height} height of 1st banner + {seriesbanner1path} path of 1st banner + {seriesbanner2width} width of 2nd banner + {seriesbanner2height} height of 2nd banner + {seriesbanner2path} path of 2nd banner + {seriesbanner3width} width of 3rd banner + {seriesbanner3height} height of 3rd banner + {seriesbanner3path} path of 3rd fanart + {actors[]} array with movie actors + {actors[name]} real name of actor + {actors[role]} actor role + {actors[thumb]} absolute path of scraped actor thumb + {actors[thumbwidth]} width of scraped actor thumb + {actors[thumbheight]} height of scraped actor thumb + --> + + <!-- a tab is one scrolling area, just position and draw as inside a normal area --> + <!-- just define as many tabs as needed --> + + <!-- TAB EPGINFO --> + <tab name="EPG Info" x="1%" y="21%" width="95%" height="65%" layer="2" scrollheight="{areaheight}/4"> + <drawtextbox condition="not{isseries}++not{ismovie}" x="0" y="10" width="96%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{description}" /> + <drawimage condition="{isseries}" name="seriesposter" imagetype="image" path="{seriesposter1path}" x="{areawidth}*0.75" y="10" width="{areawidth}*0.25" height="{areawidth} * 0.25 * {seriesposter1height} / {seriesposter1width}"/> + <drawimage condition="{ismovie}" name="movieposter" imagetype="image" path="{posterpath}" x="{areawidth}*0.75" y="10" width="{areawidth}*0.25" height="{areawidth} * 0.25 * {posterheight} / {posterwidth}" /> + <drawtextbox condition="{isseries}" x="0" y="10" width="96%" float="topright" floatwidth="{width(seriesposter)} + 10" floatheight="{height(seriesposter)} + 20" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{description}" /> + <drawtextbox condition="{ismovie}" x="0" y="10" width="96%" float="topright" floatwidth="{width(movieposter)} + 10" floatheight="{height(movieposter)} + 20" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{description}" /> + </tab> + <!-- TAB RERUNS --> + <tab condition="{hasreruns}" name="{tr(reruns)}" x="1%" y="21%" width="95%" height="60%" layer="2" scrollheight="{areaheight}/4"> + <drawtext align="center" y="0" name="title" font="{vdrOsd}" fontsize="10%" color="{clrWhite}" text="{tr(rerunsof)} '{title}'" /> + <loop name="reruns" x="0" y="{height(title)} + 10" width="{areawidth}" orientation="vertical"> + <drawimage name="logo" condition="{reruns[channellogoexists]}" imagetype="channellogo" path="{reruns[channelid]}" x="0" width="10%" height="10%" /> + <drawtext name="channelname" condition="not{reruns[channellogoexists]}" x="-5" font="{vdrOsd}" fontsize="10%" color="{clrWhite}" text="{reruns[channelname]}" /> + <drawtext condition="{reruns[channellogoexists]}" x="{width(logo)}+20" y="-5" width="{areawidth} - {width(logo)} - 20" font="{vdrOsd}" fontsize="8%" color="{clrWhite}" text="{reruns[day]} {reruns[date]} {reruns[start]} - {reruns[stop]}: {reruns[title]} {reruns[shorttext]}" /> + <drawtext condition="not{reruns[channellogoexists]}" x="{width(channelname)}+20" y="-5" width="{areawidth} - {width(logo)} - 20" font="{vdrOsd}" fontsize="8%" color="{clrWhite}" text="{reruns[day]} {reruns[date]} {reruns[start]} - {reruns[stop]}: {reruns[title]} {reruns[shorttext]}" /> + </loop> + </tab> + <!-- TAB ACTORS --> + <tab condition="{isseries}||{ismovie}" name="{tr(actors)}" x="1%" y="21%" width="95%" height="60%" layer="2" scrollheight="{areaheight}/4"> + <drawtext align="center" name="title" y="0" font="{vdrOsd}" fontsize="15%" color="{clrWhite}" text="{tr(actors)}" /> + <loop name="actors" x="0" y="{height(title)} + 10" width="{areawidth}" orientation="horizontal" columnwidth="{areawidth}/5" rowheight="{areawidth}/5*1.8" overflow="linewrap"> + <drawimage name="thumb" imagetype="image" path="{actors[thumb]}" x="20" y="0" width="{columnwidth}-40" height="{columnwidth} * {actors[thumbheight]} / {actors[thumbwidth]} - 40 * {actors[thumbheight]} / {actors[thumbwidth]}"/> + <drawtext align="center" y="{height(thumb)} + 10" width="{columnwidth}" name="actorname" font="{vdrOsd}" fontsize="7%" color="{clrWhite}" text="{actors[name]}" /> + <drawtext align="center" y="{height(thumb)} + 10 + {height(actorname)}" width="{columnwidth}" font="{vdrOsd}" fontsize="7%" color="{clrWhite}" text="{actors[role]}" /> + </loop> + </tab> + <!-- TAB TVDBINFO --> + <tab condition="{isseries}" name="TvDBInfo" x="1%" y="21%" width="95%" height="60%" layer="2" scrollheight="{areaheight}/4"> + <drawimage name="banner" imagetype="image" path="{seriesbanner1path}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner1height} / {seriesbanner1width}"/> + <drawimage name="episodeimage" imagetype="image" path="{episodeimagepath}" x="{areawidth}*0.7" y="{height(banner)} + 20" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {episodeimageheight} / {episodeimagewidth}"/> + <drawimage name="seasonposter" imagetype="image" path="{seasonposterpath}" x="{areawidth}*0.7" y="{height(banner)} + {height(episodeimage)} + 30" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {seasonposterheight} / {seasonposterwidth}"/> + <drawtextbox x="0" y="{height(banner)} + 20" width="96%" float="topright" floatwidth="{width(seasonposter)} + 10" floatheight="{height(episodeimage)} + {height(seasonposter)} + 30" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{tr(episode)}: {episodetitle} ({tr(season)} {episodeseason}, {tr(episode)} {episodenumber}) {episodeoverview}| {tr(gueststars)}: {episodegueststars}|| {tr(seriesfirstaired)}: {seriesfirstaired}|| {tr(episodefirstaired)}: {episodefirstaired}|| {tr(network)}: {seriesnetwork}|| {tr(genre)}: {seriesgenre}|| {tr(status)}: {seriesstatus}|| {tr(rating)}: {seriesrating}|| {tr(episoderating)}: {episoderating} |{seriesoverview} " /> + </tab> + <!-- TAB SERIESGALERY --> + <tab condition="{isseries}" name="{tr(seriesgalery)}" x="1%" y="21%" width="95%" height="60%" layer="2" scrollheight="{areaheight}/4"> + <drawimage name="banner1" imagetype="image" path="{seriesbanner1path}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner1height} / {seriesbanner1width}"/> + <drawimage name="fanart1" imagetype="image" path="{seriesfanart1path}" align="center" y="{posy(banner1)} + {height(banner1)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart1height} / {seriesfanart1width}"/> + <drawimage name="banner2" imagetype="image" path="{seriesbanner2path}" align="center" y="{posy(fanart1)} + {height(fanart1)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner2height} / {seriesbanner2width}"/> + <drawimage name="fanart2" imagetype="image" path="{seriesfanart2path}" align="center" y="{posy(banner2)} + {height(banner2)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart2height} / {seriesfanart2width}"/> + <drawimage name="banner3" imagetype="image" path="{seriesbanner3path}" align="center" y="{posy(fanart2)} + {height(fanart2)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner3height} / {seriesbanner3width}"/> + <drawimage name="fanart3" imagetype="image" path="{seriesfanart3path}" align="center" y="{posy(banner3)} + {height(banner3)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart3height} / {seriesfanart3width}"/> + <drawimage name="poster1" imagetype="image" path="{seriesposter1path}" align="center" y="{posy(fanart3)} + {height(fanart3)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter1height} / {seriesposter1width}"/> + <drawimage name="poster2" imagetype="image" path="{seriesposter2path}" align="center" y="{posy(poster1)} + {height(poster1)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter2height} / {seriesposter2width}"/> + <drawimage name="poster3" imagetype="image" path="{seriesposter3path}" align="center" y="{posy(poster2)} + {height(poster2)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter3height} / {seriesposter3width}"/> + </tab> + <!-- TAB MOVIEDBINFO --> + <tab condition="{ismovie}" name="MovieDBInfo" x="1%" y="21%" width="95%" height="60%" layer="2" scrollheight="{areaheight}/4"> + <drawimage name="poster" imagetype="image" path="{posterpath}" x="70%" y="10" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {posterheight} / {posterwidth}"/> + <drawtextbox x="0" y="10" width="96%" float="topright" floatwidth="{width(poster)} + 10" floatheight="{height(poster)} + 20" font="{vdrOsd}" fontsize="8%" color="{clrWhite}" text="{tr(originaltitle)}: {movieoriginalTitle} |{tr(genre)}: {moviegenres} ||{movietagline} |{movieoverview} |{tr(budget)}: {moviebudget} ||{tr(revenue)}: {movierevenue} ||{tr(adult)}: {movieadult} ||{tr(releasedate)}: {moviereleasedate} ||{tr(runtime)}: {movieruntime} min || {tr(popularity)}: {moviepopularity} || {tr(voteaverage)}: {movievoteaverage} || {tr(homepage)}: {moviehomepage}| " /> + </tab> + <!-- TAB MOVIEGALERY --> + <tab condition="{ismovie}" name="{tr(moviegalery)}" x="1%" y="21%" width="95%" height="60%" layer="2" scrollheight="{areaheight}/4"> + <drawimage name="fanart" imagetype="image" path="{fanartpath}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {fanartheight} / {fanartwidth}"/> + <drawimage name="poster" imagetype="image" path="{posterpath}" align="center" y="{height(fanart)} + 30" width="{areawidth}*0.6" height="{areawidth} * 0.6 * {posterheight} / {posterwidth}"/> + <drawimage condition="{movieiscollection}" name="collectionfanart" imagetype="image" path="{collectionfanartpath}" align="center" y="{posy(poster)} + {height(poster)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {collectionfanartheight} / {collectionfanartwidth}"/> + <drawimage condition="{movieiscollection}" name="collectionposter" imagetype="image" path="{collectionposterpath}" align="center" y="{posy(collectionfanart)} + {height(collectionfanart)} + 20" width="{areawidth}*0.6" height="{areawidth} * 0.6 * {collectionposterheight} / {collectionposterwidth}"/> + </tab> + + <!-- Available Variables tablabels: + {currenttab} name of currently active tab + {prevtab} name of prev tab + {nexttab} name of next tab + {tabs[]} array with available tab labels + {tabs[title]} title of tab + {tabs[current]} true if tab is displayed currently + --> + <tablabels> + <area x="1%" y="87%" width="98%" height="5%" layer="3"> + <drawrectangle x="0" y="1" width="100%" height="1" color="{clrBorder}" /> + <loop name="tabs" x="0" y="0" orientation="horizontal"> + <drawrectangle condition="{tabs[current]}" x="0" y="1" width="{width(label)}" height="100%" color="{clrBorder}" /> + <drawrectangle condition="not{tabs[current]}" x="0" y="1" width="{width(label)}" height="100%" color="{clrBorder}" /> + <drawrectangle condition="not{tabs[current]}" x="2" y="2" width="{width(label)} - 4" height="{areaheight}-4" color="{clrTransparent}" /> + <drawtext name="label" x="0" valign="center" font="{vdrOsd}" fontsize="95%" color="{clrWhite}" text=" {tabs[title]} " /> + </loop> + </area> + </tablabels> + +</displayplugin> diff --git a/skins/nopacity/xmlfiles/plug-tvguideng-recmenu.xml b/skins/nopacity/xmlfiles/plug-tvguideng-recmenu.xml new file mode 100644 index 0000000..01bedda --- /dev/null +++ b/skins/nopacity/xmlfiles/plug-tvguideng-recmenu.xml @@ -0,0 +1,468 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE displayplugin SYSTEM "../../../dtd/displayplugin.dtd"> + +<displayplugin x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="80%" scaletvy="0" scaletvwidth="20%" scaletvheight="20%"> + <!-- Available Variables Background: + {menuwidth} menuwidth in percent of screenwidth + {menuheight} menuheight in percent of screenheight + {hasscrollbar} true if menu needs a scrollbar + --> + <viewelement name="background"> + <area condition="not{hasscrollbar}" x="0" y="0" width="100%" height="100%" layer="4"> + <drawrectangle x="{areawidth}/2 - {menuwidth}*{areawidth}/100/2" y="{areaheight}/2 - {menuheight}*{areaheight}/100/2" width="{menuwidth}*{areawidth}/100" height="{menuheight}*{areaheight}/100" color="{clrBackgroundOpaque}" /> + </area> + <area condition="{hasscrollbar}" x="0" y="0" width="100%" height="100%" layer="4"> + <drawrectangle x="{areawidth}/2 - {menuwidth}*{areawidth}/100/2" y="{areaheight}/2 - {menuheight}*{areaheight}/100/2" width="{menuwidth}*{areawidth}/100 + {areawidth}*0.03" height="{menuheight}*{areaheight}/100" color="{clrBackgroundOpaque}"/> + </area> + </viewelement> + + <!-- Available Variables Scrollbar: + {menuwidth} menuwidth in percent of screenwidth + {posy} y position of scrollbar start in percent of screenheight + {totalheight} height of complete scrollbar in percent of screenheight + {height} height in tenth of a percent of total height + {offset} offset in tenth of a percent + --> + <viewelement name="scrollbar"> + <area x="0" y="0" width="100%" height="100%" layer="5"> + <drawrectangle x="{areawidth}/2 + {menuwidth}*{areawidth}/100/2" y="{posy}*{areaheight}/100" width="2%" height="{totalheight}*{areaheight}/100" color="{clrScrollbar}" /> + <drawrectangle x="{areawidth}/2 + {menuwidth}*{areawidth}/100/2 + 2" y="{posy}*{areaheight}/100 + 2" width="{areawidth}*0.02 - 4" height="{totalheight}*{areaheight}/100 - 4" color="{clrTransparent}" /> + </area> + <area x="0" y="0" width="100%" height="100%" layer="6"> + <drawrectangle x="{areawidth}/2 + {menuwidth}*{areawidth}/100/2 + 4" y="{posy}*{areaheight}/100 + {totalheight}*{areaheight}/100 * {offset} / 1000 + 4" width="{areawidth}*0.02 - 8" height="{totalheight}*{areaheight}/100 * {height} / 1000 - 8" color="{clrScrollbar}" /> + </area> + </viewelement> + + <grid name="recmenu" x="0" y="0" width="100%" height="100%"> + <!-- Background + {current} true if item is currently selected + --> + <area condition="not{info}++not{buttonyesno}++not{timerconflictheader}++not{timerconflict}++not{timelineheader}++not{timelinetimer}" layer="5"> + <drawimage condition="not{current}" imagetype="skinpart" path="tvguide_button" x="0" y="0" width="100%" height="100%"/> + <drawimage condition="{current}" imagetype="skinpart" path="tvguide_button_active" x="0" y="0" width="100%" height="100%"/> + </area> + <area condition="{info}" layer="5"> + <drawtext condition="eq({lines}, 1)" align="center" valign="center" font="{vdrOsd}" fontsize="60%" color="{clrWhite}" text="{line1}" /> + + <drawtext condition="eq({lines}, 2)" align="center" y="5%" font="{vdrOsd}" fontsize="40%" color="{clrWhite}" text="{line1}" /> + <drawtext condition="eq({lines}, 2)" align="center" y="52%" font="{vdrOsd}" fontsize="40%" color="{clrWhite}" text="{line2}" /> + + <drawtext condition="eq({lines}, 3)" align="center" y="0%" font="{vdrOsd}" fontsize="28%" color="{clrWhite}" text="{line1}" /> + <drawtext condition="eq({lines}, 3)" align="center" y="33%" font="{vdrOsd}" fontsize="28%" color="{clrWhite}" text="{line2}" /> + <drawtext condition="eq({lines}, 3)" align="center" y="66%" font="{vdrOsd}" fontsize="28%" color="{clrWhite}" text="{line3}" /> + + <drawtext condition="eq({lines}, 4)" align="center" y="0%" font="{vdrOsd}" fontsize="22%" color="{clrWhite}" text="{line1}" /> + <drawtext condition="eq({lines}, 4)" align="center" y="25%" font="{vdrOsd}" fontsize="22%" color="{clrWhite}" text="{line2}" /> + <drawtext condition="eq({lines}, 4)" align="center" y="50%" font="{vdrOsd}" fontsize="22%" color="{clrWhite}" text="{line3}" /> + <drawtext condition="eq({lines}, 4)" align="center" y="75%" font="{vdrOsd}" fontsize="22%" color="{clrWhite}" text="{line4}" /> + </area> + <!-- button + {button} true + {buttontext} text to display on button + --> + <area condition="{button}" layer="6"> + <drawtext condition="not{current}" align="center" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItem}" text="{buttontext}" /> + <drawtext condition="{current}" align="center" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItemSelected}" text="{buttontext}" /> + </area> + + <!-- yes / no button + {buttonyesno} true + {yes} true if button is set to yes + {textyes} text to display on yes button + {textno} text to display on no button + --> + <area condition="{buttonyesno}" layer="5"> + <drawimage condition="not{current}" imagetype="skinpart" path="tvguide_button" x="2%" y="5%" width="46%" height="90%"/> + <drawimage condition="not{current}" imagetype="skinpart" path="tvguide_button" x="52%" y="5%" width="46%" height="90%"/> + <drawimage condition="{current}++{yes}" imagetype="skinpart" path="tvguide_button_active" x="2%" y="5%" width="46%" height="90%"/> + <drawimage condition="{current}++{yes}" imagetype="skinpart" path="tvguide_button" x="52%" y="5%" width="46%" height="90%"/> + <drawimage condition="{current}++not{yes}" imagetype="skinpart" path="tvguide_button" x="2%" y="5%" width="46%" height="90%"/> + <drawimage condition="{current}++not{yes}" imagetype="skinpart" path="tvguide_button_active" x="52%" y="5%" width="46%" height="90%"/> + </area> + <area condition="{buttonyesno}" layer="6"> + <drawtext condition="not{current}" name="yestext" x="{areawidth}/4 - {width(yestext)}/2" valign="center" font="{vdrOsd}" fontsize="70%" color="{clrFontMenuItem}" text="{textyes}" /> + <drawtext condition="not{current}" name="notext" x="3*{areawidth}/4 - {width(notext)}/2" valign="center" font="{vdrOsd}" fontsize="70%" color="{clrFontMenuItem}" text="{textno}" /> + <drawtext condition="{current}++{yes}" name="yestext" x="{areawidth}/4 - {width(yestext)}/2" valign="center" font="{vdrOsd}" fontsize="70%" color="{clrFontMenuItemSelected}" text="{textyes}" /> + <drawtext condition="{current}++not{yes}" name="yestext" x="{areawidth}/4 - {width(yestext)}/2" valign="center" font="{vdrOsd}" fontsize="70%" color="{clrFontMenuItem}" text="{textyes}" /> + <drawtext condition="{current}++not{yes}" name="notext" x="3*{areawidth}/4 - {width(notext)}/2" valign="center" font="{vdrOsd}" fontsize="70%" color="{clrFontMenuItemSelected}" text="{textno}" /> + <drawtext condition="{current}++{yes}" name="notext" x="3*{areawidth}/4 - {width(notext)}/2" valign="center" font="{vdrOsd}" fontsize="70%" color="{clrFontMenuItem}" text="{textno}" /> + </area> <!-- Int Selector + {intselector} true + {text} title of selector + {value} current value of selector, integer + --> + <area condition="{intselector}" layer="6"> + <drawtext condition="not{current}" x="1%" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItem}" text="{text}" /> + <drawtext condition="{current}" x="1%" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItemSelected}" text="{text}" /> + <drawtext condition="not{current}" align="right" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItem}" text="{value} " /> + <drawtext condition="{current}" align="right" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItemSelected}" text="{value} " /> + </area> + <!-- Bool Selector + {boolselector} true + {text} title of selector + {value} current value of selector, true or false + --> + <area condition="{boolselector}" layer="6"> + <drawtext condition="not{current}" x="1%" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItem}" text="{text}" /> + <drawtext condition="{current}" x="1%" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItemSelected}" text="{text}" /> + <drawimage condition="{value}" imagetype="icon" path="ico_yes" x="{areawidth} - {areaheight}*0.8" y="10%" width="{areaheight}*0.8" height="{areaheight}*0.8"/> + <drawimage condition="not{value}" imagetype="icon" path="ico_no" x="{areawidth} - {areaheight}*0.8" y="10%" width="{areaheight}*0.8" height="{areaheight}*0.8"/> + </area> + <!-- String Selector + {stringselector} true + {text} title of selector + {value} current value of selector, string + --> + <area condition="{stringselector}" layer="6"> + <drawtext condition="not{current}" x="1%" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItem}" text="{text}" /> + <drawtext condition="{current}" x="1%" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItemSelected}" text="{text}" /> + <drawimage imagetype="icon" path="ico_arrow_right" x="{areawidth} - {areaheight}*0.8" y="10%" width="{areaheight}*0.8" height="{areaheight}*0.8"/> + <drawtext condition="not{current}" name="value" x="{areawidth} - {width(value)} - {areaheight}" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItem}" text="{value}" /> + <drawtext condition="{current}" name="value" x="{areawidth} - {width(value)} - {areaheight}" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItemSelected}" text="{value}" /> + <drawimage imagetype="icon" path="ico_arrow_left" x="{areawidth} - {width(value)} - 2*{areaheight}" y="10%" width="{areaheight}*0.8" height="{areaheight}*0.8"/> + </area> + <!-- Text Input + {textinput} true + {editmode} true if currently in edit mode + {text} title of selector + {value} current value of selector, string + --> + <area condition="{textinput}" layer="6"> + <drawtext condition="not{current}" x="1%" y="10%" font="{vdrOsd}" fontsize="40%" color="{clrFontMenuItem}" text="{text}" /> + <drawtext condition="{current}" x="1%" y="10%" font="{vdrOsd}" fontsize="40%" color="{clrFontMenuItemSelected}" text="{text}" /> + <drawrectangle condition="not{editmode}" x="1%" y="55%" width="98%" height="40%" color="{clrWhite}"/> + <drawrectangle condition="{editmode}" x="1%" y="55%" width="98%" height="40%" color="{clrRed}"/> + </area> + <area condition="{textinput}" layer="7"> + <drawtext align="right" y="55%" font="{vdrOsd}" fontsize="40%" color="{clrBlack}" text="{value} " /> + </area> + <!-- Time Selector + {timeselector} true + {text} title of selector + {value} current value of selector, hh:mm + --> + <area condition="{timeselector}" layer="6"> + <drawtext condition="not{current}" x="1%" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItem}" text="{text}" /> + <drawtext condition="{current}" x="1%" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItemSelected}" text="{text}" /> + <drawtext condition="not{current}" align="right" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItem}" text="{value} " /> + <drawtext condition="{current}" align="right" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItemSelected}" text="{value} " /> + </area> + <!-- Day Selector + {dayselector} true + {text} title of selector + {value} current value of selector, dd.mm + --> + <area condition="{dayselector}" layer="6"> + <drawtext condition="not{current}" x="1%" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItem}" text="{text}" /> + <drawtext condition="{current}" x="1%" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItemSelected}" text="{text}" /> + <drawtext condition="not{current}" align="right" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItem}" text="{value} " /> + <drawtext condition="{current}" align="right" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItemSelected}" text="{value} " /> + </area> + <!-- Channel Selector + {channelselector} true + {text} title of selector + {channelnumber} number of currently selected channel, 0 for "all channels" + {channelname} name of channel or "all channels" + {channelid} id of channel + {channellogoexisis} true if channel logo exists + --> + <area condition="{channelselector}" layer="6"> + <drawtext condition="not{current}" x="1%" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItem}" text="{text}" /> + <drawtext condition="{current}" x="1%" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItemSelected}" text="{text}" /> + <drawimage condition="{channellogoexisis}" imagetype="channellogo" path="{channelid}" x="{areawidth}-{areaheight}" valign="center" width="{areaheight}*0.9" height="{areaheight}*0.9" /> + <drawtext name="channelnumberlogo" condition="{channellogoexisis}" x="{areawidth}-{areaheight}-{width(channelnumberlogo)}-10" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrWhite}" text="{channelnumber}" /> + <drawtext condition="not{channellogoexisis}++{channelnumber}" align="right" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrWhite}" text="{channelnumber} {channelname} " /> + <drawtext condition="not{channelnumber}" align="right" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrWhite}" text="{channelname} " /> + </area> + <!-- Weekday Selector + {weekdayselector} true + {text} title of selector + {dayselected} number of currently selected day (0 - 6) + {day0abbr} ... {day6abbr} localized one character abbrevation for weekdays from Monday to Sunday + {day0set} ... {day6set} true if according weekday from Monday to Sunday is set + --> + <area condition="{weekdayselector}" layer="6"> + <drawtext condition="not{current}" x="1%" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItem}" text="{text}" /> + <drawtext condition="{current}" x="1%" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItemSelected}" text="{text}" /> + + <drawrectangle x="{areawidth} - {areaheight}*4" y="25%" width="{areaheight}*3.5" height="50%" color="{clrWhite}" /> + + <drawrectangle condition="not{day0set}" x="{areawidth} - {areaheight}*4.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrGray}" /> + <drawrectangle condition="{day0set}" x="{areawidth} - {areaheight}*4.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrBlack}" /> + + <drawrectangle condition="not{day1set}" x="{areawidth} - {areaheight}*3.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrGray}" /> + <drawrectangle condition="{day1set}" x="{areawidth} - {areaheight}*3.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrBlack}" /> + + <drawrectangle condition="not{day2set}" x="{areawidth} - {areaheight}*3.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrGray}" /> + <drawrectangle condition="{day2set}" x="{areawidth} - {areaheight}*3.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrBlack}" /> + + <drawrectangle condition="not{day3set}" x="{areawidth} - {areaheight}*2.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrGray}" /> + <drawrectangle condition="{day3set}" x="{areawidth} - {areaheight}*2.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrBlack}" /> + + <drawrectangle condition="not{day4set}" x="{areawidth} - {areaheight}*2.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrGray}" /> + <drawrectangle condition="{day4set}" x="{areawidth} - {areaheight}*2.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrBlack}" /> + + <drawrectangle condition="not{day5set}" x="{areawidth} - {areaheight}*1.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrGray}" /> + <drawrectangle condition="{day5set}" x="{areawidth} - {areaheight}*1.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrBlack}" /> + + <drawrectangle condition="not{day6set}" x="{areawidth} - {areaheight}*1.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrGray}" /> + <drawrectangle condition="{day6set}" x="{areawidth} - {areaheight}*1.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrBlack}" /> + </area> + <area condition="{weekdayselector}" layer="7"> + <drawrectangle condition="{current}++eq({dayselected}, 0)" x="{areawidth} - {areaheight}*4.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrTransRed}" /> + <drawrectangle condition="{current}++eq({dayselected}, 1)" x="{areawidth} - {areaheight}*3.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrTransRed}" /> + <drawrectangle condition="{current}++eq({dayselected}, 2)" x="{areawidth} - {areaheight}*3.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrTransRed}" /> + <drawrectangle condition="{current}++eq({dayselected}, 3)" x="{areawidth} - {areaheight}*2.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrTransRed}" /> + <drawrectangle condition="{current}++eq({dayselected}, 4)" x="{areawidth} - {areaheight}*2.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrTransRed}" /> + <drawrectangle condition="{current}++eq({dayselected}, 5)" x="{areawidth} - {areaheight}*1.5 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrTransRed}" /> + <drawrectangle condition="{current}++eq({dayselected}, 6)" x="{areawidth} - {areaheight}*1.0 + 2" y="{areaheight}*0.25+2" width="{areaheight}*0.5-4" height="{areaheight}*0.5-4" color="{clrTransRed}" /> + + <drawtext name="day0" x="{areawidth} - {areaheight}*4.0 + {areaheight}/4 - {width(day0)}/2" valign="center" font="{vdrOsd}" fontsize="50%" color="{clrWhite}" text="{day0abbr}" /> + <drawtext name="day1" x="{areawidth} - {areaheight}*3.5 + {areaheight}/4 - {width(day1)}/2" valign="center" font="{vdrOsd}" fontsize="50%" color="{clrWhite}" text="{day1abbr}" /> + <drawtext name="day2" x="{areawidth} - {areaheight}*3.0 + {areaheight}/4 - {width(day2)}/2" valign="center" font="{vdrOsd}" fontsize="50%" color="{clrWhite}" text="{day2abbr}" /> + <drawtext name="day3" x="{areawidth} - {areaheight}*2.5 + {areaheight}/4 - {width(day3)}/2" valign="center" font="{vdrOsd}" fontsize="50%" color="{clrWhite}" text="{day3abbr}" /> + <drawtext name="day4" x="{areawidth} - {areaheight}*2.0 + {areaheight}/4 - {width(day4)}/2" valign="center" font="{vdrOsd}" fontsize="50%" color="{clrWhite}" text="{day4abbr}" /> + <drawtext name="day5" x="{areawidth} - {areaheight}*1.5 + {areaheight}/4 - {width(day5)}/2" valign="center" font="{vdrOsd}" fontsize="50%" color="{clrWhite}" text="{day5abbr}" /> + <drawtext name="day6" x="{areawidth} - {areaheight}*1.0 + {areaheight}/4 - {width(day6)}/2" valign="center" font="{vdrOsd}" fontsize="50%" color="{clrWhite}" text="{day6abbr}" /> + </area> + <!-- Directory Selector + {directoryselector} true + {text} title of selector + {folder} current folder of selector, string + --> + <area condition="{directoryselector}" layer="6"> + <drawtext condition="not{current}" x="1%" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItem}" text="{text}" /> + <drawtext condition="{current}" x="1%" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrFontMenuItemSelected}" text="{text}" /> + <drawimage imagetype="icon" path="ico_arrow_right" x="{areawidth} - {areaheight}*0.8" y="10%" width="{areaheight}*0.8" height="{areaheight}*0.8"/> + <drawtext name="folder" x="{areawidth} - {width(folder)} - {areaheight}" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrWhite}" text="{folder}" /> + <drawimage imagetype="icon" path="ico_arrow_left" x="{areawidth} - {width(folder)} - 2*{areaheight}" y="10%" width="{areaheight}*0.8" height="{areaheight}*0.8"/> + </area> + <!-- Timerconflict Header + {timerconflictheader} true + {text} title of Timerconflict Header + {conflictstart} start of conflict in hh:mm + {conflictstop} end of conflict in hh:mm + {overlapstart} start of overlap in hh:mm + {overlapstop} end of overlap in hh:mm + {overlapstartpercent} start of overlap in percent of total conflict time width + {overlapwidthpercent} width of overlap in percent of total conflict time width + --> + <area condition="{timerconflictheader}" layer="5"> + <drawtext name="title" x="{areawidth}*0.7*0.5 - {width(title)}/2" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrWhite}" text="{text}" /> + <drawrectangle x="70%" y="0" width="30%" height="100%" color="{clrWhite}"/> + </area> + <area condition="{timerconflictheader}" layer="6"> + <drawtext x="{areawidth}*0.7" y="0" font="{vdrOsd}" fontsize="50%" color="{clrBlack}" text="{conflictstart}" /> + <drawtext align="right" y="0" font="{vdrOsd}" fontsize="50%" color="{clrBlack}" text="{conflictstop}" /> + <drawtext name="olstart" x="{areawidth}*0.7 + {overlapstartpercent}*{areawidth}*0.3/100 - 70" y="50%" font="{vdrOsd}" fontsize="50%" color="{clrRed}" text="{overlapstart}" /> + <drawtext x="{areawidth}*0.7 + {overlapstartpercent}*{areawidth}*0.3/100 + {overlapwidthpercent}*{areawidth}*0.3/100 + 5" y="50%" font="{vdrOsd}" fontsize="50%" color="{clrRed}" text="{overlapstop}" /> + <drawrectangle x="{areawidth}*0.7 + {overlapstartpercent}*{areawidth}*0.3/100" y="50%" width="{overlapwidthpercent}*{areawidth}*0.3/100" height="50%" color="{clrTransRed}"/> + </area> + <!-- Timerconflict + {timerconflict} true + {timertitle} title of timer + {channelname} name of channel + {channelid} channel ID + {transponder} transponder of channel + {starttime} start of timer in hh:mm + {stoptime} end of timer in hh:mm + {date} date of timer in dd.mm.yy + {weekday} weekday of timer, 3 letter abrivation + {infoactive} true if info icon is active + {deleteactive} true if delete icon is active + {editactive} true if edit icon is active + {searchactive} true if search icon is active + {timerstartpercent} start of timer in percent of total conflict time width + {timerwidthpercent} end of timer in percent of total conflict time width + {overlapstartpercent} start of overlap in percent of total conflict time width + {overlapwidthpercent} width of overlap in percent of total conflict time width + --> + <area condition="{timerconflict}" layer="5"> + <drawimage condition="not{current}" imagetype="skinpart" path="menubutton" x="0" y="0" width="70%" height="100%"/> + <drawimage condition="{current}" imagetype="skinpart" path="menubuttonactive" x="0" y="0" width="70%" height="100%"/> + </area> + <area condition="{timerconflict}" layer="6"> + <drawimage condition="{current}++{infoactive}" imagetype="icon" path="ico_info_active" x="{areaheight}*0.05" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}||not{infoactive}" imagetype="icon" path="ico_info_inactive" x="{areaheight}*0.05" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="{current}++{deleteactive}" imagetype="icon" path="ico_delete_active" x="{areaheight}*0.6" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}||not{deleteactive}" imagetype="icon" path="ico_delete_inactive" x="{areaheight}*0.6" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="{current}++{editactive}" imagetype="icon" path="ico_edit_active" x="{areaheight}*1.15" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}||not{editactive}" imagetype="icon" path="ico_edit_inactive" x="{areaheight}*1.15" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="{current}++{searchactive}" imagetype="icon" path="ico_search_active" x="{areaheight}*1.7" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}||not{searchactive}" imagetype="icon" path="ico_search_inactive" x="{areaheight}*1.7" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawtext x="{areaheight}*2.3" width="{areawidth}*0.7 - {areaheight}*2.4" y="0" font="{vdrOsd}" fontsize="40%" color="{clrWhite}" text="{timertitle}" /> + <drawtext x="{areaheight}*2.3" y="40%" font="{vdrOsd}" fontsize="30%" color="{clrWhite}" text="{weekday} {date} {starttime} - {stoptime}" /> + <drawtext x="{areaheight}*2.3" y="70%" font="{vdrOsd}" fontsize="30%" color="{clrWhite}" text="{channelname}, Transp. {transponder}" /> + <drawrectangle x="70%" y="0" width="30%" height="100%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.7 + {timerstartpercent}*{areawidth}*0.3/100" y="30%" width="{timerwidthpercent}*{areawidth}*0.3/100" height="40%" color="{clrBlack}"/> + </area> + <area condition="{timerconflict}" layer="7"> + <drawrectangle x="{areawidth}*0.7 + {overlapstartpercent}*{areawidth}*0.3/100" y="0" width="{overlapwidthpercent}*{areawidth}*0.3/100" height="100%" color="{clrTransRed}"/> + </area> + <!-- Event + {event} true + {title} title of event + {shorttext} shorttext of event + {starttime} start of event in hh:mm + {stoptime} end of event in hh:mm + {date} date of event in dd.mm.yy + {weekday} weekday of event, 3 letter abrivation + {channelnumber} number of channel + {channelname} name of channel + {channelid} id of channel + {channellogoexisis} true if channel logo exists + {hastimer} true if event has a timer + --> + <area condition="{event}" layer="6"> + <drawimage condition="{current}" imagetype="icon" path="ico_info_active" x="{areaheight}*0.05" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}" imagetype="icon" path="ico_info_inactive" x="{areaheight}*0.05" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="{channellogoexisis}" imagetype="channellogo" path="{channelid}" x="{areaheight}*0.8" valign="center" width="{areaheight}" height="{areaheight}" /> + <drawtext condition="not{current}" x="{areaheight}*2.2" y="2" font="{vdrOsd}" fontsize="30%" color="{clrFontMenuItem}" text="{weekday} {date} {starttime} - {stoptime} {channelname}" /> + <drawtext condition="not{current}" x="{areaheight}*2.2" y="30%" width="{areawidth} - 3*{areaheight}" font="{vdrOsd}" fontsize="45%" color="{clrFontMenuItem}" text="{title}" /> + <drawtext condition="not{current}" x="{areaheight}*2.2" y="69%" width="{areawidth} - 3*{areaheight}" font="{vdrOsd}" fontsize="30%" color="{clrFontMenuItem}" text="{shorttext}" /> + <drawtext condition="{current}" x="{areaheight}*2.2" y="2" font="{vdrOsd}" fontsize="30%" color="{clrFontMenuItemSelected}" text="{weekday} {date} {starttime} - {stoptime} {channelname}" /> + <drawtext condition="{current}" x="{areaheight}*2.2" y="30%" width="{areawidth} - 3*{areaheight}" font="{vdrOsd}" fontsize="45%" color="{clrFontMenuItemSelected}" text="{title}" /> + <drawtext condition="{current}" x="{areaheight}*2.2" y="69%" width="{areawidth} - 3*{areaheight}" font="{vdrOsd}" fontsize="30%" color="{clrFontMenuItemSelected}" text="{shorttext}" /> + <drawimage condition="{current}++not{hastimer}" imagetype="icon" path="ico_record_active" x="{areawidth} - {areaheight}*0.6" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}++not{hastimer}" imagetype="icon" path="ico_record_inactive" x="{areawidth} - {areaheight}*0.6" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="{hastimer}" imagetype="icon" path="ico_activetimer" x="{areawidth} - {areaheight}*0.6" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + </area> + <!-- Recording + {recording} true + {recname} title of recording + {recstarttime} start of recording in hh:mm + {recdate} date of recording in dd.mm.yy + {recduration} duration of recording in min + {channelnumber} number of channel + {channelname} name of channel + {channelid} id of channel + {channellogoexisis} true if channel logo exists + --> + <area condition="{recording}" layer="6"> + <drawtext condition="not{current}" x="1%" y="0" font="{vdrOsd}" width="98%" fontsize="50%" color="{clrFontMenuItem}" text="{recname}" /> + <drawtext condition="not{current}" x="55%" y="0" font="{vdrOsd}" width="98%" fontsize="35%" color="{clrFontMenuItem}" text="{recdate} {recstarttime} - {recduration} min, {channelname}" /> + <drawtext condition="{current}" x="1%" y="0" font="{vdrOsd}" width="98%" fontsize="50%" color="{clrFontMenuItemSelected}" text="{recname}" /> + <drawtext condition="{current}" x="55%" y="0" font="{vdrOsd}" width="98%" fontsize="35%" color="{clrFontMenuItemSelected}" text="{recdate} {recstarttime} - {recduration} min, {channelname}" /> + </area> + <!-- Searchtimer + {searchtimer} true + {timeractive} true if searchtimer is active + {searchstring} searchtimer search string + {activetimers} number of active timers caused by this searchtimer + {recordingsdone} number of recordings done by this searchtimer + {searchactive} true if search icon is active + {editactive} true if edit icon is active + {deleteactive} true if delete icon is active + --> + <area condition="{searchtimer}" layer="6"> + <drawimage condition="{current}++{searchactive}" imagetype="icon" path="ico_search_active" x="{areaheight}*0.05" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}||not{searchactive}" imagetype="icon" path="ico_search_inactive" x="{areaheight}*0.05" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="{current}++{editactive}" imagetype="icon" path="ico_edit_active" x="{areaheight}*0.6" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}||not{editactive}" imagetype="icon" path="ico_edit_inactive" x="{areaheight}*0.6" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="{current}++{deleteactive}" imagetype="icon" path="ico_delete_active" x="{areaheight}*1.15" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}||not{deleteactive}" imagetype="icon" path="ico_delete_inactive" x="{areaheight}*1.15" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawtext condition="not{current}" x="{areaheight}*1.8" width="{areawidth} - {areaheight}*2" y="5%" font="{vdrOsd}" fontsize="45%" color="{clrFontMenuItem}" text="{searchstring}" /> + <drawtext condition="{current}" x="{areaheight}*1.8" width="{areawidth} - {areaheight}*2" y="5%" font="{vdrOsd}" fontsize="45%" color="{clrFontMenuItemSelected}" text="{searchstring}" /> + <drawtext condition="{timeractive}" align="right" y="5%" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="active " /> + <drawtext x="{areaheight}*1.8" y="55%" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="Active Timers: {activetimers}, Recordings: {recordingsdone}" /> + </area> + <!-- Timeline Header + {timelineheader} true + {date} date of current day in weekdayname dd.mm.yyyy + {timerset} true if timer info is set + {channelname} name of channel of timer + {channelid} channel ID of channel of timer + {channellogoexisis} true if channel logo exists + {channelnumber} number of channel of timer + {channeltransponder} transponder of channel of timer + {timerstart} start of timer in hh:mm + {timerstop} end of timer in hh:mm + {eventtitle} title of according event + {eventshorttext} short text of according event + {eventstart} start time of according event + {eventstop} end time of according event + --> + <area condition="{timelineheader}" layer="5"> + <drawtext align="center" y="1%" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="Timer for {date}" /> + <drawrectangle x="{areawidth}*0.05" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.0875" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.125" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.1625" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.2" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.2375" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.275" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.3125" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.35" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.3875" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.425" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.4625" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.5" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.5375" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.575" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.6125" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.65" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.6875" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.725" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.7625" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.8" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.8375" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + <drawrectangle x="{areawidth}*0.875" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrBlack}"/> + <drawrectangle x="{areawidth}*0.9125" y="80%" width="{areawidth}*0.0375" height="20%" color="{clrWhite}"/> + </area> + <area condition="{timelineheader}" layer="6"> + <drawtext name="text0" x="{areawidth}*0.05 + {areawidth}*0.0375/2 - {width(text0)}/2" y="80%" font="{vdrOsd}" fontsize="20%" color="{clrWhite}" text="0"/> + <drawtext name="text1" x="{areawidth}*0.0875 + {areawidth}*0.0375/2 - {width(text1)}/2" y="80%" font="{vdrOsd}" fontsize="20%" color="{clrBlack}" text="1"/> + <drawtext name="text2" x="{areawidth}*0.125 + {areawidth}*0.0375/2 - {width(text2)}/2" y="80%" font="{vdrOsd}" fontsize="20%" color="{clrWhite}" text="2"/> + <drawtext name="text3" x="{areawidth}*0.1625 + {areawidth}*0.0375/2 - {width(text3)}/2" y="80%" font="{vdrOsd}" fontsize="20%" color="{clrBlack}" text="3"/> + <drawtext name="text4" x="{areawidth}*0.2 + {areawidth}*0.0375/2 - {width(text4)}/2" y="80%" font="{vdrOsd}" fontsize="20%" color="{clrWhite}" text="4"/> + <drawtext name="text5" x="{areawidth}*0.2375 + {areawidth}*0.0375/2 - {width(text5)}/2" y="80%" font="{vdrOsd}" fontsize="20%" color="{clrBlack}" text="5"/> + <drawtext name="text6" x="{areawidth}*0.275 + {areawidth}*0.0375/2 - {width(text6)}/2" y="80%" font="{vdrOsd}" fontsize="20%" color="{clrWhite}" text="6"/> + <drawtext name="text7" x="{areawidth}*0.3125 + {areawidth}*0.0375/2 - {width(text7)}/2" y="80%" font="{vdrOsd}" fontsize="20%" color="{clrBlack}" text="7"/> + <drawtext name="text8" x="{areawidth}*0.35 + {areawidth}*0.0375/2 - {width(text8)}/2" y="80%" font="{vdrOsd}" fontsize="20%" color="{clrWhite}" text="8"/> + <drawtext name="text9" x="{areawidth}*0.3875 + {areawidth}*0.0375/2 - {width(text9)}/2" y="80%" font="{vdrOsd}" fontsize="20%" color="{clrBlack}" text="9"/> + <drawtext name="text10" x="{areawidth}*0.425 + {areawidth}*0.0375/2 - {width(text10)}/2" y="80%" font="{vdrOsd}" fontsize="20%" color="{clrWhite}" text="10"/> + <drawtext name="text11" x="{areawidth}*0.4625 + {areawidth}*0.0375/2 - {width(text11)}/2" y="80%" font="{vdrOsd}" fontsize="20%" color="{clrBlack}" text="11"/> + <drawtext name="text12" x="{areawidth}*0.5 + {areawidth}*0.0375/2 - {width(text12)}/2" y="80%" font="{vdrOsd}" fontsize="20%" color="{clrWhite}" text="12"/> + <drawtext name="text13" x="{areawidth}*0.5375 + {areawidth}*0.0375/2 - {width(text13)}/2" y="80%" font="{vdrOsd}" fontsize="20%" color="{clrBlack}" text="13"/> + <drawtext name="text14" x="{areawidth}*0.575 + {areawidth}*0.0375/2 - {width(text14)}/2" y="80%" font="{vdrOsd}" fontsize="20%" color="{clrWhite}" text="14"/> + <drawtext name="text15" x="{areawidth}*0.6125 + {areawidth}*0.0375/2 - {width(text15)}/2" y="80%" font="{vdrOsd}" fontsize="20%" color="{clrBlack}" text="15"/> + <drawtext name="text16" x="{areawidth}*0.65 + {areawidth}*0.0375/2 - {width(text16)}/2" y="80%" font="{vdrOsd}" fontsize="20%" color="{clrWhite}" text="16"/> + <drawtext name="text17" x="{areawidth}*0.6875 + {areawidth}*0.0375/2 - {width(text17)}/2" y="80%" font="{vdrOsd}" fontsize="20%" color="{clrBlack}" text="17"/> + <drawtext name="text18" x="{areawidth}*0.725 + {areawidth}*0.0375/2 - {width(text18)}/2" y="80%" font="{vdrOsd}" fontsize="20%" color="{clrWhite}" text="18"/> + <drawtext name="text19" x="{areawidth}*0.7625 + {areawidth}*0.0375/2 - {width(text19)}/2" y="80%" font="{vdrOsd}" fontsize="20%" color="{clrBlack}" text="19"/> + <drawtext name="text20" x="{areawidth}*0.8 + {areawidth}*0.0375/2 - {width(text20)}/2" y="80%" font="{vdrOsd}" fontsize="20%" color="{clrWhite}" text="20"/> + <drawtext name="text21" x="{areawidth}*0.8375 + {areawidth}*0.0375/2 - {width(text21)}/2" y="80%" font="{vdrOsd}" fontsize="20%" color="{clrBlack}" text="21"/> + <drawtext name="text22" x="{areawidth}*0.875 + {areawidth}*0.0375/2 - {width(text22)}/2" y="80%" font="{vdrOsd}" fontsize="20%" color="{clrWhite}" text="22"/> + <drawtext name="text23" x="{areawidth}*0.9125 + {areawidth}*0.0375/2 - {width(text23)}/2" y="80%" font="{vdrOsd}" fontsize="20%" color="{clrBlack}" text="23"/> + </area> + <area condition="{timelineheader}++{timerset}" layer="6"> + <drawimage condition="{channellogoexisis}" imagetype="channellogo" path="{channelid}" x="1%" y="30%" width="{areaheight}*0.5" height="{areaheight}*0.5" /> + <drawtext condition="not{channellogoexisis}" x="1%" width="{areaheight}*0.7" y="40%" font="{vdrOsd}" fontsize="20%" color="{clrWhite}" text="{channelname}"/> + <drawtext x="{areaheight}*0.8" y="36%" font="{vdrOsd}" fontsize="25%" color="{clrWhite}" text="{eventstart} - {eventstop} (Rec. {timerstart} - {timerstop}), Transp. {channeltransponder}"/> + <drawtext x="{areaheight}*0.8" y="57%" width="{areawidth}-{areaheight}" font="{vdrOsd}" fontsize="25%" color="{clrWhite}" text="{eventtitle} - {eventshorttext}"/> + </area> + <!-- Timeline Timer + {timelinetimer} true + {timerstart} start of timer in tenth percent of complete 24h width + {timerwidth} width of timer in tenth percent of complete 24h width + --> + <area condition="{timelinetimer}" layer="5"> + <drawrectangle condition="{current}" x="5%" y="0" width="90%" height="100%" color="{clrBorder}"/> + <drawrectangle condition="not{current}" x="5%" y="0" width="90%" height="100%" color="{clrGray}"/> + <drawrectangle x="5%" y="{areaheight}-1" width="90%" height="1" color="{clrBlack}"/> + </area> + <area condition="{timelinetimer}" layer="6"> + <drawrectangle x="{areawidth}*0.05 + {timerstart}*{areawidth}*0.9/1000" y="25%" width="{timerwidth}*{areawidth}*0.9/1000" height="50%" color="{clrBlack}"/> + </area> + <!-- Favorites + {favorite} true + {favdesc} description of favorite + --> + <area condition="{favorite}" layer="6"> + <drawimage condition="{current}" imagetype="icon" path="ico_search_active" x="{areaheight}*0.1" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawimage condition="not{current}" imagetype="icon" path="ico_search_inactive" x="{areaheight}*0.1" valign="center" width="{areaheight}*0.5" height="{areaheight}*0.5"/> + <drawtext condition="not{current}" x="{areaheight}" valign="center" font="{vdrOsd}" width="{areawidth} - {areaheight}" fontsize="80%" color="{clrFontMenuItem}" text="{favdesc}" /> + <drawtext condition="{current}" x="{areaheight}" valign="center" font="{vdrOsd}" width="{areawidth} - {areaheight}" fontsize="80%" color="{clrFontMenuItemSelected}" text="{favdesc}" /> + </area> + </grid> +</displayplugin> diff --git a/skins/nopacity/xmlfiles/plug-tvguideng-root.xml b/skins/nopacity/xmlfiles/plug-tvguideng-root.xml new file mode 100644 index 0000000..b071037 --- /dev/null +++ b/skins/nopacity/xmlfiles/plug-tvguideng-root.xml @@ -0,0 +1,371 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE displayplugin SYSTEM "../../../dtd/displayplugin.dtd"> + +<displayplugin x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="80%" scaletvy="0" scaletvwidth="20%" scaletvheight="20%"> + + <viewelement name="background_hor"> + <area x="0" y="0" width="100%" height="20%" layer="1"> + <drawimage imagetype="skinpart" path="tvguide_header" x="0" y="0" width="80%" height="100%"/> + <drawimage imagetype="skinpart" path="tvguide_tvframe" x="80%" y="0" width="20%" height="100%"/> + </area> + <area x="72%" y="1%" width="7%" height="5%" layer="2"> + <drawimage imagetype="skinpart" path="tvguide_clock" x="0" y="0" width="100%" height="100%"/> + </area> + <area x="0" y="20%" width="15%" height="5%" layer="1"> + <drawimage imagetype="skinpart" path="tvguide_channelgroup_left" x="0" y="0" width="12" height="100%"/> + <drawimage imagetype="skinpart" path="tvguide_channelgroup_vertical" x="12" y="0" width="{areawidth}-24" height="100%"/> + <drawimage imagetype="skinpart" path="tvguide_channelgroup_right" x="{areawidth}-12" y="0" width="12" height="100%"/> + </area> + <area x="0" y="92%" width="100%" height="8%" layer="1"> + <fill color="{clrBackground}" /> + </area> + </viewelement> + + <viewelement name="background_ver"> + <area x="0" y="0" width="100%" height="20%" layer="1"> + <drawimage imagetype="skinpart" path="tvguide_header" x="0" y="0" width="80%" height="100%"/> + <drawimage imagetype="skinpart" path="tvguide_tvframe" x="80%" y="0" width="20%" height="100%"/> + </area> + <area x="72%" y="1%" width="7%" height="5%" layer="2"> + <drawimage imagetype="skinpart" path="tvguide_clock" x="0" y="0" width="100%" height="100%"/> + </area> + <area x="0" y="20%" width="8%" height="15%" layer="1"> + <drawimage imagetype="skinpart" path="tvguide_date_vertical" x="0" y="0" width="100%" height="100%"/> + </area> + <area x="0" y="90%" width="100%" height="10%" layer="1"> + <fill color="{clrBackground}" /> + </area> + </viewelement> + + <!-- Tokens available in Header + {isdummy} true if active element is a dummy element + {title} title of event of active grid + {shorttext} shorttext of event of active grid + {description} detailed description of event of active grid + {start} event start time in hh::mm + {stop} event stop time + {day} day of event of active grid + {date} date of event of active grid in dd.mm.yy + {daynumeric} day as number + {month} month as number + {year} year as number + {running} true if event is currently running + {elapsed} elapsed time of event, if not running 0 + {duration} duration of event + {durationhours} duration, full hours + {durationminutes} duration, rest of minutes + {channelname} Channel Name + {channelnumber} Channel Number + {channelid} ChannelID as path to display channel logo + {channellogoexists} true if channel logo exists + {hasposter} true if a scraped poster is available for this element + {posterwidth} width of scraped poster + {posterheight} height of scraped poster + {posterpath} absolute path of scraped poster + --> + <viewelement name="header"> + <areascroll condition="not{isdummy}++not{hasposter}" orientation="vertical" mode="forthandback" delay="1000" scrollspeed="medium" x="1%" y="1%" width="71%" height="18%" layer="2"> + <drawtext x="0" y="0" font="{vdrOsd}" width="100%" fontsize="20%" color="{clrWhite}" text="{day} {daynumeric}.{month} {start} - {stop}" /> + <drawtext x="0" y="20%" font="{vdrOsd}" width="100%" fontsize="25%" color="{clrWhite}" text="{title}" /> + <drawtextbox name="shorttext" x="0" y="45%" width="100%" font="{vdrOsd}" fontsize="15%" color="{clrWhite}" text="{shorttext}" /> + <drawtextbox x="0" y="{posy(shorttext)} + {height(shorttext)}" width="100%" font="{vdrOsd}" fontsize="15%" color="{clrWhite}" text="{description}" /> + </areascroll> + <area condition="not{isdummy}++{hasposter}" x="1%" y="1%" width="{areaheight}*0.18*{posterwidth}/{posterheight}" height="18%" layer="2"> + <drawimage imagetype="image" path="{posterpath}" x="0" y="0" width="100%" height="100%"/> + </area> + <areascroll condition="not{isdummy}++{hasposter}" orientation="vertical" mode="forthandback" delay="1000" scrollspeed="medium" x="12%" y="1%" width="60%" height="18%" layer="2"> + <drawtext x="0" y="0" font="{vdrOsd}" width="100%" fontsize="20%" color="{clrWhite}" text="{day} {daynumeric}.{month} {start} - {stop}" /> + <drawtext x="0" y="20%" font="{vdrOsd}" width="100%" fontsize="25%" color="{clrWhite}" text="{title}" /> + <drawtextbox name="shorttext" x="0" y="45%" width="100%" font="{vdrOsd}" fontsize="15%" color="{clrWhite}" text="{shorttext}" /> + <drawtextbox x="0" y="{posy(shorttext)} + {height(shorttext)}" width="100%" font="{vdrOsd}" fontsize="15%" color="{clrWhite}" text="{description}" /> + </areascroll> + <area condition="{isdummy}" x="1%" y="1%" width="58%" height="18%" layer="2"> + <drawtext x="0" y="20%" font="{vdrOsd}" width="100%" fontsize="35%" color="{clrWhite}" text="{title}" /> + </area> + </viewelement> + + <!-- Available Variables Footer: + {red1} true if red button is button 1 + {red2} true if red button is button 2 + {red3} true if red button is button 3 + {red4} true if red button is button 4 + {green1} true if green button is button 1 + {green2} true if green button is button 2 + {green3} true if green button is button 3 + {green4} true if green button is button 4 + {yellow1} true if yellow button is button 1 + {yellow2} true if yellow button is button 2 + {yellow3} true if yellow button is button 3 + {yellow4} true if yellow button is button 4 + {blue1} true if blue button is button 1 + {blue2} true if blue button is button 2 + {blue3} true if blue button is button 3 + {blue4} true if blue button is button 4 + {red} label of red button + {green} label of green button + {yellow} label of yellow button + {blue} label of blue button + --> + <viewelement name="footer"> + <area condition="{red1}" x="0" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonred" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{red}" /> + </area> + <area condition="{green1}" x="0" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttongreen" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{green}" /> + </area> + <area condition="{yellow1}" x="0" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonyellow" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{yellow}" /> + </area> + <area condition="{blue1}" x="0" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonblue" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{blue}" /> + </area> + + <area condition="{red2}" x="25%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonred" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{red}" /> + </area> + <area condition="{green2}" x="25%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttongreen" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{green}" /> + </area> + <area condition="{yellow2}" x="25%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonyellow" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{yellow}" /> + </area> + <area condition="{blue2}" x="25%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonblue" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{blue}" /> + </area> + + <area condition="{red3}" x="50%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonred" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{red}" /> + </area> + <area condition="{green3}" x="50%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttongreen" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{green}" /> + </area> + <area condition="{yellow3}" x="50%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonyellow" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{yellow}" /> + </area> + <area condition="{blue3}" x="50%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonblue" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{blue}" /> + </area> + + <area condition="{red4}" x="75%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonred" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{red}" /> + </area> + <area condition="{green4}" x="75%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttongreen" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{green}" /> + </area> + <area condition="{yellow4}" x="75%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonyellow" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{yellow}" /> + </area> + <area condition="{blue4}" x="75%" y="90%" width="25%" height="10%" layer="2"> + <drawimage imagetype="skinpart" path="buttonblue" align="center" valign="center" width="90%" height="40%"/> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{blue}" /> + </area> + </viewelement> + + <!-- Available Variables time: + {time} timestring in hh:mm + {sec} current seconds + {min} current minutes + {hour} current hours + {hmins} current "hourminutes" to display an hour hand + {day} day in digits + {dayleadingzero} day in digits with leading 0 + {dayname} Full name of the day + {daynameshort} Short 3 char name of the day + {month} month in digits with leading 0 + {monthname} Full name of the month + {monthnameshort} 3 letter abbrivation of month name + {year} year in yyyy + --> + <viewelement name="time"> + <area x="72%" y="1%" width="7%" height="5%" layer="3"> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="75%" color="{clrWhite}" text="{time}" /> + </area> + </viewelement> + + <!-- Tokens available in datetimeline + {weekday} weekday of current display + {date} date of current display + --> + <viewelement name="datetimeline_hor"> + <area x="0" y="20%" width="15%" height="5%" layer="2"> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrWhite}" text="{weekday} {date}" /> + </area> + </viewelement> + + <viewelement name="datetimeline_ver"> + <area x="0" y="20%" width="8%" height="15%" layer="1"> + <drawtext align="center" y="10%" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{weekday}" /> + <drawtext align="center" y="50%" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{date}" /> + </area> + </viewelement> + + <!-- Tokens available in timeindicator + {percenttotal} position of current time indicator in tenth of a percent of complete time shown + --> + <viewelement name="timeindicator_hor"> + <area x="15%" y="25%" width="85%" height="68%" layer="3"> + <drawrectangle x="{percenttotal}*{areawidth}/1000" y="0" width="1" height="100%" color="{clrRed}" /> + </area> + </viewelement> + + <viewelement name="timeindicator_ver"> + <area x="0" y="35%" width="100%" height="57%" layer="3"> + <drawrectangle x="0" y="{percenttotal}*{areaheight}/1000" width="100%" height="1" color="{clrRed}" /> + </area> + </viewelement> + + <!-- Tokens available in timeline + {timestring} time of grid in hh:mm + --> + <grid name="timeline_hor" x="15%" y="20%" width="85%" height="5%"> + <area layer="1"> + <drawimage condition="{fullhour}" imagetype="skinpart" path="tvguide_timelinebright_horizontal" x="0" y="0" width="100%" height="100%"/> + <drawimage condition="not{fullhour}" imagetype="skinpart" path="tvguide_timelinedark_horizontal" x="0" y="0" width="100%" height="100%"/> + </area> + <area layer="2"> + <drawtext condition="{fullhour}" x="5%" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrBlack}" text="{timestring}" /> + <drawtext condition="not{fullhour}" x="5%" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrWhite}" text="{timestring}" /> + </area> + </grid> + + <grid name="timeline_ver" x="0" y="35%" width="8%" height="57%"> + <area layer="1"> + <drawimage condition="{fullhour}" imagetype="skinpart" path="tvguide_timelinebright_vertical" x="0" y="0" width="100%" height="100%"/> + <drawimage condition="not{fullhour}" imagetype="skinpart" path="tvguide_timelinedark_vertical" x="0" y="0" width="100%" height="100%"/> + </area> + <area layer="2"> + <drawtext condition="{fullhour}" align="center" y="5%" font="{vdrOsd}" fontsize="40%" color="{clrBlack}" text="{timestring}" /> + <drawtext condition="not{fullhour}" align="center" y="5%" font="{vdrOsd}" fontsize="40%" color="{clrWhite}" text="{timestring}" /> + </area> + </grid> + + <!-- Tokens available in channels + {name} name of channel + {number} number of channel + {channelid} id of channel to display channel logo + {channellogoexists} true if channel logo exists + --> + <grid name="channels_hor" x="5%" y="25%" width="10%" height="68%"> + <area layer="1"> + <drawimage imagetype="skinpart" path="tvguide_channellogoback_horizontal" x="0" y="0" width="100%" height="100%"/> + </area> + <area layer="2"> + <drawimage condition="{channellogoexists}" imagetype="channellogo" path="{channelid}" align="center" valign="center" width="90%" height="90%" /> + <drawtext condition="not{channellogoexists}" align="center" valign="center" width="98%" font="{vdrOsd}" fontsize="40%" color="{clrWhite}" text="{name}" /> + </area> + </grid> + + <grid name="channels_ver" x="8%" y="25%" width="92%" height="10%"> + <area layer="1"> + <drawimage imagetype="skinpart" path="tvguide_channellogoback_vertical" x="0" y="0" width="100%" height="100%"/> + </area> + <area layer="2"> + <drawimage condition="{channellogoexists}" imagetype="channellogo" path="{channelid}" align="center" valign="center" width="80%" height="80%" /> + <drawtext condition="not{channellogoexists}" align="center" valign="center" width="98%" font="{light}" fontsize="40%" color="{clrWhite}" text="{name}" /> + </area> + </grid> + + <!-- Tokens available in channelgroups + {color} alternates grid by grid from true to false + {group} name of channel group + --> + <grid name="channelgroups_hor" x="0" y="25%" width="5%" height="68%"> + <area layer="1"> + <drawimage imagetype="skinpart" path="tvguide_channelgroup_head" x="0" y="0" width="100%" height="12"/> + <drawimage imagetype="skinpart" path="tvguide_channelgroup_horizontal" x="0" y="12" width="100%" height="{areaheight}-24"/> + <drawimage imagetype="skinpart" path="tvguide_channelgroup_bottom" x="0" y="{areaheight}-12" width="100%" height="12"/> + </area> + <area layer="2"> + <drawtextvertical align="center" valign="center" font="{vdrOsd}" fontsize="50%" color="{clrWhite}" text="{group}" /> + </area> + </grid> + + <grid name="channelgroups_ver" x="8%" y="20%" width="92%" height="5%"> + <area layer="1"> + <drawimage imagetype="skinpart" path="tvguide_channelgroup_left" x="0" y="0" width="12" height="100%"/> + <drawimage imagetype="skinpart" path="tvguide_channelgroup_vertical" x="12" y="0" width="{areawidth}-24" height="100%"/> + <drawimage imagetype="skinpart" path="tvguide_channelgroup_right" x="{areawidth}-12" y="0" width="12" height="100%"/> + </area> + <area layer="2"> + <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrWhite}" text="{group}" /> + </area> + </grid> + + <!-- Tokens available in schedules + {color} alternates grid by grid from true to false + {dummy} true if grid is a dummy grid + {timer} true if a timer is set for the according event + {switchtimer} true if a switchtimer is set for the according event + {title} title of grid + {shorttext} shorttext of grid + {start} start time in hh:mm + {stop} stop time in hh:dd + --> + <grid name="schedules_hor" x="15%" y="25%" width="85%" height="68%"> + <area layer="1"> + <drawimage condition="not{current}" imagetype="skinpart" path="tvguide_grid_left" x="0" y="0" width="13" height="100%"/> + <drawimage condition="not{current}" imagetype="skinpart" path="tvguide_grid_horizontal" x="13" y="0" width="{areawidth}-26" height="100%"/> + <drawimage condition="not{current}" imagetype="skinpart" path="tvguide_grid_right" x="{areawidth}-13" y="0" width="13" height="100%"/> + <drawimage condition="{current}" imagetype="skinpart" path="tvguide_grid_active_left" x="0" y="0" width="13" height="100%"/> + <drawimage condition="{current}" imagetype="skinpart" path="tvguide_grid_active_horizontal" x="13" y="0" width="{areawidth}-26" height="100%"/> + <drawimage condition="{current}" imagetype="skinpart" path="tvguide_grid_active_right" x="{areawidth}-13" y="0" width="13" height="100%"/> + </area> + <area layer="2"> + <drawtext condition="not{dummy}++{current}" x="1%" y="2%" font="{vdrOsd}" fontsize="45%" color="{clrFontMenuItemSelected}" text="{start} - {stop}" /> + <drawtext condition="not{dummy}++{current}" x="1%" y="50%" width="98%" font="{vdrOsd}" fontsize="50%" color="{clrFontMenuItemSelected}" text="{title}" /> + <drawtext condition="not{dummy}++not{current}" x="1%" y="2%" font="{vdrOsd}" fontsize="45%" color="{clrFontMenuItem}" text="{start} - {stop}" /> + <drawtext condition="not{dummy}++not{current}" x="1%" y="50%" width="98%" font="{vdrOsd}" fontsize="50%" color="{clrFontMenuItem}" text="{title}" /> + <drawtext condition="{dummy}++{current}" x="1%" valign="center" width="98%" font="{vdrOsd}" fontsize="50%" color="{clrFontMenuItemSelected}" text="{title}" /> + <drawtext condition="{dummy}++not{current}" x="1%" valign="center" width="98%" font="{vdrOsd}" fontsize="50%" color="{clrFontMenuItem}" text="{title}" /> + <drawimage condition="{timer}" imagetype="icon" path="ico_rec_on" x="{areawidth} - {areaheight}*0.42" y="58%" width="{areaheight}*0.4" height="{areaheight}*0.4"/> + <drawimage condition="{switchtimer}++not{timer}" imagetype="icon" path="ico_switchtimer" x="{areawidth} - {areaheight}*0.42" y="58%" width="{areaheight}*0.4" height="{areaheight}*0.4"/> + <drawimage condition="{switchtimer}++{timer}" imagetype="icon" path="ico_switchtimer" x="{areawidth} - {areaheight}*0.84" y="58%" width="{areaheight}*0.4" height="{areaheight}*0.4"/> + </area> + </grid> + + <grid name="schedules_ver" x="8%" y="35%" width="92%" height="57%"> + <area layer="1"> + <drawimage condition="not{current}" imagetype="skinpart" path="tvguide_grid_head" x="0" y="0" width="100%" height="12"/> + <drawimage condition="not{current}" imagetype="skinpart" path="tvguide_grid_vertical" x="0" y="12" width="100%" height="{areaheight}-24"/> + <drawimage condition="not{current}" imagetype="skinpart" path="tvguide_grid_bottom" x="0" y="{areaheight}-12" width="100%" height="12"/> + <drawimage condition="{current}" imagetype="skinpart" path="tvguide_grid_active_head" x="0" y="0" width="100%" height="12"/> + <drawimage condition="{current}" imagetype="skinpart" path="tvguide_grid_active_vertical" x="0" y="12" width="100%" height="{areaheight}-24"/> + <drawimage condition="{current}" imagetype="skinpart" path="tvguide_grid_active_bottom" x="0" y="{areaheight}-12" width="100%" height="12"/> + </area> + <area layer="2"> + <drawtext condition="not{dummy}++{current}" x="2%" y="0" width="96%" font="{vdrOsd}" fontsize="{areawidth}*0.16" color="{clrFontMenuItemSelected}" text="{start} - {stop}" /> + <drawtext condition="not{dummy}++not{current}" x="2%" y="0" width="96%" font="{vdrOsd}" fontsize="{areawidth}*0.16" color="{clrFontMenuItem}" text="{start} - {stop}" /> + <drawtextbox name="title" condition="not{dummy}++{current}" x="2%" y="{areawidth}*0.16" width="96%" font="{vdrOsd}" fontsize="{areawidth}*0.15" color="{clrFontMenuItemSelected}" text="{title}" /> + <drawtextbox name="title" condition="not{dummy}++not{current}" x="2%" y="{areawidth}*0.16" width="96%" font="{vdrOsd}" fontsize="{areawidth}*0.15" color="{clrFontMenuItem}" text="{title}" /> + <drawtextbox condition="not{dummy}++{current}" x="2%" y="{posy(title)} + {height(title)} - {areawidth}*0.1" width="96%" height="{areaheight}*1.1 - {posy(title)} - {height(title)}" font="{vdrOsd}" fontsize="{areawidth}*0.12" color="{clrFontMenuItemSelected}" text="{shorttext}" /> + <drawtextbox condition="not{dummy}++not{current}" x="2%" y="{posy(title)} + {height(title)} - {areawidth}*0.1" width="96%" height="{areaheight}*1.1 - {posy(title)} - {height(title)}" font="{vdrOsd}" fontsize="{areawidth}*0.12" color="{clrFontMenuItem}" text="{shorttext}" /> + <drawtextbox condition="{dummy}++{current}" x="2%" y="5%" width="96%" font="{vdrOsd}" fontsize="{areawidth}*0.2" color="{clrFontMenuItemSelected}" text="{title}" /> + <drawtextbox condition="{dummy}++not{current}" x="2%" y="5%" width="96%" font="{vdrOsd}" fontsize="{areawidth}*0.2" color="{clrFontMenuItem}" text="{title}" /> + <drawimage condition="{timer}" imagetype="icon" path="ico_rec_on" x="82%" y="{areaheight}-{areawidth}*0.18" width="15%" height="{areawidth}*0.15"/> + <drawimage condition="{switchtimer}++not{timer}" imagetype="icon" path="ico_switchtimer" x="82%" y="{areaheight}-{areawidth}*0.18" width="15%" height="{areawidth}*0.15"/> + <drawimage condition="{switchtimer}++{timer}" imagetype="icon" path="ico_switchtimer" x="65%" y="{areaheight}-{areawidth}*0.18" width="15%" height="{areawidth}*0.15"/> + </area> + </grid> + + <!-- Tokens available in channeljump + {channel} current user input for channel jump + --> + <viewelement name="channeljump"> + </viewelement> + +</displayplugin> diff --git a/views/displaymessageview.c b/views/displaymessageview.c index c1ffe47..b51802b 100644 --- a/views/displaymessageview.c +++ b/views/displaymessageview.c @@ -18,6 +18,9 @@ bool cDisplayMessageView::createOsd(void) { cOsd::OsdTop() + osdSize.Y(), osdSize.Width(), osdSize.Height()); + if (!ok) { + DeleteOsdOnExit(false); + } return ok; } diff --git a/views/displaypluginview.c b/views/displaypluginview.c index 89ff94c..f3471cb 100644 --- a/views/displaypluginview.c +++ b/views/displaypluginview.c @@ -1,17 +1,26 @@ #define __STL_CONFIG_H #include "displaypluginview.h" -cDisplayPluginView::cDisplayPluginView(cTemplateView *tmplView) : cView(tmplView) { +cDisplayPluginView::cDisplayPluginView(cTemplateView *tmplView, bool isRootView) : cView(tmplView) { + init = true; + tabInit = true; + tabScrolled = true; + hidden = false; intTokens = NULL; stringTokens = NULL; loopTokens = NULL; - DeleteOsdOnExit(); + currentTmplTab = NULL; + tabView = NULL; + if (isRootView) + DeleteOsdOnExit(); SetFadeTime(tmplView->GetNumericParameter(ptFadeTime)); } cDisplayPluginView::~cDisplayPluginView() { CancelSave(); FadeOut(); + if (tabView) + delete tabView; } bool cDisplayPluginView::createOsd(void) { @@ -23,10 +32,49 @@ bool cDisplayPluginView::createOsd(void) { return ok; } +void cDisplayPluginView::Deactivate(bool hide) { + Stop(); + if (!hide) + return; + HidePixmaps(); + for (map< int, cViewGrid* >::iterator it = viewGrids.begin(); it != viewGrids.end(); it++) { + cViewGrid *viewGrid = it->second; + viewGrid->Hide(); + } + hidden = true; +} + +void cDisplayPluginView::Activate(void) { + if (tvScaled) { + cDevice::PrimaryDevice()->ScaleVideo(scalingWindow); + } + if (hidden) { + ShowPixmaps(); + for (map< int, cViewGrid* >::iterator it = viewGrids.begin(); it != viewGrids.end(); it++) { + cViewGrid *viewGrid = it->second; + viewGrid->Show(); + } + } + Start(); +} + +void cDisplayPluginView::CleanViewElement(int id) { + if (ViewElementScrolls((eViewElement)id)) { + currentlyScrolling = false; + if (Running()) + Stop(); + DestroyViewElement((eViewElement)id); + } else { + ClearViewElement((eViewElement)id); + } +} + void cDisplayPluginView::DisplayViewElement(int id) { if (!intTokens || !stringTokens || !loopTokens) return; DrawViewElement((eViewElement)id, stringTokens, intTokens, loopTokens); + if (!init && ViewElementScrolls((eViewElement)id)) + Start(); } void cDisplayPluginView::InitGrids(int viewGridID) { @@ -75,9 +123,162 @@ void cDisplayPluginView::ClearGrids(int viewGridID) { (hit->second)->Clear(); } +void cDisplayPluginView::SetTabIntTokens(map<string,int> *intTokens) { + tabIntTokens = *intTokens; +} + +void cDisplayPluginView::SetTabStringTokens(map<string,string> *stringTokens) { + tabStringTokens = *stringTokens; +} + +void cDisplayPluginView::SetTabLoopTokens(map<string,vector<map<string,string> > > *loopTokens) { + tabLoopTokens = *loopTokens; +} + +void cDisplayPluginView::SetTabs(void) { + tmplView->InitViewTabIterator(); + cTemplateViewTab *tmplTab = NULL; + while(tmplTab = tmplView->GetNextViewTab()) { + tmplTab->ParseDynamicParameters(&tabIntTokens, true); + tmplTab->ClearDynamicFunctionParameters(); + tmplTab->ParseDynamicFunctionParameters(&tabStringTokens, &tabIntTokens); + if (tmplTab->DoExecute()) { + activeTabs.push_back(tmplTab); + } + } + atIt = activeTabs.begin(); +} + +void cDisplayPluginView::TabLeft(void) { + if (activeTabs.size() > 1) { + currentTmplTab = GetPrevTab(); + delete tabView; + tabView = NULL; + tabScrolled = true; + } else { + tabScrolled = tabView->KeyLeft(); + } +} + +void cDisplayPluginView::TabRight(void) { + if (activeTabs.size() > 1) { + currentTmplTab = GetNextTab(); + delete tabView; + tabView = NULL; + tabScrolled = true; + } else { + tabScrolled = tabView->KeyRight(); + } +} + +void cDisplayPluginView::TabUp(void) { + tabScrolled = tabView->KeyUp(); +} + +void cDisplayPluginView::TabDown(void) { + tabScrolled = tabView->KeyDown(); +} + +void cDisplayPluginView::DisplayTab(void) { + if (tabInit) { + currentTmplTab = *atIt; + tabInit = false; + } + if (!tabView) { + tabView = new cDisplayMenuTabView(currentTmplTab); + tabView->SetTokens(&tabIntTokens, &tabStringTokens, &tabLoopTokens); + tabView->CreateTab(); + tabView->Start(); + DrawTabLabels(); + } + if (tabScrolled) { + DrawScrollbar(); + } +} + +cTemplateViewTab *cDisplayPluginView::GetPrevTab(void) { + if (atIt == activeTabs.begin()) { + atIt = activeTabs.end(); + } + atIt--; + return *atIt; +} + +cTemplateViewTab *cDisplayPluginView::GetNextTab(void) { + atIt++; + if (atIt == activeTabs.end()) { + atIt = activeTabs.begin(); + } + return *atIt; +} + +void cDisplayPluginView::DrawScrollbar(void) { + map < string, string > scrollbarStringTokens; + map < string, int > scrollbarIntTokens; + + int barTop = 0; + int barHeight = 0; + tabView->GetScrollbarPosition(barTop, barHeight); + + scrollbarIntTokens.insert(pair<string,int>("height", barHeight)); + scrollbarIntTokens.insert(pair<string,int>("offset", barTop)); + ClearViewElement((eViewElement)pveScrollbar); + DrawViewElement((eViewElement)pveScrollbar, &scrollbarStringTokens, &scrollbarIntTokens); +} + +void cDisplayPluginView::DrawTabLabels(void) { + if (!ViewElementImplemented((eViewElement)pveTablabels)) { + return; + } + map < string, string > labelStringTokens; + map < string, int > labelIntTokens; + map < string, vector< map< string, string > > > labelLoopTokens; + + string labelPrev = ""; + string labelPrevTemp = ""; + string labelCurrent = ""; + string labelNext = ""; + bool wasCurrent = false; + vector< map< string, string > > tabLabels; + for (list<cTemplateViewTab*>::iterator it = activeTabs.begin(); it != activeTabs.end(); it++) { + cTemplateViewTab *tab = *it; + map< string, string > tabLabel; + tabLabel.insert(pair< string, string >("tabs[title]", tab->GetName())); + if (wasCurrent) { + labelNext = tab->GetName(); + } + if (tab == currentTmplTab) { + wasCurrent = true; + labelCurrent = tab->GetName(); + labelPrev = labelPrevTemp; + tabLabel.insert(pair< string, string >("tabs[current]", "1")); + } else { + wasCurrent = false; + tabLabel.insert(pair< string, string >("tabs[current]", "0")); + } + labelPrevTemp = tab->GetName(); + tabLabels.push_back(tabLabel); + } + if (labelNext.size() == 0 && activeTabs.size() > 0) { + cTemplateViewTab *firstTab = activeTabs.front(); + labelNext = firstTab->GetName(); + } + if (labelPrev.size() == 0 && activeTabs.size() > 0) { + cTemplateViewTab *lastTab = activeTabs.back(); + labelPrev = lastTab->GetName(); + } + labelStringTokens.insert(pair< string, string >("currenttab", labelCurrent)); + labelStringTokens.insert(pair< string, string >("nexttab", labelNext)); + labelStringTokens.insert(pair< string, string >("prevtab", labelPrev)); + labelLoopTokens.insert(pair< string, vector< map< string, string > > >("tabs", tabLabels)); + + ClearViewElement((eViewElement)pveTablabels); + DrawViewElement((eViewElement)pveTablabels, &labelStringTokens, &labelIntTokens, &labelLoopTokens); +} + void cDisplayPluginView::Action(void) { SetInitFinished(); FadeIn(); DoFlush(); cView::Action(); -} +}
\ No newline at end of file diff --git a/views/displaypluginview.h b/views/displaypluginview.h index b170116..b3307a6 100644 --- a/views/displaypluginview.h +++ b/views/displaypluginview.h @@ -1,25 +1,45 @@ #ifndef __DISPLAYPLUGINVIEW_H #define __DISPLAYPLUGINVIEW_H +#include <list> #include <vdr/thread.h> #include "../libtemplate/template.h" #include "view.h" #include "viewgrid.h" +#include "displaymenutabview.h" class cDisplayPluginView : public cView { private: + bool init; + bool tabInit; + bool tabScrolled; + bool hidden; map<string,int> *intTokens; map<string,string> *stringTokens; map<string,vector<map<string,string> > > *loopTokens; map< int, cViewGrid* > viewGrids; + map<string,int> tabIntTokens; + map<string,string> tabStringTokens; + map<string,vector<map<string,string> > > tabLoopTokens; + cTemplateViewTab *currentTmplTab; + list<cTemplateViewTab*> activeTabs; + list<cTemplateViewTab*>::iterator atIt; + cDisplayMenuTabView *tabView; + cTemplateViewTab *GetPrevTab(void); + cTemplateViewTab *GetNextTab(void); + void DrawScrollbar(void); + void DrawTabLabels(void); virtual void Action(void); public: - cDisplayPluginView(cTemplateView *tmplView); + cDisplayPluginView(cTemplateView *tmplView, bool isRootView); virtual ~cDisplayPluginView(); bool createOsd(void); + void Deactivate(bool hide); + void Activate(void); void SetIntTokens(map<string,int> *intTokens) { this->intTokens = intTokens; }; void SetStringTokens(map<string,string> *stringTokens) { this->stringTokens = stringTokens; }; void SetLoopTokens(map<string,vector<map<string,string> > > *loopTokens) { this->loopTokens = loopTokens; }; + void CleanViewElement(int id); void DisplayViewElement(int id); void InitGrids(int viewGridID); void SetGrid(int viewGridID, long gridID, double x, double y, double width, double height, map<string,int> *intTokens, map<string,string> *stringTokens); @@ -27,7 +47,16 @@ public: void DeleteGrid(int viewGridID, long gridID); void DisplayGrids(int viewGridID); void ClearGrids(int viewGridID); - void DoStart(void) { Start(); }; + void SetTabIntTokens(map<string,int> *intTokens); + void SetTabStringTokens(map<string,string> *stringTokens); + void SetTabLoopTokens(map<string,vector<map<string,string> > > *loopTokens); + void SetTabs(void); + void TabLeft(void); + void TabRight(void); + void TabUp(void); + void TabDown(void); + void DisplayTab(void); + void DoStart(void) { init = false; Start(); }; void Flush(void) { DoFlush(); }; }; #endif //__DISPLAYPLUGINVIEW_H diff --git a/views/view.c b/views/view.c index 1571d2e..9e5a53a 100644 --- a/views/view.c +++ b/views/view.c @@ -16,7 +16,7 @@ cView::cView(cTemplateView *tmplView) : cPixmapContainer(tmplView->GetNumPixmaps Init();
}
-cView::cView(cTemplateViewElement *tmplItem) : cPixmapContainer(tmplItem->GetNumPixmaps()) {
+cView::cView(cTemplateViewElement *tmplItem) : cPixmapContainer(tmplItem ? tmplItem->GetNumPixmaps() : 0) {
this->tmplItem = tmplItem;
tmplView = NULL;
tmplTab = NULL;
@@ -164,6 +164,23 @@ void cView::ClearViewElement(eViewElement ve) { }
}
+void cView::DestroyViewElement(eViewElement ve) {
+ if (!tmplView)
+ return;
+ cTemplateViewElement *viewElement = tmplView->GetViewElement(ve);
+ if (!viewElement)
+ return;
+ int pixCurrent = viewElement->GetPixOffset();
+ if (pixCurrent < 0)
+ return;
+ cTemplatePixmap *pix = NULL;
+ viewElement->InitIterator();
+ while(pix = viewElement->GetNextPixmap()) {
+ DestroyPixmap(pixCurrent);
+ pixCurrent++;
+ }
+}
+
void cView::ActivateScrolling(void) {
if (veScroll == veUndefined)
return;
@@ -192,6 +209,22 @@ bool cView::ViewElementImplemented(eViewElement ve) { return tmplView->GetNumPixmapsViewElement(ve);
}
+bool cView::ViewElementScrolls(eViewElement ve) {
+ if (scrollingPix < 0)
+ return false;
+ if (!tmplView)
+ return false;
+ cTemplateViewElement *viewElement = tmplView->GetViewElement(ve);
+ if (!viewElement)
+ return false;
+ int pixStart = viewElement->GetPixOffset();
+ int numPixmaps = viewElement->GetNumPixmaps();
+ if ( (scrollingPix >= pixStart) && (scrollingPix < (pixStart + numPixmaps)) )
+ return true;
+ return false;
+}
+
+
void cView::CreateViewPixmap(int num, cTemplatePixmap *pix, cRect *size) {
cRect pixSize;
if (size) {
@@ -236,6 +269,9 @@ void cView::DrawPixmap(int num, cTemplatePixmap *pix, map < string, vector< map< case ftDrawText:
DoDrawText(num, func);
break;
+ case ftDrawTextVertical:
+ DoDrawTextVertical(num, func);
+ break;
case ftDrawTextBox: {
int floating = func->GetNumericParameter(ptFloat);
if (floating > flNone) {
@@ -438,6 +474,53 @@ void cView::DoDrawText(int num, cTemplateFunction *func, int x0, int y0) { DrawText(num, pos, text.c_str(), clr, clrBack, fontName, fontSize);
}
+void cView::DoDrawTextVertical(int num, cTemplateFunction *func, int x0, int y0) {
+ string fontName = func->GetFontName();
+ int fontSize = func->GetNumericParameter(ptFontSize);
+ tColor clr = func->GetColorParameter(ptColor);
+ tColor clrBack = clrTransparent;
+ string text = func->GetText(false);
+ cImage *textVertical = imgCache->GetVerticalText(text, clr, fontName, fontSize);
+ if (!textVertical)
+ return;
+
+ //align has to be set here because here we know the image size
+ int x = 0;
+ int y = 0;
+ int align = func->GetNumericParameter(ptAlign);
+ if (align == alCenter) {
+ int containerWidth = func->GetContainerWidth();
+ x = (containerWidth - textVertical->Width()) / 2;
+ } else if (align == alLeft) {
+ x = 0;
+ } else if (align = alRight) {
+ int containerWidth = func->GetContainerWidth();
+ x = (containerWidth - textVertical->Width());
+ } else {
+ x = func->GetNumericParameter(ptX);
+ }
+
+ int valign = func->GetNumericParameter(ptValign);
+ if (valign == alCenter) {
+ int containerHeight = func->GetContainerHeight();
+ y = (containerHeight - textVertical->Height()) / 2;
+ } else if (align == alTop) {
+ y = 0;
+ } else if (align = alBottom) {
+ int containerHeight = func->GetContainerHeight();
+ y = (containerHeight - textVertical->Height());
+ } else {
+ y = func->GetNumericParameter(ptY);
+ }
+
+ if (x < 0) x = 0;
+ x += x0;
+ if (y < 0) y = func->GetContainerHeight() - textVertical->Height() - 5;
+ y += y0;
+ cPoint pos(x,y);
+ DrawImage(num, pos, *textVertical);
+}
+
void cView::DoDrawTextBox(int num, cTemplateFunction *func, int x0, int y0) {
string text = func->GetText(false);
if (text.size() < 3)
@@ -858,17 +941,22 @@ cGrid::~cGrid() { void cGrid::Set(double x, double y, double width, double height,
map <string,int> *intTokens, map <string,string> *stringTokens) {
+
if ((width != this->width) || (height != this->height)) {
+ this->width = width;
+ this->height = height;
resized = true;
dirty = false;
} else {
resized = false;
}
- this->x = x;
- this->y = y;
- this->width = width;
- this->height = height;
- moved = true;
+ if (this->x != x || this->y != y) {
+ this->x = x;
+ this->y = y;
+ moved = true;
+ } else {
+ moved = false;
+ }
if (intTokens) {
this->intTokens = *intTokens;
SetCurrent(current);
@@ -889,6 +977,8 @@ void cGrid::SetCurrent(bool current) { }
void cGrid::Move(void) {
+ if (!tmplItem)
+ return;
tmplItem->InitIterator();
cTemplatePixmap *pix = NULL;
int pixCurrent = 0;
@@ -905,6 +995,8 @@ void cGrid::Move(void) { }
void cGrid::Draw(void) {
+ if (!tmplItem)
+ return;
if (tmplItem->DebugTokens()) {
DebugTokens("Grid", &stringTokens, &intTokens);
}
diff --git a/views/view.h b/views/view.h index 7b5bd9b..77ad318 100644 --- a/views/view.h +++ b/views/view.h @@ -13,6 +13,7 @@ private: void Init(void);
void DoFill(int num, cTemplateFunction *func);
void DoDrawText(int num, cTemplateFunction *func, int x0 = 0, int y0 = 0);
+ void DoDrawTextVertical(int num, cTemplateFunction *func, int x0 = 0, int y0 = 0);
void DoDrawTextBox(int num, cTemplateFunction *func, int x0 = 0, int y0 = 0);
void DoDrawFloatingTextBox(int num, cTemplateFunction *func);
void DoDrawRectangle(int num, cTemplateFunction *func, int x0 = 0, int y0 = 0);
@@ -40,7 +41,9 @@ protected: int scrollSpeed;
void DrawViewElement(eViewElement ve, map <string,string> *stringTokens = NULL, map <string,int> *intTokens = NULL, map < string, vector< map< string, string > > > *loopTokens = NULL);
void ClearViewElement(eViewElement ve);
+ void DestroyViewElement(eViewElement ve);
bool ViewElementImplemented(eViewElement ve);
+ bool ViewElementScrolls(eViewElement ve);
void CreateViewPixmap(int num, cTemplatePixmap *pix, cRect *size = NULL);
void CreateScrollingPixmap(int num, cTemplatePixmap *pix, cSize &drawportSize);
void DrawPixmap(int num, cTemplatePixmap *pix, map < string, vector< map< string, string > > > *loopTokens = NULL, bool flushPerLoop = false);
diff --git a/views/viewgrid.c b/views/viewgrid.c index 6488ccd..008133e 100644 --- a/views/viewgrid.c +++ b/views/viewgrid.c @@ -25,7 +25,6 @@ void cViewGrid::SetGrid(long gridID, } void cViewGrid::SetCurrent(long gridID, bool current) { - esyslog("skindesigner: setting %ld to current %d", gridID, current); map<long,cGrid*>::iterator hit = grids.find(gridID); if (hit != grids.end()) (hit->second)->SetCurrent(current); @@ -35,7 +34,6 @@ void cViewGrid::Delete(long gridID) { map<long,cGrid*>::iterator hit = grids.find(gridID); if (hit == grids.end()) return; - esyslog("skindesigner: deleting grid %ld", gridID); delete (hit->second); grids.erase(gridID); } @@ -47,28 +45,43 @@ void cViewGrid::Clear(void) { } void cViewGrid::Render(void) { - esyslog("skindesigner: rendering %ld grids", grids.size()); for (map < long, cGrid* >::iterator it = grids.begin(); it != grids.end(); it++) { cGrid *grid = it->second; if (grid->Dirty()) { if (grid->Moved()) { - grid->DeletePixmaps(); + grid->Move(); } - esyslog("skindesigner: rendering grid %ld", it->first); + grid->Clear(); + //esyslog("skindesigner: rendering grid %ld", it->first); grid->Draw(); } else if (grid->Resized()) { - esyslog("skindesigner: resizing grid %ld", it->first); + //esyslog("skindesigner: resizing grid %ld", it->first); grid->DeletePixmaps(); grid->Draw(); } else if (grid->Moved()) { - esyslog("skindesigner: moving grid %ld", it->first); - grid->Move(); + //esyslog("skindesigner: moving grid %ld", it->first); + grid->Move(); } else { - esyslog("skindesigner: skipping grid %ld", it->first); + //esyslog("skindesigner: skipping grid %ld", it->first); } } } +void cViewGrid::Hide(void) { + for (map < long, cGrid* >::iterator it = grids.begin(); it != grids.end(); it++) { + cGrid *grid = it->second; + grid->HidePixmaps(); + } +} + +void cViewGrid::Show(void) { + for (map < long, cGrid* >::iterator it = grids.begin(); it != grids.end(); it++) { + cGrid *grid = it->second; + grid->ShowPixmaps(); + } +} + + void cViewGrid::Debug(void) { }
\ No newline at end of file diff --git a/views/viewgrid.h b/views/viewgrid.h index 84209c3..0fc11f6 100644 --- a/views/viewgrid.h +++ b/views/viewgrid.h @@ -20,6 +20,8 @@ public: void Delete(long gridID); void Clear(void); void Render(void); + void Hide(void); + void Show(void); void Debug(void); }; |