diff options
author | louis <louis.braun@gmx.de> | 2015-01-25 11:48:30 +0100 |
---|---|---|
committer | louis <louis.braun@gmx.de> | 2015-01-25 11:48:30 +0100 |
commit | f33d44eda968392c5c7e3a83cfe5ba3490ab9d84 (patch) | |
tree | b7e6182211b743b6e4687028367753b64d9fe9a5 | |
parent | a74cb93163146e547abc641638874697904672e5 (diff) | |
download | vdr-plugin-skindesigner-f33d44eda968392c5c7e3a83cfe5ba3490ab9d84.tar.gz vdr-plugin-skindesigner-f33d44eda968392c5c7e3a83cfe5ba3490ab9d84.tar.bz2 |
check icons, menuicons and skinparts additionally directly in skin folder
-rw-r--r-- | HISTORY | 4 | ||||
-rw-r--r-- | libcore/imagecache.c | 62 | ||||
-rw-r--r-- | libcore/imagecache.h | 6 | ||||
-rw-r--r-- | skinskeleton/globals.xml | 37 | ||||
-rw-r--r-- | skinskeleton/themes/default/theme.xml (renamed from skinskeleton/themes/default/globals.xml) | 0 |
5 files changed, 90 insertions, 19 deletions
@@ -177,4 +177,6 @@ Version 0.1.6 marks - made all globals variables private - introduced globals.xml in skinpath, theme.xml in theme path. theme.xml - adds its vakues and potentially overrides valués from globals.xml
\ No newline at end of file + adds its vakues and potentially overrides valués from globals.xml +- check icons, menuicons and skinparts additionally directly in skin folder + to allow default images which can be used for all skins.
\ No newline at end of file diff --git a/libcore/imagecache.c b/libcore/imagecache.c index cfaf255..57e0dd4 100644 --- a/libcore/imagecache.c +++ b/libcore/imagecache.c @@ -32,12 +32,16 @@ void cImageCache::SetPathes(void) { } else { logoPath = *config.logoPath; } - iconPath = *cString::sprintf("%s%s/themes/%s/", *config.skinPath, Setup.OSDSkin, Setup.OSDTheme); - skinPartsPath = *cString::sprintf("%s%s/themes/%s/skinparts/", *config.skinPath, Setup.OSDSkin, Setup.OSDTheme); + + iconPathSkin = *cString::sprintf("%s%s/", *config.skinPath, Setup.OSDSkin); + skinPartsPathSkin = *cString::sprintf("%s%s/skinparts/", *config.skinPath, Setup.OSDSkin); + + iconPathTheme = *cString::sprintf("%s%s/themes/%s/", *config.skinPath, Setup.OSDSkin, Setup.OSDTheme); + skinPartsPathTheme = *cString::sprintf("%s%s/themes/%s/skinparts/", *config.skinPath, Setup.OSDSkin, Setup.OSDTheme); dsyslog("skindesigner: using channel logo path %s", logoPath.c_str()); - dsyslog("skindesigner: using icon path %s", iconPath.c_str()); - dsyslog("skindesigner: using skinparts path %s", skinPartsPath.c_str()); + dsyslog("skindesigner: using icon path %s", iconPathTheme.c_str()); + dsyslog("skindesigner: using skinparts path %s", skinPartsPathTheme.c_str()); } void cImageCache::CacheLogo(int width, int height) { @@ -261,11 +265,20 @@ string cImageCache::GetIconName(string label, eMenuCategory cat) { } bool cImageCache::MenuIconExists(string name) { - cString iconFullPath = cString::sprintf("%smenuicons/", iconPath.c_str()); - if (FileExists(*iconFullPath, name, "svg")) { + //first check in theme specific icon folder + cString iconThemePath = cString::sprintf("%smenuicons/", iconPathTheme.c_str()); + if (FileExists(*iconThemePath, name, "svg")) { + return true; + } + if (FileExists(*iconThemePath, name, "png")) { return true; } - if (FileExists(*iconFullPath, name, "png")) { + //then check skin icon folder + cString iconSkinPath = cString::sprintf("%smenuicons/", iconPathSkin.c_str()); + if (FileExists(*iconSkinPath, name, "svg")) { + return true; + } + if (FileExists(*iconSkinPath, name, "png")) { return true; } return false; @@ -306,12 +319,22 @@ bool cImageCache::LoadIcon(eImageType type, string name) { subdir = "menuicons"; else if (type == itIcon) subdir = "icons"; - cString subIconPath = cString::sprintf("%s%s/", iconPath.c_str(), *subdir); - if (FileExists(*subIconPath, name, "svg")) - return LoadImage(*subIconPath, name, "svg"); - else - return LoadImage(*subIconPath, name, "png"); + //first check in theme specific icon path + cString subIconThemePath = cString::sprintf("%s%s/", iconPathTheme.c_str(), *subdir); + + if (FileExists(*subIconThemePath, name, "svg")) + return LoadImage(*subIconThemePath, name, "svg"); + else if (FileExists(*subIconThemePath, name, "png")) + return LoadImage(*subIconThemePath, name, "png"); + + //then check in skin icon path + cString subIconSkinPath = cString::sprintf("%s%s/", iconPathSkin.c_str(), *subdir); + + if (FileExists(*subIconSkinPath, name, "svg")) + return LoadImage(*subIconSkinPath, name, "svg"); + else + return LoadImage(*subIconSkinPath, name, "png"); } bool cImageCache::LoadLogo(const cChannel *channel) { @@ -342,10 +365,17 @@ bool cImageCache::LoadSeparatorLogo(string name) { } bool cImageCache::LoadSkinpart(string name) { - if (FileExists(skinPartsPath.c_str(), name, "svg")) - return LoadImage(skinPartsPath.c_str(), name, "svg"); - else - return LoadImage(skinPartsPath.c_str(), name, "png"); + if (FileExists(skinPartsPathTheme.c_str(), name, "svg")) + return LoadImage(skinPartsPathTheme.c_str(), name, "svg"); + + else if (FileExists(skinPartsPathTheme.c_str(), name, "png")) + return LoadImage(skinPartsPathTheme.c_str(), name, "png"); + + else if (FileExists(skinPartsPathSkin.c_str(), name, "svg")) + return LoadImage(skinPartsPathSkin.c_str(), name, "svg"); + + else + return LoadImage(skinPartsPathSkin.c_str(), name, "png"); } void cImageCache::Clear(void) { diff --git a/libcore/imagecache.h b/libcore/imagecache.h index 95148b2..086d8e4 100644 --- a/libcore/imagecache.h +++ b/libcore/imagecache.h @@ -41,8 +41,10 @@ private: static string items[16]; cImage *tempStaticLogo; string logoPath; - string iconPath; - string skinPartsPath; + string iconPathSkin; + string skinPartsPathSkin; + string iconPathTheme; + string skinPartsPathTheme; map<string, cImage*> iconCache; map<string, cImage*> channelLogoCache; map<string, cImage*> skinPartsCache; diff --git a/skinskeleton/globals.xml b/skinskeleton/globals.xml new file mode 100644 index 0000000..01f37fb --- /dev/null +++ b/skinskeleton/globals.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE globals SYSTEM "../../dtd/globals.dtd"> + +<globals> + <!-- + define all your needed colors here + --> + <colors> + </colors> + <!-- + these variables can be used everywhere in the templates + variabls of type int can also be used as conditions, just + set such a variable to 1 for true and 0 for false + --> + <variables> + </variables> + <!-- + translations used in the skin + --> + <translations> + </translations> + <!-- + The three Fonts FontOSD, FontFix and FontSml configured in VDR + can be used in all template "font" attributes with this tokens: + {vdrOsd} + {vdrFix} + {vdrSml} + If you like to use further fonts, just define them below. + Syntax: + <font name="tokenname">fontname</font> + These fonts can then also be used in all templates in the "font" + attribute. + if an invalid font is used in a template, vdrOsd is used as default. + --> + <fonts> + </fonts> +</globals> diff --git a/skinskeleton/themes/default/globals.xml b/skinskeleton/themes/default/theme.xml index f9dce83..f9dce83 100644 --- a/skinskeleton/themes/default/globals.xml +++ b/skinskeleton/themes/default/theme.xml |