summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Mair <amair.sob@googlemail.com>2007-02-19 12:42:15 +0100
committerAndreas Mair <amair.sob@googlemail.com>2007-02-19 12:42:15 +0100
commitb1fa489fdbd06712add00390966defbe9a96232a (patch)
treea5d1efbbfe4f22e12bea081454502828682be134
parent2ced4d35c533969fdb0ee6fa963a2fef26c50b79 (diff)
downloadvdr-plugin-skinenigmang-b1fa489fdbd06712add00390966defbe9a96232a.tar.gz
vdr-plugin-skinenigmang-b1fa489fdbd06712add00390966defbe9a96232a.tar.bz2
2007-02-19: Version 0.0.2v0.0.2
- Fixed problems in replay OSD when not using small font (Reported by several people). - Only display reruns of current event in EPG info if there are more than two reruns. - New setup option to enable/disable trying a single 8bpp OSD area. - Completed French translation (Submitted by Patrice Staudt). - Completed Finnish translation (Patch by rofafor @vdr-portal.de). - Changed defines: HAVE_EPGSEARCH to SKINENIGMA_HAVE_EPGSEARCH and NO_MENULOGO to SKINENIGMA_NO_MENULOGO (Patch by rofafor @vdr-portal.de). - Fixed crash if loading channel logos by channel id (Reported by zulu @vdr-portal.de). - Fixed gcc warning (Reported by zulu @vdr-portal.de). - Renamed theme WomansLike to WomenLike. - Some smaller fixes.
-rw-r--r--HISTORY13
-rw-r--r--Makefile16
-rw-r--r--README20
-rw-r--r--config.c7
-rw-r--r--config.h1
-rw-r--r--enigma.c113
-rw-r--r--i18n.c84
-rw-r--r--skinenigmang.c7
-rw-r--r--symbols/small/eventparttimer.xpm.old27
-rw-r--r--themes/EnigmaNG-WomenLike.theme (renamed from themes/EnigmaNG-WomansLike.theme)2
10 files changed, 164 insertions, 126 deletions
diff --git a/HISTORY b/HISTORY
index 4c5a8d2..1f8f648 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1,6 +1,17 @@
VDR Skin 'EnigmaNG' Revision History
------------------------------------------
-2007-02-14: Version 0.0.1
+2007-02-19: Version 0.0.2
+- Fixed problems in replay OSD when not using small font (Reported by several people).
+- Only display reruns of current event in EPG info if there are more than two reruns.
+- New setup option to enable/disable trying a single 8bpp OSD area.
+- Completed French translation (Submitted by Patrice Staudt).
+- Completed Finnish translation (Patch by rofafor @vdr-portal.de).
+- Changed defines: HAVE_EPGSEARCH to SKINENIGMA_HAVE_EPGSEARCH and NO_MENULOGO to SKINENIGMA_NO_MENULOGO (Patch by rofafor @vdr-portal.de).
+- Fixed crash if loading channel logos by channel id (Reported by zulu @vdr-portal.de).
+- Fixed gcc warning (Reported by zulu @vdr-portal.de).
+- Renamed theme WomansLike to WomenLike.
+- Some smaller fixes.
+2007-02-14: Version 0.0.1
- Initial release.
diff --git a/Makefile b/Makefile
index 44c0e63..94e3e60 100644
--- a/Makefile
+++ b/Makefile
@@ -1,15 +1,15 @@
#
# Makefile for a Video Disk Recorder plugin
#
-# $Id$
+# $Id: Makefile,v 1.2 2007/02/15 13:37:17 amair Exp $
# If you are using the epgsearch plugin and want to see the number of
# timer conflicts in the main menu's info area.
-#HAVE_EPGSEARCH = 1
+#SKINENIGMA_HAVE_EPGSEARCH = 1
# This turns usage of logos in the main menu complete. This might also
# improve the performance of the menus. EXPERIMENTAL!!!
-#NO_MENULOGO = 1
+#SKINENIGMA_NO_MENULOGO = 1
# Debugging on/off
#SKINENIGMA_DEBUG = 1
@@ -58,16 +58,16 @@ INCLUDES += -I$(VDRDIR)/include
DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
-ifdef HAVE_EPGSEARCH
-DEFINES += -DHAVE_EPGSEARCH
+ifdef SKINENIGMA_HAVE_EPGSEARCH
+DEFINES += -DSKINENIGMA_HAVE_EPGSEARCH
endif
ifdef SKINENIGMA_DEBUG
DEFINES += -DDEBUG
endif
-ifdef NO_MENULOGO
-DEFINES += -DNO_MENULOGO
+ifdef SKINENIGMA_NO_MENULOGO
+DEFINES += -DSKINENIGMA_NO_MENULOGO
endif
### The object files (add further files here):
@@ -103,7 +103,7 @@ dist: clean
@-rm -rf $(TMPDIR)/$(ARCHIVE)
@mkdir $(TMPDIR)/$(ARCHIVE)
@cp -a * $(TMPDIR)/$(ARCHIVE)
- @tar czf $(PACKAGE).tgz -C $(TMPDIR) $(ARCHIVE)
+ @tar czf $(PACKAGE).tgz --exclude CVS -C $(TMPDIR) $(ARCHIVE)
@-rm -rf $(TMPDIR)/$(ARCHIVE)
@echo Distribution package created as $(PACKAGE).tgz
diff --git a/README b/README
index 630844c..b77cd48 100644
--- a/README
+++ b/README
@@ -2,9 +2,9 @@ This is the "EnigmaNG" skin for the Video Disk Recorder (VDR).
Written by: Andreas Mair (andreas AT vdr - developer DOT org)
-Project's homepage: http://andreas.vdr-developer.org
+Project's homepage: http://andreas.vdr-developer.org/enigmang
-Latest version available at: http://andreas.vdr-developer.org
+Latest version available at: http://andreas.vdr-developer.org/enigmang
See the file COPYING for license information.
@@ -29,11 +29,11 @@ Compile time configuration
There are some configuration items you need to set before running
"make plugins" in "Make.config":
-HAVE_EPGSEARCH = 1
+SKINENIGMA_HAVE_EPGSEARCH = 1
If you are using the epgsearch plugin and want to see the number of
timer conflicts in the main menu's info area.
-NO_MENULOGO = 1
+SKINENIGMA_NO_MENULOGO = 1
This turns usage of logos in the main menu complete. This might also
improve the performance of the menus. EXPERIMENTAL!!!
@@ -53,6 +53,8 @@ Installation
> cd /put/your/path/here/VDR/PLUGINS/src
> tar -xzf /put/your/path/here/vdr-skinenigmang-X.Y.Z.tgz
> ln -s skinenigmang-X.Y.Z skinenigmang
+OR (for CVS checkout):
+> ln -s EnigmaNG skinenigmang
> cd skinenigmang
> cp -df themes/*.theme /path/to/vdrconf/themes/
@@ -68,10 +70,13 @@ Update
That's the same procedure as "Installation" but you have to remove
some things before:
+- Link to old sources
> cd /put/your/path/here/VDR/PLUGINS/src
> rm -f skinenigmang
-> rm -rf /path/to/vdrconf/plugins/skinenigmang
+- Old themes (only if you didn't change/add them!)
+> cd /path/to/vdrconf/themes/
+> rm -f EnigmaNG-*.theme
Usage
-----
@@ -108,7 +113,7 @@ Setup Options
- Show info area in main menu
This info area is shown in the main menu and it will show the current/next
- timers and the number of timer conflicts (if HAVE_EPGSEARCH has been defined).
+ timers and the number of timer conflicts (if SKINENIGMA_HAVE_EPGSEARCH has been defined).
- Show marker in lists
If enabled a small circle is drawn in front of the selected item in lists.
@@ -124,6 +129,7 @@ Setup Options
Here you can choose if the channel logo should be searched by the channel's
name (e.g. "YLETV2" -> "YLETV2.xpm") or by the channel's unique id (e.g.
"T-8438-4097-33.xpm").
+ NOTE: the available logo packs are named by channel name only!
- Channel logo cache size
The number of logos/symbols to keep in the cache.
@@ -169,5 +175,5 @@ Credits
WineRed: http://www.vdr-portal.de/board/thread.php?threadid=59416
AppleGreen: http://www.vdr-portal.de/board/thread.php?threadid=59427
-- skiller2k @vdr-portal.de for Comedy Central logo.
+- skiller2k1 @vdr-portal.de for Comedy Central logo.
http://www.vdr-portal.de/board/thread.php?postid=567887#post567887
diff --git a/config.c b/config.c
index 98d5f1e..6fb84e5 100644
--- a/config.c
+++ b/config.c
@@ -11,9 +11,10 @@
cEnigmaConfig EnigmaConfig;
-cEnigmaConfig::cEnigmaConfig() : showAuxInfo(1), showLogo(1), showVps(1), showListSymbols(1),
- showSymbols(1), showProgressbar(1), cacheSize(50),
- useChannelId(0), showInfo(1), showRemaining(0), showMarker(1)
+cEnigmaConfig::cEnigmaConfig() : showAuxInfo(1), showLogo(1), showVps(1), showSymbols(1),
+ showListSymbols(1), showProgressbar(1), cacheSize(50),
+ useChannelId(0), showInfo(1), showRemaining(0), showMarker(1),
+ singleArea(1)
{
memset(logoDir, 0, sizeof(logoDir));
}
diff --git a/config.h b/config.h
index b1ec6b0..ebce5eb 100644
--- a/config.h
+++ b/config.h
@@ -28,6 +28,7 @@ public:
int showInfo;
int showRemaining;
int showMarker;
+ int singleArea;
};
extern cEnigmaConfig EnigmaConfig;
diff --git a/enigma.c b/enigma.c
index ee977f7..701b6cd 100644
--- a/enigma.c
+++ b/enigma.c
@@ -29,7 +29,7 @@
#include <vdr/themes.h>
#include <vdr/plugin.h>
-#ifdef HAVE_EPGSEARCH
+#ifdef SKINENIGMA_HAVE_EPGSEARCH
#include "../epgsearch/services.h"
#endif
@@ -295,7 +295,7 @@ cSkinEnigmaDisplayChannel::cSkinEnigmaDisplayChannel(bool WithInfo)
// create osd
osd = cOsdProvider::NewOsd(Setup.OSDLeft, Setup.OSDTop + Setup.OSDHeight - yBottomBottom);
tArea Areas[] = { {0, 0, xBottomRight - 1, yBottomBottom - 1, fShowLogo ? 8 : 4} };
- if (osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea) == oeOk)) {
+ if (EnigmaConfig.singleArea && osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea) == oeOk)) {
osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
// clear all
osd->DrawRectangle(0, 0, osd->Width(), osd->Height(), clrTransparent);
@@ -309,8 +309,10 @@ cSkinEnigmaDisplayChannel::cSkinEnigmaDisplayChannel(bool WithInfo)
eOsdError rc = osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea));
if (rc == oeOk)
osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
- else
+ else {
error("cSkinEnigmaDisplayChannel: CanHandleAreas() returned %d\n", rc);
+ return;
+ }
} else {
tArea Areas[] = { {xTitleLeft, yTitleTop, xTitleRight - 1, yTitleDecoBottom - 1, 2},
{xEventNowLeft, yEventNowTop, xEventNowRight - 1, yEventNextBottom - 1, 4},
@@ -319,8 +321,10 @@ cSkinEnigmaDisplayChannel::cSkinEnigmaDisplayChannel(bool WithInfo)
eOsdError rc = osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea));
if (rc == oeOk)
osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
- else
+ else {
error("cSkinEnigmaDisplayChannel: CanHandleAreas() returned %d\n", rc);
+ return;
+ }
}
}
}
@@ -517,27 +521,31 @@ void cSkinEnigmaDisplayChannel::SetChannel(const cChannel *Channel, int Number)
// draw logo area
osd->DrawRectangle(xLogoLeft, yLogoTop, xLogoRight - 1, yLogoBottom - 1, Theme.Color(clrLogoBg));
osd->DrawRectangle(xLogoDecoLeft, yLogoTop, xLogoDecoRight - 1, yLogoBottom - 1, Theme.Color(clrLogoBg));
- const char *logoname = EnigmaConfig.useChannelId ? *Channel->GetChannelID().ToString() : Channel->Name();
- char *filename = (char *)malloc(strlen(logoname) + 20 /* should be enough for folder */);
- if (filename == NULL) return;
- strcpy(filename, "hqlogos/");
- strcat(filename, logoname);
- bool fFoundLogo = false;
- if (!(fFoundLogo = EnigmaLogoCache.Load(filename))) {
- strcpy(filename, "logos/");
+ char *strChannelID = EnigmaConfig.useChannelId ? strdup(*Channel->GetChannelID().ToString()) : NULL;
+ const char *logoname = EnigmaConfig.useChannelId ? strChannelID : Channel->Name();
+ if (logoname) {
+ char *filename = (char *)malloc(strlen(logoname) + 20 /* should be enough for folder */);
+ if (filename == NULL) return;
+ strcpy(filename, "hqlogos/");
strcat(filename, logoname);
+ bool fFoundLogo = false;
if (!(fFoundLogo = EnigmaLogoCache.Load(filename))) {
- fFoundLogo = EnigmaLogoCache.Load("hqlogos/no_logo"); //TODO? different default logo for channel/group?
+ strcpy(filename, "logos/");
+ strcat(filename, logoname);
+ if (!(fFoundLogo = EnigmaLogoCache.Load(filename))) {
+ fFoundLogo = EnigmaLogoCache.Load("hqlogos/no_logo"); //TODO? different default logo for channel/group?
+ }
}
- }
- free(filename);
+ free(filename);
- if (fFoundLogo) {
- osd->DrawBitmap(xLogoLeft + (xLogoRight - xLogoLeft - ChannelLogoWidth) / 2,
- yLogoTop + (yLogoBottom - yLogoTop - ChannelLogoHeight) / 2,
- EnigmaLogoCache.Get(), EnigmaLogoCache.Get().Color(1),
- Theme.Color(clrLogoBg), true);
+ if (fFoundLogo) {
+ osd->DrawBitmap(xLogoLeft + (xLogoRight - xLogoLeft - ChannelLogoWidth) / 2,
+ yLogoTop + (yLogoBottom - yLogoTop - ChannelLogoHeight) / 2,
+ EnigmaLogoCache.Get(), EnigmaLogoCache.Get().Color(1),
+ Theme.Color(clrLogoBg), true);
+ }
}
+ free(strChannelID);
}
if (Channel->GroupSep())
@@ -736,7 +744,7 @@ cSkinEnigmaDisplayMenu::cSkinEnigmaDisplayMenu(void)
osd = NULL;
strTitle = NULL;
isMainMenu = true;
-#ifdef NO_MENULOGO
+#ifdef SKINENIGMA_NO_MENULOGO
fShowLogo = false;
#else
fShowLogo = EnigmaConfig.showSymbols;
@@ -790,13 +798,14 @@ cSkinEnigmaDisplayMenu::cSkinEnigmaDisplayMenu(void)
osd = cOsdProvider::NewOsd(Setup.OSDLeft, Setup.OSDTop);
tArea Areas[] = { {xTitleLeft, yTitleTop, xMessageRight - 1, yButtonsBottom - 1, 8} };
- if (osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk) {
+ if (EnigmaConfig.singleArea && osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk) {
osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
} else { //TODO? single body area (-> no symbols in event/recording info)
tArea Areas[] = { {xTitleLeft, yTitleTop, xTitleRight - 1, yTitleDecoBottom - 1, 4}, //title area
{xBodyLeft, yBodyTop, xBodyRight - 1, yLogoBottom - 1, 2}, //body area (beside date/logo area)
-#ifdef NO_MENULOGO
- {xDateLeft, yDateTop, xDateRight - 1, yDateBottom - 1, 2}, //date
+#ifdef SKINENIGMA_NO_MENULOGO
+ {xDateLeft, yDateTop, xDateRight - 1, yBodyTop - 1, 2}, //date
+ {xDateLeft, yBodyTop, xDateRight - 1, yDateBottom - 1, 2}, //date/body
#else
{xDateLeft, yDateTop, xDateRight - 1, yInfoTop - 1, 4}, //date/logo area
#endif
@@ -813,7 +822,7 @@ cSkinEnigmaDisplayMenu::cSkinEnigmaDisplayMenu(void)
return;
}
-#ifndef NO_MENULOGO
+#ifndef SKINENIGMA_NO_MENULOGO
// set colors for info area
osd->GetBitmap(4)->Reset();
osd->GetBitmap(4)->SetColor(0, Theme.Color(clrTransparent));
@@ -848,7 +857,7 @@ void cSkinEnigmaDisplayMenu::SetupAreas(void)
int w = xInfoRight - x;
int yMaxHeight = yInfoBottom;
-#ifdef HAVE_EPGSEARCH
+#ifdef SKINENIGMA_HAVE_EPGSEARCH
cPlugin *p = cPluginManager::GetPlugin("epgsearch");
if (p) {
Epgsearch_lastconflictinfo_v1_0 *serviceData = new Epgsearch_lastconflictinfo_v1_0;
@@ -875,7 +884,7 @@ void cSkinEnigmaDisplayMenu::SetupAreas(void)
delete serviceData;
}
}
-#endif //HAVE_EPGSEARCH
+#endif //SKINENIGMA_HAVE_EPGSEARCH
if (Timers.GetNextActiveTimer()) {
// Show next active timers
@@ -988,7 +997,7 @@ void cSkinEnigmaDisplayMenu::SetTitle(const char *Title)
if (strTitle == NULL || strncmp(tr("VDR"), strTitle, strlen(tr("VDR"))) == 0) {
isMainMenu = true;
-#ifdef NO_MENULOGO
+#ifdef SKINENIGMA_NO_MENULOGO
fShowLogo = false;
#else
fShowLogo = EnigmaConfig.showSymbols;
@@ -1262,7 +1271,7 @@ void cSkinEnigmaDisplayMenu::SetItem(const char *Text, int Index, bool Current,
//set editable width
SetEditableWidth(xItemRight - Tab(1));
-#ifndef NO_MENULOGO
+#ifndef SKINENIGMA_NO_MENULOGO
// debug("SetItem: (%s) %d %d %d\n", Text, Index, Current, Selectable);
if (Current && isMainMenu && fShowLogo && Text) {
char *ItemText, *ItemText2;
@@ -1436,7 +1445,7 @@ void cSkinEnigmaDisplayMenu::SetEvent(const cEvent *Event)
isMainMenu = false;
fShowInfo = false;
-#ifdef NO_MENULOGO
+#ifdef SKINENIGMA_NO_MENULOGO
fShowLogo = false;
#else
fShowLogo = EnigmaConfig.showSymbols;
@@ -1501,7 +1510,7 @@ void cSkinEnigmaDisplayMenu::SetEvent(const cEvent *Event)
stringstream sstrInfo;
for (int i = 0; i < Components->NumComponents(); i++) {
const tComponent *p = Components->Component(i);
- if ((p->stream == 2) && p->language) {
+ if (p && (p->stream == 2) && p->language) {
if (p->description) {
sstrInfo << p->description
<< " (" << p->language << "), ";
@@ -1554,7 +1563,7 @@ void cSkinEnigmaDisplayMenu::SetEvent(const cEvent *Event)
}
string stringReruns;
-#ifdef HAVE_EPGSEARCH
+#ifdef SKINENIGMA_HAVE_EPGSEARCH
// try to find a rerun of the show using epgsearch-service
if (!isempty(Event->Title())) {
stringstream sstrReruns;
@@ -1567,7 +1576,7 @@ void cSkinEnigmaDisplayMenu::SetEvent(const cEvent *Event)
data.useDescription = false;
if (cPluginManager::CallFirstService("Epgsearch-searchresults-v1.0", &data)) {
cList<Epgsearch_searchresults_v1_0::cServiceSearchResult>* list = data.pResultList;
- if (list) {
+ if (list && (list->Count() > 1)) {
//TODO: current event is shown as rerun
sstrReruns << tr("RERUNS OF THIS SHOW") << ':' << endl;
int i = 0;
@@ -1586,7 +1595,7 @@ void cSkinEnigmaDisplayMenu::SetEvent(const cEvent *Event)
}
stringReruns = sstrReruns.str();
}
-#endif // HAVE_EPGSEARCH
+#endif // SKINENIGMA_HAVE_EPGSEARCH
const char *strFirst = NULL;
const char *strSecond = NULL;
@@ -1609,10 +1618,10 @@ void cSkinEnigmaDisplayMenu::SetEvent(const cEvent *Event)
mytext, smlfont, Theme.Color(clrMenuTxtFg),
Theme.Color(clrBackground));
SetScrollbar();
-// free(mytext);
+ free(mytext);
}
-#ifndef NO_MENULOGO
+#ifndef SKINENIGMA_NO_MENULOGO
if (fShowLogo) {
// draw logo
osd->DrawRectangle(xDateLeft + SmallGap, yDateTop, xDateRight - 1, yDateBottom - SmallGap - 1, Theme.Color(clrLogoBg));
@@ -1635,7 +1644,7 @@ void cSkinEnigmaDisplayMenu::SetRecording(const cRecording *Recording)
isMainMenu = false;
fShowInfo = false;
-#ifdef NO_MENULOGO
+#ifdef SKINENIGMA_NO_MENULOGO
fShowLogo = false;
#else
fShowLogo = EnigmaConfig.showSymbols;
@@ -1740,7 +1749,7 @@ void cSkinEnigmaDisplayMenu::SetRecording(const cRecording *Recording)
free(mytext);
}
-#ifndef NO_MENULOGO
+#ifndef SKINENIGMA_NO_MENULOGO
if (fShowLogo) {
// draw logo
osd->DrawRectangle(xDateLeft + SmallGap, yDateTop, xDateRight - 1, yDateBottom - SmallGap - 1, Theme.Color(clrLogoBg));
@@ -1860,6 +1869,8 @@ cSkinEnigmaDisplayReplay::cSkinEnigmaDisplayReplay(bool ModeOnly)
nJumpWidth = 0;
lineHeight = cFont::GetFont(fontOsd)->Height();
+ int logoWidth = LogoWidth;
+ logoWidth += (logoWidth % 2 ? 1 : 0);
xTitleLeft = 0;
xTitleRight = Setup.OSDWidth;
yTitleTop = 0;
@@ -1867,7 +1878,7 @@ cSkinEnigmaDisplayReplay::cSkinEnigmaDisplayReplay(bool ModeOnly)
yTitleDecoTop = yTitleBottom + TitleDecoGap;
yTitleDecoBottom = yTitleDecoTop + TitleDecoHeight;
xLogoLeft = xTitleLeft;
- xLogoRight = xLogoLeft + LogoWidth;
+ xLogoRight = xLogoLeft + logoWidth;
yLogoTop = yTitleDecoBottom + TitleDecoGap2;
yLogoBottom = yLogoTop + LogoHeight;
xTimeLeft = xLogoRight + LogoDecoGap2;
@@ -1891,7 +1902,7 @@ cSkinEnigmaDisplayReplay::cSkinEnigmaDisplayReplay(bool ModeOnly)
// create osd
osd = cOsdProvider::NewOsd(Setup.OSDLeft, Setup.OSDTop + Setup.OSDHeight - yBottomBottom);
tArea Areas[] = { {xTitleLeft, yTitleTop, xBottomRight - 1, yBottomBottom - 1, 8} };
- if (osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk) {
+ if (EnigmaConfig.singleArea && osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk) {
osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
} else {
tArea Areas[] = { {xTitleLeft, yTitleTop, xTitleRight - 1, yTitleDecoBottom - 1, 2},
@@ -1902,8 +1913,10 @@ cSkinEnigmaDisplayReplay::cSkinEnigmaDisplayReplay(bool ModeOnly)
int rc = osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea));
if (rc == oeOk)
osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
- else
+ else {
error("cSkinEnigmaDisplayReplay: CanHandleAreas() returned %d\n", rc);
+ return;
+ }
}
// clear all
osd->DrawRectangle(0, 0, osd->Width(), osd->Height(), clrTransparent);
@@ -2159,7 +2172,7 @@ cSkinEnigmaDisplayVolume::cSkinEnigmaDisplayVolume()
// create osd
osd = cOsdProvider::NewOsd(Setup.OSDLeft, Setup.OSDTop + Setup.OSDHeight - yBottomBottom);
tArea Areas[] = { {xLogoLeft, yLogoTop, xTitleRight - 1, yBottomBottom - 1, 8} };
- if (osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk) {
+ if (EnigmaConfig.singleArea && osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk) {
osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
} else {
tArea Areas[] = { {xLogoLeft, yLogoTop, xLogoRight + LogoDecoGap + LogoDecoWidth - 1, yLogoBottom - 1, 4},
@@ -2168,8 +2181,10 @@ cSkinEnigmaDisplayVolume::cSkinEnigmaDisplayVolume()
int rc = osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea));
if (rc == oeOk)
osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
- else
+ else {
error("cSkinEnigmaDisplayVolume: CanHandleAreas() returned %d (%d, %d)\n", rc, oeWrongAlignment, oeOutOfMemory);
+ return;
+ }
// set colors
osd->GetBitmap(1)->Reset();
osd->GetBitmap(1)->SetColor(0, Theme.Color(clrTransparent));
@@ -2319,7 +2334,7 @@ cSkinEnigmaDisplayTracks::cSkinEnigmaDisplayTracks(const char *Title, int NumTra
// create osd
osd = cOsdProvider::NewOsd(Setup.OSDLeft, Setup.OSDTop + Setup.OSDHeight - yBottomBottom);
tArea Areas[] = { {xTitleLeft, yTitleTop, xBottomRight - 1, yBottomBottom - 1, 8} };
- if (osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk) {
+ if (EnigmaConfig.singleArea && osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk) {
osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
} else {
tArea Areas[] = { {xTitleLeft, yTitleTop, xTitleRight - 1, yTitleDecoBottom- 1, 2},
@@ -2330,8 +2345,10 @@ cSkinEnigmaDisplayTracks::cSkinEnigmaDisplayTracks(const char *Title, int NumTra
int rc = osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea));
if (rc == oeOk)
osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
- else
+ else {
error("cSkinEnigmaDisplayTracks: CanHandleAreas() returned %d\n", rc);
+ return;
+ }
}
// clear all
osd->DrawRectangle(0, 0, osd->Width(), osd->Height(), clrTransparent);
@@ -2476,7 +2493,7 @@ cSkinEnigmaDisplayMessage::cSkinEnigmaDisplayMessage()
// create osd
osd = cOsdProvider::NewOsd(Setup.OSDLeft, Setup.OSDTop + Setup.OSDHeight - yBottomBottom);
tArea Areas[] = { {xLogoLeft, yLogoTop, xBottomRight - 1, yBottomBottom - 1, 8} };
- if (osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk) {
+ if (EnigmaConfig.singleArea && osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk) {
osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
} else {
tArea Areas[] = { {xLogoLeft, yLogoTop, xLogoRight + LogoDecoGap + LogoDecoWidth - 1, yLogoBottom - 1, 4},
@@ -2484,8 +2501,10 @@ cSkinEnigmaDisplayMessage::cSkinEnigmaDisplayMessage()
int rc = osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea));
if (rc == oeOk)
osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
- else
+ else {
error("cSkinEnigmaDisplayMessage: CanHandleAreas() returned %d\n", rc);
+ return;
+ }
}
// clear all
osd->DrawRectangle(0, 0, osd->Width(), osd->Height(), clrTransparent);
diff --git a/i18n.c b/i18n.c
index 68fba2c..39cfbfc 100644
--- a/i18n.c
+++ b/i18n.c
@@ -410,9 +410,9 @@ const tI18nPhrase Phrases[] = {
"", // Italiano
"", // Nederlands
"", // Português
- "", // Français
+ "Afficher le temps écoulé/restant", // Français
"", // Norsk
- "", // suomi (Finnish)
+ "Näytä tapahtuman aika", // suomi (Finnish)
"", // Polski
"", // Español
"", // ÅëëçíéêÜ (Greek)
@@ -432,9 +432,9 @@ const tI18nPhrase Phrases[] = {
"", // Italiano
"", // Nederlands
"", // Português
- "", // Français
+ "restant", // Français
"", // Norsk
- "", // suomi (Finnish)
+ "jäljellä oleva", // suomi (Finnish)
"", // Polski
"", // Español
"", // ÅëëçíéêÜ (Greek)
@@ -454,9 +454,9 @@ const tI18nPhrase Phrases[] = {
"", // Italiano
"", // Nederlands
"", // Português
- "", // Français
+ "écoulé", // Français
"", // Norsk
- "", // suomi (Finnish)
+ "kulunut", // suomi (Finnish)
"", // Polski
"", // Español
"", // ÅëëçíéêÜ (Greek)
@@ -476,9 +476,9 @@ const tI18nPhrase Phrases[] = {
"", // Italiano
"", // Nederlands
"", // Português
- "", // Français
+ "Surface d'infos dans le menu principale", // Français
"", // Norsk
- "", // suomi (Finnish)
+ "Näytä infoalue päävalikossa", // suomi (Finnish)
"", // Polski
"", // Español
"", // ÅëëçíéêÜ (Greek)
@@ -498,9 +498,9 @@ const tI18nPhrase Phrases[] = {
"", // Italiano
"", // Nederlands
"", // Português
- "", // Français
+ "Symbole dans les listes", // Français
"", // Norsk
- "", // suomi (Finnish)
+ "Näytä valintasymboli", // suomi (Finnish)
"", // Polski
"", // Español
"", // ÅëëçíéêÜ (Greek)
@@ -564,9 +564,9 @@ const tI18nPhrase Phrases[] = {
"", // Italiano
"", // Nederlands
"", // Português
- "", // Français
+ "Afficher le VPS", // Français
"", // Norsk
- "", // suomi (Finnish)
+ "Näytä VPS-tieto", // suomi (Finnish)
"", // Polski
"", // Español
"", // ÅëëçíéêÜ (Greek)
@@ -586,9 +586,9 @@ const tI18nPhrase Phrases[] = {
"", // Italiano
"", // Nederlands
"", // Português
- "", // Français
+ "ATTENTION", // Français
"", // Norsk
- "", // suomi (Finnish)
+ "VAROITUS", // suomi (Finnish)
"", // Polski
"", // Español
"", // ÅëëçíéêÜ (Greek)
@@ -608,9 +608,9 @@ const tI18nPhrase Phrases[] = {
"", // Italiano
"", // Nederlands
"", // Português
- "", // Français
+ "Conflit de programmation", // Français
"", // Norsk
- "", // suomi (Finnish)
+ "Päällekkäinen ajastin", // suomi (Finnish)
"", // Polski
"", // Español
"", // ÅëëçíéêÜ (Greek)
@@ -630,9 +630,9 @@ const tI18nPhrase Phrases[] = {
"", // Italiano
"", // Nederlands
"", // Português
- "", // Français
+ "Conflits de programmation", // Français
"", // Norsk
- "", // suomi (Finnish)
+ "Päällekkäisiä ajastimia", // suomi (Finnish)
"", // Polski
"", // Español
"", // ÅëëçíéêÜ (Greek)
@@ -652,9 +652,9 @@ const tI18nPhrase Phrases[] = {
"", // Italiano
"", // Nederlands
"", // Português
- "", // Français
+ "PROGRAMMATION", // Français
"", // Norsk
- "", // suomi (Finnish)
+ "AJASTIMET", // suomi (Finnish)
"", // Polski
"", // Español
"", // ÅëëçíéêÜ (Greek)
@@ -674,9 +674,9 @@ const tI18nPhrase Phrases[] = {
"", // Italiano
"", // Nederlands
"", // Português
- "", // Français
+ "REPETITION", // Français
"", // Norsk
- "", // suomi (Finnish)
+ "TOISTUVAT TAPAHTUMAT", // suomi (Finnish)
"", // Polski
"", // Español
"", // ÅëëçíéêÜ (Greek)
@@ -696,9 +696,9 @@ const tI18nPhrase Phrases[] = {
"", // Italiano
"", // Nederlands
"", // Português
- "", // Français
+ "*** Chaînes non valable ***", // Français
"", // Norsk
- "", // suomi (Finnish)
+ "*** Virheellinen kanava ***", // suomi (Finnish)
"", // Polski
"", // Español
"", // ÅëëçíéêÜ (Greek)
@@ -718,9 +718,9 @@ const tI18nPhrase Phrases[] = {
"", // Italiano
"", // Nederlands
"", // Português
- "", // Français
+ "Taille", // Français
"", // Norsk
- "", // suomi (Finnish)
+ "Koko", // suomi (Finnish)
"", // Polski
"", // Español
"", // ÅëëçíéêÜ (Greek)
@@ -739,10 +739,10 @@ const tI18nPhrase Phrases[] = {
"", // Slovenski
"", // Italiano
"", // Nederlands
- "", // Português
+ "Muet", // Português
"", // Français
"", // Norsk
- "", // suomi (Finnish)
+ "Mykistetty", // suomi (Finnish)
"", // Polski
"", // Español
"", // ÅëëçíéêÜ (Greek)
@@ -762,9 +762,9 @@ const tI18nPhrase Phrases[] = {
"", // Italiano
"", // Nederlands
"", // Português
- "", // Français
+ "Volume", // Français
"", // Norsk
- "", // suomi (Finnish)
+ "Äänenvoimakkuus", // suomi (Finnish)
"", // Polski
"", // Español
"", // ÅëëçíéêÜ (Greek)
@@ -784,9 +784,31 @@ const tI18nPhrase Phrases[] = {
"", // Italiano
"", // Nederlands
"", // Português
+ "Symbole dans les listes", // Français
+ "", // Norsk
+ "Näytä tapahtumien symbolit",// suomi (Finnish)
+ "", // Polski
+ "", // Español
+ "", // ÅëëçíéêÜ (Greek)
+ "", // Svenska
+ "", // Românã
+ "", // Magyar
+ "", // Català
+ "", // ÀãááÚØÙ (Russian)
+ "", // Hrvatski
+ "", // Eesti
+ "", // Dansk
+ "", // Èesky (Czech)
+ },
+ {"One area (if possible)", // English
+ "Ein Bildbereich (wenn möglich)", // Deutsch
+ "", // Slovenski
+ "", // Italiano
+ "", // Nederlands
+ "", // Português
"", // Français
"", // Norsk
- "", // suomi (Finnish)
+ "Pyri käyttämään yhtä kuva-aluetta",// suomi (Finnish)
"", // Polski
"", // Español
"", // ÅëëçíéêÜ (Greek)
diff --git a/skinenigmang.c b/skinenigmang.c
index e2a6728..f4a1a25 100644
--- a/skinenigmang.c
+++ b/skinenigmang.c
@@ -18,7 +18,7 @@
#error "VDR-1.4.0 API version or greater is required!"
#endif
-static const char VERSION[] = "0.0.1";
+static const char VERSION[] = "0.0.2";
static const char DESCRIPTION[] = "EnigmaNG skin";
class cPluginSkinEnigma : public cPlugin {
@@ -139,6 +139,8 @@ bool cPluginSkinEnigma::SetupParse(const char *Name, const char *Value)
{
// parse your own setup parameters and store their values.
debug("cPluginSkinEnigma::SetupParse()\n");
+ if (!strcasecmp(Name, "TrySingleArea"))
+ EnigmaConfig.singleArea = atoi(Value);
if (!strcasecmp(Name, "ShowAuxInfo"))
EnigmaConfig.showAuxInfo = atoi(Value);
else if (!strcasecmp(Name, "ShowProgressBar"))
@@ -201,6 +203,8 @@ void cPluginSkinEnigmaSetup::Setup(void)
Clear();
+ Add(new cMenuEditBoolItem(tr("One area (if possible)"), &data.singleArea,
+ tr("no"), tr("yes")));
Add(new cMenuEditBoolItem(tr("Show auxiliary information"), &data.showAuxInfo,
tr("top"), tr("bottom")));
Add(new cMenuEditBoolItem(tr("Show remaining/elapsed time"), &data.showRemaining,
@@ -237,6 +241,7 @@ void cPluginSkinEnigmaSetup::Store(void)
// store setup data
debug("cPluginSkinEnigmaSetup::Store()\n");
EnigmaConfig = data;
+ SetupStore("TrySingleArea", EnigmaConfig.singleArea);
SetupStore("ShowAuxInfo", EnigmaConfig.showAuxInfo);
SetupStore("ShowRemaining", EnigmaConfig.showRemaining);
SetupStore("ShowProgressBar", EnigmaConfig.showProgressbar);
diff --git a/symbols/small/eventparttimer.xpm.old b/symbols/small/eventparttimer.xpm.old
deleted file mode 100644
index d9df70e..0000000
--- a/symbols/small/eventparttimer.xpm.old
+++ /dev/null
@@ -1,27 +0,0 @@
-/* XPM */
-static const char *const eventparttimer_xpm[] = {
-"14 22 2 1",
-". c #FFFFFF",
-"+ c #000000",
-"..............",
-"..............",
-"..............",
-"..............",
-"..............",
-"......++......",
-"..++..++..++..",
-"..++.....+++..",
-"........++....",
-".......++.....",
-".++...++++.++.",
-".++...++++.++.",
-"..............",
-"..............",
-"..++......++..",
-"..++..++..++..",
-"......++......",
-"..............",
-"..............",
-"..............",
-"..............",
-".............."};
diff --git a/themes/EnigmaNG-WomansLike.theme b/themes/EnigmaNG-WomenLike.theme
index 4eabbbc..c7309a7 100644
--- a/themes/EnigmaNG-WomansLike.theme
+++ b/themes/EnigmaNG-WomenLike.theme
@@ -1,4 +1,4 @@
-Description = WomansLike
+Description = WomenLike
clrBackground = E5DADEFA
clrAltBackground = E5E6BFE3
clrTitleBg = E5BC41B2