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 /libcore | |
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
Diffstat (limited to 'libcore')
-rw-r--r-- | libcore/imagecache.c | 62 | ||||
-rw-r--r-- | libcore/imagecache.h | 6 |
2 files changed, 50 insertions, 18 deletions
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; |