summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlouis <louis.braun@gmx.de>2015-01-25 11:48:30 +0100
committerlouis <louis.braun@gmx.de>2015-01-25 11:48:30 +0100
commitf33d44eda968392c5c7e3a83cfe5ba3490ab9d84 (patch)
treeb7e6182211b743b6e4687028367753b64d9fe9a5
parenta74cb93163146e547abc641638874697904672e5 (diff)
downloadvdr-plugin-skindesigner-f33d44eda968392c5c7e3a83cfe5ba3490ab9d84.tar.gz
vdr-plugin-skindesigner-f33d44eda968392c5c7e3a83cfe5ba3490ab9d84.tar.bz2
check icons, menuicons and skinparts additionally directly in skin folder
-rw-r--r--HISTORY4
-rw-r--r--libcore/imagecache.c62
-rw-r--r--libcore/imagecache.h6
-rw-r--r--skinskeleton/globals.xml37
-rw-r--r--skinskeleton/themes/default/theme.xml (renamed from skinskeleton/themes/default/globals.xml)0
5 files changed, 90 insertions, 19 deletions
diff --git a/HISTORY b/HISTORY
index adaa102..c0a2e81 100644
--- a/HISTORY
+++ b/HISTORY
@@ -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