diff options
69 files changed, 1806 insertions, 7275 deletions
@@ -1,6 +1,30 @@ VDR Skin 'EnigmaNG' Revision History ------------------------------------------ +2009-04-25: Version 0.1.0 +- Fixed: Calculating width of events' start times in channel info OSD (Reported by tomglx @vdr-poprtal.de). +- Changed: pause scrolling when text has scrolled all to the left in scroll behaviour "to the left" (Reported by Andreas Brugger). +- Reworked: (simplified) font loading/caching. +- Updated Italian translation (Provided by Diego Pierotto). +- Removed: ENABLE_COPYFONT define. +- Changed: Reduced number of font recreations (Reported by balta @vdr-portal.de). +- Added: more CA systems to text mappings in channel info OSD (Submitted by free-x @vdr-portal.de). +- Added: symbol in channel info OSD if current channel has subtitles. +- Changed: background colors for the DarkBlue theme (Submitted by zulu @vdr-portal.de). +- Added: New option "Show CA system as text". +- Changed: Reduced number of locks while drawing to OSD which increases display speed especially in menu OSD. +- Added: show signal strength and signal-to-noise ratio in channel info OSD (can be disabled by setting SKINENIGMA_DISABLE_SIGNALINFO to 1). +- Fixed: compiler error with certain gcc versions (Reported by C-3PO @ vdr-portal.de). +- Changed: smooth scrolling text (based on skinelchi by Christoph Haubrich <christoph.haubrich (AT) web.de>). +- Removed: SKINENIGMA_DISABLE_ANIMATED_TEXT define. +- Changed: Replace "/" by "~" in channel logo names. +- Added: new setting "Show scrollbar in menu". +- Added: Override VDR's SetTabs() to adopt column widths in menu OSD to selected font size. +- Added: Support subtitle tracks in tracks OSD: logo will only be shown if icons/subtitle/subtitle.xpm exists. +- Fixed: missing logo in tracks OSD while using single area. +- Minor bugfixes and enhancements. +- Requires at least VDR v1.6.0. + 2008-03-09: Version 0.0.6 - Added scrollbar in menu lists when compiled with VDR >= v1.5.15. - Fixed: VDR didn't responde anymore if the font used for lists was too small (<11px) and the marker in front of the active list item has been turned on. @@ -10,7 +34,7 @@ VDR Skin 'EnigmaNG' Revision History - Updated Spanish translation (Submitted by Bittor Corl). - Updated Finnish translation (Submitted by Rolf Ahrenberg). - Fixed crash in EPG details when using epgsearch if channel isn't found. -- Updated Italian translation (Provided by Gringo). +- Updated Italian translation (Provided by Diego Pierotto). - Fix TrueTypeFonts support when compiled with VDR >= v1.5.4. - Use WeekDayNameFull() in VDR >= v1.5.5. - Use "Full Title Width" setting also for Tracks and Replay OSD. @@ -39,7 +63,7 @@ VDR Skin 'EnigmaNG' Revision History - Updated Dutch translation (Provided by dorpsgek @vdr-portal.de). - Don't make info area in mainmenu too small (Requested by vdrchuck @vdr-portal.de). - Save and restore TTF FixedFont (Reported by zulu @vdr-portal.de). -- Updated Italian translation (Provided by Gringo). +- Updated Italian translation (Provided by Diego Pierotto). - Updated French translation (Provided by Pat @vdr-portal.de). 2007-06-25: Version 0.0.5rc3 @@ -54,7 +78,7 @@ VDR Skin 'EnigmaNG' Revision History - Minor bugfixes and enhancements. 2007-06-18: Version 0.0.5rc2 -- Added Italian translation (Submitted by Gringo). +- Added Italian translation (Submitted by Diego Pierotto). - Changed logging to only report missing channel logos once. - Use MAXFONTNAME and MAXFONTSIZE as introduced in VDR 1.5.3. - Recognize VDR >=1.5.3 and disable HAVE_FREETYPE. @@ -1,7 +1,7 @@ # # Makefile for a Video Disk Recorder plugin # -# $Id: Makefile,v 1.24 2008/03/09 08:31:30 amair Exp $ +# $Id: Makefile,v 1.31 2009/04/06 09:46:27 amair Exp $ # This turns usage of logos in the main menu complete. This might also # improve the performance of the menus. EXPERIMENTAL!!! @@ -26,18 +26,9 @@ SKINENIGMA_USE_PLUGIN_MAILBOX = 1 # - Display current WSS mode in channel info and replay OSDs. SKINENIGMA_USE_PLUGIN_AVARDS = 1 -# Disable any code that is used for scrolling or blinking text. -# NOTE: this is only useful if you want to save some bytes because you -# can disable them in the setup too. -#SKINENIGMA_DISABLE_ANIMATED_TEXT = 1 - -# Set the descriptions for fonts you've patched in VDR. These fonts then -# can be selected in EnigmaNG setup. -# This is NOT the path to TrueType fonts! -#SKINENIGMA_FONTS = "\"Test Font\", \"Test2 Font\"" - -# If you have installed FreeType2 and want to use TrueTypeFonts. -#HAVE_FREETYPE = 1 +# Disable code to show signal strength and signal-to-noise ratio +# in channel info OSD. +#SKINENIGMA_DISABLE_SIGNALINFO = 1 # Strip debug symbols? Set eg. to /bin/true if not #STRIP = strip @@ -67,9 +58,9 @@ TMPDIR = /tmp ### Allow user defined options to overwrite defaults: #TODO CLEAR_BUG_WORKAROUND = 1 -ENABLE_COPYFONT = 1 -include $(VDRDIR)/Make.config +#CXXFLAGS += -Wall -W -Wconversion -Wshadow -Wpointer-arith -Wcast-align -Woverloaded-virtual -Wwrite-strings ### The version number of VDR's plugin API (taken from VDR's "config.h"): APIVERSION = $(shell sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$$/\1/p' $(VDRDIR)/config.h) @@ -113,44 +104,35 @@ ifdef SKINENIGMA_USE_PLUGIN_AVARDS DEFINES += -DUSE_PLUGIN_AVARDS endif +ifdef SKINENIGMA_DISABLE_SIGNALINFO +DEFINES += -DDISABLE_SIGNALINFO +endif + ifdef HAVE_IMAGEMAGICK DEFINES += -DHAVE_IMAGEMAGICK endif DEFINES += -DRECORDING_COVER='"Cover-Enigma"' -ifdef SKINENIGMA_DISABLE_ANIMATED_TEXT -DEFINES += -DDISABLE_ANIMATED_TEXT -endif - ifdef CLEAR_BUG_WORKAROUND DEFINES += -DCLEAR_BUG_WORKAROUND endif -ifdef ENABLE_COPYFONT -DEFINES += -DENABLE_COPYFONT -endif - -DEFINES += -DSKINENIGMA_FONTS=$(SKINENIGMA_FONTS) - ### The object files (add further files here): -OBJS = $(PLUGIN).o enigma.o config.o logo.o i18n.o tools.o status.o texteffects.o setup.o +OBJS = $(PLUGIN).o enigma.o config.o logo.o tools.o status.o texteffects.o setup.o font.o ifdef HAVE_IMAGEMAGICK OBJS += bitmap.o LIBS += -lMagick++ +INCLUDES += -I/usr/include/ImageMagick -I/usr/local/include/ImageMagick endif -ifdef HAVE_FREETYPE - ifneq ($(shell which freetype-config),) - INCLUDES += $(shell freetype-config --cflags) - LIBS += $(shell freetype-config --libs) - else - INCLUDES += -I/usr/include/freetype -I/usr/local/include/freetype - LIBS += -lfreetype - endif - DEFINES += -DHAVE_FREETYPE - OBJS += font.o +ifneq ($(shell which freetype-config),) + INCLUDES += $(shell freetype-config --cflags) + LIBS += $(shell freetype-config --libs) +else + INCLUDES += -I/usr/include/freetype -I/usr/local/include/freetype + LIBS += -lfreetype endif ### The main target: @@ -176,47 +158,25 @@ $(DEPFILE): Makefile PODIR = po LOCALEDIR = $(VDRDIR)/locale I18Npo = $(wildcard $(PODIR)/*.po) -I18Nmo = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file)))) -I18Ndirs = $(notdir $(foreach file, $(I18Npo), $(basename $(file)))) +I18Nmsgs = $(addprefix $(LOCALEDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file)))))) I18Npot = $(PODIR)/$(PLUGIN).pot -I18Nvdrmo = vdr-$(PLUGIN).mo -ifeq ($(strip $(APIVERSION)),1.5.7) - I18Nvdrmo = $(PLUGIN).mo -endif %.mo: %.po msgfmt -c -o $@ $< -$(I18Npot): $(subst i18n.c,,$(wildcard *.c)) - xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<andreas@vdr-developer.org>' -o $@ $(subst i18n.c,,$(wildcard *.c)) +$(I18Npot): $(wildcard *.c) + xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<andreas@vdr-developer.org>' -o $@ $^ -$(I18Npo): $(I18Npot) +%.po: $(I18Npot) msgmerge -U --no-wrap --no-location --backup=none -q $@ $< + @touch $@ -ifneq ($(strip $(VDRLOCALE)),) -### do gettext based i18n stuff - -i18n: $(I18Nmo) - @mkdir -p $(LOCALEDIR) - for i in $(I18Ndirs); do\ - mkdir -p $(LOCALEDIR)/$$i/LC_MESSAGES;\ - cp $(PODIR)/$$i.mo $(LOCALEDIR)/$$i/LC_MESSAGES/$(I18Nvdrmo);\ - done - -i18n.c: i18n-template.c - @cp i18n-template.c i18n.c - -else ### do i18n.c based i18n stuff - -i18n: - @### nothing to do - -#i18n compatibility generator: -i18n.c: i18n-template.c buildtools/po2i18n.pl $(I18Npo) - buildtools/po2i18n.pl < i18n-template.c > i18n.c - -endif +$(I18Nmsgs): $(LOCALEDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo + @mkdir -p $(dir $@) + cp $< $@ +.PHONY: i18n +i18n: $(I18Nmsgs) $(I18Npot) ### Targets: @@ -227,7 +187,7 @@ ifndef SKINENIGMA_DEBUG endif @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION) -dist: clean i18n.c +dist: clean @-rm -rf $(TMPDIR)/$(ARCHIVE) @mkdir $(TMPDIR)/$(ARCHIVE) @cp -a * $(TMPDIR)/$(ARCHIVE) @@ -236,4 +196,4 @@ dist: clean i18n.c @echo Distribution package created as $(PACKAGE).tgz clean: - @-rm -f $(OBJS) $(DEPFILE) i18n.c *.so *.tgz core* *~ $(PODIR)/*.mo $(PODIR)/*.pot + @-rm -f $(OBJS) $(DEPFILE) *.so *.tgz core* *~ $(PODIR)/*.mo $(PODIR)/*.pot @@ -12,7 +12,7 @@ See the file COPYING for license information. Requirements ------------ -- VDR version >= 1.4.0. +- VDR version >= 1.6.0. - Logo pack from http://andreas.vdr-developer.org/enigmang @@ -49,27 +49,8 @@ HAVE_IMAGEMAGICK = 1 If you have installed ImageMagick and want to use images in event's and recording's details. -SKINENIGMA_DISABLE_ANIMATED_TEXT = 1 -Disable any code that is used for scrolling or blinking text. -NOTE: this is only useful if you want to save some bytes because you -can disable them in the setup too. - -SKINENIGMA_FONTS = -Set the descriptions for fonts you've patched in VDR. These fonts then -can be selected in EnigmaNG setup. -NOTE: This is NOT the path to your TrueType fonts!!! - -HAVE_FREETYPE = 1 -If you have installed FreeType2 and want to use TrueTypeFonts. - - -Patches -------- - -In the patches directory you'll find patches that might be of interest -to you before compiling. Just check it out! -Every patch (*.diff) has a corresponding description (*.txt). Read it -for more information. +SKINENIGMA_DISABLE_SIGNALINFO = 1 +Do not include code to show signal strength and signal-to-noise ratio. Installation @@ -179,6 +160,14 @@ Setup Options - Show VPS Hide or show VPS information in channel info and event info. +- Show signal info + If set to yes the signal strength (top) and signal-to-noise ratio (bottom) + will be shown at the bottom right side of the channel info OSD. + +- Show CA system as text + Show used CA system (e.g. Cryptoworks) as text instead of symbol in the + channel info OSD. + - Show progressbar This replaces progressbars shown with pipes (e.g. [|| ]) by a graphical progressbar. @@ -194,6 +183,10 @@ Setup Options Free last line - The same as "Last line" but now the available list items is reduced by one. +- Show scrollbar in menu (no/yes/if required) + Disable or enable the scrollbar in the menu OSD. If set to "if required" the + scrollbar will only be visible if scrolling is possible. + * Logos & Symbols @@ -268,7 +261,6 @@ Setup Options The number of logos/symbols to keep in the cache. * Animated Text - NOTE: only visible if SKINENIGMA_DISABLE_ANIMATED_TEXT is not set - Enable This option enables scrolling of long lines and blinking of some text. @@ -287,12 +279,12 @@ Setup Options At the moment these areas cover the title and subtitle in the EPGs and recordings details and the message in the message OSD. -- Scoll behaviour (to the left/left and right) +- Scroll behaviour (to the left/left and right) Text can either scroll from the left to right and then start again at the left or it can scroll from the left to the right and then back from the right to the left (ping pong). -- Scroll delay (ms) (50 - 1000) +- Scroll delay (ms) (3 - 1000) The number of milliseconds to wait before the scrolling text is moved. - Scroll pause (ms) (500 - 2000) @@ -327,9 +319,9 @@ Setup Options - Replay: times - Fixed Font Set the font for the named area. - If you have set HAVE_FREETYPE you can set the TrueTypeFont to use by pressing - the blue key. Then you can select one of the TrueTypeFonts found in EnigmaNG's - font directory (see above) and set it's size and width. + You can set the TrueTypeFont to use by pressing the blue key. + Then you can select one of the TrueTypeFonts known to fontconfig + and set it's size and width. * EPGSearch NOTE: only visible if epgsearch support is compiled in @@ -373,7 +365,7 @@ Credits - Rolf Ahrenberg for the Soppalusikka skin where I've lent some code. http://www.saunalahti.fi/~rahrenbe/vdr/soppalusikka/ -- Andreas Burger for the original "Enigma" for Text2Skin and his Text2Skin patches. +- Andreas Brugger for the original "Enigma" for Text2Skin and his Text2Skin patches. http://brougs78.vdr-developer.org/ http://www.vdr-portal.de/board/thread.php?threadid=28730 http://www.vdr-wiki.de/wiki/index.php/Entwicklung_-_Tipps_und_Tricks @@ -409,8 +401,26 @@ Credits http://www.vdr-portal.de/board/thread.php?postid=619867#post619867 - The translation team: - See i18n-template.c. - -- Udo Richter (udo_richter @gmx.de) for po2i18n.pl. + English: Andreas Mair <andreas _@_ vdr-developer.org> + Deutsch: Andreas Mair <andreas _@_ vdr-developer.org> + Italiano: Diego Pierotto <vdr-italian _@_ tiscali.it> + Nederlands: Johan Schuring <dorpsgek @vdr-portal.de> + Fran�ais: Patrice Staudt <pat @vdr-portal.de> + Finnish: Rolf Ahrenberg <rofafor @vdr-portal.de> + Polski: ??? + Espa�ol: bittor from open7x0.org <bittor7x0 _at_ gmail.com> + Svenska: ??? + Russian: SergArb @vdr-portal.de / neptunvasja @vdr-portal.de + Eesti: ??? + Dansk: ??? + Czech: ??? + T�rk�e: n/a + +- Udo Richter (udo_richter @gmx.de) for po2i18n.pl (used in EnigmaNG < 0.1.0). http://www.udo-richter.de/vdr/scripts.en.html#po2i18n + +- Christoph Haubrich <christoph.haubrich (AT) web.de> for skinelchi where I've + lent some code. + http://firefly.vdr-developer.org/skinelchi/ + // vim:et:sw=2:ts=2: @@ -48,6 +48,9 @@ bool cOSDImageBitmap::DrawMagick(const char *Filename, int x, int y, int width, case 2: image.zoom(Geometry(width, height)); break; + default: + esyslog("ERROR: unknown resize mode %d", EnigmaConfig.resizeImages); + break; } } geo = image.size(); @@ -68,10 +71,10 @@ bool cOSDImageBitmap::DrawMagick(const char *Filename, int x, int y, int width, const PixelPacket *pix = image.getConstPixels(0, 0, w, h); for (int iy = 0; iy < h; ++iy) { for (int ix = 0; ix < w; ++ix) { - tColor col = (~(pix->opacity * 255 / MaxRGB) << 24) - | ((pix->red * 255 / MaxRGB) << 16) - | ((pix->green * 255 / MaxRGB) << 8) - | (pix->blue * 255 / MaxRGB); + tColor col = (~(int)(pix->opacity * 255 / MaxRGB) << 24) + | ((int)(pix->red * 255 / MaxRGB) << 16) + | ((int)(pix->green * 255 / MaxRGB) << 8) + | (int)(pix->blue * 255 / MaxRGB); bmp->DrawPixel(x + ix, y + iy, col); ++pix; } diff --git a/buildtools/po2i18n.pl b/buildtools/po2i18n.pl deleted file mode 100755 index b210fe5..0000000 --- a/buildtools/po2i18n.pl +++ /dev/null @@ -1,158 +0,0 @@ -#!/usr/bin/perl -# -# po2i18n - Convert plugin po files in into i18n.c-format -# -# Written by: Udo Richter <udo_richter@gmx.de> -# Project's homepage: http://www.udo-richter.de/vdr/scripts.html#po2i18n -# http://www.udo-richter.de/vdr/scripts.en.html#po2i18n -# - -use strict; -use warnings; - -my @LANGS = ( - "en_US", - "de_DE", - "sl_SI", - "it_IT", - "nl_NL", - "pt_PT", - "fr_FR", - "nn_NO", - "fi_FI", - "pl_PL", - "es_ES", - "el_GR", - "sv_SE", - "ro_RO", - "hu_HU", - "ca_ES", - "ru_RU", - "hr_HR", - "et_EE", - "da_DK", - "cs_CZ", - "tr_TR" - ); - -my %VERS = ( - "en_US" => 10200, - "de_DE" => 10200, - "sl_SI" => 10200, - "it_IT" => 10200, - "nl_NL" => 10200, - "pt_PT" => 10200, - "fr_FR" => 10200, - "nn_NO" => 10200, - "fi_FI" => 10200, - "pl_PL" => 10200, - "es_ES" => 10200, - "el_GR" => 10200, - "sv_SE" => 10200, - "ro_RO" => 10200, - "hu_HU" => 10200, - "ca_ES" => 10200, - "ru_RU" => 10302, - "hr_HR" => 10307, - "et_EE" => 10313, - "da_DK" => 10316, - "cs_CZ" => 10342, - "tr_TR" => 10502 - ); - - -my %strings; - -foreach my $lang (@LANGS) { $strings{$lang} = { }; } - - -sub LoadLanguage(*) { - my ($lang) = @_; - - if (!open FILE, "<", "po/$lang.po") { - return 0; - } - - my $msgid = ""; - my $msgstr = ""; - my $last = 0; # 0=init, 1=msgid was last, 2=msgstr was last - - while (<FILE>) { - chomp; - my $line = $_; - - if ($line =~ /^msgid "(.*)"$/) { - if ($last eq 2) { - $strings{$lang}->{$msgid} = $msgstr; - $strings{"en_US"}->{$msgid} = $msgid; - } - $msgid = $1; - $last = 1; - } elsif ($line =~ /^msgstr "(.*)"/) { - $msgstr = $1; - $last = 2; - } elsif ($line =~ /^"(.*)"/) { - if ($last eq 1) { - $msgid = $msgid . $1; - } elsif ($last eq 2) { - $msgstr = $msgstr . $1; - } - } - } - if ($last eq 2) { - $strings{$lang}->{$msgid} = $msgstr; - $strings{"en_US"}->{$msgid} = $msgid; - } - - close FILE; -} - - - -foreach my $lang (@LANGS) { - LoadLanguage($lang); -} - -my @msgids = sort keys %{$strings{"en_US"}}; - - -my $silent = 0; - -while (<>) { - my $line = $_; - - if ($line =~ /^\/\/ START I18N/) { - print "// START I18N - automatically generated by po2i18n.pl\n"; - for my $msgid (@msgids) { - next if $msgid eq ""; - - my $head = " { "; - my $endif = ""; - my $versnum = 10200; - - for my $lang (@LANGS) { - if ($VERS{$lang} ne $versnum) { - $versnum = $VERS{$lang}; - print $endif; - print "#if VDRVERSNUM >= $versnum\n"; - $endif = "#endif\n"; - } - my $msgstr = $strings{$lang}->{$msgid}; - $msgstr = "" if !defined $msgstr; - - print "$head\"$msgstr\",\n"; - $head = " "; - } - print $endif; - print " },\n"; - } - $silent = 1; - } - - if (!$silent) { print $line; } - - if ($line =~ /^\/\/ END I18N/) { - print "// END I18N - automatically generated by po2i18n.pl\n"; - $silent = 0; - } -} @@ -13,13 +13,6 @@ #include <vdr/config.h> -// unset HAVE_FREETYPE if VDR 1.5.3 -#ifdef HAVE_FREETYPE -# if VDRVERSNUM == 10503 -# undef HAVE_FREETYPE -# endif -#endif - #ifdef DEBUG #define debug(x...) { printf("EnigmaNG: " x); printf("\n"); } #define error(x...) { fprintf(stderr, "EnigmaNG: " x); fprintf(stderr, "\n"); } @@ -23,15 +23,7 @@ const char *imageExtensionTexts[NUM_IMAGEEXTENSIONTEXTS] = { "xpm", "jpg", "png" cEnigmaConfig EnigmaConfig; -#ifdef HAVE_FREETYPE -# if VDRVERSNUM != 10503 cGraphtftFont FontCache; -# endif -#endif - -#ifndef DISABLE_ANIMATED_TEXT -const cFont *vdrFonts[eDvbFontSize]; -#endif FontConfig allFontConfig[FONT_NUMFONTS] = { @@ -65,13 +57,11 @@ cEnigmaConfig::cEnigmaConfig() : showAuxInfo(1), showLogo(1), showVps(1), showSy imageWidth(120), imageHeight(80), imageExtension(0), fullTitleWidth(0), useTextEffects(0), scrollDelay(50), scrollPause(1500), scrollMode(0), blinkPause(1000), scrollInfo(1), scrollListItem(1), scrollOther(1), scrollTitle(1), - dynOsd(0), statusLineMode(0), showWssSymbols(0), showStatusSymbols(1) + dynOsd(0), statusLineMode(0), showWssSymbols(0), showStatusSymbols(1), showScrollbar(1), + showSignalInfo(1), showCaMode(0) { memset(logoDir, 0, sizeof(logoDir)); memset(strImagesDir, 0, sizeof(strImagesDir)); -#ifdef HAVE_FREETYPE - memset(strFontsDir, 0, sizeof(strFontsDir)); -#endif for (int id = 0; id < FONT_NUMFONTS; id++) { switch (id) { @@ -93,16 +83,10 @@ cEnigmaConfig::cEnigmaConfig() : showAuxInfo(1), showLogo(1), showVps(1), showSy allFonts[id].Width = 100; allFonts[id].Size = 26; } - -#ifndef DISABLE_ANIMATED_TEXT - for (int id = 0; id < eDvbFontSize; id++) - vdrFonts[id] = NULL; -#endif } cEnigmaConfig::~cEnigmaConfig() { - INIT_FONTS; // free allocated fonts } void cEnigmaConfig::SetLogoDir(const char *logodirP) @@ -130,140 +114,46 @@ const char *cEnigmaConfig::GetImageExtension(void) #endif } -#ifdef HAVE_FREETYPE -void cEnigmaConfig::SetFontsDir(const char *dir) -{ - if (dir) { - debug("cEnigmaConfig::SetFontsDir(%s)", dir); - strncpy(strFontsDir, dir, sizeof(strFontsDir)); - } -} -#endif - -#ifndef DISABLE_ANIMATED_TEXT -void cEnigmaConfig::InitFonts(void) -{ - for (int id = 0; id < eDvbFontSize; id++) { - if (vdrFonts[id]) { - delete vdrFonts[id]; - vdrFonts[id] = NULL; - } - } -} -#endif - const cFont *cEnigmaConfig::GetFont(int id) { const cFont *res = NULL; + eDvbFont nVdrId = (eDvbFont)allFonts[id].VdrId; if (::Setup.UseSmallFont == 1) { // if "Use small font" == "skin dependent" - if (allFonts[id].VdrId == FONT_TRUETYPE) { + if (nVdrId == FONT_TRUETYPE) { if (!isempty(allFonts[id].Name)) { -#ifdef HAVE_FREETYPE - char *cachename; -#if VDRVERSNUM < 10503 - asprintf(&cachename, "%s_%d_%d_%d", allFonts[id].Name, allFonts[id].Size, allFonts[id].Width, Setup.OSDLanguage); - if (FontCache.Load(string(strFontsDir) + "/" + string(allFonts[id].Name), cachename, allFonts[id].Size, Setup.OSDLanguage, allFonts[id].Width)) { -#else - asprintf(&cachename, "%s_%d_%d_%s", allFonts[id].Name, allFonts[id].Size, allFonts[id].Width, Setup.OSDLanguage); - if (FontCache.Load(string(allFonts[id].Name), cachename, allFonts[id].Size, allFonts[id].Width)) { -#endif - res = FontCache.GetFont(cachename); - } else { - error("ERROR: EnigmaNG: Couldn't load font %s:%d", allFonts[id].Name, allFonts[id].Size); - } - free(cachename); -#else - error("ERROR: EnigmaNG: Font engine not enabled at compile time!"); -#endif + res = FontCache.GetFont(allFonts[id].Name, allFonts[id].Size, allFonts[id].Width); } - } else if (allFonts[id].VdrId > FONT_TRUETYPE) { -#ifdef DISABLE_ANIMATED_TEXT - res = cFont::GetFont((eDvbFont)(allFonts[id].VdrId - 1)); -#else - res = CopyFont((eDvbFont)(allFonts[id].VdrId - 1)); -#endif } else { -#ifdef DISABLE_ANIMATED_TEXT - res = cFont::GetFont((eDvbFont)allFonts[id].VdrId); -#else - res = CopyFont((eDvbFont)allFonts[id].VdrId); -#endif + if (nVdrId > FONT_TRUETYPE) + nVdrId = (eDvbFont)(nVdrId - 1); } + } else { + if (allFonts[id].Default == fontFix) + nVdrId = fontFix; + if (::Setup.UseSmallFont == 2) + nVdrId = fontSml; + else + nVdrId = fontOsd; + } - if (res == NULL) { -#ifdef DISABLE_ANIMATED_TEXT - res = cFont::GetFont((eDvbFont)allFonts[id].Default); -#else - res = CopyFont((eDvbFont)allFonts[id].Default); -#endif + if (res == NULL) { + switch (nVdrId) { + case fontOsd: res = FontCache.GetFont(Setup.FontOsd, Setup.FontOsdSize); break; + case fontSml: res = FontCache.GetFont(Setup.FontSml, Setup.FontSmlSize); break; + case fontFix: res = FontCache.GetFont(Setup.FontFix, Setup.FontFixSize); break; } } if (res) return res; - else { -#ifdef DISABLE_ANIMATED_TEXT - return cFont::GetFont(::Setup.UseSmallFont == 2 ? fontSml : fontOsd); -#else - return CopyFont(::Setup.UseSmallFont == 2 ? fontSml : fontOsd); -#endif - } -} - -#ifndef DISABLE_ANIMATED_TEXT -const cFont *cEnigmaConfig::CopyFont(eDvbFont vdrId) -{ -# ifdef ENABLE_COPYFONT - if (vdrFonts[vdrId]) { - return vdrFonts[vdrId]; - } - - const cFont *res = NULL; -# if VDRVERSNUM < 10503 - const cFont *src = cFont::GetFont(vdrId); - - int num_rows_global = src->Height(); - int num_rows = num_rows_global + 2; - cFont::tPixelData* font_data = new cFont::tPixelData[225 * num_rows]; - - for (int i = 0; i < 225; i++) { - for (int j = 0; j < num_rows; j++) { - font_data[i * num_rows + j] = 0x0000000000000000; - } - } - font_data[0 + 0] = src->CharData(0)->width; - font_data[0 + 1] = num_rows_global; - - for (int num_char = 33, i = 1; num_char < cFont::NUMCHARS; i++, num_char++) { - const cFont::tCharData *char_data = src->CharData(num_char); - font_data[i * num_rows + 0] = char_data->width; - font_data[i * num_rows + 1] = char_data->height; - for(int j = 0; j < (int)char_data->height; j++) { - cFont::tPixelData Data = (cFont::tPixelData)char_data->lines[j]; - font_data[i * num_rows + 2 + j] = Data; - } - } - - res = new cFont(font_data); -# else - switch (vdrId) { - case fontSml: res = cFont::CreateFont(Setup.FontSml, Setup.FontSmlSize); break; - case fontFix: res = cFont::CreateFont(Setup.FontFix, Setup.FontFixSize); break; - default: res = cFont::CreateFont(Setup.FontOsd, Setup.FontOsdSize); break; - } -# endif - vdrFonts[vdrId] = res; - return res; -# else - return cFont::GetFont(vdrId); -# endif + else + return cFont::GetFont(nVdrId); } -#endif void cEnigmaConfig::SetFont(int id, const char *font) { if (id >= 0 && id < FONT_NUMFONTS && font) { - char *tmp = strrchr(font, ':'); + const char *tmp = strrchr(font, ':'); if (tmp) { strncpy(allFonts[id].Name, font, std::min((int)sizeof(allFonts[id].Name), (int)(tmp - font))); allFonts[id].Size = atoi(tmp + 1); @@ -294,28 +184,13 @@ void cEnigmaConfig::GetOsdSize(struct EnigmaOsdSize *size) size->w = Setup.OSDWidth; size->h = Setup.OSDHeight; -#if VDRVERSNUM >= 10504 if (dynOsd) { size->y = cOsd::OsdTop(); size->x = cOsd::OsdLeft(); size->w = cOsd::OsdWidth(); size->h = cOsd::OsdHeight(); } -#else -# ifdef USE_PLUGIN_AVARDS - if (dynOsd) { - cPlugin *p = cPluginManager::GetPlugin("avards"); - if (p) { - avards_MaxOSDsize_v1_0 OSDsize; - if (p->Service(AVARDS_MAXOSDSIZE_SERVICE_STRING_ID, &OSDsize)) { - size->y = OSDsize.top; - size->x = OSDsize.left; - size->w = OSDsize.width; - size->h = OSDsize.height; - } - } - } -# endif -#endif //VDRVERSNUM >= 10504 + + debug("cEnigmaConfig::GetOsdSize() x=%d(%d) y=%d(%d) w=%d(%d) h=%d(%d)", size->x, Setup.OSDLeft, size->y, Setup.OSDTop, size->w, Setup.OSDWidth, size->h, Setup.OSDHeight); } // vim:et:sw=2:ts=2: @@ -17,9 +17,7 @@ extern const char *imageExtensionTexts[NUM_IMAGEEXTENSIONTEXTS]; #define NUM_IMAGEEXTENSIONTEXTS 0 #endif -#ifdef HAVE_FREETYPE -# include "font.h" -#endif +#include "font.h" #include <vdr/skins.h> #include <vdr/font.h> @@ -31,11 +29,7 @@ extern const char *imageExtensionTexts[NUM_IMAGEEXTENSIONTEXTS]; #define MAXFONTSIZE 64 #endif -#ifdef DISABLE_ANIMATED_TEXT -# define INIT_FONTS -#else -# define INIT_FONTS EnigmaConfig.InitFonts() -#endif +#define INIT_FONTS EnigmaConfig.InitFonts() struct EnigmaOsdSize { @@ -82,8 +76,8 @@ struct FontInfo struct FontConfig { int Id; - char *KeyId; - char *KeyName; + const char *KeyId; + const char *KeyName; }; extern FontConfig allFontConfig[FONT_NUMFONTS]; @@ -93,9 +87,6 @@ struct cEnigmaConfig private: char logoDir[255]; char strImagesDir[255]; -#ifdef HAVE_FREETYPE - char strFontsDir[255]; -#endif public: cEnigmaConfig(); ~cEnigmaConfig(); @@ -103,16 +94,8 @@ public: char *GetLogoDir(void) { return logoDir; } void SetImagesDir(const char *dir); char *GetImagesDir(void) { return strImagesDir; } -#ifdef HAVE_FREETYPE - void SetFontsDir(const char *dir); - char *GetFontsDir(void) { return strFontsDir; } -#endif const char *GetImageExtension(void); const cFont *GetFont(int id); -#ifndef DISABLE_ANIMATED_TEXT - void InitFonts(void); - const cFont *CopyFont(eDvbFont vdrId); -#endif void SetFont(int id, const char *font); void SetFont(int id, int vdrId); void GetOsdSize(struct EnigmaOsdSize *size); @@ -158,6 +141,9 @@ public: int statusLineMode; int showWssSymbols; int showStatusSymbols; + int showScrollbar; + int showSignalInfo; + int showCaMode; FontInfo allFonts[FONT_NUMFONTS]; }; @@ -9,7 +9,6 @@ #include "config.h" #include "enigma.h" #include "logo.h" -#include "i18n.h" #include "status.h" #include "texteffects.h" @@ -27,6 +26,11 @@ #include <vdr/themes.h> #include <vdr/plugin.h> +#ifndef DISABLE_SIGNALINFO +#include <sys/ioctl.h> +#include <linux/dvb/frontend.h> +#endif //DISABLE_SIGNALINFO + #ifdef USE_PLUGIN_EPGSEARCH #include "services/epgsearch.h" #endif @@ -60,6 +64,7 @@ #include "symbols/small/dolbydigital.xpm" #include "symbols/small/encrypted.xpm" #include "symbols/small/teletext.xpm" +#include "symbols/small/subtitle.xpm" #include "symbols/small/vps.xpm" #include "symbols/small/radio.xpm" #include "symbols/small/recording.xpm" @@ -78,12 +83,6 @@ #include "symbols/small/v_16_9.xpm" #endif -#if VDRVERSNUM < 10505 -static const char *strWeekdays[] = {trNOOP("Sunday"), trNOOP("Monday"), trNOOP("Tuesday"), trNOOP("Wednesday"), trNOOP("Thursday"), trNOOP("Friday"), trNOOP("Saturday")}; -#define WEEKDAY(n) tr(strWeekdays[n]) -#else -#define WEEKDAY(n) WeekDayNameFull(n) -#endif static cBitmap bmEventPartTimer(eventparttimer_xpm); static cBitmap bmEventTimer(eventtimer_xpm); @@ -103,6 +102,7 @@ static cBitmap bmEncrypted(encrypted_xpm); static cBitmap bmRadio(radio_xpm); static cBitmap bmRecording(recording_xpm); static cBitmap bmTeletext(teletext_xpm); +static cBitmap bmSubtitle(subtitle_xpm); static cBitmap bmVPS(vps_xpm); static cBitmap bmRun(run_xpm); static cBitmap bmTimer(timer_xpm); @@ -222,10 +222,19 @@ THEME_CLR(Theme, clrReplayProgressRest, 0xE5DEE5FA); THEME_CLR(Theme, clrReplayProgressSelected, 0xFF4158BC); THEME_CLR(Theme, clrReplayProgressMark, 0xFF4158BC); THEME_CLR(Theme, clrReplayProgressCurrent, 0xFFFF0000); +#ifndef DISABLE_SIGNALINFO +// Channel info +THEME_CLR(Theme, clrSignalHighFg, 0xFF11BB10); +THEME_CLR(Theme, clrSignalMediumFg, 0xFFC4C400); +THEME_CLR(Theme, clrSignalLowFg, 0xFFCC0000); +#endif //DISABLE_SIGNALINFO + #define MIN_DATEWIDTH 144 // Minimum progress bar width in channel info #define MIN_CI_PROGRESS 124 +// Minimum signal bar width in channel info +#define MIN_CI_SIGNALBAR 74 #define TinyGap 1 #define SmallGap 2 @@ -250,20 +259,20 @@ THEME_CLR(Theme, clrReplayProgressCurrent, 0xFFFF0000); // --- cSkinEnigmaDisplayChannel -------------------------------------------- -class cSkinEnigmaDisplayChannel : public cSkinDisplayChannel, public cSkinEnigmaBaseOsd, public cSkinEnigmaThreadedOsd { +class cSkinEnigmaDisplayChannel : public cSkinDisplayChannel, public cSkinEnigmaBaseOsd { private: bool fShowLogo; bool fWithInfo; char *strLastDate; int nMessagesShown; -#ifndef DISABLE_ANIMATED_TEXT bool fScrollTitle; bool fScrollOther; bool fLocked; + bool fLockNeeded; int idTitle; int idEvTitle; int idEvSubTitle; -#endif + int nBPP; const cFont *pFontOsdTitle; const cFont *pFontDate; @@ -279,11 +288,20 @@ private: int xBottomLeft, xBottomRight, yBottomTop, yBottomBottom; int xMessageLeft, xMessageRight, yMessageTop, yMessageBottom; int xFirstSymbol, xDateLeft; +#ifndef DISABLE_SIGNALINFO + int xSignalBarLeft, nStrBarWidth, nSnrBarWidth; + int m_Frontend; + cTimeMs UpdateSignalTimer; +#endif //DISABLE_SIGNALINFO void DrawAreas(void); void DrawGroupInfo(const cChannel *Channel, int Number); void DrawChannelInfo(const cChannel *Channel, int Number); void DrawSymbols(const cChannel *Channel); +#ifndef DISABLE_SIGNALINFO + int GetSignal(int &str, int &snr, fe_status_t &status); + void UpdateSignal(void); +#endif //DISABLE_SIGNALINFO cString GetChannelName(const cChannel *Channel); cString GetChannelNumber(const cChannel *Channel, int Number); public: @@ -293,15 +311,12 @@ public: virtual void SetEvents(const cEvent *Present, const cEvent *Following); virtual void SetMessage(eMessageType Type, const char *Text); virtual void Flush(void); - virtual void DrawTitle(const char *Title); }; cSkinEnigmaDisplayChannel::cSkinEnigmaDisplayChannel(bool WithInfo) { debug("cSkinEnigmaDisplayChannel::cSkinEnigmaDisplayChannel(%d)", WithInfo); - INIT_FONTS; - fWithInfo = WithInfo; struct EnigmaOsdSize OsdSize; EnigmaConfig.GetOsdSize(&OsdSize); @@ -315,15 +330,21 @@ cSkinEnigmaDisplayChannel::cSkinEnigmaDisplayChannel(bool WithInfo) fShowLogo = EnigmaConfig.showLogo; xFirstSymbol = 0; +#ifndef DISABLE_SIGNALINFO + xSignalBarLeft = EnigmaConfig.showSignalInfo ? 0 : -1; + nStrBarWidth = 10000; + nSnrBarWidth = 10000; + m_Frontend = -1; + UpdateSignalTimer.Set(); +#endif //DISABLE_SIGNALINFO nMessagesShown = 0; strLastDate = NULL; -#ifndef DISABLE_ANIMATED_TEXT fScrollTitle = EnigmaConfig.useTextEffects && EnigmaConfig.scrollTitle; fScrollOther = EnigmaConfig.useTextEffects && EnigmaConfig.scrollOther; idTitle = -1; idEvTitle = -1; idEvSubTitle = -1; -#endif + nBPP = 1; int MessageHeight = 2 * SmallGap + pFontMessage->Height() + 2 * SmallGap; int LogoSize = 0; @@ -382,12 +403,14 @@ cSkinEnigmaDisplayChannel::cSkinEnigmaDisplayChannel(bool WithInfo) // create osd osd = cOsdProvider::NewOsd(OsdSize.x, OsdSize.y + (Setup.ChannelInfoPos ? 0 : (OsdSize.h - yBottomBottom)) ); - tArea Areas[] = { {0, 0, xBottomRight - 1, yBottomBottom - 1, fShowLogo || EnigmaConfig.showFlags ? 8 : 4} }; - if ((Areas[0].bpp < 8 || EnigmaConfig.singleArea8Bpp) && osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk) { - debug("cSkinEnigmaDisplayChannel: using %dbpp single area", Areas[0].bpp); - osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea)); + tArea SingleArea[] = { {0, 0, xBottomRight - 1, yBottomBottom - 1, fShowLogo || EnigmaConfig.showFlags ? 8 : 4} }; + if ((SingleArea[0].bpp < 8 || EnigmaConfig.singleArea8Bpp) && osd->CanHandleAreas(SingleArea, sizeof(SingleArea) / sizeof(tArea)) == oeOk) { + debug("cSkinEnigmaDisplayChannel: using %dbpp single area", SingleArea[0].bpp); + osd->SetAreas(SingleArea, sizeof(SingleArea) / sizeof(tArea)); // clear all osd->DrawRectangle(0, 0, osd->Width(), osd->Height(), clrTransparent); + if (SingleArea[0].bpp >=8 && Setup.AntiAlias) + nBPP = 8; } else { debug("cSkinEnigmaDisplayChannel: using multiple areas"); if (fShowLogo) { @@ -424,25 +447,26 @@ cSkinEnigmaDisplayChannel::cSkinEnigmaDisplayChannel(bool WithInfo) } } -#ifndef DISABLE_ANIMATED_TEXT + fLockNeeded = (fScrollTitle || fScrollOther); fLocked = false; - if (fScrollTitle || fScrollOther) { - TE_START(osd); + TE_START(osd); + if (fLockNeeded) { fLocked = true; } -#endif } cSkinEnigmaDisplayChannel::~cSkinEnigmaDisplayChannel() { debug("cSkinEnigmaDisplayChannel::~cSkinEnigmaDisplayChannel()"); -#ifndef DISABLE_ANIMATED_TEXT - if (fScrollTitle || fScrollOther) { - if (!fLocked) TE_LOCK; - TE_STOP; - } -#endif + if (fLockNeeded && !fLocked) TE_LOCK; + TE_STOP; + +#ifndef DISABLE_SIGNALINFO + if (m_Frontend >= 0) + close(m_Frontend); +#endif //DISABLE_SIGNALINFO + free(strLastDate); delete osd; } @@ -485,39 +509,12 @@ void cSkinEnigmaDisplayChannel::DrawAreas(void) xBottomRight - 1, yBottomBottom - 1, clrTransparent, -4); } -void cSkinEnigmaDisplayChannel::DrawGroupInfo(const cChannel *Channel, int Number) +void cSkinEnigmaDisplayChannel::DrawGroupInfo(const cChannel *Channel, int /* Number */) { DrawAreas(); -#ifndef DISABLE_ANIMATED_TEXT - if (fScrollTitle) { - int xName = (fShowLogo && EnigmaConfig.fullTitleWidth ? xEventNowLeft : xTitleLeft + Roundness + pFontOsdTitle->Width("0000-") + Gap); - idTitle = TE_TITLE(osd, idTitle, GetChannelName(Channel), xDateLeft - SmallGap - xName, this); - } else -#endif - DrawTitle(GetChannelName(Channel)); -} - -void cSkinEnigmaDisplayChannel::DrawTitle(const char *Title) -{ - //Must be TE_LOCKed by caller - - int xName = (fShowLogo && EnigmaConfig.fullTitleWidth && fWithInfo ? xEventNowLeft : xTitleLeft + Roundness + pFontOsdTitle->Width("0000-") + Gap); - // draw titlebar - osd->DrawRectangle(xName, yTitleTop, xDateLeft - SmallGap - 1, yTitleBottom - 1, - Theme.Color(clrTitleBg)); - osd->DrawRectangle(xName, yTitleDecoTop, xDateLeft - SmallGap - 1, - yTitleDecoBottom - 1, Theme.Color(clrTitleBg)); - if (Title) { - int y = yTitleTop + (yTitleBottom - yTitleTop - pFontOsdTitle->Height()) / 2; - // draw channel group name - osd->DrawText(xName + 3, y + 3, Title, - Theme.Color(clrTitleShadow), clrTransparent, pFontOsdTitle, - xDateLeft - SmallGap - xName - 3, yTitleBottom - y - 3); - osd->DrawText(xName, y, Title, - Theme.Color(clrTitleFg), clrTransparent, pFontOsdTitle, - xDateLeft - SmallGap - xName - 3, yTitleBottom - y); - } + int xName = (fShowLogo && EnigmaConfig.fullTitleWidth ? xEventNowLeft : xTitleLeft + Roundness + pFontOsdTitle->Width("0000-") + Gap); + idTitle = TE_MARQUEE(osd, idTitle, fScrollTitle, xName, yTitleTop + (yTitleBottom - yTitleTop - pFontOsdTitle->Height()) / 2, GetChannelName(Channel), Theme.Color(clrTitleFg), Theme.Color(clrTitleBg), pFontOsdTitle, nBPP, xDateLeft - SmallGap - xName); } void cSkinEnigmaDisplayChannel::DrawChannelInfo(const cChannel *Channel, int Number) @@ -532,20 +529,12 @@ void cSkinEnigmaDisplayChannel::DrawChannelInfo(const cChannel *Channel, int Num } // draw channel number - osd->DrawText(xNumber + 3, yTitleTop + 3, GetChannelNumber(Channel, Number), - Theme.Color(clrTitleShadow), clrTransparent, pFontOsdTitle, - xName - xNumber - Gap - 3, yTitleBottom - yTitleTop - 3, taCenter); osd->DrawText(xNumber, yTitleTop, GetChannelNumber(Channel, Number), Theme.Color(clrTitleFg), clrTransparent, pFontOsdTitle, xName - xNumber - Gap, yTitleBottom - yTitleTop, taCenter); // draw channel name -#ifndef DISABLE_ANIMATED_TEXT - if (fScrollTitle) { - idTitle = TE_TITLE(osd, idTitle, GetChannelName(Channel), xDateLeft - SmallGap - xName, this); - } else -#endif - DrawTitle(GetChannelName(Channel)); + idTitle = TE_MARQUEE(osd, idTitle, fScrollTitle, xName, yTitleTop + (yTitleBottom - yTitleTop - pFontOsdTitle->Height()) / 2, GetChannelName(Channel), Theme.Color(clrTitleFg), Theme.Color(clrTitleBg), pFontOsdTitle, nBPP, xDateLeft - SmallGap - xName); if (fWithInfo && EnigmaConfig.showStatusSymbols) DrawSymbols(Channel); @@ -558,6 +547,13 @@ void cSkinEnigmaDisplayChannel::DrawSymbols(const cChannel *Channel) int xs = xBottomRight - Roundness; // bottom edge of logo int ys = yBottomTop + (yBottomBottom - yBottomTop - SymbolHeight) / 2; + +#ifndef DISABLE_SIGNALINFO + UpdateSignal(); + if (xSignalBarLeft >= 0) + xs = xSignalBarLeft - Gap; +#endif //DISABLE_SIGNALINFO + bool isvps = false; if (EnigmaConfig.showVps) { // check if vps @@ -592,6 +588,13 @@ void cSkinEnigmaDisplayChannel::DrawSymbols(const cChannel *Channel) Theme.Color(clrBottomBg), Theme.Color(Channel->Dpid(0) ? clrSymbolActive : clrSymbolInactive)); } + if (Channel->Spid(0)) { //TODO? option to display inactive symbols + // draw subtitle symbol + xs -= (bmSubtitle.Width() + SmallGap); + osd->DrawBitmap(xs, ys, bmSubtitle, + Theme.Color(clrBottomBg), Theme.Color(Channel->Spid(0) ? clrSymbolActive : clrSymbolInactive)); + } + if (isvps && EnigmaConfig.showVps) { //TODO? option to display inactive symbols // draw vps symbol xs -= (bmVPS.Width() + SmallGap); @@ -610,16 +613,134 @@ void cSkinEnigmaDisplayChannel::DrawSymbols(const cChannel *Channel) Theme.Color(clrBottomBg), Theme.Color(Channel->Apid(0) ? clrSymbolActive : clrSymbolInactive)); } - if (Channel->Ca()) { //TODO? option to display inactive symbols - // draw encryption symbol - xs -= (bmEncrypted.Width() + SmallGap); - osd->DrawBitmap(xs, ys, bmEncrypted, - Theme.Color(clrBottomBg), Theme.Color(Channel->Ca() ? clrSymbolActive : clrSymbolInactive)); + if (EnigmaConfig.showCaMode == 0) { + if (Channel->Ca()) { //TODO? option to display inactive symbols + // draw encryption symbol + xs -= (bmEncrypted.Width() + SmallGap); + osd->DrawBitmap(xs, ys, bmEncrypted, + Theme.Color(clrBottomBg), Theme.Color(Channel->Ca() ? clrSymbolActive : clrSymbolInactive)); + } + } else { + const char *strCA = NULL; + switch (Channel->Ca()) { + case 0x0000: /* Free-To-Air */ strCA = tr("Free-To-Air"); break; + case 0x0001 ... 0x000F: /* Reserved */ break; + case 0x0100 ... 0x01FF: /* Canal Plus */ strCA = "Seca"; break; + case 0x0500 ... 0x05FF: /* France Telecom */ strCA = "Viaccess"; break; + case 0x0600 ... 0x06FF: /* Irdeto */ strCA = "Irdeto"; break; + case 0x0900 ... 0x09FF: /* News Datacom */ strCA = "NDS"; break; + case 0x0B00 ... 0x0BFF: /* Norwegian Telekom */ strCA = "Conax"; break; + case 0x0D00 ... 0x0DFF: /* Philips */ strCA = "Cryptoworks"; break; + case 0x0E00 ... 0x0EFF: /* Scientific Atlanta */ strCA = "Powervu"; break; + case 0x1200 ... 0x12FF: /* BellVu Express */ strCA = "Nagravision"; break; + case 0x1700 ... 0x17FF: /* BetaTechnik */ strCA = "Betacrypt"; break; + case 0x1800 ... 0x18FF: /* Kudelski SA */ strCA = "Nagravision"; break; + case 0x2200 ... 0x22FF: /* Scopus */ strCA = "CodiCrypt"; break; + case 0x2600 : /* EBU */ strCA = "BISS"; break; + case 0x4A20 ... 0x4A2F: /* AlphaCrypt */ strCA = "AlphaCrypt"; break; + case 0x4A60 ... 0x4A6F: /* @Sky */ strCA = "Skycrypt"; break; + case 0x4A70 ... 0x4A7F: /* Dreamcrypt */ strCA = "DreamCrypt"; break; + case 0x4A80 ... 0x4A8F: /* THALESCrypt */ strCA = "ThalesCrypt"; break; + case 0x4AA0 ... 0x4AAF: /* SIDSA */ strCA = "KeyFly"; break; + case 0x4AD0 ... 0x4AD1: /* XCrypt Inc */ strCA = "XCrypt"; break; + case 0x4AE0 ... 0x4AE1: /* Digi Raum Electronics */ strCA = "DRE-Crypt"; break; + default: strCA = tr("encrypted"); break; + } + if (strCA) { + xs -= (pFontLanguage->Width(strCA) + SmallGap); + osd->DrawText(xs, yBottomTop + SmallGap , strCA, + Theme.Color(clrSymbolActive), Theme.Color(clrBottomBg), pFontLanguage, + pFontLanguage->Width(strCA), yBottomBottom - SmallGap); + } } xFirstSymbol = DrawStatusSymbols(xBottomLeft + Roundness + MIN_CI_PROGRESS + Gap, xs, yBottomTop, yBottomBottom, Channel) - Gap; } +#ifndef DISABLE_SIGNALINFO +#define FRONTEND_DEVICE "/dev/dvb/adapter%d/frontend%d" + +int cSkinEnigmaDisplayChannel::GetSignal(int &str, int &snr, fe_status_t & /* status */) { + if (m_Frontend < 0) { + str = 0; + snr = 0; + + int const cardIndex = cDevice::ActualDevice()->CardIndex(); + static char dev[256]; + + sprintf(dev, FRONTEND_DEVICE, cardIndex, 0); + m_Frontend = open(dev, O_RDONLY | O_NONBLOCK); + if (m_Frontend < 0) + return -1; + } else if (UpdateSignalTimer.Elapsed() < 500) { + return 0; + } + + ::ioctl(m_Frontend, FE_READ_SIGNAL_STRENGTH, &str); + ::ioctl(m_Frontend, FE_READ_SNR, &snr); + UpdateSignalTimer.Set(); + + return 0; +} + +void cSkinEnigmaDisplayChannel::UpdateSignal() { + if (xSignalBarLeft < 0) + return; + + int str = 0; + int snr = 0; + fe_status_t status; + if (GetSignal(str, snr, status) < 0) + { + xSignalBarLeft = -1; + return; + } + + if (snr == 0 && str == 0) + return; + + xSignalBarLeft = xBottomRight - Roundness - MIN_CI_SIGNALBAR; + + int bw = MIN_CI_SIGNALBAR; //45; + int xSignalBarRight = xSignalBarLeft + bw; + + str = str * bw / 0xFFFF; + snr = snr * bw / 0xFFFF; + + if (str != nStrBarWidth || snr != nSnrBarWidth) { + nStrBarWidth = str; + nSnrBarWidth = snr; + + int h = int((yBottomBottom - Gap - yBottomTop - Gap - Gap ) / 2); + int yStr = yBottomTop + Gap; + int ySnr = yStr + h + Gap; + + // Draw Background + osd->DrawRectangle(xSignalBarLeft, yStr, xSignalBarRight - 1, yStr + h , Theme.Color(clrBotProgBarBg)); + osd->DrawRectangle(xSignalBarLeft, ySnr, xSignalBarRight - 1, ySnr + h , Theme.Color(clrBotProgBarBg)); + + // Draw Foreground + int signalFgColor = Theme.Color(clrSignalHighFg); + if (str <= 0.5 * bw) // low signal : RED + signalFgColor = Theme.Color(clrSignalLowFg); + else if (str <= 0.6 * bw) // medium signal : ORANGE + signalFgColor = Theme.Color(clrSignalMediumFg); + + if (str) + osd->DrawRectangle(xSignalBarLeft, yStr , xSignalBarLeft + str - 1, yStr + h , signalFgColor); + + signalFgColor = Theme.Color(clrSignalHighFg); + if (snr <= 0.5 * bw) // low signal : RED + signalFgColor = Theme.Color(clrSignalLowFg); + else if (snr <= 0.6 * bw) // medium signal : ORANGE + signalFgColor = Theme.Color(clrSignalMediumFg); + + if (snr) + osd->DrawRectangle(xSignalBarLeft, ySnr , xSignalBarLeft + snr - 1, ySnr + h , signalFgColor); + } +} +#endif //DISABLE_SIGNALINFO + cString cSkinEnigmaDisplayChannel::GetChannelName(const cChannel *Channel) { char buffer[256]; @@ -652,10 +773,17 @@ void cSkinEnigmaDisplayChannel::SetChannel(const cChannel *Channel, int Number) { debug("cSkinEnigmaDisplayChannel::SetChannel()"); -#ifndef DISABLE_ANIMATED_TEXT - if ((fScrollTitle || fScrollOther) && !fLocked) + if (fLockNeeded && !fLocked) { + fLocked = true; TE_LOCK; -#endif + } + +#ifndef DISABLE_SIGNALINFO + if (m_Frontend >= 0) { + close(m_Frontend); + m_Frontend = -1; + } +#endif //DISABLE_SIGNALINFO xFirstSymbol = 0; free(strLastDate); @@ -684,10 +812,8 @@ void cSkinEnigmaDisplayChannel::SetChannel(const cChannel *Channel, int Number) DrawChannelInfo(Channel, Number); } -#ifndef DISABLE_ANIMATED_TEXT - if ((fScrollTitle || fScrollOther) && !fLocked) + if (fLockNeeded && !fLocked) TE_UNLOCK; -#endif } void cSkinEnigmaDisplayChannel::SetEvents(const cEvent *Present, @@ -699,18 +825,22 @@ void cSkinEnigmaDisplayChannel::SetEvents(const cEvent *Present, return; int xTimeLeft = xEventNowLeft + Gap; - int xTimeWidth = pFontTitle->Width("00:00"); + int wPresent = Present ? pFontTitle->Width(Present->GetTimeString()) : 0; + int wFollowing = Following ? pFontTitle->Width(Following->GetTimeString()) : 0; + int xTimeWidth = std::max(wPresent, wFollowing); + if (xTimeWidth == 0) + xTimeWidth = pFontTitle->Width("00:00"); int lineHeightTitle = pFontTitle->Height(); int lineHeightSubtitle = pFontSubtitle->Height(); -#ifndef DISABLE_ANIMATED_TEXT - if ((fScrollTitle || fScrollOther) && !fLocked) + if (fLockNeeded && !fLocked) { + fLocked = true; TE_LOCK; + } EnigmaTextEffects.ResetText(idEvTitle, Theme.Color(clrMenuTxtFg), Theme.Color(clrBackground), false); EnigmaTextEffects.ResetText(idEvSubTitle, Theme.Color(clrMenuItemNotSelectableFg), Theme.Color(clrBackground), false); idEvTitle = idEvSubTitle = -1; -#endif // check epg datas const cEvent *e = Present; // Current event @@ -747,16 +877,9 @@ void cSkinEnigmaDisplayChannel::SetEvents(const cEvent *Present, Theme.Color(clrMenuTxtFg), Theme.Color(clrBackground), pFontTitle, xTimeWidth); // draw title -#ifndef DISABLE_ANIMATED_TEXT - if (fScrollOther) - idEvTitle = TE_MARQUEE(osd, idEvTitle, xTextLeft, yEventNowTop, e->Title(), - Theme.Color(clrMenuTxtFg), Theme.Color(clrBackground), - pFontTitle, xTextWidth, pFontTitle->Height()); - else -#endif - osd->DrawText(xTextLeft, yEventNowTop, e->Title(), - Theme.Color(clrMenuTxtFg), Theme.Color(clrBackground), - pFontTitle, xTextWidth); + idEvTitle = TE_MARQUEE(osd, idEvTitle, fScrollOther, xTextLeft, yEventNowTop, e->Title(), + Theme.Color(clrMenuTxtFg), Theme.Color(clrBackground), + pFontTitle, nBPP, xTextWidth, pFontTitle->Height()); // draw duration osd->DrawText(xDurationLeft, yEventNowTop, sLen, @@ -775,16 +898,9 @@ void cSkinEnigmaDisplayChannel::SetEvents(const cEvent *Present, Theme.Color(clrBackground)); } // draw shorttext -#ifndef DISABLE_ANIMATED_TEXT - if (fScrollOther) - idEvSubTitle = TE_MARQUEE(osd, idEvSubTitle, xTextLeft, yEventNowTop + lineHeightTitle, e->ShortText(), - Theme.Color(clrMenuItemNotSelectableFg), - Theme.Color(clrBackground), pFontSubtitle, xTextWidth, pFontSubtitle->Height()); - else -#endif - osd->DrawText(xTextLeft, yEventNowTop + lineHeightTitle, e->ShortText(), - Theme.Color(clrMenuItemNotSelectableFg), - Theme.Color(clrBackground), pFontSubtitle, xTextWidth); + idEvSubTitle = TE_MARQUEE(osd, idEvSubTitle, fScrollOther, xTextLeft, yEventNowTop + lineHeightTitle, e->ShortText(), + Theme.Color(clrMenuItemNotSelectableFg), + Theme.Color(clrBackground), pFontSubtitle, nBPP, xTextWidth, pFontSubtitle->Height()); // draw duration if ((now < total) && ((now / 60) > 0)) { @@ -795,16 +911,16 @@ void cSkinEnigmaDisplayChannel::SetEvents(const cEvent *Present, } // draw timebar int xBarLeft = xBottomLeft + Roundness; - int xBarWidth = (xFirstSymbol > xBarLeft ? (xFirstSymbol - Gap - xBarLeft) : MIN_CI_PROGRESS); - int x = xBarLeft + SmallGap + (int)(ceil((float)(now) / (float)(total) * (float)(xBarWidth - Gap - SmallGap))); - x = std::min(x, xBarLeft + Gap + xBarWidth - SmallGap - 1); - osd->DrawRectangle(xBarLeft, yBottomTop + SmallGap + SmallGap, - xBarLeft + Gap + xBarWidth - 1, - yBottomBottom - SmallGap - SmallGap - 1, + int xBarWidth = MIN_CI_PROGRESS; + int x = xBarLeft + SmallGap + (int)(ceil((float)(now) / (float)(total) * (float)(xBarWidth - SmallGap - SmallGap))); + x = std::min(x, xBarLeft + xBarWidth - SmallGap - 1); + osd->DrawRectangle(xBarLeft, yBottomTop + Gap, + xBarLeft + xBarWidth - 1, + yBottomBottom - Gap - 1, Theme.Color(clrBotProgBarBg)); osd->DrawRectangle(xBarLeft + SmallGap, - yBottomTop + SmallGap + SmallGap + SmallGap, x, - yBottomBottom - SmallGap - SmallGap - SmallGap - 1, + yBottomTop + Gap + SmallGap, x, + yBottomBottom - Gap - SmallGap - 1, Theme.Color(clrBotProgBarFg)); } @@ -840,29 +956,25 @@ void cSkinEnigmaDisplayChannel::SetEvents(const cEvent *Present, Theme.Color(clrAltBackground), pFontSubtitle, xTextWidth); } -#ifndef DISABLE_ANIMATED_TEXT - if ((fScrollTitle || fScrollOther) && !fLocked) + if (fLockNeeded && !fLocked) TE_UNLOCK; -#endif } void cSkinEnigmaDisplayChannel::SetMessage(eMessageType Type, const char *Text) { debug("cSkinEnigmaDisplayChannel::SetMessage()"); -#ifndef DISABLE_ANIMATED_TEXT - if ((fScrollTitle || fScrollOther) && !fLocked) + if (fLockNeeded && !fLocked) { + fLocked = true; TE_LOCK; -#endif + } // check if message if (Text) { int top = (fWithInfo ? yMessageTop : yEventNowTop); int bottom = (fWithInfo ? yMessageBottom : yEventNextBottom); -#ifndef DISABLE_ANIMATED_TEXT EnigmaTextEffects.PauseEffects(top); -#endif // save osd region if (nMessagesShown == 0) @@ -887,25 +999,20 @@ void cSkinEnigmaDisplayChannel::SetMessage(eMessageType Type, const char *Text) // restore saved osd region if (nMessagesShown == 0) osd->RestoreRegion(); -#ifndef DISABLE_ANIMATED_TEXT + EnigmaTextEffects.PauseEffects(); -#endif } -#ifndef DISABLE_ANIMATED_TEXT - if ((fScrollTitle || fScrollOther) && !fLocked) + if (fLockNeeded && !fLocked) TE_UNLOCK; -#endif } void cSkinEnigmaDisplayChannel::Flush(void) { // debug("cSkinEnigmaDisplayChannel::Flush()"); -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked && (fScrollTitle || fScrollOther)) + if (fLockNeeded && !fLocked) TE_LOCK; -#endif cString date = DayDateTime(); if ((strLastDate == NULL) || strcmp(strLastDate, (const char*)date) != 0) { @@ -917,23 +1024,29 @@ void cSkinEnigmaDisplayChannel::Flush(void) Theme.Color(clrTitleFg), Theme.Color(clrTitleBg), pFontDate, w, yTitleBottom - yTitleTop, taCenter); } +#ifndef DISABLE_SIGNALINFO + UpdateSignal(); +#endif //DISABLE_SIGNALINFO osd->Flush(); -#ifndef DISABLE_ANIMATED_TEXT - if (fScrollTitle || fScrollOther) { + if (fLockNeeded) { TE_UNLOCK; if (fLocked) { fLocked = false; TE_WAKEUP; } } -#endif } // --- cSkinEnigmaDisplayMenu ----------------------------------------------- -class cSkinEnigmaDisplayMenu : public cSkinDisplayMenu, public cSkinEnigmaBaseOsd, public cSkinEnigmaThreadedOsd { +class cSkinEnigmaDisplayMenu : public cSkinDisplayMenu, public cSkinEnigmaBaseOsd { +protected: + int Tab(int n) { return (n >= 0 && n < MaxTabs) ? mytabs[n] : 0; } + private: + int mytabs[MaxTabs]; + const cFont *pFontList; const cFont *pFontOsdTitle; const cFont *pFontHelpKeys; @@ -952,6 +1065,7 @@ private: char *strTitle; char *strLastDate; char *strTheme; + char *strLastText; bool isMainMenu; bool fShowLogo; bool fShowLogoDefault; @@ -974,31 +1088,34 @@ private: int nMessagesShown; int nNumImageColors; + int nBPP; -#ifndef DISABLE_ANIMATED_TEXT int nOldIndex; int idListItem[MaxTabs]; int idTitle; bool fLocked; + bool fLockNeeded; bool fScrollTitle; bool fScrollInfo; bool fScrollListItem; bool fScrollOther; -#endif + bool fScrollbarShown; void DrawScrollbar(int Total, int Offset, int Shown, int Top, int Left, int Height, bool CanScrollUp, bool CanScrollDown); void SetTextScrollbar(void); void SetupAreas(void); + void SetFonts(void); void SetColors(void); int DrawFlag(int x, int y, const tComponent *p); const char *GetPluginMainMenuName(const char *plugin); int ReadSizeVdr(const char *strPath); bool HasTabbedText(const char *s, int Tab); - int getDateWidth(const cFont *pFontDate); + int getDateWidth(void); public: cSkinEnigmaDisplayMenu(); virtual ~cSkinEnigmaDisplayMenu(); + virtual void SetTabs(int Tab1, int Tab2 = 0, int Tab3 = 0, int Tab4 = 0, int Tab5 = 0); virtual void Scroll(bool Up, bool Page); virtual int MaxItems(void); virtual void Clear(void); @@ -1006,45 +1123,27 @@ public: virtual void SetButtons(const char *Red, const char *Green = NULL, const char *Yellow = NULL, const char *Blue = NULL); virtual void SetMessage(eMessageType Type, const char *Text); virtual void SetItem(const char *Text, int Index, bool Current, bool Selectable); -#if VDRVERSNUM >= 10515 virtual void SetScrollbar(int Total, int Offset); -#endif virtual void SetEvent(const cEvent *Event); virtual void SetRecording(const cRecording *Recording); virtual void SetText(const char *Text, bool FixedFont); virtual int GetTextAreaWidth(void) const; virtual const cFont *GetTextAreaFont(bool FixedFont) const; virtual void Flush(void); - virtual void DrawTitle(const char *Title); }; cSkinEnigmaDisplayMenu::cSkinEnigmaDisplayMenu(void) { - INIT_FONTS; - struct EnigmaOsdSize OsdSize; EnigmaConfig.GetOsdSize(&OsdSize); fSetupAreasDone = false; - setlocale(LC_TIME, tr("en_US")); osd = NULL; - pFontList = EnigmaConfig.GetFont(FONT_LISTITEM); - pFontOsdTitle = EnigmaConfig.GetFont(FONT_OSDTITLE); - pFontHelpKeys = EnigmaConfig.GetFont(FONT_HELPKEYS); - pFontDate = EnigmaConfig.GetFont(FONT_DATE); - pFontDetailsTitle = EnigmaConfig.GetFont(FONT_DETAILSTITLE); - pFontDetailsSubtitle = EnigmaConfig.GetFont(FONT_DETAILSSUBTITLE); - pFontDetailsDate = EnigmaConfig.GetFont(FONT_DETAILSDATE); - pFontDetailsText = EnigmaConfig.GetFont(FONT_DETAILSTEXT); - pFontMessage = EnigmaConfig.GetFont(FONT_MESSAGE); - pFontInfoWarnHeadline = EnigmaConfig.GetFont(FONT_INFOWARNHEADLINE); - pFontInfoWarnText = EnigmaConfig.GetFont(FONT_INFOWARNTEXT); - pFontInfoTimerHeadline = EnigmaConfig.GetFont(FONT_INFOTIMERHEADLINE); - pFontInfoTimerText = EnigmaConfig.GetFont(FONT_INFOTIMERTEXT); - pFontFixed = EnigmaConfig.GetFont(FONT_FIXED); + SetFonts(); strTitle = NULL; strLastDate = NULL; + strLastText = NULL; strTheme = strdup(Theme.Name()); isMainMenu = false; fShowLogo = false; @@ -1056,7 +1155,7 @@ cSkinEnigmaDisplayMenu::cSkinEnigmaDisplayMenu(void) fShowInfo = false; nMessagesShown = 0; nNumImageColors = 2; -#ifndef DISABLE_ANIMATED_TEXT + nBPP = 1; for (int i = 0; i < MaxTabs; i++) idListItem[i] = -1; nOldIndex = -1; @@ -1065,7 +1164,7 @@ cSkinEnigmaDisplayMenu::cSkinEnigmaDisplayMenu(void) fScrollInfo = EnigmaConfig.useTextEffects && EnigmaConfig.scrollInfo; fScrollListItem = EnigmaConfig.useTextEffects && EnigmaConfig.scrollListItem; fScrollOther = EnigmaConfig.useTextEffects && EnigmaConfig.scrollOther; -#endif + fScrollbarShown = false; int LogoHeight = std::max(std::max(pFontOsdTitle->Height(), pFontDate->Height()) + TitleDeco + pFontDetailsTitle->Height() + Gap + pFontDetailsSubtitle->Height(), std::max(3 * pFontDate->Height(), @@ -1075,7 +1174,7 @@ cSkinEnigmaDisplayMenu::cSkinEnigmaDisplayMenu(void) int LogoWidth = EnigmaConfig.showImages ? std::max(IconWidth, EnigmaConfig.imageWidth) : IconWidth; int RightColWidth = 0; if (fShowLogoDefault) { - int nMainDateWidth = getDateWidth(pFontDate) + SmallGap + LogoWidth; + int nMainDateWidth = getDateWidth() + SmallGap + LogoWidth; cString date = DayDateTime(); int nSubDateWidth = pFontDate->Width(date); RightColWidth = (SmallGap + Gap + std::max(nMainDateWidth, nSubDateWidth) + Gap) & ~0x07; // must be multiple of 8 @@ -1138,11 +1237,13 @@ cSkinEnigmaDisplayMenu::cSkinEnigmaDisplayMenu(void) // create osd osd = cOsdProvider::NewOsd(OsdSize.x, OsdSize.y); - tArea Areas[] = { {xTitleLeft, yTitleTop, xMessageRight - 1, yButtonsBottom - 1, 8} }; - if (EnigmaConfig.singleArea8Bpp && osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk) { - debug("cSkinEnigmaDisplayMenu: using %dbpp single area", Areas[0].bpp); - osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea)); + tArea SingleArea[] = { {xTitleLeft, yTitleTop, xMessageRight - 1, yButtonsBottom - 1, 8} }; + if (EnigmaConfig.singleArea8Bpp && osd->CanHandleAreas(SingleArea, sizeof(SingleArea) / sizeof(tArea)) == oeOk) { + debug("cSkinEnigmaDisplayMenu: using %dbpp single area", SingleArea[0].bpp); + osd->SetAreas(SingleArea, sizeof(SingleArea) / sizeof(tArea)); nNumImageColors = 230; //TODO: find correct number of colors + if (SingleArea[0].bpp >=8 && Setup.AntiAlias) + nBPP = 8; } else { debug("cSkinEnigmaDisplayMenu: using multiple areas"); tArea Areas[] = { {xTitleLeft, yTitleTop, xTitleRight - 1, yTitleDecoBottom - 1, 2}, //title area @@ -1170,21 +1271,36 @@ cSkinEnigmaDisplayMenu::cSkinEnigmaDisplayMenu(void) lineHeight = pFontList->Height(); nMarkerGap = min(MarkerGap, lineHeight / 2 - 1); //lineHeight - 2 * MarkerGap xItemLeft = xBodyLeft + (EnigmaConfig.showMarker ? lineHeight : ListHBorder); -#if VDRVERSNUM >= 10515 - xItemRight = (fShowLogo || fShowInfo ? xBodyRight : xInfoRight) - ListHBorder - ScrollbarWidth - SmallGap - SmallGap; -#else - xItemRight = (fShowLogo || fShowInfo ? xBodyRight : xInfoRight) - ListHBorder; -#endif + xItemRight = (fShowLogo || fShowInfo ? xBodyRight : xInfoRight) - ListHBorder - SmallGap - SmallGap - SmallGap; int numItems = MaxItems(); yItemTop = yBodyTop + ((EnigmaConfig.statusLineMode == 2 ? yMessageTop : yBodyBottom) - yBodyTop - numItems * lineHeight) / 2; -#ifndef DISABLE_ANIMATED_TEXT + fLockNeeded = (fScrollTitle || fScrollInfo || fScrollListItem || fScrollOther); fLocked = false; - if (fScrollTitle || fScrollInfo || fScrollListItem || fScrollOther) { - TE_START(osd); + TE_START(osd); + if (fLockNeeded) { fLocked = true; } -#endif +} + +void cSkinEnigmaDisplayMenu::SetFonts(void) +{ + debug("cSkinEnigmaDisplayMenu::SetFonts()"); + + pFontList = EnigmaConfig.GetFont(FONT_LISTITEM); + pFontOsdTitle = EnigmaConfig.GetFont(FONT_OSDTITLE); + pFontHelpKeys = EnigmaConfig.GetFont(FONT_HELPKEYS); + pFontDate = EnigmaConfig.GetFont(FONT_DATE); + pFontDetailsTitle = EnigmaConfig.GetFont(FONT_DETAILSTITLE); + pFontDetailsSubtitle = EnigmaConfig.GetFont(FONT_DETAILSSUBTITLE); + pFontDetailsDate = EnigmaConfig.GetFont(FONT_DETAILSDATE); + pFontDetailsText = EnigmaConfig.GetFont(FONT_DETAILSTEXT); + pFontMessage = EnigmaConfig.GetFont(FONT_MESSAGE); + pFontInfoWarnHeadline = EnigmaConfig.GetFont(FONT_INFOWARNHEADLINE); + pFontInfoWarnText = EnigmaConfig.GetFont(FONT_INFOWARNTEXT); + pFontInfoTimerHeadline = EnigmaConfig.GetFont(FONT_INFOTIMERHEADLINE); + pFontInfoTimerText = EnigmaConfig.GetFont(FONT_INFOTIMERTEXT); + pFontFixed = EnigmaConfig.GetFont(FONT_FIXED); } void cSkinEnigmaDisplayMenu::SetColors(void) @@ -1192,27 +1308,6 @@ void cSkinEnigmaDisplayMenu::SetColors(void) debug("cSkinEnigmaDisplayMenu::SetColors()"); if (osd->GetBitmap(1) == NULL) { //single area - cBitmap *bitmap = osd->GetBitmap(0); - if (bitmap) { - bitmap->Reset(); - bitmap->SetColor( 0, clrTransparent); - bitmap->SetColor( 1, Theme.Color(clrTitleBg)); - bitmap->SetColor( 2, Theme.Color(clrTitleFg)); - bitmap->SetColor( 3, Theme.Color(clrTitleShadow)); - bitmap->SetColor( 4, Theme.Color(clrLogoBg)); - bitmap->SetColor( 5, Theme.Color(clrBackground)); - bitmap->SetColor( 6, Theme.Color(clrAltBackground)); - bitmap->SetColor( 7, Theme.Color(clrMenuTxtFg)); - bitmap->SetColor( 8, Theme.Color(clrBottomBg)); - bitmap->SetColor( 9, Theme.Color(clrButtonRedBg)); - bitmap->SetColor(10, Theme.Color(clrButtonRedFg)); - bitmap->SetColor(11, Theme.Color(clrButtonGreenBg)); - bitmap->SetColor(12, Theme.Color(clrButtonGreenFg)); - bitmap->SetColor(13, Theme.Color(clrButtonYellowBg)); - bitmap->SetColor(14, Theme.Color(clrButtonYellowFg)); - bitmap->SetColor(15, Theme.Color(clrButtonBlueBg)); - bitmap->SetColor(16, Theme.Color(clrButtonBlueFg)); - } return; } @@ -1222,7 +1317,6 @@ void cSkinEnigmaDisplayMenu::SetColors(void) bitmap->SetColor(0, clrTransparent); bitmap->SetColor(1, Theme.Color(clrTitleBg)); bitmap->SetColor(2, Theme.Color(clrTitleFg)); - bitmap->SetColor(3, Theme.Color(clrTitleShadow)); } bitmap = osd->GetBitmap(1); if (bitmap) { //body area (beside date/logo/ area) @@ -1295,30 +1389,25 @@ void cSkinEnigmaDisplayMenu::SetupAreas(void) fSetupAreasDone = true; SetColors(); -#ifndef DISABLE_ANIMATED_TEXT EnigmaTextEffects.Clear(); idTitle = -1; nOldIndex = -1; for (int i = 0; i < MaxTabs; i++) idListItem[i] = -1; -#endif -#if VDRVERSNUM >= 10515 - xItemRight = (fShowLogo || fShowInfo ? xBodyRight : xInfoRight) - ListHBorder - ScrollbarWidth - SmallGap - SmallGap; -#else - xItemRight = (fShowLogo || fShowInfo ? xBodyRight : xInfoRight) - ListHBorder; -#endif + xItemRight = (fShowLogo || fShowInfo ? xBodyRight : xInfoRight) - ListHBorder - SmallGap - SmallGap - SmallGap; // clear transparent areas (without date/logo borders) osd->DrawRectangle(xBodyLeft, yTitleDecoBottom, xDateLeft - 1, yBodyTop - 1, clrTransparent); osd->DrawRectangle(xBodyLeft, yMessageBottom, xInfoRight - 1, yButtonsTop - 1, clrTransparent); -#ifndef DISABLE_ANIMATED_TEXT - if (fScrollTitle) { - idTitle = TE_TITLE(osd, idTitle, strTitle, xTitleRight - xTitleLeft - Roundness, this); - } else -#endif - DrawTitle(strTitle); + // draw titlebar + osd->DrawRectangle(xTitleLeft, yTitleTop, xTitleRight - 1, yTitleBottom - 1, Theme.Color(clrTitleBg)); + osd->DrawRectangle(xTitleLeft, yTitleBottom, xTitleRight - 1, yTitleDecoTop - 1, clrTransparent); + osd->DrawRectangle(xTitleLeft, yTitleDecoTop, xTitleRight - 1, yTitleDecoBottom - 1, Theme.Color(clrTitleBg)); + // draw rounded left corner of title bar + osd->DrawEllipse(xTitleLeft, yTitleTop, xTitleLeft + Roundness - 1, yTitleTop + Roundness - 1, clrTransparent, -2); + idTitle = TE_MARQUEE(osd, idTitle, fScrollTitle, xTitleLeft + Roundness, yTitleTop + (yTitleBottom - yTitleTop - pFontOsdTitle->Height()) / 2, strTitle, Theme.Color(clrTitleFg), Theme.Color(clrTitleBg), pFontOsdTitle, nBPP, xTitleRight - xTitleLeft - Roundness - 1); // draw date area if (fShowLogo) { @@ -1370,17 +1459,10 @@ void cSkinEnigmaDisplayMenu::SetupAreas(void) yMaxHeight = yWarning; osd->DrawRectangle(xInfoLeft, yWarning, xInfoRight - 1, yWarning + SmallGap + 1, Theme.Color(clrBackground)); yWarning += pFontInfoWarnText->Height() / 2; -#ifndef DISABLE_ANIMATED_TEXT - TE_BLINK(osd, -1, xInfoLeft, yWarning, tr("WARNING"), - Theme.Color(clrMenuItemSelectableFg), Theme.Color(clrAltBackground), - pFontInfoWarnHeadline, - w, pFontInfoWarnHeadline->Height(), taCenter); -#else - osd->DrawText(xInfoLeft, yWarning, tr("WARNING"), + TE_BLINK(osd, -1, true, xInfoLeft, yWarning, tr("WARNING"), Theme.Color(clrMenuItemSelectableFg), Theme.Color(clrAltBackground), - pFontInfoWarnHeadline, + pFontInfoWarnHeadline, nBPP, w, pFontInfoWarnHeadline->Height(), taCenter); -#endif yWarning += (int)(1.5 * pFontInfoWarnHeadline->Height()); char *info; @@ -1416,18 +1498,10 @@ void cSkinEnigmaDisplayMenu::SetupAreas(void) osd->DrawBitmap(x, y + (h - bmRecording.Height()) / 2, bmRecording, Theme.Color(clrMenuItemSelectableFg), Theme.Color(clrAltBackground)); } -#ifndef DISABLE_ANIMATED_TEXT - if (fScrollInfo) - TE_MARQUEE(osd, -1, x + (timer->isRecording ? (bmRecording.Width() + Gap) : 0), - y, timer->title.c_str(), - Theme.Color(clrMenuItemSelectableFg), Theme.Color(clrAltBackground), - pFontInfoTimerText, w, h); - else -#endif - osd->DrawText(x + (timer->isRecording ? (bmRecording.Width() + Gap) : 0), - y, timer->title.c_str(), - Theme.Color(clrMenuItemSelectableFg), Theme.Color(clrAltBackground), - pFontInfoTimerText, w, h); + TE_MARQUEE(osd, -1, fScrollInfo, x + (timer->isRecording ? (bmRecording.Width() + Gap) : 0), + y, timer->title.c_str(), + Theme.Color(clrMenuItemSelectableFg), Theme.Color(clrAltBackground), + pFontInfoTimerText, nBPP, w, h); y += h; char* info = NULL; if (timer->isRecording) { @@ -1453,41 +1527,62 @@ void cSkinEnigmaDisplayMenu::SetupAreas(void) cSkinEnigmaDisplayMenu::~cSkinEnigmaDisplayMenu() { -#ifndef DISABLE_ANIMATED_TEXT - if (fScrollTitle || fScrollInfo || fScrollListItem || fScrollOther) { - if (!fLocked) TE_LOCK; - TE_STOP; - } -#endif + if (fLockNeeded && !fLocked) TE_LOCK; + TE_STOP; + free(strTheme); free(strTitle); free(strLastDate); + free(strLastText); delete osd; } - + +void cSkinEnigmaDisplayMenu::SetTabs(int Tab1, int Tab2, int Tab3, int Tab4, int Tab5) +{ + int w = pFontList->Width('0'); + mytabs[0] = 0; + mytabs[1] = Tab1 ? mytabs[0] + Tab1 : 0; + mytabs[2] = Tab2 ? mytabs[1] + Tab2 : 0; + mytabs[3] = Tab3 ? mytabs[2] + Tab3 : 0; + mytabs[4] = Tab4 ? mytabs[3] + Tab4 : 0; + mytabs[5] = Tab5 ? mytabs[4] + Tab5 : 0; + if (Tab2) { + for (int i = 1; i < MaxTabs; i++) + mytabs[i] *= w;//XXX average character width of font used for items - see also skincurses.c!!! + } else if (Tab1) { + int temp1 = mytabs[0] + (int)(0.7 * ((fShowInfo ? xBodyRight : xInfoRight) - xBodyLeft)); + int temp2 = mytabs[1] * w; + mytabs[1] = std::min(temp1, temp2); + } +} + void cSkinEnigmaDisplayMenu::SetTextScrollbar(void) { //Must be TE_LOCKed by caller // check if scrollbar is needed - if (textScroller.CanScroll()) - DrawScrollbar(textScroller.Total(), textScroller.Offset(), textScroller.Shown(), textScroller.Top(), textScroller.Width(), textScroller.Height(), textScroller.CanScrollUp(), textScroller.CanScrollDown()); + if (textScroller.CanScrollUp() || textScroller.CanScrollDown()) + DrawScrollbar(textScroller.Total(), textScroller.Offset(), textScroller.Shown(), textScroller.Top() - SmallGap - 1, textScroller.Width(), textScroller.Height() + SmallGap + SmallGap + 1, textScroller.CanScrollUp(), textScroller.CanScrollDown()); } -#if VDRVERSNUM >= 10515 void cSkinEnigmaDisplayMenu::SetScrollbar(int Total, int Offset) { debug("cSkinEnigmaDisplayMenu::SetScrollbar(%d, %d)", Total, Offset); -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_LOCK; -#endif - DrawScrollbar(Total, Offset, MaxItems(), yItemTop, xItemRight, MaxItems() * lineHeight, Offset > 0, Offset + MaxItems() < Total); -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_UNLOCK; -#endif + if (EnigmaConfig.showScrollbar == 0 || (EnigmaConfig.showScrollbar == 2 && Total <= MaxItems())) { + fScrollbarShown = false; + return; + } + + if (fLockNeeded && !fLocked) { + fLocked = true; + TE_LOCK; + } + fScrollbarShown = true; + DrawScrollbar(Total, Offset, MaxItems(), yItemTop - SmallGap - 1, xItemRight - ScrollbarWidth + SmallGap, MaxItems() * lineHeight + SmallGap + SmallGap + 1, Offset > 0, Offset + MaxItems() < Total); + + if (fLockNeeded && !fLocked) TE_UNLOCK; } -#endif void cSkinEnigmaDisplayMenu::DrawScrollbar(int Total, int Offset, int Shown, int Top, int Left, int Height, bool CanScrollUp, bool CanScrollDown) { @@ -1496,39 +1591,39 @@ void cSkinEnigmaDisplayMenu::DrawScrollbar(int Total, int Offset, int Shown, int if (Total <= 0 || Total <= Shown) { Total = Shown = 1; } - int yt = Top; - int yb = yt + Height; - int st = yt + ScrollbarHeight + Gap; - int sb = yb - ScrollbarHeight - Gap; - int tt = st + (sb - st) * Offset / Total; - int tb = tt + (sb - st) * Shown / Total; - int xl = Left + SmallGap; - // arrow up - osd->DrawRectangle(xl, yt, xl + ScrollbarWidth, yt + SmallGap, - CanScrollUp ? Theme.Color(clrMenuTxtFg) : Theme.Color(clrAltBackground)); - osd->DrawRectangle(xl + ScrollbarWidth - SmallGap, yt + SmallGap, xl + ScrollbarWidth, yt + ScrollbarHeight, - CanScrollUp ? Theme.Color(clrMenuTxtFg) : Theme.Color(clrAltBackground)); - // draw background of scrollbar - osd->DrawRectangle(xl + ScrollbarWidth - SmallGap, st, xl + ScrollbarWidth, sb, Theme.Color(clrAltBackground)); - // draw visible area of scrollbar - osd->DrawRectangle(xl + ScrollbarWidth - SmallGap, tt, xl + ScrollbarWidth, tb, Theme.Color(clrMenuTxtFg)); - // arrow down - osd->DrawRectangle(xl + ScrollbarWidth - SmallGap, yb - ScrollbarHeight, xl + ScrollbarWidth, yb - SmallGap, - CanScrollDown ? Theme.Color(clrMenuTxtFg) : Theme.Color(clrAltBackground)); - osd->DrawRectangle(xl, yb - SmallGap, xl + ScrollbarWidth, yb, - CanScrollDown ? Theme.Color(clrMenuTxtFg) : Theme.Color(clrAltBackground)); + + int yt = Top; + int yb = yt + Height; + int st = yt + ScrollbarHeight + Gap; + int sb = yb - ScrollbarHeight - Gap; + int tt = st + (sb - st) * Offset / Total; + int tb = tt + (sb - st) * Shown / Total; + int xl = Left + SmallGap; + // arrow up + osd->DrawRectangle(xl, yt, xl + ScrollbarWidth, yt + SmallGap, + CanScrollUp ? Theme.Color(clrMenuTxtFg) : Theme.Color(clrAltBackground)); + osd->DrawRectangle(xl + ScrollbarWidth - SmallGap, yt + SmallGap, xl + ScrollbarWidth, yt + ScrollbarHeight, + CanScrollUp ? Theme.Color(clrMenuTxtFg) : Theme.Color(clrAltBackground)); + // draw background of scrollbar + osd->DrawRectangle(xl + ScrollbarWidth - SmallGap, st, xl + ScrollbarWidth, sb, Theme.Color(clrAltBackground)); + // draw visible area of scrollbar + osd->DrawRectangle(xl + ScrollbarWidth - SmallGap, tt, xl + ScrollbarWidth, tb, Theme.Color(clrMenuTxtFg)); + // arrow down + osd->DrawRectangle(xl + ScrollbarWidth - SmallGap, yb - ScrollbarHeight, xl + ScrollbarWidth, yb - SmallGap, + CanScrollDown ? Theme.Color(clrMenuTxtFg) : Theme.Color(clrAltBackground)); + osd->DrawRectangle(xl, yb - SmallGap, xl + ScrollbarWidth, yb, + CanScrollDown ? Theme.Color(clrMenuTxtFg) : Theme.Color(clrAltBackground)); } void cSkinEnigmaDisplayMenu::Scroll(bool Up, bool Page) { -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_LOCK; -#endif + if (fLockNeeded && !fLocked) { + fLocked = true; + TE_LOCK; + } cSkinDisplayMenu::Scroll(Up, Page); SetTextScrollbar(); -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_UNLOCK; -#endif + if (fLockNeeded && !fLocked) TE_UNLOCK; } int cSkinEnigmaDisplayMenu::MaxItems(void) @@ -1541,8 +1636,10 @@ void cSkinEnigmaDisplayMenu::Clear(void) { debug("cSkinEnigmaDisplayMenu::Clear() %d %d %d", isMainMenu, fShowLogo, fShowInfo); -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_LOCK; + if (fLockNeeded && !fLocked) { + fLocked = true; + TE_LOCK; + } nOldIndex = -1; for (int i = MaxTabs - 1; i >= 0; i--) { if (idListItem[i] >= 0) { @@ -1550,10 +1647,13 @@ void cSkinEnigmaDisplayMenu::Clear(void) idListItem[i] = -1; } } -#endif + free(strLastText); + strLastText = NULL; textScroller.Reset(); + //TODO? SetFonts(); + if (strcmp(strTheme, Theme.Name()) != 0) { free(strTheme); strTheme = strdup(Theme.Name()); @@ -1568,9 +1668,7 @@ void cSkinEnigmaDisplayMenu::Clear(void) osd->DrawRectangle(xBodyLeft, yBodyTop, xInfoRight - 1, yInfoBottom - 1, Theme.Color(clrBackground)); } } -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_UNLOCK; -#endif + if (fLockNeeded && !fLocked) TE_UNLOCK; } @@ -1597,16 +1695,12 @@ void cSkinEnigmaDisplayMenu::SetTitle(const char *Title) asprintf(&strTitlePrefix, "%s - ", trVDR("VDR")); if ((Title == NULL) || (isMainMenu && strncmp(strTitlePrefix, Title, strlen(strTitlePrefix)) == 0)) { -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_LOCK; - if (fScrollTitle) { - idTitle = TE_TITLE(osd, idTitle, strTitle, xTitleRight - xTitleLeft - Roundness, this); - } else -#endif - DrawTitle(Title); -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_UNLOCK; -#endif + if (fLockNeeded && !fLocked) { + fLocked = true; + TE_LOCK; + } + idTitle = TE_MARQUEE(osd, idTitle, fScrollTitle, xTitleLeft + Roundness, yTitleTop + (yTitleBottom - yTitleTop - pFontOsdTitle->Height()) / 2, strTitle, Theme.Color(clrTitleFg), Theme.Color(clrTitleBg), pFontOsdTitle, nBPP, xTitleRight - xTitleLeft - Roundness - 1); + if (fLockNeeded && !fLocked) TE_UNLOCK; } else { bool old_isMainMenu = isMainMenu; bool old_fShowLogo = fShowLogo; @@ -1622,41 +1716,37 @@ void cSkinEnigmaDisplayMenu::SetTitle(const char *Title) fShowInfo = false; } -#ifndef DISABLE_ANIMATED_TEXT if (fTitleChanged) { - if (!fLocked) TE_LOCK; + if (fLockNeeded && !fLocked) { + fLocked = true; + TE_LOCK; + } EnigmaTextEffects.Clear(); idTitle = -1; nOldIndex = -1; for (int i = 0; i < MaxTabs; i++) idListItem[i] = -1; - if (!fLocked) TE_UNLOCK; + if (fLockNeeded && !fLocked) TE_UNLOCK; } -#endif if (!fSetupAreasDone || old_isMainMenu != isMainMenu || old_fShowLogo != fShowLogo || old_fShowInfo != fShowInfo) { -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_LOCK; -#endif + if (fLockNeeded && !fLocked) { + fLocked = true; + TE_LOCK; + } SetupAreas(); -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_UNLOCK; -#endif + if (fLockNeeded && !fLocked) TE_UNLOCK; } else { -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_LOCK; - if (fScrollTitle) { - idTitle = TE_TITLE(osd, idTitle, strTitle, xTitleRight - xTitleLeft - Roundness, this); - } else -#endif - DrawTitle(Title); -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_UNLOCK; -#endif + if (fLockNeeded && !fLocked) { + fLocked = true; + TE_LOCK; + } + idTitle = TE_MARQUEE(osd, idTitle, fScrollTitle, xTitleLeft + Roundness, yTitleTop + (yTitleBottom - yTitleTop - pFontOsdTitle->Height()) / 2, strTitle, Theme.Color(clrTitleFg), Theme.Color(clrTitleBg), pFontOsdTitle, nBPP, xTitleRight - xTitleLeft - Roundness - 1); + if (fLockNeeded && !fLocked) TE_UNLOCK; } } free (strTitlePrefix); @@ -1665,40 +1755,14 @@ void cSkinEnigmaDisplayMenu::SetTitle(const char *Title) strLastDate = NULL; } -void cSkinEnigmaDisplayMenu::DrawTitle(const char *Title) -{ - //Must be TE_LOCKed by caller - - // draw titlebar - osd->DrawRectangle(xTitleLeft, yTitleTop, xTitleRight - 1, yTitleBottom - 1, Theme.Color(clrTitleBg)); - osd->DrawRectangle(xTitleLeft, yTitleBottom, xTitleRight - 1, yTitleDecoTop - 1, clrTransparent); - osd->DrawRectangle(xTitleLeft, yTitleDecoTop, xTitleRight - 1, yTitleDecoBottom - 1, Theme.Color(clrTitleBg)); - // draw rounded left corner of title bar - osd->DrawEllipse(xTitleLeft, yTitleTop, xTitleLeft + Roundness - 1, yTitleTop + Roundness - 1, clrTransparent, -2); - - if (Title) { - int y = yTitleTop + (yTitleBottom - yTitleTop - pFontOsdTitle->Height()) / 2; - // draw title with shadow - osd->DrawText(xTitleLeft + Roundness + 3, y + 3, Title, - Theme.Color(clrTitleShadow), clrTransparent, - pFontOsdTitle, - xTitleRight - xTitleLeft - Roundness - 3, - yTitleBottom - y - 3); - osd->DrawText(xTitleLeft + Roundness, y, Title, - Theme.Color(clrTitleFg), clrTransparent, - pFontOsdTitle, - xTitleRight - xTitleLeft - Roundness - 3, - yTitleBottom - y); - } -} - void cSkinEnigmaDisplayMenu::SetButtons(const char *Red, const char *Green, const char *Yellow, const char *Blue) { debug("cSkinEnigmaDisplayMenu::SetButtons(%s, %s, %s, %s)", Red, Green, Yellow, Blue); -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_LOCK; -#endif + if (fLockNeeded && !fLocked) { + fLocked = true; + TE_LOCK; + } int w = (xButtonsRight - xButtonsLeft) / 4; int t3 = xButtonsLeft + xButtonsRight - xButtonsLeft - w; int t2 = t3 - w; @@ -1736,21 +1800,18 @@ void cSkinEnigmaDisplayMenu::SetButtons(const char *Red, const char *Green, cons osd->DrawEllipse(xButtonsRight - Roundness, yButtonsBottom - Roundness, xButtonsRight - 1, yButtonsBottom - 1, clrTransparent, -4); } -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_UNLOCK; -#endif + if (fLockNeeded && !fLocked) TE_UNLOCK; } void cSkinEnigmaDisplayMenu::SetMessage(eMessageType Type, const char *Text) { -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_LOCK; -#endif + if (fLockNeeded && !fLocked) { + fLocked = true; + TE_LOCK; + } // check if message if (Text) { -#ifndef DISABLE_ANIMATED_TEXT EnigmaTextEffects.PauseEffects(yMessageTop); -#endif // save osd region if (nMessagesShown == 0) osd->SaveRegion(xMessageLeft, yMessageTop, xMessageRight - 1, yMessageBottom - 1); @@ -1787,43 +1848,48 @@ void cSkinEnigmaDisplayMenu::SetMessage(eMessageType Type, const char *Text) // restore saved osd region if (nMessagesShown == 0) osd->RestoreRegion(); -#ifndef DISABLE_ANIMATED_TEXT EnigmaTextEffects.PauseEffects(); -#endif } -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_UNLOCK; -#endif + if (fLockNeeded && !fLocked) TE_UNLOCK; } -bool cSkinEnigmaDisplayMenu::HasTabbedText(const char *s, int Tab) +bool cSkinEnigmaDisplayMenu::HasTabbedText(const char *s, int NumOfTabs) { if (!s) return false; const char *b = strchrnul(s, '\t'); - while (*b && Tab-- > 0) { + while (*b && NumOfTabs-- > 0) { b = strchrnul(b + 1, '\t'); } if (!*b) - return (Tab <= 0) ? true : false; + return (NumOfTabs <= 0) ? true : false; return true; } -void cSkinEnigmaDisplayMenu::SetItem(const char *Text, int Index, bool Current, bool Selectable) +void cSkinEnigmaDisplayMenu::SetItem(const char *Text, int Index, bool isCurrent, bool Selectable) { - debug("cSkinEnigmaDisplayMenu::SetItem(%s, %d, %d, %d)", Text, Index, Current, Selectable); + debug("cSkinEnigmaDisplayMenu::SetItem(%s, %d, %d, %d)", Text, Index, isCurrent, Selectable); int y = yItemTop + Index * lineHeight; if (nMessagesShown > 0 && y >= yMessageTop) return; //Don't draw above messages -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_LOCK; -#endif + if (fLockNeeded && !fLocked) { + fLocked = true; + TE_LOCK; + } tColor ColorFg, ColorBg; // select colors - if (Current) { + if (isCurrent) { + if ((Index == nOldIndex) && strLastText && Text && !strcmp(strLastText, Text) ) { + return; + } + + free(strLastText); + strLastText = strdup(Text); + nOldIndex = Index; + ColorFg = Theme.Color(clrMenuItemSelectableFg); ColorBg = Theme.Color(clrAltBackground); } else { @@ -1834,32 +1900,33 @@ void cSkinEnigmaDisplayMenu::SetItem(const char *Text, int Index, bool Current, ColorFg = Theme.Color(clrMenuItemNotSelectableFg); ColorBg = Theme.Color(clrBackground); } - } -#ifndef DISABLE_ANIMATED_TEXT - if (!Current && Index == nOldIndex) { - for (int i = MaxTabs - 1; i >= 0; i--) { - if (idListItem[i] >= 0) { - EnigmaTextEffects.ResetText(idListItem[i], ColorFg, ColorBg); - idListItem[i] = -1; + if (nOldIndex == Index) { + for (int i = MaxTabs - 1; i >= 0; i--) { + if (idListItem[i] >= 0) { + EnigmaTextEffects.ResetText(idListItem[i], ColorFg, ColorBg); + idListItem[i] = -1; + } } + free(strLastText); + strLastText = NULL; + nOldIndex = -1; } - } else if (Current) { - nOldIndex = Index; } -#endif // this should prevent menu flickering - osd->DrawRectangle(xItemLeft, y + lineHeight / 2, xItemLeft + 1, y + lineHeight / 2 + 1, ColorBg); - osd->DrawRectangle(xItemRight - 2, y + lineHeight / 2, xItemRight - 1, y + lineHeight / 2 + 1, ColorBg); + osd->DrawPixel(xItemLeft, y, ColorBg); + osd->DrawPixel(xItemRight - 2, y, ColorBg); + osd->DrawPixel(xItemLeft, y, ColorFg); + osd->DrawPixel(xItemRight - 2, y, ColorFg); osd->DrawRectangle(xBodyLeft, y, xItemLeft - 1, y + lineHeight - 1, ColorBg); if (EnigmaConfig.showMarker) { - osd->DrawEllipse(xBodyLeft + nMarkerGap, y + nMarkerGap, xBodyLeft + lineHeight - nMarkerGap, y + lineHeight - nMarkerGap, Current ? ColorFg : ColorBg); + osd->DrawEllipse(xBodyLeft + nMarkerGap, y + nMarkerGap, xBodyLeft + lineHeight - nMarkerGap, y + lineHeight - nMarkerGap, isCurrent ? ColorFg : ColorBg); } -#if VDRVERSNUM < 10515 - osd->DrawRectangle(xItemRight, y, (fShowLogo || fShowInfo ? xBodyRight : xInfoRight) - 1, y + lineHeight - 1, ColorBg); -#endif + + if (EnigmaConfig.showScrollbar == 0 || (!fScrollbarShown && EnigmaConfig.showScrollbar == 2)) + osd->DrawRectangle(xItemRight, y, (fShowLogo || fShowInfo ? xBodyRight : xInfoRight) - 1, y + lineHeight - 1, ColorBg); // draw item for (int i = 0; i < MaxTabs; i++) { @@ -1980,17 +2047,9 @@ void cSkinEnigmaDisplayMenu::SetItem(const char *Text, int Index, bool Current, osd->DrawRectangle(px1 - ListProgressBarBorder, py0, px1, py1, ColorFg); } else { int w = (Tab(i + 1) && HasTabbedText(Text, i + 1) ? (xItemLeft + Tab(i + 1)) : xItemRight) - xt; - //TODO? int w = xItemRight - xt; // draw text - if (Current) { -#ifndef DISABLE_ANIMATED_TEXT - if (fScrollListItem) { -// if (i > 0) -//TODO? EnigmaTextEffects.UpdateTextWidth(idListItem[i - 1], Tab(i) - Tab(i - 1)); - idListItem[i] = TE_MARQUEE(osd, idListItem[i], xt, y, s, ColorFg, ColorBg, pFontList, w, nMessagesShown ? std::min(yMessageTop - y, lineHeight) : 0 ); - } else -#endif - osd->DrawText(xt, y, s, ColorFg, ColorBg, pFontList, w, nMessagesShown ? std::min(yMessageTop - y, lineHeight) : 0 ); + if (isCurrent) { + idListItem[i] = TE_MARQUEE(osd, idListItem[i], fScrollListItem, xt, y, s, ColorFg, ColorBg, pFontList, nBPP, w, nMessagesShown ? std::min(yMessageTop - y, lineHeight) : 0 ); } else osd->DrawText(xt, y, s, ColorFg, ColorBg, pFontList, w, nMessagesShown ? std::min(yMessageTop - y, lineHeight) : 0 ); } @@ -2002,7 +2061,7 @@ void cSkinEnigmaDisplayMenu::SetItem(const char *Text, int Index, bool Current, SetEditableWidth(xItemRight - Tab(1) - xItemLeft); #ifndef SKINENIGMA_NO_MENULOGO - if (Current && isMainMenu && fShowLogo && Text) { + if (isCurrent && isMainMenu && fShowLogo && Text) { char *ItemText, *ItemText2; int n = strtoul(Text, &ItemText, 10); if (n != 0) @@ -2133,9 +2192,7 @@ void cSkinEnigmaDisplayMenu::SetItem(const char *Text, int Index, bool Current, } #endif -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_UNLOCK; -#endif + if (fLockNeeded && !fLocked) TE_UNLOCK; } const char *cSkinEnigmaDisplayMenu::GetPluginMainMenuName(const char *plugin) @@ -2179,9 +2236,10 @@ void cSkinEnigmaDisplayMenu::SetEvent(const cEvent *Event) if (!Event) return; -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_LOCK; -#endif + if (fLockNeeded && !fLocked) { + fLocked = true; + TE_LOCK; + } isMainMenu = false; fShowInfo = false; @@ -2269,16 +2327,9 @@ void cSkinEnigmaDisplayMenu::SetEvent(const cEvent *Event) y = yBodyTop + (yHeadlineBottom - yBodyTop - th) / 2; // draw recording title -#ifndef DISABLE_ANIMATED_TEXT - if (fScrollOther) - TE_MARQUEE(osd, -1, xBodyLeft + Gap, y, Event->Title(), - Theme.Color(clrMenuTxtFg), Theme.Color(clrAltBackground), - pFontDetailsTitle, xHeadlineRight - xBodyLeft - Gap - 1, pFontDetailsTitle->Height()); - else -#endif - osd->DrawText(xBodyLeft + Gap, y, Event->Title(), - Theme.Color(clrMenuTxtFg), Theme.Color(clrAltBackground), - pFontDetailsTitle, xHeadlineRight - xBodyLeft - Gap - 1, pFontDetailsTitle->Height()); + TE_MARQUEE(osd, -1, fScrollOther, xBodyLeft + Gap, y, Event->Title(), + Theme.Color(clrMenuTxtFg), Theme.Color(clrAltBackground), + pFontDetailsTitle, nBPP, xHeadlineRight - xBodyLeft - Gap - 1, pFontDetailsTitle->Height()); osd->DrawText(xBodyLeft + Gap, yHeadlineBottom, sstrDate.str().c_str(), Theme.Color(clrMenuTxtFg), Theme.Color(clrBackground), @@ -2299,16 +2350,9 @@ void cSkinEnigmaDisplayMenu::SetEvent(const cEvent *Event) y += pFontDetailsTitle->Height() + Gap; // draw short text -#ifndef DISABLE_ANIMATED_TEXT - if (fScrollOther) - TE_MARQUEE(osd, -1, xBodyLeft + Gap, y, Event->ShortText(), - Theme.Color(clrMenuItemNotSelectableFg), Theme.Color(clrAltBackground), - pFontDetailsSubtitle, xHeadlineRight - xBodyLeft - Gap - 1, pFontDetailsSubtitle->Height()); - else -#endif - osd->DrawText(xBodyLeft + Gap, y, Event->ShortText(), - Theme.Color(clrMenuItemNotSelectableFg), Theme.Color(clrAltBackground), - pFontDetailsSubtitle, xHeadlineRight - xBodyLeft - Gap - 1, pFontDetailsSubtitle->Height()); + TE_MARQUEE(osd, -1, fScrollOther, xBodyLeft + Gap, y, Event->ShortText(), + Theme.Color(clrMenuItemNotSelectableFg), Theme.Color(clrAltBackground), + pFontDetailsSubtitle, nBPP, xHeadlineRight - xBodyLeft - Gap - 1, pFontDetailsSubtitle->Height()); } // draw description strDescr = Event->Description(); @@ -2377,9 +2421,9 @@ void cSkinEnigmaDisplayMenu::SetEvent(const cEvent *Event) asprintf(&mytext, "%s%s%s%s%s", strFirst ? strFirst : "", strSecond ? "\n\n" : "", strSecond ? strSecond : "", (strFirst || strSecond) && strThird ? "\n\n" : "", strThird ? strThird : ""); - textScroller.Set(osd, xBodyLeft + Gap, y, - xInfoRight - SmallGap - ScrollbarWidth - SmallGap - Gap - xBodyLeft, - yBodyBottom - y, + textScroller.Set(osd, xBodyLeft + Gap, y + Gap, + xInfoRight - ListHBorder - SmallGap - SmallGap - SmallGap - ScrollbarWidth + SmallGap - xBodyLeft, + yBodyBottom - Gap - y - Gap, mytext, pFontDetailsText, Theme.Color(clrMenuTxtFg), Theme.Color(clrBackground)); SetTextScrollbar(); @@ -2401,9 +2445,7 @@ void cSkinEnigmaDisplayMenu::SetEvent(const cEvent *Event) osd->DrawRectangle(xDateLeft, yLogoBottom - SmallGap, xDateRight, yLogoBottom - 1, clrTransparent); } #endif -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_UNLOCK; -#endif + if (fLockNeeded && !fLocked) TE_UNLOCK; } int cSkinEnigmaDisplayMenu::ReadSizeVdr(const char *strPath) @@ -2440,9 +2482,10 @@ void cSkinEnigmaDisplayMenu::SetRecording(const cRecording *Recording) return; } -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_LOCK; -#endif + if (fLockNeeded && !fLocked) { + fLocked = true; + TE_LOCK; + } isMainMenu = false; fShowInfo = false; @@ -2462,7 +2505,7 @@ void cSkinEnigmaDisplayMenu::SetRecording(const cRecording *Recording) dirSize = DirSizeMB(Recording->FileName()); } } - cChannel *channel = Channels.GetByChannelID(((cRecordingInfo *)Info)->ChannelID()); + cChannel *channel = Channels.GetByChannelID(Info->ChannelID()); if (channel) sstrInfo << trVDR("Channel") << ": " << channel->Number() << " - " << channel->Name() << std::endl; if (dirSize >= 0) @@ -2506,16 +2549,9 @@ void cSkinEnigmaDisplayMenu::SetRecording(const cRecording *Recording) int y = yBodyTop + (yHeadlineBottom - yBodyTop - th) / 2; // draw recording title -#ifndef DISABLE_ANIMATED_TEXT - if (fScrollOther) - TE_MARQUEE(osd, -1, xBodyLeft + Gap, y, Title, - Theme.Color(clrMenuTxtFg), Theme.Color(clrAltBackground), - pFontDetailsTitle, xHeadlineRight - xBodyLeft - Gap - 1, pFontDetailsTitle->Height()); - else -#endif - osd->DrawText(xBodyLeft + Gap, y, Title, - Theme.Color(clrMenuTxtFg), Theme.Color(clrAltBackground), - pFontDetailsTitle, xHeadlineRight - xBodyLeft - Gap - 1, pFontDetailsTitle->Height()); + TE_MARQUEE(osd, -1, fScrollOther, xBodyLeft + Gap, y, Title, + Theme.Color(clrMenuTxtFg), Theme.Color(clrAltBackground), + pFontDetailsTitle, nBPP, xHeadlineRight - xBodyLeft - Gap - 1, pFontDetailsTitle->Height()); osd->DrawText(xBodyLeft + Gap, yHeadlineBottom, sstrDate.str().c_str(), Theme.Color(clrMenuTxtFg), Theme.Color(clrBackground), @@ -2535,16 +2571,9 @@ void cSkinEnigmaDisplayMenu::SetRecording(const cRecording *Recording) y += pFontDetailsTitle->Height() + Gap; // draw short text -#ifndef DISABLE_ANIMATED_TEXT - if (fScrollOther) - TE_MARQUEE(osd, -1, xBodyLeft + Gap, y, Info->ShortText(), - Theme.Color(clrMenuItemNotSelectableFg), Theme.Color(clrAltBackground), - pFontDetailsSubtitle, xHeadlineRight - xBodyLeft - Gap - 1, pFontDetailsSubtitle->Height()); - else -#endif - osd->DrawText(xBodyLeft + Gap, y, Info->ShortText(), - Theme.Color(clrMenuItemNotSelectableFg), Theme.Color(clrAltBackground), - pFontDetailsSubtitle, xHeadlineRight - xBodyLeft - Gap - 1, pFontDetailsSubtitle->Height()); + TE_MARQUEE(osd, -1, fScrollOther, xBodyLeft + Gap, y, Info->ShortText(), + Theme.Color(clrMenuItemNotSelectableFg), Theme.Color(clrAltBackground), + pFontDetailsSubtitle, nBPP, xHeadlineRight - xBodyLeft - Gap - 1, pFontDetailsSubtitle->Height()); } // draw description strDescr = Info->Description(); @@ -2559,9 +2588,9 @@ void cSkinEnigmaDisplayMenu::SetRecording(const cRecording *Recording) asprintf(&mytext, "%s%s%s", strDescr ? strDescr : "", strInfo && strDescr ? "\n\n" : "", strInfo ? strInfo : ""); else asprintf(&mytext, "%s%s%s", strInfo ? strInfo : "", strInfo && strDescr ? "\n\n" : "", strDescr ? strDescr : ""); - textScroller.Set(osd, xBodyLeft + Gap, y, - xInfoRight - SmallGap - ScrollbarWidth - SmallGap - Gap - xBodyLeft, - yBodyBottom - y, mytext, pFontDetailsText, + textScroller.Set(osd, xBodyLeft + Gap, y + Gap, + xInfoRight - ListHBorder - SmallGap - SmallGap - SmallGap - ScrollbarWidth + SmallGap - xBodyLeft, + yBodyBottom - Gap - y - Gap, mytext, pFontDetailsText, Theme.Color(clrMenuTxtFg), Theme.Color(clrBackground)); SetTextScrollbar(); @@ -2583,16 +2612,15 @@ void cSkinEnigmaDisplayMenu::SetRecording(const cRecording *Recording) osd->DrawRectangle(xDateLeft, yLogoBottom - SmallGap, xDateRight, yLogoBottom - 1, clrTransparent); } #endif -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_UNLOCK; -#endif + if (fLockNeeded && !fLocked) TE_UNLOCK; } void cSkinEnigmaDisplayMenu::SetText(const char *Text, bool FixedFont) { -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_LOCK; -#endif + if (fLockNeeded && !fLocked) { + fLocked = true; + TE_LOCK; + } // draw text textScroller.Set(osd, xBodyLeft + Gap, yBodyTop + Gap, GetTextAreaWidth(), @@ -2600,15 +2628,13 @@ void cSkinEnigmaDisplayMenu::SetText(const char *Text, bool FixedFont) GetTextAreaFont(FixedFont), Theme.Color(clrMenuTxtFg), Theme.Color(clrBackground)); SetTextScrollbar(); -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_UNLOCK; -#endif + if (fLockNeeded && !fLocked) TE_UNLOCK; } int cSkinEnigmaDisplayMenu::GetTextAreaWidth(void) const { // max text area width - return (fShowLogo || fShowInfo ? xBodyRight : xInfoRight) - Gap - SmallGap - ScrollbarWidth - SmallGap; + return (fShowLogo || fShowInfo ? xBodyRight : xInfoRight) - ListHBorder - SmallGap - SmallGap - SmallGap - ScrollbarWidth + SmallGap; } const cFont *cSkinEnigmaDisplayMenu::GetTextAreaFont(bool FixedFont) const @@ -2617,7 +2643,7 @@ const cFont *cSkinEnigmaDisplayMenu::GetTextAreaFont(bool FixedFont) const return FixedFont ? pFontFixed : pFontDetailsText; } -int cSkinEnigmaDisplayMenu::getDateWidth(const cFont *pFontDate) +int cSkinEnigmaDisplayMenu::getDateWidth(void) { // only called from constructor, so pFontDate should be OK int w = MIN_DATEWIDTH; struct tm tm_r; @@ -2626,7 +2652,7 @@ int cSkinEnigmaDisplayMenu::getDateWidth(const cFont *pFontDate) int nWeekday = tm->tm_wday; if (0 <= nWeekday && nWeekday < 7) - w = std::max(w, pFontDate->Width(WEEKDAY(nWeekday))); + w = std::max(w, pFontDate->Width(WeekDayNameFull(nWeekday))); char temp[32]; strftime(temp, sizeof(temp), "%d.%m.%Y", tm); @@ -2640,10 +2666,8 @@ int cSkinEnigmaDisplayMenu::getDateWidth(const cFont *pFontDate) void cSkinEnigmaDisplayMenu::Flush(void) { -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_LOCK; -#endif -debug("cSkinEnigmaDisplayMenu::Flush()"); + if (fLockNeeded && !fLocked) TE_LOCK; +//debug("cSkinEnigmaDisplayMenu::Flush()"); if (fShowLogo) { time_t t = time(NULL); @@ -2662,16 +2686,10 @@ debug("cSkinEnigmaDisplayMenu::Flush()"); int nWeekday = tm->tm_wday; if (0 <= nWeekday && nWeekday < 7) { - osd->DrawText(x, ys,WEEKDAY(nWeekday), Theme.Color(clrMenuTxtFg), + osd->DrawText(x, ys,WeekDayNameFull(nWeekday), Theme.Color(clrMenuTxtFg), Theme.Color(clrLogoBg), pFontDate, w, pFontDate->Height(), taCenter); } - /*TODO: old - strftime(temp, sizeof(temp), "%A", tm); - osd->DrawText(x, ys, temp, Theme.Color(clrMenuTxtFg), - Theme.Color(clrLogoBg), pFontDate, w, - pFontDate->Height(), taCenter); - */ ys += pFontDate->Height(); strftime(temp, sizeof(temp), "%d.%m.%Y", tm); @@ -2695,18 +2713,18 @@ debug("cSkinEnigmaDisplayMenu::Flush()"); } } osd->Flush(); -#ifndef DISABLE_ANIMATED_TEXT - TE_UNLOCK; - if (fLocked) { - fLocked = false; - TE_WAKEUP; + if (fLockNeeded) { + TE_UNLOCK; + if (fLocked) { + fLocked = false; + TE_WAKEUP; + } } -#endif } // --- cSkinEnigmaDisplayReplay --------------------------------------------- -class cSkinEnigmaDisplayReplay : public cSkinDisplayReplay, public cSkinEnigmaBaseOsd, public cSkinEnigmaThreadedOsd { +class cSkinEnigmaDisplayReplay : public cSkinDisplayReplay, public cSkinEnigmaBaseOsd { private: const cFont *pFontOsdTitle; const cFont *pFontReplayTimes; @@ -2727,11 +2745,11 @@ private: int nJumpWidth; int nCurrentWidth; bool fShowSymbol; -#ifndef DISABLE_ANIMATED_TEXT bool fLocked; + bool fLockNeeded; bool fScrollTitle; int idTitle; -#endif + int nBPP; public: cSkinEnigmaDisplayReplay(bool ModeOnly); @@ -2744,13 +2762,10 @@ public: virtual void SetJump(const char *Jump); virtual void SetMessage(eMessageType Type, const char *Text); virtual void Flush(void); - virtual void DrawTitle(const char *s); }; cSkinEnigmaDisplayReplay::cSkinEnigmaDisplayReplay(bool ModeOnly) { - INIT_FONTS; - struct EnigmaOsdSize OsdSize; EnigmaConfig.GetOsdSize(&OsdSize); @@ -2768,10 +2783,9 @@ cSkinEnigmaDisplayReplay::cSkinEnigmaDisplayReplay(bool ModeOnly) nJumpWidth = 0; nCurrentWidth = 0; fShowSymbol = EnigmaConfig.showSymbols && EnigmaConfig.showSymbolsReplay; -#ifndef DISABLE_ANIMATED_TEXT fScrollTitle = !modeonly && EnigmaConfig.useTextEffects && EnigmaConfig.scrollTitle; idTitle = -1; -#endif + nBPP = 1; int LogoSize = Gap + IconHeight + Gap; LogoSize += (LogoSize % 2 ? 1 : 0); @@ -2808,10 +2822,12 @@ cSkinEnigmaDisplayReplay::cSkinEnigmaDisplayReplay(bool ModeOnly) // create osd osd = cOsdProvider::NewOsd(OsdSize.x, OsdSize.y + OsdSize.h - yBottomBottom); - tArea Areas[] = { {std::min(xTitleLeft, xLogoLeft), yTitleTop, xBottomRight - 1, yBottomBottom - 1, fShowSymbol ? 8 : 4} }; - if ((Areas[0].bpp < 8 || EnigmaConfig.singleArea8Bpp) && osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk) { - debug("cSkinEnigmaDisplayReplay: using %dbpp single area", Areas[0].bpp); - osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea)); + tArea SingleArea[] = { {std::min(xTitleLeft, xLogoLeft), yTitleTop, xBottomRight - 1, yBottomBottom - 1, fShowSymbol ? 8 : 4} }; + if ((SingleArea[0].bpp < 8 || EnigmaConfig.singleArea8Bpp) && osd->CanHandleAreas(SingleArea, sizeof(SingleArea) / sizeof(tArea)) == oeOk) { + debug("cSkinEnigmaDisplayReplay: using %dbpp single area", SingleArea[0].bpp); + osd->SetAreas(SingleArea, sizeof(SingleArea) / sizeof(tArea)); + if (SingleArea[0].bpp >=8 && Setup.AntiAlias) + nBPP = 8; } else { debug("cSkinEnigmaDisplayReplay: using multiple areas"); tArea Areas[] = { {xTitleLeft, yTitleTop, xTitleRight - 1, yTitleDecoBottom - 1, 2}, @@ -2865,76 +2881,35 @@ cSkinEnigmaDisplayReplay::cSkinEnigmaDisplayReplay(bool ModeOnly) xFirstSymbol = DrawStatusSymbols(0, xFirstSymbol, yBottomTop, yBottomBottom) - Gap; } -#ifndef DISABLE_ANIMATED_TEXT + fLockNeeded = fScrollTitle; fLocked = false; - if (fScrollTitle) { - TE_START(osd); + TE_START(osd); + if (fLockNeeded) { fLocked = true; } -#endif } cSkinEnigmaDisplayReplay::~cSkinEnigmaDisplayReplay() { -#ifndef DISABLE_ANIMATED_TEXT - if (fScrollTitle) { - if (!fLocked) TE_LOCK; - TE_STOP; - } -#endif + if (fLockNeeded && !fLocked) TE_LOCK; + TE_STOP; free(strLastDate); delete osd; } void cSkinEnigmaDisplayReplay::SetTitle(const char *Title) { -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_LOCK; - if (fScrollTitle) { - idTitle = TE_TITLE(osd, idTitle, Title, xTitleRight - Roundness - xTitleLeft - Roundness, this); - } else -#endif - DrawTitle(Title); -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_UNLOCK; -#endif -} - -void cSkinEnigmaDisplayReplay::DrawTitle(const char *Title) -{ - //Must be TE_LOCKed by caller - - // draw title area - osd->DrawRectangle(xTitleLeft, yTitleTop, xTitleRight - 1, - yTitleBottom - 1, Theme.Color(clrTitleBg)); - osd->DrawEllipse(xTitleLeft, yTitleTop, xTitleLeft + Roundness - 1, - yTitleTop + Roundness - 1, clrTransparent, -2); - osd->DrawEllipse(xTitleRight - Roundness, yTitleTop, xTitleRight, - yTitleTop + Roundness, clrTransparent, -1); - osd->DrawRectangle(xTitleLeft, yTitleDecoTop, xTitleRight - 1, - yTitleDecoBottom - 1, Theme.Color(clrTitleBg)); - - if (Title) { - debug("REPLAY TITLE: %s", Title); - // draw titlebar - osd->DrawText(xTitleLeft + Roundness + 3, yTitleTop + 3, Title, - Theme.Color(clrTitleShadow), clrTransparent, - pFontOsdTitle, - xTitleRight - Roundness - xTitleLeft - Roundness - 3, - yTitleBottom - yTitleTop - 3); - osd->DrawText(xTitleLeft + Roundness, yTitleTop, Title, - Theme.Color(clrTitleFg), clrTransparent, - pFontOsdTitle, - xTitleRight - Roundness - xTitleLeft - Roundness - 3, - yTitleBottom - yTitleTop); + if (fLockNeeded && !fLocked) { + fLocked = true; + TE_LOCK; } + idTitle = TE_MARQUEE(osd, idTitle, fScrollTitle, xTitleLeft + Roundness, yTitleTop, Title, Theme.Color(clrTitleFg), Theme.Color(clrTitleBg), pFontOsdTitle, nBPP, xTitleRight - Roundness - xTitleLeft - Roundness - 1); + if (fLockNeeded && !fLocked) TE_UNLOCK; } void cSkinEnigmaDisplayReplay::SetMode(bool Play, bool Forward, int Speed) { -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_LOCK; -#endif + if (fLockNeeded && !fLocked) TE_LOCK; bool fFoundLogo = false; if (Speed < -1) @@ -2980,19 +2955,18 @@ void cSkinEnigmaDisplayReplay::SetMode(bool Play, bool Forward, int Speed) yLogoTop + (yLogoBottom - yLogoTop - EnigmaLogoCache.Get().Height()) / 2, EnigmaLogoCache.Get(), EnigmaLogoCache.Get().Color(1), clrTransparent, false, true); -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_UNLOCK; -#endif + if (fLockNeeded && !fLocked) TE_UNLOCK; } -void cSkinEnigmaDisplayReplay::SetProgress(int Current, int Total) +void cSkinEnigmaDisplayReplay::SetProgress(int isCurrent, int Total) { -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_LOCK; -#endif + if (fLockNeeded && !fLocked) { + fLocked = true; + TE_LOCK; + } // create progressbar cProgressBar pb(xProgressRight - xProgressLeft - 2 * BigGap, - yProgressBottom - yProgressTop - 2 * BigGap, Current, Total, + yProgressBottom - yProgressTop - 2 * BigGap, isCurrent, Total, marks, Theme.Color(clrReplayProgressSeen), Theme.Color(clrReplayProgressRest), Theme.Color(clrReplayProgressSelected), @@ -3000,30 +2974,27 @@ void cSkinEnigmaDisplayReplay::SetProgress(int Current, int Total) Theme.Color(clrReplayProgressCurrent)); // draw progressbar osd->DrawBitmap(xProgressLeft + BigGap, yProgressTop + BigGap, pb); -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_UNLOCK; -#endif + if (fLockNeeded && !fLocked) TE_UNLOCK; } -void cSkinEnigmaDisplayReplay::SetCurrent(const char *Current) +void cSkinEnigmaDisplayReplay::SetCurrent(const char *CurrentTime) { - if (!Current) + if (!CurrentTime) return; // draw current time - int w = pFontReplayTimes->Width(Current); -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_LOCK; -#endif - osd->DrawText(xTimeLeft + BigGap, yTimeTop, Current, + int w = pFontReplayTimes->Width(CurrentTime); + if (fLockNeeded && !fLocked) { + fLocked = true; + TE_LOCK; + } + osd->DrawText(xTimeLeft + BigGap, yTimeTop, CurrentTime, Theme.Color(clrReplayCurrent), Theme.Color(clrAltBackground), pFontReplayTimes, w, yTimeBottom - yTimeTop, taLeft); if (nCurrentWidth > w) osd->DrawRectangle(xTimeLeft + BigGap + w, yTimeTop, xTimeLeft + BigGap + nCurrentWidth - 1, yTimeBottom - 1, Theme.Color(clrAltBackground)); nCurrentWidth = w; -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_UNLOCK; -#endif + if (fLockNeeded && !fLocked) TE_UNLOCK; } void cSkinEnigmaDisplayReplay::SetTotal(const char *Total) @@ -3033,22 +3004,22 @@ void cSkinEnigmaDisplayReplay::SetTotal(const char *Total) // draw total time int w = pFontReplayTimes->Width(Total); -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_LOCK; -#endif + if (fLockNeeded && !fLocked) { + fLocked = true; + TE_LOCK; + } osd->DrawText(xTimeRight - BigGap - w, yTimeTop, Total, Theme.Color(clrReplayTotal), Theme.Color(clrAltBackground), pFontReplayTimes, w, yTimeBottom - yTimeTop, taRight); -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_UNLOCK; -#endif + if (fLockNeeded && !fLocked) TE_UNLOCK; } void cSkinEnigmaDisplayReplay::SetJump(const char *Jump) { -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_LOCK; -#endif + if (fLockNeeded && !fLocked) { + fLocked = true; + TE_LOCK; + } if (Jump) { // draw jump prompt nJumpWidth = pFontReplayTimes->Width(Jump); @@ -3063,16 +3034,15 @@ void cSkinEnigmaDisplayReplay::SetJump(const char *Jump) xTimeLeft + (xTimeRight - xTimeLeft - nJumpWidth) / 2 + nJumpWidth - 1, yTimeBottom - 1, Theme.Color(clrAltBackground)); } -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_UNLOCK; -#endif + if (fLockNeeded && !fLocked) TE_UNLOCK; } void cSkinEnigmaDisplayReplay::SetMessage(eMessageType Type, const char *Text) { -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_LOCK; -#endif + if (fLockNeeded && !fLocked) { + fLocked = true; + TE_LOCK; + } if (Text) { // save current osd osd->SaveRegion(xMessageLeft, yMessageTop, xMessageRight, yMessageBottom); @@ -3093,16 +3063,12 @@ void cSkinEnigmaDisplayReplay::SetMessage(eMessageType Type, const char *Text) // restore saved osd osd->RestoreRegion(); } -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_UNLOCK; -#endif + if (fLockNeeded && !fLocked) TE_UNLOCK; } void cSkinEnigmaDisplayReplay::Flush(void) { -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_LOCK; -#endif + if (fLockNeeded && !fLocked) TE_LOCK; // update date if (!modeonly) { cString date = DayDateTime(); @@ -3117,13 +3083,13 @@ void cSkinEnigmaDisplayReplay::Flush(void) } } osd->Flush(); -#ifndef DISABLE_ANIMATED_TEXT - TE_UNLOCK; - if (fLocked) { - fLocked = false; - TE_WAKEUP; + if (fLockNeeded) { + TE_UNLOCK; + if (fLocked) { + fLocked = false; + TE_WAKEUP; + } } -#endif } // --- cSkinEnigmaDisplayVolume --------------------------------------------- @@ -3150,8 +3116,6 @@ public: cSkinEnigmaDisplayVolume::cSkinEnigmaDisplayVolume() { - INIT_FONTS; - struct EnigmaOsdSize OsdSize; EnigmaConfig.GetOsdSize(&OsdSize); @@ -3189,10 +3153,10 @@ cSkinEnigmaDisplayVolume::cSkinEnigmaDisplayVolume() // create osd osd = cOsdProvider::NewOsd(OsdSize.x, OsdSize.y + OsdSize.h - yBottomBottom); - tArea Areas[] = { {xLogoLeft, yLogoTop, xTitleRight - 1, yBottomBottom - 1, fShowSymbol ? 8 : 4} }; - if ((Areas[0].bpp < 8 || EnigmaConfig.singleArea8Bpp) && osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk) { - debug("cSkinEnigmaDisplayVolume: using %dbpp single area", Areas[0].bpp); - osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea)); + tArea SingleArea[] = { {xLogoLeft, yLogoTop, xTitleRight - 1, yBottomBottom - 1, fShowSymbol ? 8 : 4} }; + if ((SingleArea[0].bpp < 8 || EnigmaConfig.singleArea8Bpp) && osd->CanHandleAreas(SingleArea, sizeof(SingleArea) / sizeof(tArea)) == oeOk) { + debug("cSkinEnigmaDisplayVolume: using %dbpp single area", SingleArea[0].bpp); + osd->SetAreas(SingleArea, sizeof(SingleArea) / sizeof(tArea)); } else { debug("cSkinEnigmaDisplayVolume: using multiple areas"); cBitmap *bitmap = NULL; @@ -3236,7 +3200,6 @@ cSkinEnigmaDisplayVolume::cSkinEnigmaDisplayVolume() bitmap->SetColor(4, Theme.Color(clrVolumeBar)); bitmap->SetColor(5, Theme.Color(clrVolumeBarMute)); bitmap->SetColor(6, Theme.Color(clrTitleFg)); - bitmap->SetColor(7, Theme.Color(clrTitleShadow)); } } // clear all @@ -3267,7 +3230,7 @@ cSkinEnigmaDisplayVolume::~cSkinEnigmaDisplayVolume() delete osd; } -void cSkinEnigmaDisplayVolume::SetVolume(int Current, int Total, bool Mute) +void cSkinEnigmaDisplayVolume::SetVolume(int CurrentVol, int Total, bool Mute) { tColor ColorBar; const char *Prompt; @@ -3292,13 +3255,10 @@ void cSkinEnigmaDisplayVolume::SetVolume(int Current, int Total, bool Mute) EnigmaLogoCache.Get(), EnigmaLogoCache.Get().Color(1), Theme.Color(clrLogoBg)); // current volume - int vol = xBodyLeft + Gap + (xBodyRight - Gap - xBodyLeft - Gap) * Current / Total; + int vol = xBodyLeft + Gap + (xBodyRight - Gap - xBodyLeft - Gap) * CurrentVol / Total; // draw titlebar osd->DrawRectangle(xTitleLeft + (fShowSymbol ? Gap : Roundness), yTitleTop, xTitleRight - Roundness - 1, yTitleBottom - 1, Theme.Color(clrTitleBg)); - osd->DrawText(xTitleLeft + (fShowSymbol ? Gap : Roundness) + 3, yTitleTop + 3, Prompt, - Theme.Color(clrTitleShadow), clrTransparent, pFontOsdTitle, - xTitleRight - Roundness - xTitleLeft, pFontOsdTitle->Height(), taCenter); osd->DrawText(xTitleLeft + (fShowSymbol ? Gap : Roundness), yTitleTop, Prompt, Theme.Color(clrTitleFg), clrTransparent, pFontOsdTitle, xTitleRight - Roundness - xTitleLeft, pFontOsdTitle->Height(), taCenter); @@ -3311,17 +3271,6 @@ void cSkinEnigmaDisplayVolume::SetVolume(int Current, int Total, bool Mute) void cSkinEnigmaDisplayVolume::Flush(void) { - /* TODO? remove date - time_t now = time(NULL); - if (now != lastTime) { - lastTime = now; - cString date = DayDateTime(); - osd->DrawText(xBottomLeft + (fShowSymbol ? 0 : Roundness), yBottomTop, date, Theme.Color(clrTitleFg), - Theme.Color(clrBottomBg), pFontDate, - xBottomRight - (fShowSymbol ? Gap : (2 * Roundness)) - xBottomLeft - 1, - yBottomBottom - yBottomTop - 1, taRight); - } - */ osd->Flush(); } @@ -3356,8 +3305,6 @@ public: cSkinEnigmaDisplayTracks::cSkinEnigmaDisplayTracks(const char *Title, int NumTracks, const char *const *Tracks) { - INIT_FONTS; - struct EnigmaOsdSize OsdSize; EnigmaConfig.GetOsdSize(&OsdSize); @@ -3368,6 +3315,14 @@ cSkinEnigmaDisplayTracks::cSkinEnigmaDisplayTracks(const char *Title, int NumTra lastTime = 0; fShowSymbol = EnigmaConfig.showSymbols && EnigmaConfig.showSymbolsAudio; + bool fShowSymbolNow = false; // if symbols are requested try to find subtitle XPM and force to display it at the end of this function, else disable symbols + if (fShowSymbol && strcmp(Title, trVDR("Button$Subtitles")) == 0) { + if (EnigmaLogoCache.LoadIcon("icons/subtitle/subtitle")) + fShowSymbolNow = true; + else + fShowSymbol = false; + } + lineHeight = pFontListItem->Height(); nMarkerGap = min(MarkerGap, lineHeight / 2 - 1); //lineHeight - 2 * MarkerGap int LogoSize = IconHeight; @@ -3419,10 +3374,10 @@ cSkinEnigmaDisplayTracks::cSkinEnigmaDisplayTracks(const char *Title, int NumTra // create osd osd = cOsdProvider::NewOsd(OsdSize.x, OsdSize.y + OsdSize.h - yBottomBottom); - tArea Areas[] = { {xTitleLeft, yTitleTop, xBottomRight - 1, yBottomBottom - 1, fShowSymbol ? 8 : 4} }; - if ((Areas[0].bpp < 8 || EnigmaConfig.singleArea8Bpp) && osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk) { - debug("cSkinEnigmaDisplayTracks: using %dbpp single area", Areas[0].bpp); - osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea)); + tArea SingleArea[] = { {fShowSymbol ? xLogoLeft : xTitleLeft, yTitleTop, xBottomRight - 1, yBottomBottom - 1, fShowSymbol ? 8 : 4} }; + if ((SingleArea[0].bpp < 8 || EnigmaConfig.singleArea8Bpp) && osd->CanHandleAreas(SingleArea, sizeof(SingleArea) / sizeof(tArea)) == oeOk) { + debug("cSkinEnigmaDisplayTracks: using %dbpp single area", SingleArea[0].bpp); + osd->SetAreas(SingleArea, sizeof(SingleArea) / sizeof(tArea)); } else { debug("cSkinEnigmaDisplayTracks: using multiple areas"); if (fShowSymbol) { @@ -3463,11 +3418,6 @@ cSkinEnigmaDisplayTracks::cSkinEnigmaDisplayTracks(const char *Title, int NumTra // draw titlebar osd->DrawRectangle(xTitleLeft, yTitleTop, xTitleRight - 1, yTitleBottom - 1, Theme.Color(clrTitleBg)); osd->DrawRectangle(xTitleLeft, yTitleDecoTop, xTitleRight - 1, yTitleDecoBottom - 1, Theme.Color(clrTitleBg)); - osd->DrawText(xTitleLeft + Roundness + 3, yTitleTop + 3, Title, - Theme.Color(clrTitleShadow), clrTransparent, - pFontOsdTitle, - xTitleRight - Roundness - xTitleLeft - Roundness, - yTitleBottom - yTitleTop - 3, fShowSymbol ? taCenter : taLeft); osd->DrawText(xTitleLeft + Roundness, yTitleTop, Title, Theme.Color(clrTitleFg), clrTransparent, pFontOsdTitle, @@ -3493,9 +3443,15 @@ cSkinEnigmaDisplayTracks::cSkinEnigmaDisplayTracks(const char *Title, int NumTra osd->DrawEllipse(xBottomRight - Roundness, yBottomBottom - Roundness, xBottomRight - 1, yBottomBottom - 1, clrTransparent, -4); // fill up audio tracks - SetAudioChannel(cDevice::PrimaryDevice()->GetAudioChannel()); for (int i = 0; i < NumTracks; i++) SetItem(Tracks[i], i, false); + + if (fShowSymbolNow) { // subtitle logo + osd->DrawBitmap(xLogoLeft + (xLogoRight - xLogoLeft - EnigmaLogoCache.Get().Width()) / 2, + yLogoTop + (yLogoBottom - yLogoTop - EnigmaLogoCache.Get().Height()) / 2, + EnigmaLogoCache.Get(), EnigmaLogoCache.Get().Color(1), + Theme.Color(clrLogoBg)); + } } cSkinEnigmaDisplayTracks::~cSkinEnigmaDisplayTracks() @@ -3503,11 +3459,11 @@ cSkinEnigmaDisplayTracks::~cSkinEnigmaDisplayTracks() delete osd; } -void cSkinEnigmaDisplayTracks::SetItem(const char *Text, int Index, bool Current) +void cSkinEnigmaDisplayTracks::SetItem(const char *Text, int Index, bool isCurrent) { int y = yListTop + Index * lineHeight; tColor ColorFg, ColorBg; - if (Current) { + if (isCurrent) { ColorFg = Theme.Color(clrMenuItemSelectableFg); ColorBg = Theme.Color(clrAltBackground); currentIndex = Index; @@ -3521,7 +3477,7 @@ void cSkinEnigmaDisplayTracks::SetItem(const char *Text, int Index, bool Current osd->DrawEllipse(xListLeft + nMarkerGap, y + nMarkerGap, xListLeft + lineHeight - nMarkerGap, y + lineHeight - nMarkerGap, - Current ? ColorFg : ColorBg); + isCurrent ? ColorFg : ColorBg); } osd->DrawText(xItemLeft, y, Text, ColorFg, ColorBg, pFontListItem, xItemRight - xItemLeft, lineHeight); osd->DrawRectangle(xItemRight, y, xListRight - 1, y + lineHeight - 1, ColorBg); @@ -3558,18 +3514,6 @@ void cSkinEnigmaDisplayTracks::SetTrack(int Index, const char *const *Tracks) void cSkinEnigmaDisplayTracks::Flush(void) { - /* TODO? remove date - time_t now = time(NULL); - if (now != lastTime) { - lastTime = now; - cString date = DayDateTime(); - osd->DrawText(xBottomLeft + Roundness, yBottomTop, date, - Theme.Color(clrTitleFg), Theme.Color(clrBottomBg), - pFontDate, - xBottomRight - Roundness - xBottomLeft - Roundness - 1, - yBottomBottom - yBottomTop - 1, taRight); - } - */ osd->Flush(); } @@ -3585,10 +3529,11 @@ private: int xBottomLeft, xBottomRight, yBottomTop, yBottomBottom; bool fShowSymbol; -#ifndef DISABLE_ANIMATED_TEXT int idMessage; + bool fScrollOther; bool fLocked; -#endif + bool fLockNeeded; + int nBPP; public: cSkinEnigmaDisplayMessage(); @@ -3599,8 +3544,6 @@ public: cSkinEnigmaDisplayMessage::cSkinEnigmaDisplayMessage() { - INIT_FONTS; - struct EnigmaOsdSize OsdSize; EnigmaConfig.GetOsdSize(&OsdSize); @@ -3610,10 +3553,10 @@ cSkinEnigmaDisplayMessage::cSkinEnigmaDisplayMessage() pFontOsdTitle = EnigmaConfig.GetFont(FONT_OSDTITLE); pFontDate = EnigmaConfig.GetFont(FONT_DATE); -#ifndef DISABLE_ANIMATED_TEXT + fScrollOther = EnigmaConfig.useTextEffects && EnigmaConfig.scrollOther; idMessage = -1; -#endif fShowSymbol = EnigmaConfig.showSymbols && EnigmaConfig.showSymbolsMsgs; + nBPP = 1; int LogoSize = std::max(pFontOsdTitle->Height() + TitleDeco + pFontMessage->Height() + @@ -3644,10 +3587,12 @@ cSkinEnigmaDisplayMessage::cSkinEnigmaDisplayMessage() // create osd osd = cOsdProvider::NewOsd(OsdSize.x, OsdSize.y + OsdSize.h - yBottomBottom); - tArea Areas[] = { {xLogoLeft, yLogoTop, xBottomRight - 1, yBottomBottom - 1, fShowSymbol ? 8 : 4} }; - if ((Areas[0].bpp < 8 || EnigmaConfig.singleArea8Bpp) && osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk) { - debug("cSkinEnigmaDisplayMessage: using %dbpp single area", Areas[0].bpp); - osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea)); + tArea SingleArea[] = { {xLogoLeft, yLogoTop, xBottomRight - 1, yBottomBottom - 1, fShowSymbol ? 8 : 4} }; + if ((SingleArea[0].bpp < 8 || EnigmaConfig.singleArea8Bpp) && osd->CanHandleAreas(SingleArea, sizeof(SingleArea) / sizeof(tArea)) == oeOk) { + debug("cSkinEnigmaDisplayMessage: using %dbpp single area", SingleArea[0].bpp); + osd->SetAreas(SingleArea, sizeof(SingleArea) / sizeof(tArea)); + if (SingleArea[0].bpp >=8 && Setup.AntiAlias) + nBPP = 8; } else { debug("cSkinEnigmaDisplayMessage: using multiple areas"); if (fShowSymbol) { @@ -3680,35 +3625,30 @@ cSkinEnigmaDisplayMessage::cSkinEnigmaDisplayMessage() // clear all osd->DrawRectangle(0, 0, osd->Width(), osd->Height(), clrTransparent); -#ifndef DISABLE_ANIMATED_TEXT + fLockNeeded = fScrollOther; fLocked = false; - if (EnigmaConfig.useTextEffects && EnigmaConfig.scrollOther) { - TE_START(osd); + TE_START(osd); + if (fLockNeeded) { fLocked = true; } -#endif } cSkinEnigmaDisplayMessage::~cSkinEnigmaDisplayMessage() { debug("cSkinEnigmaDisplayMessage::~cSkinEnigmaDisplayMessage"); -#ifndef DISABLE_ANIMATED_TEXT - if (EnigmaConfig.useTextEffects && EnigmaConfig.scrollOther) { - if (!fLocked) TE_LOCK; - TE_STOP; - } -#endif + if (fLockNeeded && !fLocked) TE_LOCK; + TE_STOP; delete osd; } void cSkinEnigmaDisplayMessage::SetMessage(eMessageType Type, const char *Text) { debug("cSkinEnigmaDisplayMessage::SetMessage"); -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked && EnigmaConfig.useTextEffects && EnigmaConfig.scrollOther) + if (fLockNeeded && !fLocked) { + fLocked = true; TE_LOCK; -#endif + } if (fShowSymbol) { // draw logo osd->DrawRectangle(xLogoLeft, yLogoTop, xLogoRight - 1, yLogoBottom - 1, Theme.Color(clrLogoBg)); @@ -3726,22 +3666,12 @@ void cSkinEnigmaDisplayMessage::SetMessage(eMessageType Type, const char *Text) osd->DrawRectangle(xMessageLeft, yMessageTop, xMessageRight - 1, yMessageBottom - 1, clrTransparent); osd->DrawRectangle(xMessageLeft, yMessageTop, xMessageRight - 1, yMessageBottom - 1, Theme.Color(clrButtonRedBg)); -#ifndef DISABLE_ANIMATED_TEXT - if (EnigmaConfig.useTextEffects && EnigmaConfig.scrollOther) - idMessage = TE_MARQUEE(osd, idMessage, xMessageLeft, yMessageTop + 2 * SmallGap, Text, - Theme.Color(clrMessageStatusFg + 2 * Type), - Theme.Color(clrMessageStatusBg + 2 * Type), - pFontMessage, - xMessageRight - xMessageLeft, - yMessageBottom - 2 * SmallGap - yMessageTop - 2 * SmallGap, taCenter); - else -#endif - osd->DrawText(xMessageLeft, yMessageTop + SmallGap, Text, - Theme.Color(clrMessageStatusFg + 2 * Type), - Theme.Color(clrMessageStatusBg + 2 * Type), - pFontMessage, - xMessageRight - xMessageLeft - 1, - yMessageBottom - SmallGap - yMessageTop - SmallGap - 1, taCenter); + idMessage = TE_MARQUEE(osd, idMessage, fScrollOther, xMessageLeft, yMessageTop + 2 * SmallGap, Text, + Theme.Color(clrMessageStatusFg + 2 * Type), + Theme.Color(clrMessageStatusBg + 2 * Type), + pFontMessage, nBPP, + xMessageRight - xMessageLeft, + yMessageBottom - 2 * SmallGap - yMessageTop - 2 * SmallGap, taCenter); // draw bottom osd->DrawRectangle(xBottomLeft, yBottomTop, xBottomRight - 1, yBottomBottom - 1, Theme.Color(clrBottomBg)); osd->DrawEllipse(xBottomRight - Roundness, yBottomBottom - Roundness, @@ -3753,25 +3683,23 @@ void cSkinEnigmaDisplayMessage::SetMessage(eMessageType Type, const char *Text) osd->DrawEllipse(xBottomLeft, yBottomBottom - Roundness, xBottomLeft + Roundness - 1, yBottomBottom - 1, clrTransparent, -3); } -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked && EnigmaConfig.useTextEffects && EnigmaConfig.scrollOther) + if (fLockNeeded && !fLocked) TE_UNLOCK; -#endif } void cSkinEnigmaDisplayMessage::Flush(void) { -#ifndef DISABLE_ANIMATED_TEXT - if (!fLocked) TE_LOCK; -#endif + if (fLockNeeded && !fLocked) TE_LOCK; + osd->Flush(); -#ifndef DISABLE_ANIMATED_TEXT - TE_UNLOCK; - if (fLocked) { - fLocked = false; - TE_WAKEUP; + + if (fLockNeeded) { + TE_UNLOCK; + if (fLocked) { + fLocked = false; + TE_WAKEUP; + } } -#endif } // --- cSkinEnigmaOsd ---------------------------------------------------------- @@ -3786,7 +3714,7 @@ bool cSkinEnigmaBaseOsd::HasChannelTimerRecording(const cChannel *Channel) return false; } -int cSkinEnigmaBaseOsd::DrawStatusSymbols(int x0, int xs, int top, int bottom, const cChannel *Channel /* = NULL */) +int cSkinEnigmaBaseOsd::DrawStatusSymbols(int /* x0 */, int xs, int top, int bottom, const cChannel *Channel /* = NULL */) { if (!EnigmaConfig.showStatusSymbols) return xs; @@ -26,17 +26,6 @@ public: virtual cSkinDisplayMessage *DisplayMessage(void); }; - -// interface for use texteffects (=threads) -class cSkinEnigmaThreadedOsd { -friend class cEnigmaTextEffects; - -public: - virtual ~cSkinEnigmaThreadedOsd(void) - {}; - virtual void DrawTitle(const char *Title) = 0; -}; - // interface for common functions class cSkinEnigmaBaseOsd { @@ -8,222 +8,43 @@ #include "common.h" -#if VDRVERSNUM != 10503 #include "font.h" #include <iconv.h> #include <stdio.h> cGraphtftFont::cGraphtftFont() { -#if VDRVERSNUM < 10503 - _library = 0; - _face = 0; - - // init freetype2 lib - int error = FT_Init_FreeType(&_library); - if (error) - { - error("ERROR: Could not init freetype library"); - } -#endif } cGraphtftFont::~cGraphtftFont() { Clear(); - -#if VDRVERSNUM < 10503 - if (_face) - { - FT_Done_Face(_face); - } - - if (_library) - { - FT_Done_FreeType(_library); - } -#endif } -bool cGraphtftFont::Load(string Filename, string CacheName, int Size, int Language, int Width, int format) +const cFont* cGraphtftFont::GetFont(const char *Filename, int Size, int Width) { - if ( _cache.find(CacheName) != _cache.end() ) - return true; - -#if VDRVERSNUM >= 10504 - //TODO: "Width" not yet in VDR -# if VDRVERSNUM >= 10505 - cFont *newFont = cFont::CreateFont(Filename.c_str(), Size, Width > 0 ? (Size * Width / 100) : 0); -# else - cFont *newFont = cFont::CreateFont(Filename.c_str(), Size); -# endif - if (newFont) { - _cache[CacheName] = newFont; - return true; - } -#elif VDRVERSNUM < 10503 - int error = FT_New_Face(_library, Filename.c_str(), format, &_face); - - // every thing ok? - if (error == FT_Err_Unknown_File_Format) - { - error("ERROR: Font file (%s) could be opened and read, but it appears that its font format is unsupported", Filename.c_str()); - return false; - } - else if (error) - { - error("ERROR: Font file (%s) could be opened or read, or simply it is broken", Filename.c_str()); - return false; - } - - // set slot - _slot = _face->glyph; - - if (Width > 0) - Width = Size * Width / 100; - - // set Size - FT_Set_Char_Size - ( - _face, // handle to face object - Width*64, // char_width in 1/64th of points - Size*64, // char_height in 1/64th of points - 0, // horizontal device resolution (dpi) - 0 // vertical device resolution (dpi) - ); - - iconv_t cd; - char from_code[255]; - wchar_t utf_buff[256]; - - // XXX: Get this values from i18n - switch(Language) { - case 11: - strcpy(from_code,"ISO8859-7"); - break; - case 13: - case 17: - strcpy(from_code,"ISO8859-2"); - break; - case 16: - strcpy(from_code,"ISO8859-5"); - break; - default : - strcpy(from_code,"ISO8859-15"); - break; - } - - if ((cd = iconv_open("WCHAR_T",from_code)) == (iconv_t)-1) { - esyslog("ERROR: Iconv encoding not supported: %m"); - return false; //encoding no supportet - } - - for (int c = 0; c < 256; c++) { - - char char_buff = c; - wchar_t wchar_buff; + if (Filename == NULL) + return NULL; - char *in_buff,*out_buff; - size_t in_len, out_len, count; + char *cachename = NULL; + asprintf(&cachename, "%s_%d_%d", Filename, Size, Width); + string CacheName = cachename; + free(cachename); + cachename = NULL; - in_len=1; out_len=4; - in_buff=(char*)&char_buff; - out_buff=(char *)&wchar_buff; - count = iconv(cd,&in_buff,&in_len,&out_buff,&out_len); - if ( (size_t)-1 == count ){ - //printf("ERROR - PREPARING TABLE CHAR %d \n", c); - utf_buff[c] = 0; - } - utf_buff[c] = wchar_buff; - } - iconv_close(cd); + if (_cache.find(CacheName) != _cache.end()) + return _cache[CacheName]; - cFont::tPixelData value; - int num_rows_global = (_face->size->metrics.height / 64 )+1; - int num_rows = num_rows_global + 2; - - cFont::tPixelData * font_data = new cFont::tPixelData[225 * num_rows]; - - for (int i = 0; i < 225; i++) - for (int j = 0; j < num_rows; j++) - font_data[(i*num_rows)+j]=0x0000000000000000; - - // Time to put char 32..255 in font_data - FT_UInt glyph_index; - for ( int num_char = 32, num_char_array = 0; num_char < 256; num_char++, num_char_array++ ) - { + debug("cGraphtftFont::Load() CREATING FONT %s size=%d width=%d", Filename, Size, Width); + cFont *newFont = cFont::CreateFont(Filename, Size, Width > 0 ? (Size * Width / 100) : 0); + if (newFont) { + _cache[CacheName] = newFont; + return newFont; + } - //Get FT char index - glyph_index = FT_Get_Char_Index( _face, utf_buff[num_char] ); - - //Load the char - error = FT_Load_Glyph( _face, glyph_index, FT_LOAD_DEFAULT ); - if ( error ) continue; /* ignore errors */ - - // now, convert to vdr font data - int width = (_slot->metrics.horiAdvance / 64) + 1; - int bearingX = (_slot->metrics.horiBearingX / 64) +1; - width = (width > (int)sizeof(cFont::tPixelData) * 8) ? (((int)sizeof(cFont::tPixelData) * 8)-2) :width ; + error("ERROR: EnigmaNG: Couldn't load font %s:%d", Filename, Size); - font_data[(num_char_array*num_rows)+0]=width; - font_data[(num_char_array*num_rows)+1]=num_rows_global; - - // convert to a mono bitmap - error = FT_Render_Glyph( _face->glyph, ft_render_mode_mono ); - if ( error ) continue; - - int top = _slot->bitmap_top; - int y_off = Size - top; - - unsigned char *bmp = _slot->bitmap.buffer; - - for (int y = 0; y < _slot->bitmap.rows; ++y , y_off++) { - int pos = 0; - int bit = 0x80; - value = 0x00; - - for (int x = 0; x < _slot->bitmap.width; ++x) { - if (bmp[pos] & bit && x < width + 1 ) - value = value | (cFont::tPixelData)1 << width - bearingX - x ; - - bit >>= 1; - if (bit == 0) { - bit = 0x80; - ++pos; - } - } - bmp += _slot->bitmap.pitch; - font_data[(num_char_array*num_rows)+y_off+2] = value; - } - - } - // If all was ok, put the vdr font into the cache and return true - cFont* newFont = NULL; - newFont = new cFont(font_data); - if (newFont) { - _cache[CacheName] = newFont; - _del[CacheName] = font_data; - return true; - } - delete(font_data); -#endif //VDRVERSNUM >= 10504 - - // Something went wrong! - return false; -} - -const cFont* cGraphtftFont::GetFont(string CacheName){ - if (CacheName == "Sml") return cFont::GetFont(fontSml); - else if (CacheName == "Fix") return cFont::GetFont(fontFix); - else if ( _cache.find(CacheName) != _cache.end() ){ - return _cache[CacheName]; - } - return cFont::GetFont(fontOsd); -} - -void cGraphtftFont::Clear(string CacheName) -{ - Clear(); + return NULL; } void cGraphtftFont::Clear() @@ -232,12 +53,4 @@ void cGraphtftFont::Clear() for (; it != _cache.end(); ++it) delete((*it).second); _cache.clear(); - -#if VDRVERSNUM < 10503 - del_map::iterator del_it = _del.begin(); - for (; del_it != _del.end(); ++del_it) - delete[]((*del_it).second); - _del.clear(); -#endif } -#endif //VDRVERSNUM < 10503 @@ -11,10 +11,7 @@ #include "common.h" -#if VDRVERSNUM != 10503 - #include <map> -#include <vector> #include <ft2build.h> #include FT_FREETYPE_H #include <vdr/font.h> @@ -22,35 +19,22 @@ using std::map; using std::string; -using std::vector; class cGraphtftFont { private: typedef map<string,cFont*> cache_map; -#if VDRVERSNUM < 10503 - typedef map<string,cFont::tPixelData*> del_map; -#endif public: cGraphtftFont(); ~cGraphtftFont(); - bool Load(string Filename, string CacheName, int Size, int Language = 0, int Width = 0, int Format = 0); - const cFont* GetFont(string CacheName); - void Clear(string CacheName); + const cFont* GetFont(const char *Filename, int Size, int Width = 0); void Clear(); private: -#if VDRVERSNUM < 10503 - FT_Library _library; - FT_Face _face; - FT_GlyphSlot _slot; - del_map _del; -#endif cache_map _cache; }; -#endif // VDRVERSNUM != 10503 #endif // VDR__GRAPHTFTFONT_H diff --git a/i18n-template.c b/i18n-template.c deleted file mode 100644 index 83f92e1..0000000 --- a/i18n-template.c +++ /dev/null @@ -1,34 +0,0 @@ -/* - * i18n.c: 'EnigmaNG' skin for the Video Disk Recorder - * - * See the README file for copyright information and how to reach the author. - * - * - * Translations submitted by: - * - English: Andreas Mair <andreas _@_ vdr-developer.org> - * - Deutsch: Andreas Mair <andreas _@_ vdr-developer.org> - * - Italiano: Gringo <vdr-italian _@_ tiscali.it> - * - Nederlands: Johan Schuring <dorpsgek @vdr-portal.de> - * - Fran�ais: Patrice Staudt <pat @vdr-portal.de> - * - Finnish: Rolf Ahrenberg <rofafor @vdr-portal.de> - * - Polski: ??? - * - Espa�ol: bittor from open7x0.org <bittor7x0 _at_ gmail.com> - * - Svenska: ??? - * - Russian: SergArb @vdr-portal.de / neptunvasja @vdr-portal.de - * - Eesti: ??? - * - Dansk: ??? - * - Czech: ??? - * - T�rk�e: n/a - * - */ - -#include "common.h" -#include "i18n.h" - -#if VDRVERSNUM < 10507 -const tI18nPhrase Phrases[] = { -// START I18N -// END I18N - { NULL } - }; -#endif @@ -1,4199 +0,0 @@ -/* - * i18n.c: 'EnigmaNG' skin for the Video Disk Recorder - * - * See the README file for copyright information and how to reach the author. - * - * - * Translations submitted by: - * - English: Andreas Mair <andreas _@_ vdr-developer.org> - * - Deutsch: Andreas Mair <andreas _@_ vdr-developer.org> - * - Italiano: Gringo <vdr-italian _@_ tiscali.it> - * - Nederlands: Johan Schuring <dorpsgek @vdr-portal.de> - * - Fran�ais: Patrice Staudt <pat @vdr-portal.de> - * - Finnish: Rolf Ahrenberg <rofafor @vdr-portal.de> - * - Polski: ??? - * - Espa�ol: bittor from open7x0.org <bittor7x0 _at_ gmail.com> - * - Svenska: ??? - * - Russian: SergArb @vdr-portal.de / neptunvasja @vdr-portal.de - * - Eesti: ??? - * - Dansk: ??? - * - Czech: ??? - * - T�rk�e: n/a - * - */ - -#include "common.h" -#include "i18n.h" - -#if VDRVERSNUM < 10507 -const tI18nPhrase Phrases[] = { -// START I18N - automatically generated by po2i18n.pl - { " Blink pause (ms)", - " Blink-Pause (ms)", - "", - " Pausa lampeggiante (ms)", - " Blinkpauze (ms)", - "", - " Pause de clignotement (ms)", - "", - " Vilkutuksen tauko (ms)", - "", - " Pausa del parpadeo (ms)", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { " Identify channel by", - " Kanal-Identifikation durch", - "", - " Identifica canale per", - " Identificeer kanaal door", - "", - " Identifier cha�ne par", - "", - " Tunnista kanava", - " Rozpoznaj kana� po", - " Identificar el canal por", - "", - " Identifiera kanal med", - "", - "", - "", -#if VDRVERSNUM >= 10302 - " ���������� ����� ��", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - " Kanali tuvastamise meetod", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { " Image format", - " Bildformat", - "", - " Formato immagine", - " Beeldformaat", - "", - " Format d'image", - "", - " Kuvaformaatti", - "", - " Formato de imagen", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - " ������ �����������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { " Image height", - " Bildh�he", - "", - " Altezza immagine", - " Beeldhoogte", - "", - " Hauteur", - "", - " Kuvien korkeus", - "", - " Altura de imagen", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - " ������ �����������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { " Image width", - " Bildbreite", - "", - " Larghezza immagine", - " Beeldbreedte", - "", - " Largeur", - "", - " Kuvien leveys", - "", - " Anchura de imagen", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - " ������ �����������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { " Resize images", - " Bildberechnung benutzt", - "", - " Ridimensiona immagini", - " Aanpassen beeldgrootte", - "", - " Redimensionne les images", - "", - " Muokkaa kuvien kokoa", - "", - " Redimensionar im�genes", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - " ���������� ���������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { " Scoll behaviour", - " Scroll-Verhalten", - "", - " Modalit� scorrimento", - " Scroll gedrag", - "", - " Comportement de d�filement", - "", - " Vieritystapa", - "", - " Comportamiento del scroll", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { " Scroll OSD title", - " OSD Titel scrollen", - "", - " Scorri titolo OSD", - " OSD titel scrollen", - "", - " D�filement dans le titre du OSD", - "", - " Vierit� valikon otsikkoa", - "", - " T�tulo OSD del scroll", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { " Scroll active list items", - " Aktive Listenzeile scrollen", - "", - " Scorri elenco valori attivi", - " Lijst aktieve punten scrollen", - "", - " Barre de d�filement dans la liste active", - "", - " Vierit� aktiivista valintaa", - "", - " Scroll para la lista activa", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { " Scroll delay (ms)", - " Scroll-Verz�gerung (ms)", - "", - " Ritardo scorrimento (ms)", - " Scrollvertraging (ms)", - "", - " D�lai de d�filement (ms)", - "", - " Vierityksen viive (ms)", - "", - " Retardo del scroll (ms)", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { " Scroll info area", - " Infobereich scrollen", - "", - " Scorri info area", - " Infobereik scrollen", - "", - " Barre de d�filement dans la surface info", - "", - " Vierit� infoaluetta", - "", - " Scroll para el �rea info", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { " Scroll other items", - " Andere Bereiche scrollen", - "", - " Scorri altri valori", - " Andere punten scrollen", - "", - " Barre de d�filement dans d'autres parties", - "", - " Vierit� muita alueita", - "", - " Scroll para otros datos", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { " Scroll pause (ms)", - " Scroll-Pause (ms)", - "", - " Pausa scorrimento (ms)", - " Scrollpause (ms)", - "", - " Pause de d�filement (ms)", - "", - " Vierityksen tauko (ms)", - "", - " Pausa del scroll (ms)", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { " Show WSS mode symbols", - " Symbol f�r WSS Modus", - "", - " Mostra simboli mod. WSS", - "WSS modus symbolen tonen", - "", - " Afficher mode symboles WSS", - "", - " N�yt� WSS-symbolit", - "", - " Mostrar s�mbolos modo WSS", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { " Show flags", - " Fahnen anzeigen", - "", - " Mostra segni", - " Vlaggen tonen", - "", - " Afficher drapeau", - "", - " N�yt� liput", - "", - " Mostrar banderas", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - " �������� �����", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { " Show mail icon", - " Zeige Mail-Icon", - "", - " Mostra icona email", - " Mail-ikoon tonen", - "", - " Afficher l'ic�ne courriel", - "", - " N�yt� s�hk�postikuvake", - "", - " Mostrar icono correo", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - " �������� ������ �����. �����", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { " Show symbols in audio", - " Symbole bei Audio", - "", - " Mostra simboli audio", - " Symbolen bij audio tonen", - "", - " dans audio", - "", - " N�yt� symbolit ��nivalikossa", - "", - " Mostrar s�mbolos en audio", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { " Show symbols in menu", - " Symbole im Men�", - "", - " Mostra simboli menu", - " Symbolen in menu tonen", - "", - " dans le menu", - "", - " N�yt� symbolit valikossa", - "", - " Mostrar s�mbolos en men�", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - " �������� ������� � ����", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { " Show symbols in messages", - " Symbole bei den Meldungen", - "", - " Mostra simboli messaggi", - " Symbolen bij berichten tonen", - "", - " dans les messages", - "", - " N�yt� symbolit viesteiss�", - "", - " Mostrar s�mbolos en mensajes", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { " Show symbols in replay", - " Symbole bei der Wiedergabe", - "", - " Mostra simboli esecuzione", - " Symbolen bij weergave tonen", - "", - " dans lecture", - "", - " N�yt� symbolit toistettaessa", - "", - " Mostrar s�mbolos en reproducci�n", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "*** Invalid Channel ***", - "*** Ung�ltiger Kanal ***", - "", - "*** Canale non valido ***", - "*** Ongeldig Kanaal ***", - "", - "*** Cha�ne non valable ***", - "", - "*** Virheellinen kanava ***", - "", - "*** Canal no v�lido ***", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "*** ������������ ����� ***", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Animated Text", - "Bewegter Text", - "", - "Testo animato", - "Geanimeerde tekst", - "", - "Texte d�filant", - "", - "Tekstien el�v�inti", - "", - "Texto animado", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Auxiliary information", - "Zusatzinformation", - "", - "Informazione ausiliare", - "Hulp informatie", - "", - "Information auxiliare", - "", - "Lis�tiedot", - "Informacje pomocnicze", - "Informaci�n adicional", - "", - "Extrainformation", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "����. ����������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "Lisainfo", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Button$Flush cache", - "Cache leeren", - "", - "Pulisci cache", - "Cache legen", - "", - "Supprimer cache", - "", - "Tyhjenn�", - "Opr�nij cache", - "Limpiar cach�", - "", - "T�m cachen", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "�������� ���", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "T�hjenda", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Button$Set", - "�ndern", - "", - "Imposta", - "Veranderen", - "", - "Changer", - "", - "Aseta", - "", - "Cambiar", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Channel logo cache size", - "Gr��e des Logo-Caches", - "", - "Dim. cache logo canale", - "Kanaallogo cache", - "", - "Taille du cache des logos", - "", - "V�limuistin koko kanavalogoille", - "Rozmiar cache dla logo kana�u", - "Tama�o de cach� para los logos", - "", - "Cachestorlek f�r logotyper", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "������ ���� ���o����� �������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "Kanalilogo vahem�lu suurus", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Channel:", - "Kanal:", - "", - "Canale:", - "Kanaal:", - "", - "Cha�ne:", - "", - "Kanava:", - "", - "Canal:", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Channelinfo: language", - "Kanalinfo: Sprache", - "", - "Info canale: lingua", - "Kanaalinfo: taal", - "", - "Cha�ne info: langue", - "", - "Kanavatieto: kieli", - "", - "Info canal: idioma", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Channelinfo: subtitle", - "Kanalinfo: Untertitel", - "", - "Info canale: sottotitolo", - "Kanaalinfo: ondertitel", - "", - "Cha�ne info: sous-titres", - "", - "Kanavatieto: ohjelman kuvaus", - "", - "Info canal: subt�tulo", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Channelinfo: title", - "Kanalinfo: Titel", - "", - "Info canale: titolo", - "Kanaalinfo: titel", - "", - "Cha�ne info: titre ", - "", - "Kanavatieto: ohjelman nimi", - "", - "Info canal: t�tulo", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Date", - "Datum", - "", - "Data", - "Datum", - "", - "Date", - "", - "P�iv�ys", - "", - "Fecha", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Default Fixed Size Font", - "Std. Schrift mit fester Breite", - "", - "Car. dim. fissa pred.", - "Standaardwaarde font", - "", - "Largeur fixe standard", - "", - "tasav�linen kirjasintyyppi", - "", - "Fuente tama�o fijo defecto", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Default OSD Font", - "Std. OSD Font", - "", - "Car. OSD pred.", - "Standaard OSDfont", - "", - "OSD standard", - "", - "oletuskirjasintyyppi", - "", - "Fuente OSD defecto", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Default Small Font", - "Std. kleine Schrift", - "", - "Car. piccolo pred.", - "Standaard klein font", - "", - "Petite police standard", - "", - "pieni kirjasintyyppi", - "", - "Fuente peque�a defecto", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Details: date", - "Details: Datumszeile", - "", - "Dettagli: data", - "Details: datum", - "", - "D�tails: date", - "", - "Lis�tiedot: p�iv�m��r�", - "", - "Detalles: fecha", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Details: subtitle", - "Details: Untertitel", - "", - "Dettagli: sottotitolo", - "Details: ondertitel", - "", - "D�tails: Sous-titre", - "", - "Lis�tiedot: ohjelman kuvaus", - "", - "Detalles: subt�tulo", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Details: text", - "Details: Text", - "", - "Dettagli: testo", - "Details: tekst", - "", - "D�tails: Texte", - "", - "Lis�tiedot: leip�teksti", - "", - "Detalles: texto", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Details: title", - "Details: Titel", - "", - "Dettagli: titolo", - "Details: titel", - "", - "D�tails: Titre", - "", - "Lis�tiedot: ohjelman nimi", - "", - "Detalles: t�tulo", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Dynamic OSD size", - "Dynamische OSD-Gr��e", - "", - "Dimensione OSD dinamica", - "Dynamische OSD grootte", - "", - "Taille dynamique de OSD", - "", - "Mukauta kuvaruutun�yt�n kokoa", - "", - "Tama�o OSD din�mico", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "EPGSearch", - "EPGSearch", - "", - "EPGSearch", - "EPGsearch", - "", - "Recherche EPG", - "", - "EPGSearch", - "", - "EPGSearch", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Enable", - "Verwenden", - "", - "Abilita", - "Toelaten", - "", - "Permettre", - "", - "K�yt� el�v�inti�", - "", - "Activar", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "EnigmaNG", - "EnigmaNG", - "", - "EnigmaNG", - "EnigmaNG", - "", - "EnigmaNG", - "", - "EnigmaNG", - "EnigmaNG", - "EnigmaNG", - "", - "EnigmaNG", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "EnigmaNG", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "EnigmaNG", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "EnigmaNG skin", - "EnigmaNG Oberfl�che", - "", - "Interfaccia EnigmaNG", - "EnigmaNG skin", - "", - "Skin EnigmaNG", - "", - "EnigmaNG-ulkoasu", - "Skin EnigmaNG", - "Piel EnigmaNG", - "", - "EnigmaNG-temat", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "EnigmaNG ����", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "EnigmaNG kest", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Fixed Font", - "Schrift mit fester Breite", - "", - "Carattere fisso", - "Vaste waarde font", - "", - "Police avec une largeur fixe", - "", - "Tasav�linen kirjasintyyppi", - "", - "Fuente Fija", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Flushing channel logo cache...", - "Logo-Cache wird geleert...", - "", - "Pulizia cache logo canale...", - "Kanaallogo cache legen...", - "", - "Suppression du cache...", - "", - "Tyhjennet��n v�limuistia...", - "Opr�niam cache logo kana�u...", - "Limpiando la cach�...", - "", - "T�mmer cachen...", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "������ ���...", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "Kanalilogo vahem�lu t�hjendamine...", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Fonts", - "Fonts", - "", - "Caratteri", - "Fonts", - "", - "Les polices", - "", - "Kirjasintyypit", - "", - "Fuentes", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Free last line", - "freie letzte Zeile", - "", - "Ultima riga libera", - "Vrije laatste lijn", - "", - "Derni�re ligne libre", - "", - "alimmalla vapaalla rivill�", - "", - "�ltima l�nea libre", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Friday", - "Freitag", - "Petek", - "Venerd�", - "Vrijdag", - "Sexta", - "Vendredi", - "Fredag", - "Perjantai", - "Pi�tek", - "Viernes", - "���������", - "Fredag", - "Vineri", - "P�ntek", - "Divendres", -#if VDRVERSNUM >= 10302 - "�������", -#endif -#if VDRVERSNUM >= 10307 - "Petak", -#endif -#if VDRVERSNUM >= 10313 - "Reede", -#endif -#if VDRVERSNUM >= 10316 - "Fredag", -#endif -#if VDRVERSNUM >= 10342 - "P�tek", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Full title width", - "Volle Titelbreite", - "", - "Lunghezza titolo completo", - "Volle titelbreedte", - "", - "Largeur totale pour le titre", - "", - "Levit� otsikkopalkki", - "", - "Ancho completo para t�tulo", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "������ ������ ���������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "General", - "Allgemein", - "", - "Generale", - "Algemeen", - "", - "G�n�ralit�", - "", - "Yleiset", - "", - "General", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Help buttons", - "Hilfe Tasten", - "", - "Tasti aiuto", - "Help knoppen", - "", - "Button aide", - "", - "v�rin�pp�inrivill�", - "", - "Botones de ayuda", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Help keys", - "Farb-Tasten", - "", - "Tasti aiuto", - "Help toetsen", - "", - "Touche couleur", - "", - "V�rin�pp�imet", - "", - "Botones de ayuda", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Info area: timers text", - "Infobereich: Timer Text", - "", - "Info area: testo timer", - "Infobereik: Timertekst", - "", - "Barre d'information: Text programmation", - "", - "Infoalue: ajastimen leip�teksti", - "", - "�rea info: texto programaci�n", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Info area: timers title", - "Infobereich: Timer Titel", - "", - "Info area: titoli timer", - "Infobereik: Timertitel", - "", - "Barre d'information: Titre Progammation", - "", - "Infoalue: ajastimen otsikko", - "", - "�rea info: t�tulo programaci�n", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Info area: warning text", - "Infobereich: Warnung Text", - "", - "Info area: testo avviso", - "Infobereik: waarschuwing tekst", - "", - "Barre d'information: texte d'avertissement", - "", - "Infoalue: varoituksen leip�teksti", - "", - "�rea info: texto aviso", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Info area: warning title", - "Infobereich: Warnung Titel", - "", - "Info area: titolo avviso", - "Infobereik: waarschuwing titel", - "", - "Barre d'information: avertissement titre", - "", - "Infoalue: varoituksen otsikko", - "", - "�rea info: t�tulo aviso", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Languages", - "Sprachen", - "", - "Lingue", - "Talen", - "", - "Langues", - "", - "Kielet", - "J�zyki", - "Idiomas", - "", - "Spr�k", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "�����", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "Keeled", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Last line", - "Letzter Zeile", - "", - "Ultima riga", - "Laatste lijn", - "", - "Derni�re ligne", - "", - "alimmalla rivill�", - "", - "�ltima l�nea", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "List items", - "Listen", - "", - "Elenco valori", - "Lijsten", - "", - "Liste", - "", - "Listat", - "", - "Listado", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Logos & Symbols", - "Logos & Symbole", - "", - "Loghi e simboli", - "Logo's & Symbolen", - "", - "Logos et symboles", - "", - "Logot ja symbolit", - "", - "Logos y s�mbolos", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "�������� & �������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Messages", - "Meldungen", - "", - "Messaggi", - "Meldingen", - "", - "Message", - "", - "Viestit", - "", - "Mensajes", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Monday", - "Montag", - "ponedeljek", - "Luned�", - "maandag", - "Segunda", - "Lundi", - "Manday", - "Maanantai", - "poniedzia�ek", - "Lunes", - "�������", - "M�ndag", - "Luni", - "H�tf�", - "Dilluns", -#if VDRVERSNUM >= 10302 - "�����������", -#endif -#if VDRVERSNUM >= 10307 - "Ponedjeljak", -#endif -#if VDRVERSNUM >= 10313 - "Esmasp�ev", -#endif -#if VDRVERSNUM >= 10316 - "Mandag", -#endif -#if VDRVERSNUM >= 10342 - "Pond�l�", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Mute", - "Stumm", - "", - "Muto", - "Geluid uit", - "Muet", - "Silence", - "", - "Mykistetty", - "", - "Silenciar", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "����.����", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Name", - "Name", - "", - "Nome", - "Naam", - "", - "Nom", - "", - "Nimi", - "", - "Nombre", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "No TTF support!", - "TTF nicht unterst�tzt!", - "", - "Nessun supporto TTF!", - "TTF niet ondersteund!", - "", - "Les polices TrueType ne sont pas support�es!", - "", - "Ei TrueType-kirjasintyyppi tukea!", - "", - "�Sin soporte TTF!", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "No TrueType fonts installed!", - "Keine TrueType Schriften installiert!", - "", - "Nessun carattere TrueType installato!", - "Geen TrueType fonten geinstalleerd!", - "", - "Il n'y a pas de police TrueType d'install�!", - "", - "TrueType-kirjasintyyppej� ei l�ydy!", - "", - "�Ninguna fuente TrueType instalada!", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "No timer check", - "Ohne �berwachung", - "", - "Nessuna verifica timer", - "Geen controle", - "", - "Sans surveillance", - "", - "Ei valvontaa", - "", - "No comprobar programaci�n", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Number of Reruns", - "Anzahl Wiederholungen", - "", - "Numero di repliche", - "aantal herhalingen", - "", - "Nombre de r�p�titions", - "", - "Uusintojen lukum��r�", - "", - "N�mero de repeticiones", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "���������� ����������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "OSD title", - "OSD Titel", - "", - "Titolo OSD", - "OSD titel", - "", - "Titre OSD", - "", - "Valikon otsikko", - "", - "T�tulo OSD", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "RERUNS OF THIS SHOW", - "WIEDERHOLUNGEN", - "", - "REPLICHE DI QUESTO SPETTACOLO", - "HERHALINGEN", - "", - "REPETITION", - "", - "TOISTUVAT TAPAHTUMAT", - "", - "REPETICIONES", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "���¾�����", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Replay: times", - "Wiedergabe: Zeiten", - "", - "Riproduzione: volte", - "Weergave: tijden", - "", - "Rejouer : p�riodes", - "", - "Toisto: kellonajat", - "", - "Reproducir: veces", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Saturday", - "Samstag", - "Sobota", - "Sabato", - "Zaterdag", - "S�bado", - "Samedi", - "L�rdag", - "Lauantai", - "Sobota", - "S�bado", - "�������", - "L�rdag", - "S�mb�t�", - "Szombat", - "Dissabte", -#if VDRVERSNUM >= 10302 - "�������", -#endif -#if VDRVERSNUM >= 10307 - "Subota", -#endif -#if VDRVERSNUM >= 10313 - "Laup�ev", -#endif -#if VDRVERSNUM >= 10316 - "L�rdag", -#endif -#if VDRVERSNUM >= 10342 - "Sobota", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Search pattern:", - "Suchmuster:", - "", - "Modello di ricerca:", - "Zoekpatroon:", - "", - "Mod�le de recherche", - "", - "Hakutapa:", - "", - "Buscar patr�n:", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Show VPS", - "VPS anzeigen", - "", - "Mostra VPS", - "VPS tonen", - "", - "Afficher le VPS", - "", - "N�yt� VPS-tieto", - "", - "Mostrar VPS", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "���������� VPS", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Show auxiliary information", - "Zusatzinfo anzeigen", - "", - "Mostra info ausiliare", - "Toon hulp informatie", - "", - "Afficher informations auxiliaires", - "", - "N�yt� lis�tiedot", - "Pokazuj informacje pomocnicze", - "Mostrar informaci�n adicional", - "", - "Visa extrainformation", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "���������� ����. ����������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "Lisainfo n�itamine", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Show channel logos", - "Kanal-Logos anzeigen", - "", - "Mostra loghi canali", - "Toon kanaallogo's", - "", - "Afficher logos des cha�nes", - "", - "N�yt� kanavalogot", - "Pokazuj logo kana�u", - "Mostrar logos de los canales", - "", - "Visa kanallogotyper", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "���������� ���� �������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "Kanalilogo n�itamine", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Show event/recording images", - "Bilder in EPG/Aufnahmendetails", - "", - "Mostra immagini evento/reg.", - "Voorstelling/opname figuren tonen", - "", - "Images dans les EPG et d�tails d'enregistrements", - "", - "N�yt� kuvat lis�tietovalikossa", - "", - "Mostrar im�genes grabaci�n/suceso", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "����������� � EPG", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Show info area in main menu", - "Infobereich im Hauptmen�", - "", - "Mostra area info nel menu", - "Info in hoofdmenu", - "", - "Surface d'infos dans le menu principal", - "", - "N�yt� infoalue p��valikossa", - "", - "Mostrar info en men� principal", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "���������� ���. ������� � ��. ����", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Show marker in lists", - "Symbol vor Listeneintr�gen", - "", - "Mostra indicatore elenchi", - "Markering in lijsten tonen", - "", - "Marque devant les listes", - "", - "N�yt� valintasymboli", - "", - "Mostrar marcador en listas", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "���������� ����� � �������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Show messages in menu on", - "Meldungen im Men� �ber", - "", - "Mostra messaggi nel menu", - "Toon berichten in menu aan", - "", - "Afficher les messages dans le menu", - "", - "N�yt� viestit valikossa", - "", - "Mostrar mensajes en el men�", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Show progressbar", - "Fortschrittbalken anzeigen", - "", - "Mostra barra avanzamento", - "Progressiebalk tonen", - "", - "Afficher barre de progression", - "", - "N�yt� aikajana", - "Pokazuj pasek post�pu", - "Mostrar barra de progreso", - "", - "Visa framsteg", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "���������� ��������� �����������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "Edenemisriba n�itamine", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Show recording's size", - "Aufnahmengr��e anzeigen", - "", - "Mostra dimensione reg.", - "Opnamegrootte tonen", - "", - "Afficher la taille des enregistrements", - "", - "N�yt� tallenteen koko", - "", - "Mostrar tama�o de grabaci�n", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "���������� ������� �������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Show remaining/elapsed time", - "Zeige abgel./restl. Zeit", - "", - "Mostra tempo rimasto/trascorso", - "Toon resterend/gedane tijd", - "", - "Afficher le temps �coul�/restant", - "", - "N�yt� tapahtuman aika", - "", - "Mostrar tiempo restante/transcurrido", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "���������� �����./������. �����", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Show status symbols", - "Statussymbole anzeigen", - "", - "Mostra simboli stato", - "Status symbolen tonen", - "", - "Afficher symbole de status", - "", - "N�yt� symbolit", - "Pokazuj symbole", - "Mostrar s�mbolos de estado", - "", - "Visa symboler", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "���������� �������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "S�mbolite n�itamine", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Show symbols", - "Symbole anzeigen", - "", - "Mostra simboli", - "Symbolen tonen", - "", - "Afficher symbole", - "", - "N�yt� symbolit", - "Pokazuj symbole", - "Mostrar s�mbolos", - "", - "Visa symboler", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "���������� �������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "S�mbolite n�itamine", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Show symbols in lists", - "Symbole in Listen", - "", - "Mostra simboli elenchi", - "Symbolen in lijsten tonen", - "", - "Symboles dans les listes", - "", - "N�yt� tapahtumien symbolit", - "", - "Mostrar s�mbolos en listas", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "���������� ������� � �������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Show timer conflicts", - "Timerkonflikte anzeigen", - "", - "Mostra conflitti timer", - "Timerconflict tonen", - "", - "Afficher les conflits de programmation", - "", - "N�yt� p��llekk�iset ajastimet", - "", - "Mostrar conflictos de programaci�n", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "�������� ��������� ��������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Size", - "Gr��e", - "", - "Dim.", - "Grootte", - "", - "Taille", - "", - "Koko", - "", - "Tama�o", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Sunday", - "Sonntag", - "Nedelja", - "Domenica", - "Zondag", - "Domingo", - "Dimanche", - "S�ndag", - "Sunnuntai", - "Niedziela", - "Domingo", - "�������", - "S�ndag", - "Duminic�", - "Vas�rnap", - "Diumenge", -#if VDRVERSNUM >= 10302 - "�����������", -#endif -#if VDRVERSNUM >= 10307 - "Nedjelja", -#endif -#if VDRVERSNUM >= 10313 - "P�hap�ev", -#endif -#if VDRVERSNUM >= 10316 - "S�ndag", -#endif -#if VDRVERSNUM >= 10342 - "Ned�le", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "TIMERS", - "TIMER", - "", - "TIMER", - "TIMER", - "", - "PROGRAMMATION", - "", - "AJASTIMET", - "", - "PROGRAMACIONES", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "°�����", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Thursday", - "Donnerstag", - "�etrtek", - "Gioved�", - "Donderdag", - "Quinta", - "Jeudi", - "Torsdag", - "Torstai", - "Czwartek", - "Jueves", - "������", - "Torsdag", - "Joi", - "Cs�t�rt�k", - "Dijous", -#if VDRVERSNUM >= 10302 - "�������", -#endif -#if VDRVERSNUM >= 10307 - "�etvrtak", -#endif -#if VDRVERSNUM >= 10313 - "Neljap�ev", -#endif -#if VDRVERSNUM >= 10316 - "Torsdag", -#endif -#if VDRVERSNUM >= 10342 - "�tvrtek", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Timer check", - "�berwachung", - "", - "Verifica timer", - "Monitoren", - "", - "Observation de la programmation", - "", - "Ajastimien valvonta", - "", - "Comprobar programaci�n", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "�������� ��������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Timer conflict", - "Timerkonflikt", - "", - "Conflitto timer", - "Timerconflict", - "", - "Conflit de programmation", - "", - "P��llekk�inen ajastin", - "", - "Conflicto de programaci�n", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "�������� �������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Timer conflicts", - "Timerkonflikte", - "", - "Conflitti timer", - "Timerconflicten", - "", - "Conflits de programmation", - "", - "P��llekk�isi� ajastimia", - "", - "Conflictos de programaci�n", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "��������� ��������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "TrueType Font", - "TrueType Schrift", - "", - "Car. TrueType", - "TrueType Font", - "", - "TrueType", - "", - "TrueType-kirjasin", - "", - "Fuente TrueType", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Try 8bpp single area", - "Einen 8bpp Bereich versuchen", - "", - "Prova area singola a 8bpp", - "Op 8bpp bereik testen", - "", - "Essayer une surface � 8bpp", - "", - "Suosi yht� 8bpp kuva-aluetta", - "", - "Probar un �rea de 8bpp", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Tuesday", - "Dienstag", - "Torek", - "Marted�", - "Dinsdag", - "Ter�a", - "Mardi", - "Tirsday", - "Tiistai", - "Wtorek", - "Martes", - "�����", - "Tisdag", - "Mar�i", - "Kedd", - "Dimarts", -#if VDRVERSNUM >= 10302 - "�������", -#endif -#if VDRVERSNUM >= 10307 - "Utorak", -#endif -#if VDRVERSNUM >= 10313 - "Teisip�ev", -#endif -#if VDRVERSNUM >= 10316 - "Tirsdag", -#endif -#if VDRVERSNUM >= 10342 - "�ter�", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Use Subtitle for reruns", - "Verw. Untertitel f�r Wdh.", - "", - "Utilizza sottotitolo per repliche", - "Gebr. ondertitlel voor herh.", - "", - "Utilise sous-titres pour les r�p�titions", - "", - "K�yt� lyhytt� kuvausta uusinnoille", - "", - "Usar subt�tulo para repeticiones", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "�������. ������������ ��� ����������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Volume", - "Lautst�rke", - "", - "Volume", - "Volume", - "", - "Volume", - "", - "��nenvoimakkuus", - "", - "Volumen", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "���������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "WARNING", - "WARNUNG", - "", - "ATTENZIONE", - "WAARSCHUWING", - "", - "ATTENTION", - "", - "VAROITUS", - "", - "AVISO", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "����ÿ��������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Wednesday", - "Mittwoch", - "sreda", - "mercoled�", - "woensdag", - "Quarta", - "Mercredi", - "Onsday", - "Keskiviikko", - "�roda", - "Mi�rcoles", - "�������", - "Onsdag", - "Miercuri", - "Szerda", - "Dimecres", -#if VDRVERSNUM >= 10302 - "�����", -#endif -#if VDRVERSNUM >= 10307 - "Srijeda", -#endif -#if VDRVERSNUM >= 10313 - "Kolmap�ev", -#endif -#if VDRVERSNUM >= 10316 - "Onsdag", -#endif -#if VDRVERSNUM >= 10342 - "St�eda", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "Width", - "Weite", - "", - "Ampiezza", - "Breedte", - "", - "Largeur", - "", - "Leveys", - "", - "Anchura", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "always", - "immer", - "", - "sempre", - "Altijd", - "", - "toujours", - "", - "aina", - "", - "siempre", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "data", - "ID", - "", - "dati", - "data", - "", - "Donn�e", - "", - "tiedoista", - "parametry", - "datos", - "", - "data", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "andmed", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "elapsed", - "abgelaufene", - "", - "trascorso", - "gedane", - "", - "�coul�", - "", - "kulunut", - "", - "transcurrido", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "��������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "en_US", - "de_DE", - "sl_SI", - "it_IT", - "nl_NL", - "pt_PT", - "fr_FR", - "no_NO", - "fi_FI", - "pl_PL", - "es_ES", - "el_GR", - "sv_SE", - "ro_RO", - "hu_HU", - "ca_AD", -#if VDRVERSNUM >= 10302 - "ru_RU", -#endif -#if VDRVERSNUM >= 10307 - "hr_HR", -#endif -#if VDRVERSNUM >= 10313 - "et_EE", -#endif -#if VDRVERSNUM >= 10316 - "da_DK", -#endif -#if VDRVERSNUM >= 10342 - "cs_CZ", -#endif -#if VDRVERSNUM >= 10502 - "tr_TR", -#endif - }, - { "if exists", - "wenn vorhanden", - "", - "se esiste", - "wanneer aanwezig", - "", - "si existant", - "", - "jos olemassa", - "", - "si existe", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "���� � �������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "left and right", - "links und rechts", - "", - "sinistra e destra", - "links en rechts", - "", - "gauche et droite", - "", - "edestakaisin", - "", - "izquierda y derecha", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "min", - "min", - "", - "min", - "min", - "", - "min", - "", - "min", - "min", - "min", - "", - "min", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "���", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "min", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "name", - "Name", - "", - "nome", - "naam", - "", - "Nom", - "", - "nimest�", - "nazwa", - "nombre", - "", - "namn", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "��������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "nimi", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "never", - "nie", - "", - "mai", - "nooit", - "", - "jamais", - "", - "ei koskaan", - "", - "nunca", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "�������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "only if new mail present", - "nur bei neuer Mail", - "", - "solo se presenti nuove email", - "alleen bij nieuwe mail", - "", - "juste lors d'un courriel", - "", - "jos uutta postia", - "", - "s�lo si hay nuevo correo", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "������ ��� ����� ���������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "percent", - "Prozent", - "", - "percentuale", - "procent", - "", - "Pourcentage", - "", - "prosentti", - "", - "porcentaje", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "�������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "pixel algo", - "Pixel-Algorithmus", - "", - "algoritmo pixel", - "pixelalgoritme", - "", - "Algorithme pixel", - "", - "n�ytteistys", - "", - "Algoritmo p�xel", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "�������� �������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "ratio algo", - "Ratio-Algorithmus", - "", - "algoritmo medio", - "algoritmeratio", - "", - "Algorithme ratio", - "", - "skaalaus", - "", - "Algoritmo ratio", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "�������� �����������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "remaining", - "restliche", - "", - "rimasto", - "resterend", - "", - "restant", - "", - "j�ljell� oleva", - "", - "restante", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "���������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "to the left", - "nach links", - "", - "verso la sinistra", - "naar links", - "", - "vers la gauche", - "", - "vasemmalle", - "", - "a la izquierda", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "use size.vdr only", - "nur size.vdr verwenden", - "", - "usa solo size.vdr", - "alleen size.vdr gebruiken", - "", - "utiliser seulement size.vdr", - "", - "vain jos size.vdr", - "", - "s�lo usar size.vdr", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "������������ ������ size.vdr", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, - { "zoom image", - "Zoomen", - "", - "ingrandisci immagine", - "zoomen", - "", - "Agrandir image", - "", - "zoomaus", - "", - "Aumentar imagen", - "", - "", - "", - "", - "", -#if VDRVERSNUM >= 10302 - "���������", -#endif -#if VDRVERSNUM >= 10307 - "", -#endif -#if VDRVERSNUM >= 10313 - "", -#endif -#if VDRVERSNUM >= 10316 - "", -#endif -#if VDRVERSNUM >= 10342 - "", -#endif -#if VDRVERSNUM >= 10502 - "", -#endif - }, -// END I18N - automatically generated by po2i18n.pl - { NULL } - }; -#endif @@ -1,25 +0,0 @@ -/* - * i18n.h: 'EnigmaNG' skin for the Video Disk Recorder - * - * See the README file for copyright information and how to reach the author. - * - */ - -#ifndef __ENIGMA_I18N_H -#define __ENIGMA_I18N_H - -#include "common.h" - -#include <vdr/i18n.h> - -#if VDRVERSNUM < 10507 -extern const tI18nPhrase Phrases[]; -#define trNOOP(s) (s) -#endif - -#if APIVERSNUM < 10509 -#define trVDR(s) tr(s) -#endif - -#endif // __ENIGMA_I18N_H -// vim:et:sw=2:ts=2: @@ -96,24 +96,36 @@ bool cEnigmaLogoCache::LoadChannelLogo(const cChannel *Channel) return false; bool fFoundLogo = false; + const char *logoname = NULL; + char *strLogo = NULL; + char *filename = NULL; + char *strChannelID = EnigmaConfig.useChannelId && !Channel->GroupSep() ? strdup(*Channel->GetChannelID().ToString()) : NULL; - const char *logoname = EnigmaConfig.useChannelId && !Channel->GroupSep() ? strChannelID : Channel->Name(); - if (logoname) { - char *filename = (char *)malloc(strlen(logoname) + 20 /* should be enough for folder */); - if (filename == NULL) return false; - strcpy(filename, "hqlogos/"); - strcat(filename, logoname); + logoname = EnigmaConfig.useChannelId && !Channel->GroupSep() ? strChannelID : Channel->Name(); + if (logoname == NULL) goto leave; + + strLogo = strreplace(strdup(logoname), '/', '~'); + if (strLogo == NULL) goto leave; + + filename = (char *)malloc(strlen(strLogo) + 20 /* should be enough for folder */); + if (filename == NULL) goto leave; + + strcpy(filename, "hqlogos/"); + strcat(filename, strLogo); + if (!(fFoundLogo = Load(filename, ChannelLogoWidth, ChannelLogoHeight, false))) { + strcpy(filename, "logos/"); + strcat(filename, strLogo); if (!(fFoundLogo = Load(filename, ChannelLogoWidth, ChannelLogoHeight, false))) { - strcpy(filename, "logos/"); - strcat(filename, logoname); - if (!(fFoundLogo = Load(filename, ChannelLogoWidth, ChannelLogoHeight, false))) { - error("cPluginSkinEnigma::LoadChannelLogo: LOGO \"%s.xpm\" NOT FOUND in %s/[hq]logos", logoname, EnigmaConfig.GetLogoDir()); - fFoundLogo = Load("hqlogos/no_logo", ChannelLogoWidth, ChannelLogoHeight); //TODO? different default logo for channel/group? - } + error("cPluginSkinEnigma::LoadChannelLogo: LOGO \"%s.xpm\" NOT FOUND in %s/[hq]logos", strLogo, EnigmaConfig.GetLogoDir()); + fFoundLogo = Load("hqlogos/no_logo", ChannelLogoWidth, ChannelLogoHeight); //TODO? different default logo for channel/group? } - free(filename); - free(strChannelID); } + +leave: + free(filename); + free(strLogo); + free(strChannelID); + return fFoundLogo; } diff --git a/patches/vdr-1.4.5-no_trans_found.diff b/patches/vdr-1.4.5-no_trans_found.diff deleted file mode 100644 index 8e890cc..0000000 --- a/patches/vdr-1.4.5-no_trans_found.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- i18n.c.orig 2007-01-31 11:54:21.000000000 +0100 -+++ i18n.c 2007-01-31 11:54:40.000000000 +0100 -@@ -6201,7 +6201,7 @@ - } - p = Phrases; - } -- esyslog("%s%sno translation found for '%s' in language %d (%s)", Plugin ? Plugin : "", Plugin ? ": " : "", s, Setup.OSDLanguage, Phrases[0][Setup.OSDLanguage]); -+//AM esyslog("%s%sno translation found for '%s' in language %d (%s)", Plugin ? Plugin : "", Plugin ? ": " : "", s, Setup.OSDLanguage, Phrases[0][Setup.OSDLanguage]); - } - const char *p = strchr(s, '$'); - return p ? p + 1 : s; diff --git a/patches/vdr-1.4.5-no_trans_found.txt b/patches/vdr-1.4.5-no_trans_found.txt deleted file mode 100644 index 279e6d4..0000000 --- a/patches/vdr-1.4.5-no_trans_found.txt +++ /dev/null @@ -1,26 +0,0 @@ -WHO ---- -Andreas Mair (andreas AT vdr DASH developer DOT org) - -WHAT ------ -This patch removes the "no translation found for" warnings in the VDR log. - -WHY ----- -This might be useful if you have enabled the symbols in the main menu -because in that case EnigmaNG has to compare every main menu entry with -a localized text to find out what symbol has to be shown. - -FOR ---- -This patch has been tested with vanilla VDR 1.4.5 but should apply to other -releases too. Anyway, it's not hard to fix reject... - -HOW ---- -Change to VDR source directory and run -vdr-1.4.5$ patch <PLUGINS/src/skinenigmang/patches/vdr-1.4.5-no_trans_found.diff - - -2007-01-31, Andreas Mair diff --git a/po/ca_ES.po b/po/ca_ES.po index a247e06..f4178d8 100644 --- a/po/ca_ES.po +++ b/po/ca_ES.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: VDR 1.5.7\n" "Report-Msgid-Bugs-To: <andreas@vdr-developer.org>\n" -"POT-Creation-Date: 2008-01-09 08:21+0100\n" +"POT-Creation-Date: 2009-03-30 12:30+0200\n" "PO-Revision-Date: 2007-12-18 08:11+0100\n" "Last-Translator: Jordi Vil� <jvila@tinet.org>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -17,33 +17,15 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" -msgid "Sunday" -msgstr "Diumenge" - -msgid "Monday" -msgstr "Dilluns" - -msgid "Tuesday" -msgstr "Dimarts" - -msgid "Wednesday" -msgstr "Dimecres" - -msgid "Thursday" -msgstr "Dijous" - -msgid "Friday" -msgstr "Divendres" +msgid "Free-To-Air" +msgstr "" -msgid "Saturday" -msgstr "Dissabte" +msgid "encrypted" +msgstr "" msgid "*** Invalid Channel ***" msgstr "" -msgid "en_US" -msgstr "ca_AD" - msgid "WARNING" msgstr "" @@ -83,9 +65,6 @@ msgstr "" msgid "TrueType Font" msgstr "" -msgid "No TTF support!" -msgstr "" - msgid "Default OSD Font" msgstr "" @@ -137,6 +116,9 @@ msgstr "" msgid "Free last line" msgstr "" +msgid "if required" +msgstr "" + msgid "Try 8bpp single area" msgstr "" @@ -158,6 +140,12 @@ msgstr "" msgid "Show VPS" msgstr "" +msgid "Show signal info" +msgstr "" + +msgid "Show CA system as text" +msgstr "" + msgid "Show progressbar" msgstr "" @@ -167,6 +155,9 @@ msgstr "" msgid "Show messages in menu on" msgstr "" +msgid "Show scrollbar in menu" +msgstr "" + msgid "pixel algo" msgstr "" @@ -269,7 +260,7 @@ msgstr "" msgid " Scroll other items" msgstr "" -msgid " Scoll behaviour" +msgid " Scroll behaviour" msgstr "" msgid " Scroll delay (ms)" @@ -373,3 +364,6 @@ msgstr "" msgid "No timer check" msgstr "" + +#~ msgid "en_US" +#~ msgstr "ca_AD" diff --git a/po/cs_CZ.po b/po/cs_CZ.po index cd691fc..746611d 100644 --- a/po/cs_CZ.po +++ b/po/cs_CZ.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: VDR 1.5.7\n" "Report-Msgid-Bugs-To: <andreas@vdr-developer.org>\n" -"POT-Creation-Date: 2008-01-09 08:21+0100\n" +"POT-Creation-Date: 2009-03-30 12:30+0200\n" "PO-Revision-Date: 2007-12-18 08:11+0100\n" "Last-Translator: Vladim�r B�rta <vladimir.barta@k2atmitec.cz>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -15,33 +15,15 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8bit\n" -msgid "Sunday" -msgstr "Ned�le" - -msgid "Monday" -msgstr "Pond�l�" - -msgid "Tuesday" -msgstr "�ter�" - -msgid "Wednesday" -msgstr "St�eda" - -msgid "Thursday" -msgstr "�tvrtek" - -msgid "Friday" -msgstr "P�tek" +msgid "Free-To-Air" +msgstr "" -msgid "Saturday" -msgstr "Sobota" +msgid "encrypted" +msgstr "" msgid "*** Invalid Channel ***" msgstr "" -msgid "en_US" -msgstr "cs_CZ" - msgid "WARNING" msgstr "" @@ -81,9 +63,6 @@ msgstr "" msgid "TrueType Font" msgstr "" -msgid "No TTF support!" -msgstr "" - msgid "Default OSD Font" msgstr "" @@ -135,6 +114,9 @@ msgstr "" msgid "Free last line" msgstr "" +msgid "if required" +msgstr "" + msgid "Try 8bpp single area" msgstr "" @@ -156,6 +138,12 @@ msgstr "" msgid "Show VPS" msgstr "" +msgid "Show signal info" +msgstr "" + +msgid "Show CA system as text" +msgstr "" + msgid "Show progressbar" msgstr "" @@ -165,6 +153,9 @@ msgstr "" msgid "Show messages in menu on" msgstr "" +msgid "Show scrollbar in menu" +msgstr "" + msgid "pixel algo" msgstr "" @@ -267,7 +258,7 @@ msgstr "" msgid " Scroll other items" msgstr "" -msgid " Scoll behaviour" +msgid " Scroll behaviour" msgstr "" msgid " Scroll delay (ms)" @@ -371,3 +362,6 @@ msgstr "" msgid "No timer check" msgstr "" + +#~ msgid "en_US" +#~ msgstr "cs_CZ" diff --git a/po/da_DK.po b/po/da_DK.po index fb5a211..ea6e390 100644 --- a/po/da_DK.po +++ b/po/da_DK.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: VDR 1.5.7\n" "Report-Msgid-Bugs-To: <andreas@vdr-developer.org>\n" -"POT-Creation-Date: 2008-01-09 08:21+0100\n" +"POT-Creation-Date: 2009-03-30 12:30+0200\n" "PO-Revision-Date: 2007-12-18 08:11+0100\n" "Last-Translator: Mogens Elneff <mogens@elneff.dk>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -15,33 +15,15 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Transfer-Encoding: 8bit\n" -msgid "Sunday" -msgstr "S�ndag" - -msgid "Monday" -msgstr "Mandag" - -msgid "Tuesday" -msgstr "Tirsdag" - -msgid "Wednesday" -msgstr "Onsdag" - -msgid "Thursday" -msgstr "Torsdag" - -msgid "Friday" -msgstr "Fredag" +msgid "Free-To-Air" +msgstr "" -msgid "Saturday" -msgstr "L�rdag" +msgid "encrypted" +msgstr "" msgid "*** Invalid Channel ***" msgstr "" -msgid "en_US" -msgstr "da_DK" - msgid "WARNING" msgstr "" @@ -81,9 +63,6 @@ msgstr "" msgid "TrueType Font" msgstr "" -msgid "No TTF support!" -msgstr "" - msgid "Default OSD Font" msgstr "" @@ -135,6 +114,9 @@ msgstr "" msgid "Free last line" msgstr "" +msgid "if required" +msgstr "" + msgid "Try 8bpp single area" msgstr "" @@ -156,6 +138,12 @@ msgstr "" msgid "Show VPS" msgstr "" +msgid "Show signal info" +msgstr "" + +msgid "Show CA system as text" +msgstr "" + msgid "Show progressbar" msgstr "" @@ -165,6 +153,9 @@ msgstr "" msgid "Show messages in menu on" msgstr "" +msgid "Show scrollbar in menu" +msgstr "" + msgid "pixel algo" msgstr "" @@ -267,7 +258,7 @@ msgstr "" msgid " Scroll other items" msgstr "" -msgid " Scoll behaviour" +msgid " Scroll behaviour" msgstr "" msgid " Scroll delay (ms)" @@ -371,3 +362,6 @@ msgstr "" msgid "No timer check" msgstr "" + +#~ msgid "en_US" +#~ msgstr "da_DK" diff --git a/po/de_DE.po b/po/de_DE.po index 5a1e14e..cdbd87e 100644 --- a/po/de_DE.po +++ b/po/de_DE.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: VDR 1.5.7\n" "Report-Msgid-Bugs-To: <andreas@vdr-developer.org>\n" -"POT-Creation-Date: 2008-01-09 08:21+0100\n" +"POT-Creation-Date: 2009-03-30 12:30+0200\n" "PO-Revision-Date: 2007-12-18 08:11+0100\n" "Last-Translator: Andreas Mair <andreas _@_ vdr-developer.org>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -15,33 +15,15 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Transfer-Encoding: 8bit\n" -msgid "Sunday" -msgstr "Sonntag" +msgid "Free-To-Air" +msgstr "Free-To-Air" -msgid "Monday" -msgstr "Montag" - -msgid "Tuesday" -msgstr "Dienstag" - -msgid "Wednesday" -msgstr "Mittwoch" - -msgid "Thursday" -msgstr "Donnerstag" - -msgid "Friday" -msgstr "Freitag" - -msgid "Saturday" -msgstr "Samstag" +msgid "encrypted" +msgstr "verschl�sselt" msgid "*** Invalid Channel ***" msgstr "*** Ung�ltiger Kanal ***" -msgid "en_US" -msgstr "de_DE" - msgid "WARNING" msgstr "WARNUNG" @@ -81,9 +63,6 @@ msgstr "EnigmaNG" msgid "TrueType Font" msgstr "TrueType Schrift" -msgid "No TTF support!" -msgstr "TTF nicht unterst�tzt!" - msgid "Default OSD Font" msgstr "Std. OSD Font" @@ -135,6 +114,9 @@ msgstr "Hilfe Tasten" msgid "Free last line" msgstr "freie letzte Zeile" +msgid "if required" +msgstr "wenn ben�tigt" + msgid "Try 8bpp single area" msgstr "Einen 8bpp Bereich versuchen" @@ -156,6 +138,12 @@ msgstr "Zeige abgel./restl. Zeit" msgid "Show VPS" msgstr "VPS anzeigen" +msgid "Show signal info" +msgstr "Zeige Signal-Informationen" + +msgid "Show CA system as text" +msgstr "CA System als Text anzeigen" + msgid "Show progressbar" msgstr "Fortschrittbalken anzeigen" @@ -165,6 +153,9 @@ msgstr "Dynamische OSD-Gr��e" msgid "Show messages in menu on" msgstr "Meldungen im Men� �ber" +msgid "Show scrollbar in menu" +msgstr "Bildlaufleiste im Men� anzeigen" + msgid "pixel algo" msgstr "Pixel-Algorithmus" @@ -267,7 +258,7 @@ msgstr " Aktive Listenzeile scrollen" msgid " Scroll other items" msgstr " Andere Bereiche scrollen" -msgid " Scoll behaviour" +msgid " Scroll behaviour" msgstr " Scroll-Verhalten" msgid " Scroll delay (ms)" @@ -371,3 +362,6 @@ msgstr "�berwachung" msgid "No timer check" msgstr "Ohne �berwachung" + +#~ msgid "en_US" +#~ msgstr "de_DE" diff --git a/po/el_GR.po b/po/el_GR.po index 1237611..e9fb559 100644 --- a/po/el_GR.po +++ b/po/el_GR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: VDR 1.5.7\n" "Report-Msgid-Bugs-To: <andreas@vdr-developer.org>\n" -"POT-Creation-Date: 2008-01-09 08:21+0100\n" +"POT-Creation-Date: 2009-03-30 12:30+0200\n" "PO-Revision-Date: 2007-12-18 08:11+0100\n" "Last-Translator: Dimitrios Dimitrakos <mail@dimitrios.de>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -15,33 +15,15 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-7\n" "Content-Transfer-Encoding: 8bit\n" -msgid "Sunday" -msgstr "�������" - -msgid "Monday" -msgstr "�������" - -msgid "Tuesday" -msgstr "�����" - -msgid "Wednesday" -msgstr "�������" - -msgid "Thursday" -msgstr "������" - -msgid "Friday" -msgstr "���������" +msgid "Free-To-Air" +msgstr "" -msgid "Saturday" -msgstr "�������" +msgid "encrypted" +msgstr "" msgid "*** Invalid Channel ***" msgstr "" -msgid "en_US" -msgstr "el_GR" - msgid "WARNING" msgstr "" @@ -81,9 +63,6 @@ msgstr "" msgid "TrueType Font" msgstr "" -msgid "No TTF support!" -msgstr "" - msgid "Default OSD Font" msgstr "" @@ -135,6 +114,9 @@ msgstr "" msgid "Free last line" msgstr "" +msgid "if required" +msgstr "" + msgid "Try 8bpp single area" msgstr "" @@ -156,6 +138,12 @@ msgstr "" msgid "Show VPS" msgstr "" +msgid "Show signal info" +msgstr "" + +msgid "Show CA system as text" +msgstr "" + msgid "Show progressbar" msgstr "" @@ -165,6 +153,9 @@ msgstr "" msgid "Show messages in menu on" msgstr "" +msgid "Show scrollbar in menu" +msgstr "" + msgid "pixel algo" msgstr "" @@ -267,7 +258,7 @@ msgstr "" msgid " Scroll other items" msgstr "" -msgid " Scoll behaviour" +msgid " Scroll behaviour" msgstr "" msgid " Scroll delay (ms)" @@ -371,3 +362,6 @@ msgstr "" msgid "No timer check" msgstr "" + +#~ msgid "en_US" +#~ msgstr "el_GR" diff --git a/po/es_ES.po b/po/es_ES.po index e685e3f..def0c7a 100644 --- a/po/es_ES.po +++ b/po/es_ES.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: VDR 1.5.7\n" "Report-Msgid-Bugs-To: <andreas@vdr-developer.org>\n" -"POT-Creation-Date: 2008-01-09 08:21+0100\n" +"POT-Creation-Date: 2009-03-30 12:30+0200\n" "PO-Revision-Date: 2008-02-19 17:15+0100\n" "Last-Translator: bittor from open7x0.org <bittor7x0 _at_ gmail.com>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -15,33 +15,15 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Transfer-Encoding: 8bit\n" -msgid "Sunday" -msgstr "Domingo" - -msgid "Monday" -msgstr "Lunes" - -msgid "Tuesday" -msgstr "Martes" - -msgid "Wednesday" -msgstr "Mi�rcoles" - -msgid "Thursday" -msgstr "Jueves" - -msgid "Friday" -msgstr "Viernes" +msgid "Free-To-Air" +msgstr "" -msgid "Saturday" -msgstr "S�bado" +msgid "encrypted" +msgstr "" msgid "*** Invalid Channel ***" msgstr "*** Canal no v�lido ***" -msgid "en_US" -msgstr "es_ES" - msgid "WARNING" msgstr "AVISO" @@ -81,9 +63,6 @@ msgstr "EnigmaNG" msgid "TrueType Font" msgstr "Fuente TrueType" -msgid "No TTF support!" -msgstr "�Sin soporte TTF!" - msgid "Default OSD Font" msgstr "Fuente OSD defecto" @@ -135,6 +114,9 @@ msgstr "Botones de ayuda" msgid "Free last line" msgstr "�ltima l�nea libre" +msgid "if required" +msgstr "" + msgid "Try 8bpp single area" msgstr "Probar un �rea de 8bpp" @@ -156,6 +138,13 @@ msgstr "Mostrar tiempo restante/transcurrido" msgid "Show VPS" msgstr "Mostrar VPS" +#, fuzzy +msgid "Show signal info" +msgstr " Mostrar icono correo" + +msgid "Show CA system as text" +msgstr "" + msgid "Show progressbar" msgstr "Mostrar barra de progreso" @@ -165,6 +154,10 @@ msgstr "Tama�o OSD din�mico" msgid "Show messages in menu on" msgstr "Mostrar mensajes en el men�" +#, fuzzy +msgid "Show scrollbar in menu" +msgstr " Mostrar s�mbolos en men�" + msgid "pixel algo" msgstr "Algoritmo p�xel" @@ -267,7 +260,7 @@ msgstr " Scroll para la lista activa" msgid " Scroll other items" msgstr " Scroll para otros datos" -msgid " Scoll behaviour" +msgid " Scroll behaviour" msgstr " Comportamiento del scroll" msgid " Scroll delay (ms)" @@ -371,3 +364,6 @@ msgstr "Comprobar programaci�n" msgid "No timer check" msgstr "No comprobar programaci�n" + +#~ msgid "en_US" +#~ msgstr "es_ES" diff --git a/po/et_EE.po b/po/et_EE.po index 3c013d7..ddbe8cd 100644 --- a/po/et_EE.po +++ b/po/et_EE.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: VDR 1.5.7\n" "Report-Msgid-Bugs-To: <andreas@vdr-developer.org>\n" -"POT-Creation-Date: 2008-01-09 08:21+0100\n" +"POT-Creation-Date: 2009-03-30 12:30+0200\n" "PO-Revision-Date: 2007-12-18 08:11+0100\n" "Last-Translator: Arthur Konovalov <kasjas@hot.ee>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -15,33 +15,15 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-13\n" "Content-Transfer-Encoding: 8bit\n" -msgid "Sunday" -msgstr "P�hap�ev" - -msgid "Monday" -msgstr "Esmasp�ev" - -msgid "Tuesday" -msgstr "Teisip�ev" - -msgid "Wednesday" -msgstr "Kolmap�ev" - -msgid "Thursday" -msgstr "Neljap�ev" - -msgid "Friday" -msgstr "Reede" +msgid "Free-To-Air" +msgstr "" -msgid "Saturday" -msgstr "Laup�ev" +msgid "encrypted" +msgstr "" msgid "*** Invalid Channel ***" msgstr "" -msgid "en_US" -msgstr "et_EE" - msgid "WARNING" msgstr "" @@ -81,9 +63,6 @@ msgstr "EnigmaNG" msgid "TrueType Font" msgstr "" -msgid "No TTF support!" -msgstr "" - msgid "Default OSD Font" msgstr "" @@ -135,6 +114,9 @@ msgstr "" msgid "Free last line" msgstr "" +msgid "if required" +msgstr "" + msgid "Try 8bpp single area" msgstr "" @@ -156,6 +138,12 @@ msgstr "" msgid "Show VPS" msgstr "" +msgid "Show signal info" +msgstr "" + +msgid "Show CA system as text" +msgstr "" + msgid "Show progressbar" msgstr "Edenemisriba n�itamine" @@ -165,6 +153,9 @@ msgstr "" msgid "Show messages in menu on" msgstr "" +msgid "Show scrollbar in menu" +msgstr "" + msgid "pixel algo" msgstr "" @@ -268,7 +259,7 @@ msgstr "" msgid " Scroll other items" msgstr "" -msgid " Scoll behaviour" +msgid " Scroll behaviour" msgstr "" msgid " Scroll delay (ms)" @@ -372,3 +363,6 @@ msgstr "" msgid "No timer check" msgstr "" + +#~ msgid "en_US" +#~ msgstr "et_EE" diff --git a/po/fi_FI.po b/po/fi_FI.po index 1f51a61..2aa4031 100644 --- a/po/fi_FI.po +++ b/po/fi_FI.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: VDR 1.5.7\n" "Report-Msgid-Bugs-To: <andreas@vdr-developer.org>\n" -"POT-Creation-Date: 2008-01-09 08:21+0100\n" +"POT-Creation-Date: 2009-03-30 12:30+0200\n" "PO-Revision-Date: 2007-12-18 08:11+0100\n" "Last-Translator: Rolf Ahrenberg <rahrenbe@cc.hut.fi>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -15,33 +15,15 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Transfer-Encoding: 8bit\n" -msgid "Sunday" -msgstr "Sunnuntai" - -msgid "Monday" -msgstr "Maanantai" - -msgid "Tuesday" -msgstr "Tiistai" - -msgid "Wednesday" -msgstr "Keskiviikko" - -msgid "Thursday" -msgstr "Torstai" - -msgid "Friday" -msgstr "Perjantai" +msgid "Free-To-Air" +msgstr "" -msgid "Saturday" -msgstr "Lauantai" +msgid "encrypted" +msgstr "" msgid "*** Invalid Channel ***" msgstr "*** Virheellinen kanava ***" -msgid "en_US" -msgstr "fi_FI" - msgid "WARNING" msgstr "VAROITUS" @@ -81,9 +63,6 @@ msgstr "EnigmaNG" msgid "TrueType Font" msgstr "TrueType-kirjasin" -msgid "No TTF support!" -msgstr "Ei TrueType-kirjasintyyppi tukea!" - msgid "Default OSD Font" msgstr "oletuskirjasintyyppi" @@ -135,6 +114,9 @@ msgstr "v�rin�pp�inrivill�" msgid "Free last line" msgstr "alimmalla vapaalla rivill�" +msgid "if required" +msgstr "" + msgid "Try 8bpp single area" msgstr "Suosi yht� 8bpp kuva-aluetta" @@ -156,6 +138,13 @@ msgstr "N�yt� tapahtuman aika" msgid "Show VPS" msgstr "N�yt� VPS-tieto" +#, fuzzy +msgid "Show signal info" +msgstr " N�yt� s�hk�postikuvake" + +msgid "Show CA system as text" +msgstr "" + msgid "Show progressbar" msgstr "N�yt� aikajana" @@ -165,6 +154,10 @@ msgstr "Mukauta kuvaruutun�yt�n kokoa" msgid "Show messages in menu on" msgstr "N�yt� viestit valikossa" +#, fuzzy +msgid "Show scrollbar in menu" +msgstr " N�yt� symbolit valikossa" + msgid "pixel algo" msgstr "n�ytteistys" @@ -267,7 +260,7 @@ msgstr " Vierit� aktiivista valintaa" msgid " Scroll other items" msgstr " Vierit� muita alueita" -msgid " Scoll behaviour" +msgid " Scroll behaviour" msgstr " Vieritystapa" msgid " Scroll delay (ms)" @@ -371,3 +364,6 @@ msgstr "Ajastimien valvonta" msgid "No timer check" msgstr "Ei valvontaa" + +#~ msgid "en_US" +#~ msgstr "fi_FI" diff --git a/po/fr_FR.po b/po/fr_FR.po index e6673ab..385f077 100644 --- a/po/fr_FR.po +++ b/po/fr_FR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: VDR 1.5.7\n" "Report-Msgid-Bugs-To: <andreas@vdr-developer.org>\n" -"POT-Creation-Date: 2008-01-09 08:21+0100\n" +"POT-Creation-Date: 2009-03-30 12:30+0200\n" "PO-Revision-Date: 2007-12-18 08:11+0100\n" "Last-Translator: Patrice Staudt <patrice.staudt@laposte.net>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -15,33 +15,15 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" -msgid "Sunday" -msgstr "Dimanche" - -msgid "Monday" -msgstr "Lundi" - -msgid "Tuesday" -msgstr "Mardi" - -msgid "Wednesday" -msgstr "Mercredi" - -msgid "Thursday" -msgstr "Jeudi" - -msgid "Friday" -msgstr "Vendredi" +msgid "Free-To-Air" +msgstr "" -msgid "Saturday" -msgstr "Samedi" +msgid "encrypted" +msgstr "" msgid "*** Invalid Channel ***" msgstr "*** Cha�ne non valable ***" -msgid "en_US" -msgstr "fr_FR" - msgid "WARNING" msgstr "ATTENTION" @@ -81,9 +63,6 @@ msgstr "EnigmaNG" msgid "TrueType Font" msgstr "TrueType" -msgid "No TTF support!" -msgstr "Les polices TrueType ne sont pas support�es!" - msgid "Default OSD Font" msgstr "OSD standard" @@ -135,6 +114,9 @@ msgstr "Button aide" msgid "Free last line" msgstr "Derni�re ligne libre" +msgid "if required" +msgstr "" + msgid "Try 8bpp single area" msgstr "Essayer une surface � 8bpp" @@ -156,6 +138,13 @@ msgstr "Afficher le temps �coul�/restant" msgid "Show VPS" msgstr "Afficher le VPS" +#, fuzzy +msgid "Show signal info" +msgstr " Afficher l'ic�ne courriel" + +msgid "Show CA system as text" +msgstr "" + msgid "Show progressbar" msgstr "Afficher barre de progression" @@ -165,6 +154,10 @@ msgstr "Taille dynamique de OSD" msgid "Show messages in menu on" msgstr "Afficher les messages dans le menu" +#, fuzzy +msgid "Show scrollbar in menu" +msgstr " dans le menu" + msgid "pixel algo" msgstr "Algorithme pixel" @@ -267,7 +260,7 @@ msgstr " Barre de d�filement dans la liste active" msgid " Scroll other items" msgstr " Barre de d�filement dans d'autres parties" -msgid " Scoll behaviour" +msgid " Scroll behaviour" msgstr " Comportement de d�filement" msgid " Scroll delay (ms)" @@ -371,3 +364,6 @@ msgstr "Observation de la programmation" msgid "No timer check" msgstr "Sans surveillance" + +#~ msgid "en_US" +#~ msgstr "fr_FR" diff --git a/po/hr_HR.po b/po/hr_HR.po index e686c8c..7621d8d 100644 --- a/po/hr_HR.po +++ b/po/hr_HR.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: VDR 1.5.7\n" "Report-Msgid-Bugs-To: <andreas@vdr-developer.org>\n" -"POT-Creation-Date: 2008-01-09 08:21+0100\n" +"POT-Creation-Date: 2009-03-30 12:30+0200\n" "PO-Revision-Date: 2007-12-18 08:11+0100\n" "Last-Translator: Drazen Dupor <drazen.dupor@dupor.com>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -16,33 +16,15 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8bit\n" -msgid "Sunday" -msgstr "Nedjelja" - -msgid "Monday" -msgstr "Ponedjeljak" - -msgid "Tuesday" -msgstr "Utorak" - -msgid "Wednesday" -msgstr "Srijeda" - -msgid "Thursday" -msgstr "�etvrtak" - -msgid "Friday" -msgstr "Petak" +msgid "Free-To-Air" +msgstr "" -msgid "Saturday" -msgstr "Subota" +msgid "encrypted" +msgstr "" msgid "*** Invalid Channel ***" msgstr "" -msgid "en_US" -msgstr "hr_HR" - msgid "WARNING" msgstr "" @@ -82,9 +64,6 @@ msgstr "" msgid "TrueType Font" msgstr "" -msgid "No TTF support!" -msgstr "" - msgid "Default OSD Font" msgstr "" @@ -136,6 +115,9 @@ msgstr "" msgid "Free last line" msgstr "" +msgid "if required" +msgstr "" + msgid "Try 8bpp single area" msgstr "" @@ -157,6 +139,12 @@ msgstr "" msgid "Show VPS" msgstr "" +msgid "Show signal info" +msgstr "" + +msgid "Show CA system as text" +msgstr "" + msgid "Show progressbar" msgstr "" @@ -166,6 +154,9 @@ msgstr "" msgid "Show messages in menu on" msgstr "" +msgid "Show scrollbar in menu" +msgstr "" + msgid "pixel algo" msgstr "" @@ -268,7 +259,7 @@ msgstr "" msgid " Scroll other items" msgstr "" -msgid " Scoll behaviour" +msgid " Scroll behaviour" msgstr "" msgid " Scroll delay (ms)" @@ -372,3 +363,6 @@ msgstr "" msgid "No timer check" msgstr "" + +#~ msgid "en_US" +#~ msgstr "hr_HR" diff --git a/po/hu_HU.po b/po/hu_HU.po index 1480caf..620ac85 100644 --- a/po/hu_HU.po +++ b/po/hu_HU.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: VDR 1.5.7\n" "Report-Msgid-Bugs-To: <andreas@vdr-developer.org>\n" -"POT-Creation-Date: 2008-01-09 08:21+0100\n" +"POT-Creation-Date: 2009-03-30 12:30+0200\n" "PO-Revision-Date: 2007-12-18 08:11+0100\n" "Last-Translator: Istvan Koenigsberger <istvnko@hotmail.com>, Guido Josten <guido.josten@t-online.de>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -16,33 +16,15 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8bit\n" -msgid "Sunday" -msgstr "Vas�rnap" - -msgid "Monday" -msgstr "H�tf�" - -msgid "Tuesday" -msgstr "Kedd" - -msgid "Wednesday" -msgstr "Szerda" - -msgid "Thursday" -msgstr "Cs�t�rt�k" - -msgid "Friday" -msgstr "P�ntek" +msgid "Free-To-Air" +msgstr "" -msgid "Saturday" -msgstr "Szombat" +msgid "encrypted" +msgstr "" msgid "*** Invalid Channel ***" msgstr "" -msgid "en_US" -msgstr "hu_HU" - msgid "WARNING" msgstr "" @@ -82,9 +64,6 @@ msgstr "" msgid "TrueType Font" msgstr "" -msgid "No TTF support!" -msgstr "" - msgid "Default OSD Font" msgstr "" @@ -136,6 +115,9 @@ msgstr "" msgid "Free last line" msgstr "" +msgid "if required" +msgstr "" + msgid "Try 8bpp single area" msgstr "" @@ -157,6 +139,12 @@ msgstr "" msgid "Show VPS" msgstr "" +msgid "Show signal info" +msgstr "" + +msgid "Show CA system as text" +msgstr "" + msgid "Show progressbar" msgstr "" @@ -166,6 +154,9 @@ msgstr "" msgid "Show messages in menu on" msgstr "" +msgid "Show scrollbar in menu" +msgstr "" + msgid "pixel algo" msgstr "" @@ -268,7 +259,7 @@ msgstr "" msgid " Scroll other items" msgstr "" -msgid " Scoll behaviour" +msgid " Scroll behaviour" msgstr "" msgid " Scroll delay (ms)" @@ -372,3 +363,6 @@ msgstr "" msgid "No timer check" msgstr "" + +#~ msgid "en_US" +#~ msgstr "hu_HU" diff --git a/po/it_IT.po b/po/it_IT.po index a68e842..1a60ac6 100755 --- a/po/it_IT.po +++ b/po/it_IT.po @@ -9,40 +9,25 @@ msgid "" msgstr "" "Project-Id-Version: VDR 1.5.7\n" "Report-Msgid-Bugs-To: <andreas@vdr-developer.org>\n" -"POT-Creation-Date: 2008-03-09 06:37+0100\n" -"PO-Revision-Date: 2008-03-09 01:09+0100\n" -"Last-Translator: Gringo <vdr-italian@tiscali.it>\n" +"POT-Creation-Date: 2009-03-30 12:30+0200\n" +"PO-Revision-Date: 2009-04-11 00:00+0100\n" +"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n" "Language-Team: <vdr@linuxtv.org>\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Italian\n" +"X-Poedit-Country: ITALY\n" +"X-Poedit-SourceCharset: utf-8\n" -msgid "Sunday" -msgstr "Domenica" +msgid "Free-To-Air" +msgstr "in chiaro" -msgid "Monday" -msgstr "Luned�" - -msgid "Tuesday" -msgstr "Marted�" - -msgid "Wednesday" -msgstr "mercoled�" - -msgid "Thursday" -msgstr "Gioved�" - -msgid "Friday" -msgstr "Venerd�" - -msgid "Saturday" -msgstr "Sabato" +msgid "encrypted" +msgstr "codificato" msgid "*** Invalid Channel ***" -msgstr "*** Canale non valido ***" - -msgid "en_US" -msgstr "it_IT" +msgstr "*** Canale NON valido ***" msgid "WARNING" msgstr "ATTENZIONE" @@ -66,7 +51,7 @@ msgid "RERUNS OF THIS SHOW" msgstr "REPLICHE DI QUESTO SPETTACOLO" msgid "Size" -msgstr "Dim." +msgstr "Dimensione" msgid "Auxiliary information" msgstr "Informazione ausiliare" @@ -83,9 +68,6 @@ msgstr "EnigmaNG" msgid "TrueType Font" msgstr "Car. TrueType" -msgid "No TTF support!" -msgstr "Nessun supporto TTF!" - msgid "Default OSD Font" msgstr "Car. OSD pred." @@ -137,6 +119,9 @@ msgstr "Tasti aiuto" msgid "Free last line" msgstr "Ultima riga libera" +msgid "if required" +msgstr "se richiesto" + msgid "Try 8bpp single area" msgstr "Prova area singola a 8bpp" @@ -153,11 +138,17 @@ msgid "Full title width" msgstr "Lunghezza titolo completo" msgid "Show remaining/elapsed time" -msgstr "Mostra tempo rimasto/trascorso" +msgstr "Mostra tempo rim./trasc." msgid "Show VPS" msgstr "Mostra VPS" +msgid "Show signal info" +msgstr "Mostra info segnale" + +msgid "Show CA system as text" +msgstr "Mostra sistema CA come testo" + msgid "Show progressbar" msgstr "Mostra barra avanzamento" @@ -167,6 +158,9 @@ msgstr "Dimensione OSD dinamica" msgid "Show messages in menu on" msgstr "Mostra messaggi nel menu" +msgid "Show scrollbar in menu" +msgstr "Mostra barra scorrimento nel menu" + msgid "pixel algo" msgstr "algoritmo pixel" @@ -180,7 +174,7 @@ msgid "only if new mail present" msgstr "solo se presenti nuove email" msgid "Flushing channel logo cache..." -msgstr "Pulizia cache logo canale..." +msgstr "Pulizia cache loghi canali..." msgid "Show symbols" msgstr "Mostra simboli" @@ -207,7 +201,7 @@ msgid "Show status symbols" msgstr "Mostra simboli stato" msgid " Show flags" -msgstr " Mostra segni" +msgstr " Mostra bandierine" msgid " Show WSS mode symbols" msgstr " Mostra simboli mod. WSS" @@ -243,10 +237,10 @@ msgid "data" msgstr "dati" msgid "Channel logo cache size" -msgstr "Dim. cache logo canale" +msgstr "Dim. cache loghi canali" msgid "Button$Flush cache" -msgstr "Pulisci cache" +msgstr "Svuota cache" msgid "left and right" msgstr "sinistra e destra" @@ -269,8 +263,8 @@ msgstr " Scorri elenco valori attivi" msgid " Scroll other items" msgstr " Scorri altri valori" -msgid " Scoll behaviour" -msgstr " Modalit� scorrimento" +msgid " Scroll behaviour" +msgstr " Modalità scorrimento" msgid " Scroll delay (ms)" msgstr " Ritardo scorrimento (ms)" @@ -285,10 +279,10 @@ msgid "Name" msgstr "Nome" msgid "Width" -msgstr "Ampiezza" +msgstr "Larghezza" msgid "No TrueType fonts installed!" -msgstr "Nessun carattere TrueType installato!" +msgstr "Nessun car. TrueType installato!" msgid "Fixed Font" msgstr "Carattere fisso" @@ -312,7 +306,7 @@ msgid "Channelinfo: title" msgstr "Info canale: titolo" msgid "Channelinfo: subtitle" -msgstr "Info canale: sottotitolo" +msgstr "Info canale: sottotitoli" msgid "Channelinfo: language" msgstr "Info canale: lingua" @@ -336,7 +330,7 @@ msgid "Details: title" msgstr "Dettagli: titolo" msgid "Details: subtitle" -msgstr "Dettagli: sottotitolo" +msgstr "Dettagli: sottotitoli" msgid "Details: date" msgstr "Dettagli: data" @@ -351,16 +345,16 @@ msgid "if exists" msgstr "se esiste" msgid "Number of Reruns" -msgstr "Numero di repliche" +msgstr "Numero repliche" msgid "Use Subtitle for reruns" -msgstr "Utilizza sottotitolo per repliche" +msgstr "Utilizza sottotitoli repliche" msgid "Show timer conflicts" msgstr "Mostra conflitti timer" msgid "EnigmaNG skin" -msgstr "Interfaccia EnigmaNG" +msgstr "Stile interfaccia EnigmaNG" msgid "Channel:" msgstr "Canale:" @@ -373,3 +367,7 @@ msgstr "Verifica timer" msgid "No timer check" msgstr "Nessuna verifica timer" + +#~ msgid "en_US" +#~ msgstr "it_IT" + diff --git a/po/nl_NL.po b/po/nl_NL.po index 52476aa..5f8411a 100644 --- a/po/nl_NL.po +++ b/po/nl_NL.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: VDR 1.5.7\n" "Report-Msgid-Bugs-To: <andreas@vdr-developer.org>\n" -"POT-Creation-Date: 2008-01-09 08:21+0100\n" +"POT-Creation-Date: 2009-03-30 12:30+0200\n" "PO-Revision-Date: 2007-12-18 08:11+0100\n" "Last-Translator: dorpsgek @vdr-portal.de\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -15,33 +15,15 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Transfer-Encoding: 8bit\n" -msgid "Sunday" -msgstr "Zondag" - -msgid "Monday" -msgstr "maandag" - -msgid "Tuesday" -msgstr "Dinsdag" - -msgid "Wednesday" -msgstr "woensdag" - -msgid "Thursday" -msgstr "Donderdag" - -msgid "Friday" -msgstr "Vrijdag" +msgid "Free-To-Air" +msgstr "" -msgid "Saturday" -msgstr "Zaterdag" +msgid "encrypted" +msgstr "" msgid "*** Invalid Channel ***" msgstr "*** Ongeldig Kanaal ***" -msgid "en_US" -msgstr "nl_NL" - msgid "WARNING" msgstr "WAARSCHUWING" @@ -81,9 +63,6 @@ msgstr "EnigmaNG" msgid "TrueType Font" msgstr "TrueType Font" -msgid "No TTF support!" -msgstr "TTF niet ondersteund!" - msgid "Default OSD Font" msgstr "Standaard OSDfont" @@ -135,6 +114,9 @@ msgstr "Help knoppen" msgid "Free last line" msgstr "Vrije laatste lijn" +msgid "if required" +msgstr "" + msgid "Try 8bpp single area" msgstr "Op 8bpp bereik testen" @@ -156,6 +138,13 @@ msgstr "Toon resterend/gedane tijd" msgid "Show VPS" msgstr "VPS tonen" +#, fuzzy +msgid "Show signal info" +msgstr " Mail-ikoon tonen" + +msgid "Show CA system as text" +msgstr "" + msgid "Show progressbar" msgstr "Progressiebalk tonen" @@ -165,6 +154,10 @@ msgstr "Dynamische OSD grootte" msgid "Show messages in menu on" msgstr "Toon berichten in menu aan" +#, fuzzy +msgid "Show scrollbar in menu" +msgstr " Symbolen in menu tonen" + msgid "pixel algo" msgstr "pixelalgoritme" @@ -267,7 +260,7 @@ msgstr " Lijst aktieve punten scrollen" msgid " Scroll other items" msgstr " Andere punten scrollen" -msgid " Scoll behaviour" +msgid " Scroll behaviour" msgstr " Scroll gedrag" msgid " Scroll delay (ms)" @@ -371,3 +364,6 @@ msgstr "Monitoren" msgid "No timer check" msgstr "Geen controle" + +#~ msgid "en_US" +#~ msgstr "nl_NL" diff --git a/po/nn_NO.po b/po/nn_NO.po index 46fa909..dd07c57 100644 --- a/po/nn_NO.po +++ b/po/nn_NO.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: VDR 1.5.7\n" "Report-Msgid-Bugs-To: <andreas@vdr-developer.org>\n" -"POT-Creation-Date: 2008-01-09 08:21+0100\n" +"POT-Creation-Date: 2009-03-30 12:30+0200\n" "PO-Revision-Date: 2007-12-18 08:11+0100\n" "Last-Translator: Truls Slevigen <truls@slevigen.no>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -16,33 +16,15 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" -msgid "Sunday" -msgstr "S�ndag" - -msgid "Monday" -msgstr "Manday" - -msgid "Tuesday" -msgstr "Tirsday" - -msgid "Wednesday" -msgstr "Onsday" - -msgid "Thursday" -msgstr "Torsdag" - -msgid "Friday" -msgstr "Fredag" +msgid "Free-To-Air" +msgstr "" -msgid "Saturday" -msgstr "L�rdag" +msgid "encrypted" +msgstr "" msgid "*** Invalid Channel ***" msgstr "" -msgid "en_US" -msgstr "no_NO" - msgid "WARNING" msgstr "" @@ -82,9 +64,6 @@ msgstr "" msgid "TrueType Font" msgstr "" -msgid "No TTF support!" -msgstr "" - msgid "Default OSD Font" msgstr "" @@ -136,6 +115,9 @@ msgstr "" msgid "Free last line" msgstr "" +msgid "if required" +msgstr "" + msgid "Try 8bpp single area" msgstr "" @@ -157,6 +139,12 @@ msgstr "" msgid "Show VPS" msgstr "" +msgid "Show signal info" +msgstr "" + +msgid "Show CA system as text" +msgstr "" + msgid "Show progressbar" msgstr "" @@ -166,6 +154,9 @@ msgstr "" msgid "Show messages in menu on" msgstr "" +msgid "Show scrollbar in menu" +msgstr "" + msgid "pixel algo" msgstr "" @@ -268,7 +259,7 @@ msgstr "" msgid " Scroll other items" msgstr "" -msgid " Scoll behaviour" +msgid " Scroll behaviour" msgstr "" msgid " Scroll delay (ms)" @@ -372,3 +363,6 @@ msgstr "" msgid "No timer check" msgstr "" + +#~ msgid "en_US" +#~ msgstr "no_NO" diff --git a/po/pl_PL.po b/po/pl_PL.po index 5769e25..17609e7 100644 --- a/po/pl_PL.po +++ b/po/pl_PL.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: VDR 1.5.7\n" "Report-Msgid-Bugs-To: <andreas@vdr-developer.org>\n" -"POT-Creation-Date: 2008-01-09 08:21+0100\n" +"POT-Creation-Date: 2009-03-30 12:30+0200\n" "PO-Revision-Date: 2007-12-18 08:11+0100\n" "Last-Translator: Michael Rakowski <mrak@gmx.de>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -15,33 +15,15 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8bit\n" -msgid "Sunday" -msgstr "Niedziela" - -msgid "Monday" -msgstr "poniedzia�ek" - -msgid "Tuesday" -msgstr "Wtorek" - -msgid "Wednesday" -msgstr "�roda" - -msgid "Thursday" -msgstr "Czwartek" - -msgid "Friday" -msgstr "Pi�tek" +msgid "Free-To-Air" +msgstr "" -msgid "Saturday" -msgstr "Sobota" +msgid "encrypted" +msgstr "" msgid "*** Invalid Channel ***" msgstr "" -msgid "en_US" -msgstr "pl_PL" - msgid "WARNING" msgstr "" @@ -81,9 +63,6 @@ msgstr "EnigmaNG" msgid "TrueType Font" msgstr "" -msgid "No TTF support!" -msgstr "" - msgid "Default OSD Font" msgstr "" @@ -135,6 +114,9 @@ msgstr "" msgid "Free last line" msgstr "" +msgid "if required" +msgstr "" + msgid "Try 8bpp single area" msgstr "" @@ -156,6 +138,12 @@ msgstr "" msgid "Show VPS" msgstr "" +msgid "Show signal info" +msgstr "" + +msgid "Show CA system as text" +msgstr "" + msgid "Show progressbar" msgstr "Pokazuj pasek post�pu" @@ -165,6 +153,9 @@ msgstr "" msgid "Show messages in menu on" msgstr "" +msgid "Show scrollbar in menu" +msgstr "" + msgid "pixel algo" msgstr "" @@ -268,7 +259,7 @@ msgstr "" msgid " Scroll other items" msgstr "" -msgid " Scoll behaviour" +msgid " Scroll behaviour" msgstr "" msgid " Scroll delay (ms)" @@ -372,3 +363,6 @@ msgstr "" msgid "No timer check" msgstr "" + +#~ msgid "en_US" +#~ msgstr "pl_PL" diff --git a/po/pt_PT.po b/po/pt_PT.po index 16529aa..1324ce1 100644 --- a/po/pt_PT.po +++ b/po/pt_PT.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: VDR 1.5.7\n" "Report-Msgid-Bugs-To: <andreas@vdr-developer.org>\n" -"POT-Creation-Date: 2008-01-09 08:21+0100\n" +"POT-Creation-Date: 2009-03-30 12:30+0200\n" "PO-Revision-Date: 2007-12-18 08:11+0100\n" "Last-Translator: Paulo Lopes <pmml@netvita.pt>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -15,33 +15,15 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" -msgid "Sunday" -msgstr "Domingo" - -msgid "Monday" -msgstr "Segunda" - -msgid "Tuesday" -msgstr "Ter�a" - -msgid "Wednesday" -msgstr "Quarta" - -msgid "Thursday" -msgstr "Quinta" - -msgid "Friday" -msgstr "Sexta" +msgid "Free-To-Air" +msgstr "" -msgid "Saturday" -msgstr "S�bado" +msgid "encrypted" +msgstr "" msgid "*** Invalid Channel ***" msgstr "" -msgid "en_US" -msgstr "pt_PT" - msgid "WARNING" msgstr "" @@ -81,9 +63,6 @@ msgstr "" msgid "TrueType Font" msgstr "" -msgid "No TTF support!" -msgstr "" - msgid "Default OSD Font" msgstr "" @@ -135,6 +114,9 @@ msgstr "" msgid "Free last line" msgstr "" +msgid "if required" +msgstr "" + msgid "Try 8bpp single area" msgstr "" @@ -156,6 +138,12 @@ msgstr "" msgid "Show VPS" msgstr "" +msgid "Show signal info" +msgstr "" + +msgid "Show CA system as text" +msgstr "" + msgid "Show progressbar" msgstr "" @@ -165,6 +153,9 @@ msgstr "" msgid "Show messages in menu on" msgstr "" +msgid "Show scrollbar in menu" +msgstr "" + msgid "pixel algo" msgstr "" @@ -267,7 +258,7 @@ msgstr "" msgid " Scroll other items" msgstr "" -msgid " Scoll behaviour" +msgid " Scroll behaviour" msgstr "" msgid " Scroll delay (ms)" @@ -371,3 +362,6 @@ msgstr "" msgid "No timer check" msgstr "" + +#~ msgid "en_US" +#~ msgstr "pt_PT" diff --git a/po/ro_RO.po b/po/ro_RO.po index 0884dd1..06b977d 100644 --- a/po/ro_RO.po +++ b/po/ro_RO.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: VDR 1.5.7\n" "Report-Msgid-Bugs-To: <andreas@vdr-developer.org>\n" -"POT-Creation-Date: 2008-01-09 08:21+0100\n" +"POT-Creation-Date: 2009-03-30 12:30+0200\n" "PO-Revision-Date: 2007-12-18 08:11+0100\n" "Last-Translator: Lucian Muresan <lucianm@users.sourceforge.net>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -16,33 +16,15 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8bit\n" -msgid "Sunday" -msgstr "Duminic�" - -msgid "Monday" -msgstr "Luni" - -msgid "Tuesday" -msgstr "Mar�i" - -msgid "Wednesday" -msgstr "Miercuri" - -msgid "Thursday" -msgstr "Joi" - -msgid "Friday" -msgstr "Vineri" +msgid "Free-To-Air" +msgstr "" -msgid "Saturday" -msgstr "S�mb�t�" +msgid "encrypted" +msgstr "" msgid "*** Invalid Channel ***" msgstr "" -msgid "en_US" -msgstr "ro_RO" - msgid "WARNING" msgstr "" @@ -82,9 +64,6 @@ msgstr "" msgid "TrueType Font" msgstr "" -msgid "No TTF support!" -msgstr "" - msgid "Default OSD Font" msgstr "" @@ -136,6 +115,9 @@ msgstr "" msgid "Free last line" msgstr "" +msgid "if required" +msgstr "" + msgid "Try 8bpp single area" msgstr "" @@ -157,6 +139,12 @@ msgstr "" msgid "Show VPS" msgstr "" +msgid "Show signal info" +msgstr "" + +msgid "Show CA system as text" +msgstr "" + msgid "Show progressbar" msgstr "" @@ -166,6 +154,9 @@ msgstr "" msgid "Show messages in menu on" msgstr "" +msgid "Show scrollbar in menu" +msgstr "" + msgid "pixel algo" msgstr "" @@ -268,7 +259,7 @@ msgstr "" msgid " Scroll other items" msgstr "" -msgid " Scoll behaviour" +msgid " Scroll behaviour" msgstr "" msgid " Scroll delay (ms)" @@ -372,3 +363,6 @@ msgstr "" msgid "No timer check" msgstr "" + +#~ msgid "en_US" +#~ msgstr "ro_RO" diff --git a/po/ru_RU.po b/po/ru_RU.po index b0c25eb..50ba9f6 100644 --- a/po/ru_RU.po +++ b/po/ru_RU.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: VDR 1.5.7\n" "Report-Msgid-Bugs-To: <andreas@vdr-developer.org>\n" -"POT-Creation-Date: 2008-01-09 08:21+0100\n" +"POT-Creation-Date: 2009-03-30 12:30+0200\n" "PO-Revision-Date: 2007-12-18 08:11+0100\n" "Last-Translator: SergArb @vdr-portal.de / neptunvasja @vdr-portal.de\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -15,33 +15,15 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-5\n" "Content-Transfer-Encoding: 8bit\n" -msgid "Sunday" -msgstr "�����������" - -msgid "Monday" -msgstr "�����������" - -msgid "Tuesday" -msgstr "�������" - -msgid "Wednesday" -msgstr "�����" - -msgid "Thursday" -msgstr "�������" - -msgid "Friday" -msgstr "�������" +msgid "Free-To-Air" +msgstr "" -msgid "Saturday" -msgstr "�������" +msgid "encrypted" +msgstr "" msgid "*** Invalid Channel ***" msgstr "*** ������������ ����� ***" -msgid "en_US" -msgstr "ru_RU" - msgid "WARNING" msgstr "����ÿ��������" @@ -81,9 +63,6 @@ msgstr "EnigmaNG" msgid "TrueType Font" msgstr "" -msgid "No TTF support!" -msgstr "" - msgid "Default OSD Font" msgstr "" @@ -135,6 +114,9 @@ msgstr "" msgid "Free last line" msgstr "" +msgid "if required" +msgstr "" + msgid "Try 8bpp single area" msgstr "" @@ -156,6 +138,13 @@ msgstr "���������� �����./������. �����" msgid "Show VPS" msgstr "���������� VPS" +#, fuzzy +msgid "Show signal info" +msgstr " �������� ������ �����. �����" + +msgid "Show CA system as text" +msgstr "" + msgid "Show progressbar" msgstr "���������� ��������� �����������" @@ -165,6 +154,10 @@ msgstr "" msgid "Show messages in menu on" msgstr "" +#, fuzzy +msgid "Show scrollbar in menu" +msgstr " �������� ������� � ����" + msgid "pixel algo" msgstr "�������� �������" @@ -268,7 +261,7 @@ msgstr "" msgid " Scroll other items" msgstr "" -msgid " Scoll behaviour" +msgid " Scroll behaviour" msgstr "" msgid " Scroll delay (ms)" @@ -372,3 +365,6 @@ msgstr "�������� ��������" msgid "No timer check" msgstr "" + +#~ msgid "en_US" +#~ msgstr "ru_RU" diff --git a/po/skinenigmang.pot b/po/skinenigmang.pot deleted file mode 100644 index 2f9715e..0000000 --- a/po/skinenigmang.pot +++ /dev/null @@ -1,374 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: <andreas@vdr-developer.org>\n" -"POT-Creation-Date: 2008-03-09 09:39+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: LANGUAGE <LL@li.org>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Sunday" -msgstr "" - -msgid "Monday" -msgstr "" - -msgid "Tuesday" -msgstr "" - -msgid "Wednesday" -msgstr "" - -msgid "Thursday" -msgstr "" - -msgid "Friday" -msgstr "" - -msgid "Saturday" -msgstr "" - -msgid "*** Invalid Channel ***" -msgstr "" - -msgid "en_US" -msgstr "" - -msgid "WARNING" -msgstr "" - -msgid "Timer conflict" -msgstr "" - -msgid "Timer conflicts" -msgstr "" - -msgid "TIMERS" -msgstr "" - -msgid "min" -msgstr "" - -msgid "Languages" -msgstr "" - -msgid "RERUNS OF THIS SHOW" -msgstr "" - -msgid "Size" -msgstr "" - -msgid "Auxiliary information" -msgstr "" - -msgid "Mute" -msgstr "" - -msgid "Volume" -msgstr "" - -msgid "EnigmaNG" -msgstr "" - -msgid "TrueType Font" -msgstr "" - -msgid "No TTF support!" -msgstr "" - -msgid "Default OSD Font" -msgstr "" - -msgid "Default Fixed Size Font" -msgstr "" - -msgid "Default Small Font" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Logos & Symbols" -msgstr "" - -msgid "Animated Text" -msgstr "" - -msgid "Fonts" -msgstr "" - -msgid "EPGSearch" -msgstr "" - -msgid "elapsed" -msgstr "" - -msgid "remaining" -msgstr "" - -msgid "percent" -msgstr "" - -msgid "never" -msgstr "" - -msgid "use size.vdr only" -msgstr "" - -msgid "always" -msgstr "" - -msgid "Last line" -msgstr "" - -msgid "Help buttons" -msgstr "" - -msgid "Free last line" -msgstr "" - -msgid "Try 8bpp single area" -msgstr "" - -msgid "Show info area in main menu" -msgstr "" - -msgid "Show auxiliary information" -msgstr "" - -msgid "Show recording's size" -msgstr "" - -msgid "Full title width" -msgstr "" - -msgid "Show remaining/elapsed time" -msgstr "" - -msgid "Show VPS" -msgstr "" - -msgid "Show progressbar" -msgstr "" - -msgid "Dynamic OSD size" -msgstr "" - -msgid "Show messages in menu on" -msgstr "" - -msgid "pixel algo" -msgstr "" - -msgid "ratio algo" -msgstr "" - -msgid "zoom image" -msgstr "" - -msgid "only if new mail present" -msgstr "" - -msgid "Flushing channel logo cache..." -msgstr "" - -msgid "Show symbols" -msgstr "" - -msgid " Show symbols in menu" -msgstr "" - -msgid " Show symbols in replay" -msgstr "" - -msgid " Show symbols in messages" -msgstr "" - -msgid " Show symbols in audio" -msgstr "" - -msgid "Show symbols in lists" -msgstr "" - -msgid "Show marker in lists" -msgstr "" - -msgid "Show status symbols" -msgstr "" - -msgid " Show flags" -msgstr "" - -msgid " Show WSS mode symbols" -msgstr "" - -msgid " Show mail icon" -msgstr "" - -msgid "Show event/recording images" -msgstr "" - -msgid " Resize images" -msgstr "" - -msgid " Image width" -msgstr "" - -msgid " Image height" -msgstr "" - -msgid " Image format" -msgstr "" - -msgid "Show channel logos" -msgstr "" - -msgid " Identify channel by" -msgstr "" - -msgid "name" -msgstr "" - -msgid "data" -msgstr "" - -msgid "Channel logo cache size" -msgstr "" - -msgid "Button$Flush cache" -msgstr "" - -msgid "left and right" -msgstr "" - -msgid "to the left" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid " Scroll OSD title" -msgstr "" - -msgid " Scroll info area" -msgstr "" - -msgid " Scroll active list items" -msgstr "" - -msgid " Scroll other items" -msgstr "" - -msgid " Scoll behaviour" -msgstr "" - -msgid " Scroll delay (ms)" -msgstr "" - -msgid " Scroll pause (ms)" -msgstr "" - -msgid " Blink pause (ms)" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "No TrueType fonts installed!" -msgstr "" - -msgid "Fixed Font" -msgstr "" - -msgid "Button$Set" -msgstr "" - -msgid "OSD title" -msgstr "" - -msgid "Messages" -msgstr "" - -msgid "Date" -msgstr "" - -msgid "Help keys" -msgstr "" - -msgid "Channelinfo: title" -msgstr "" - -msgid "Channelinfo: subtitle" -msgstr "" - -msgid "Channelinfo: language" -msgstr "" - -msgid "List items" -msgstr "" - -msgid "Info area: timers title" -msgstr "" - -msgid "Info area: timers text" -msgstr "" - -msgid "Info area: warning title" -msgstr "" - -msgid "Info area: warning text" -msgstr "" - -msgid "Details: title" -msgstr "" - -msgid "Details: subtitle" -msgstr "" - -msgid "Details: date" -msgstr "" - -msgid "Details: text" -msgstr "" - -msgid "Replay: times" -msgstr "" - -msgid "if exists" -msgstr "" - -msgid "Number of Reruns" -msgstr "" - -msgid "Use Subtitle for reruns" -msgstr "" - -msgid "Show timer conflicts" -msgstr "" - -msgid "EnigmaNG skin" -msgstr "" - -msgid "Channel:" -msgstr "" - -msgid "Search pattern:" -msgstr "" - -msgid "Timer check" -msgstr "" - -msgid "No timer check" -msgstr "" diff --git a/po/sl_SI.po b/po/sl_SI.po index 6409c08..c6292f8 100644 --- a/po/sl_SI.po +++ b/po/sl_SI.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: VDR 1.5.7\n" "Report-Msgid-Bugs-To: <andreas@vdr-developer.org>\n" -"POT-Creation-Date: 2008-01-09 08:21+0100\n" +"POT-Creation-Date: 2009-03-30 12:30+0200\n" "PO-Revision-Date: 2007-12-18 08:11+0100\n" "Last-Translator: Matjaz Thaler <matjaz.thaler@guest.arnes.si>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -16,33 +16,15 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8bit\n" -msgid "Sunday" -msgstr "Nedelja" - -msgid "Monday" -msgstr "ponedeljek" - -msgid "Tuesday" -msgstr "Torek" - -msgid "Wednesday" -msgstr "sreda" - -msgid "Thursday" -msgstr "�etrtek" - -msgid "Friday" -msgstr "Petek" +msgid "Free-To-Air" +msgstr "" -msgid "Saturday" -msgstr "Sobota" +msgid "encrypted" +msgstr "" msgid "*** Invalid Channel ***" msgstr "" -msgid "en_US" -msgstr "sl_SI" - msgid "WARNING" msgstr "" @@ -82,9 +64,6 @@ msgstr "" msgid "TrueType Font" msgstr "" -msgid "No TTF support!" -msgstr "" - msgid "Default OSD Font" msgstr "" @@ -136,6 +115,9 @@ msgstr "" msgid "Free last line" msgstr "" +msgid "if required" +msgstr "" + msgid "Try 8bpp single area" msgstr "" @@ -157,6 +139,12 @@ msgstr "" msgid "Show VPS" msgstr "" +msgid "Show signal info" +msgstr "" + +msgid "Show CA system as text" +msgstr "" + msgid "Show progressbar" msgstr "" @@ -166,6 +154,9 @@ msgstr "" msgid "Show messages in menu on" msgstr "" +msgid "Show scrollbar in menu" +msgstr "" + msgid "pixel algo" msgstr "" @@ -268,7 +259,7 @@ msgstr "" msgid " Scroll other items" msgstr "" -msgid " Scoll behaviour" +msgid " Scroll behaviour" msgstr "" msgid " Scroll delay (ms)" @@ -372,3 +363,6 @@ msgstr "" msgid "No timer check" msgstr "" + +#~ msgid "en_US" +#~ msgstr "sl_SI" diff --git a/po/sv_SE.po b/po/sv_SE.po index 655fd75..d9b4b8b 100644 --- a/po/sv_SE.po +++ b/po/sv_SE.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: VDR 1.5.7\n" "Report-Msgid-Bugs-To: <andreas@vdr-developer.org>\n" -"POT-Creation-Date: 2008-01-09 08:21+0100\n" +"POT-Creation-Date: 2009-03-30 12:30+0200\n" "PO-Revision-Date: 2007-12-18 08:11+0100\n" "Last-Translator: Tomas Prybil <tomas@prybil.se>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -16,33 +16,15 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" -msgid "Sunday" -msgstr "S�ndag" - -msgid "Monday" -msgstr "M�ndag" - -msgid "Tuesday" -msgstr "Tisdag" - -msgid "Wednesday" -msgstr "Onsdag" - -msgid "Thursday" -msgstr "Torsdag" - -msgid "Friday" -msgstr "Fredag" +msgid "Free-To-Air" +msgstr "" -msgid "Saturday" -msgstr "L�rdag" +msgid "encrypted" +msgstr "" msgid "*** Invalid Channel ***" msgstr "" -msgid "en_US" -msgstr "sv_SE" - msgid "WARNING" msgstr "" @@ -82,9 +64,6 @@ msgstr "EnigmaNG" msgid "TrueType Font" msgstr "" -msgid "No TTF support!" -msgstr "" - msgid "Default OSD Font" msgstr "" @@ -136,6 +115,9 @@ msgstr "" msgid "Free last line" msgstr "" +msgid "if required" +msgstr "" + msgid "Try 8bpp single area" msgstr "" @@ -157,6 +139,12 @@ msgstr "" msgid "Show VPS" msgstr "" +msgid "Show signal info" +msgstr "" + +msgid "Show CA system as text" +msgstr "" + msgid "Show progressbar" msgstr "Visa framsteg" @@ -166,6 +154,9 @@ msgstr "" msgid "Show messages in menu on" msgstr "" +msgid "Show scrollbar in menu" +msgstr "" + msgid "pixel algo" msgstr "" @@ -269,7 +260,7 @@ msgstr "" msgid " Scroll other items" msgstr "" -msgid " Scoll behaviour" +msgid " Scroll behaviour" msgstr "" msgid " Scroll delay (ms)" @@ -373,3 +364,6 @@ msgstr "" msgid "No timer check" msgstr "" + +#~ msgid "en_US" +#~ msgstr "sv_SE" diff --git a/po/tr_TR.po b/po/tr_TR.po index 537e006..7044782 100644 --- a/po/tr_TR.po +++ b/po/tr_TR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: VDR 1.5.7\n" "Report-Msgid-Bugs-To: <andreas@vdr-developer.org>\n" -"POT-Creation-Date: 2008-01-09 08:21+0100\n" +"POT-Creation-Date: 2009-03-30 12:30+0200\n" "PO-Revision-Date: 2007-12-18 08:11+0100\n" "Last-Translator: Oktay Yolge�en <oktay_73@yahoo.de>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -15,33 +15,15 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-9\n" "Content-Transfer-Encoding: 8bit\n" -msgid "Sunday" +msgid "Free-To-Air" msgstr "" -msgid "Monday" -msgstr "" - -msgid "Tuesday" -msgstr "" - -msgid "Wednesday" -msgstr "" - -msgid "Thursday" -msgstr "" - -msgid "Friday" -msgstr "" - -msgid "Saturday" +msgid "encrypted" msgstr "" msgid "*** Invalid Channel ***" msgstr "" -msgid "en_US" -msgstr "tr_TR" - msgid "WARNING" msgstr "" @@ -81,9 +63,6 @@ msgstr "" msgid "TrueType Font" msgstr "" -msgid "No TTF support!" -msgstr "" - msgid "Default OSD Font" msgstr "" @@ -135,6 +114,9 @@ msgstr "" msgid "Free last line" msgstr "" +msgid "if required" +msgstr "" + msgid "Try 8bpp single area" msgstr "" @@ -156,6 +138,12 @@ msgstr "" msgid "Show VPS" msgstr "" +msgid "Show signal info" +msgstr "" + +msgid "Show CA system as text" +msgstr "" + msgid "Show progressbar" msgstr "" @@ -165,6 +153,9 @@ msgstr "" msgid "Show messages in menu on" msgstr "" +msgid "Show scrollbar in menu" +msgstr "" + msgid "pixel algo" msgstr "" @@ -267,7 +258,7 @@ msgstr "" msgid " Scroll other items" msgstr "" -msgid " Scoll behaviour" +msgid " Scroll behaviour" msgstr "" msgid " Scroll delay (ms)" @@ -371,3 +362,6 @@ msgstr "" msgid "No timer check" msgstr "" + +#~ msgid "en_US" +#~ msgstr "tr_TR" @@ -7,7 +7,6 @@ #include "common.h" #include "config.h" -#include "i18n.h" #include "logo.h" #include "setup.h" #include "tools.h" @@ -24,20 +23,13 @@ #include "services/mailbox.h" #endif -#ifdef HAVE_FREETYPE #include "texteffects.h" -#endif static const char *allVdrFonts[] = { -#ifdef HAVE_FREETYPE trNOOP("TrueType Font"), -#else - trNOOP("No TTF support!"), -#endif trNOOP("Default OSD Font"), trNOOP("Default Fixed Size Font"), - trNOOP("Default Small Font"), - SKINENIGMA_FONTS + trNOOP("Default Small Font") }; // cPluginSkinEnigmaSetup @@ -67,15 +59,13 @@ void cPluginSkinEnigmaSetup::AddCategory(const char *Title) { void cPluginSkinEnigmaSetup::Setup(void) { // update setup display - int current = Current(); + int currentItem = Current(); Clear(); Add(new cOsdItem(tr("General"))); Add(new cOsdItem(tr("Logos & Symbols"))); -#ifndef DISABLE_ANIMATED_TEXT Add(new cOsdItem(tr("Animated Text"))); -#endif if (::Setup.UseSmallFont == 1) { // only if "Use small font" = "skin dependent" Add(new cOsdItem(tr("Fonts"))); } @@ -85,7 +75,7 @@ void cPluginSkinEnigmaSetup::Setup(void) } //TODO? else display "EPGsearch plugin not found" #endif - SetCurrent(Get(current)); + SetCurrent(Get(currentItem)); Display(); SetHelp(NULL, NULL, NULL, trVDR("Button$Open")); } @@ -137,6 +127,9 @@ void cPluginSkinEnigmaSetup::Store(void) SetupStore("StatusLineMode", EnigmaConfig.statusLineMode); SetupStore("ShowWssSymbols", EnigmaConfig.showWssSymbols); SetupStore("ShowStatusSymbols", EnigmaConfig.showStatusSymbols); + SetupStore("ShowScrollbar", EnigmaConfig.showScrollbar); + SetupStore("ShowSignalInfo", EnigmaConfig.showSignalInfo); + SetupStore("ShowCaMode", EnigmaConfig.showCaMode); char tmp[sizeof(EnigmaConfig.allFonts[0].Name) + 8]; for (int id = 0; id < FONT_NUMFONTS; id++) { @@ -166,10 +159,8 @@ eOSState cPluginSkinEnigmaSetup::ProcessKey(eKeys Key) state = AddSubMenu(new cMenuSetupGeneral(&data)); else if (strcmp(ItemText, tr("Logos & Symbols")) == 0) state = AddSubMenu(new cMenuSetupLogos(&data)); -#ifndef DISABLE_ANIMATED_TEXT else if (strcmp(ItemText, tr("Animated Text")) == 0) state = AddSubMenu(new cMenuSetupAnimText(&data)); -#endif else if (strcmp(ItemText, tr("Fonts")) == 0) state = AddSubMenu(new cMenuSetupFonts(&data)); #ifdef USE_PLUGIN_EPGSEARCH @@ -219,6 +210,9 @@ cMenuSetupGeneral::cMenuSetupGeneral(cEnigmaConfig* Data) : cMenuSetupSubMenu(tr statusLineModeTexts[1] = tr("Help buttons"); statusLineModeTexts[2] = tr("Free last line"); + showScrollbarTexts[0] = trVDR("no"); + showScrollbarTexts[1] = trVDR("yes"); + showScrollbarTexts[2] = tr("if required"); Set(); } @@ -229,7 +223,7 @@ eOSState cMenuSetupGeneral::ProcessKey(eKeys Key) void cMenuSetupGeneral::Set(void) { - int current = Current(); + int currentItem = Current(); Clear(); Add(new cMenuEditBoolItem(tr("Try 8bpp single area"), &data->singleArea8Bpp)); @@ -239,25 +233,16 @@ void cMenuSetupGeneral::Set(void) Add(new cMenuEditBoolItem(tr("Full title width"), &data->fullTitleWidth)); Add(new cMenuEditStraItem(tr("Show remaining/elapsed time"), &data->showRemaining, 3, showRemainingTexts)); Add(new cMenuEditBoolItem(tr("Show VPS"), &data->showVps)); +#ifndef DISABLE_SIGNALINFO + Add(new cMenuEditBoolItem(tr("Show signal info"), &data->showSignalInfo)); +#endif //DISABLE_SIGNALINFO + Add(new cMenuEditBoolItem(tr("Show CA system as text"), &data->showCaMode)); Add(new cMenuEditBoolItem(tr("Show progressbar"), &data->showProgressbar)); -#ifdef USE_PLUGIN_AVARDS - //TODO: USE_PLUGIN_AVARDS only if APIVERSNUM < 10504 - cPlugin *pAvardsPlugin = cPluginManager::GetPlugin("avards"); - if (pAvardsPlugin != NULL) { -#if APIVERSNUM < 10504 - if (pAvardsPlugin->Service(AVARDS_MAXOSDSIZE_SERVICE_STRING_ID)) { -#endif - Add(new cMenuEditBoolItem(tr("Dynamic OSD size"), &data->dynOsd)); -#if APIVERSNUM < 10504 - } else { - Add(new cOsdItem(AVARDS_MAXOSDSIZE_SERVICE_STRING_ID " service not found!", osUnknown, false)); - } -#endif - } //TODO? else display "Avards not found" -#endif + Add(new cMenuEditBoolItem(tr("Dynamic OSD size"), &data->dynOsd)); Add(new cMenuEditStraItem(tr("Show messages in menu on"), &data->statusLineMode, 3, statusLineModeTexts)); + Add(new cMenuEditStraItem(tr("Show scrollbar in menu"), &data->showScrollbar, 3, showScrollbarTexts)); - SetCurrent(Get(current)); + SetCurrent(Get(currentItem)); Display(); SetHelp(NULL, NULL, NULL, NULL); } @@ -321,7 +306,7 @@ eOSState cMenuSetupLogos::ProcessKey(eKeys Key) void cMenuSetupLogos::Set(void) { - int current = Current(); + int currentItem = Current(); Clear(); Add(new cMenuEditBoolItem(tr("Show symbols"), &data->showSymbols)); //TODO? symbols -> icons @@ -387,12 +372,11 @@ void cMenuSetupLogos::Set(void) Add(new cMenuEditIntItem(tr("Channel logo cache size"), &data->cacheSize, 0, 1000)); } - SetCurrent(Get(current)); + SetCurrent(Get(currentItem)); Display(); SetHelp(tr("Button$Flush cache"), NULL, NULL, NULL); } -#ifndef DISABLE_ANIMATED_TEXT // Setup: Animated Text cMenuSetupAnimText::cMenuSetupAnimText(cEnigmaConfig* Data) : cMenuSetupSubMenu(tr("Animated Text"), Data) { @@ -416,7 +400,7 @@ eOSState cMenuSetupAnimText::ProcessKey(eKeys Key) void cMenuSetupAnimText::Set(void) { - int current = Current(); + int currentItem = Current(); Clear(); Add(new cMenuEditBoolItem(tr("Enable"), &data->useTextEffects)); @@ -425,51 +409,27 @@ void cMenuSetupAnimText::Set(void) Add(new cMenuEditBoolItem(tr(" Scroll info area"), &data->scrollInfo)); Add(new cMenuEditBoolItem(tr(" Scroll active list items"), &data->scrollListItem)); Add(new cMenuEditBoolItem(tr(" Scroll other items"), &data->scrollOther)); - Add(new cMenuEditStraItem(tr(" Scoll behaviour"), &data->scrollMode, 2, scrollModeTexts)); - Add(new cMenuEditIntItem(tr(" Scroll delay (ms)"), &data->scrollDelay, 50, 1000)); + Add(new cMenuEditStraItem(tr(" Scroll behaviour"), &data->scrollMode, 2, scrollModeTexts)); + Add(new cMenuEditIntItem(tr(" Scroll delay (ms)"), &data->scrollDelay, 3, 1000)); Add(new cMenuEditIntItem(tr(" Scroll pause (ms)"), &data->scrollPause, 500, 2000)); Add(new cMenuEditIntItem(tr(" Blink pause (ms)"), &data->blinkPause, 500, 2000)); } - SetCurrent(Get(current)); + SetCurrent(Get(currentItem)); Display(); SetHelp(NULL, NULL, NULL, NULL); } -#endif -#ifdef HAVE_FREETYPE // Setup: TTF -#if VDRVERSNUM < 10504 -cMenuSetupTTF::cMenuSetupTTF(FontInfo* Data) : cOsdMenu(tr("TrueType Font"), 10) -#else // VDRVERSNUM >= 10504 cMenuSetupTTF::cMenuSetupTTF(FontInfo* Data, cStringList* fonts) : cOsdMenu(tr("TrueType Font"), 10) -#endif // VDRVERSNUM < 10504 { data = Data; -#if VDRVERSNUM < 10504 - availTTFs = EnigmaTextEffects.GetAvailTTFs(); - if (availTTFs && data) { - nMaxTTFs = EnigmaTextEffects.GetNumAvailTTFs(); - nFont = 0; - for (int i = 0; i < nMaxTTFs; i++) { - if (availTTFs[i]) { - if (strcmp(availTTFs[i], data->Name) == 0) { - nFont = i; - break; - } - } - } - nWidth = data->Width; - nSize = data->Size; - } -#else // VDRVERSNUM >= 10504 if (data && fonts) { fontList = fonts; nFont = std::max(0, fontList->Find(data->Name)); nWidth = data->Width; nSize = data->Size; } -#endif // VDRVERSNUM < 10504 SetHelp(NULL, NULL, NULL, NULL); Set(); @@ -477,22 +437,14 @@ cMenuSetupTTF::cMenuSetupTTF(FontInfo* Data, cStringList* fonts) : cOsdMenu(tr(" void cMenuSetupTTF::Set(void) { - int current = Current(); + int currentItem = Current(); Clear(); -#if VDRVERSNUM < 10504 - if (availTTFs) { - Add(new cMenuEditStraItem(tr("Name"), &nFont, nMaxTTFs, availTTFs)); -#else // VDRVERSNUM >= 10504 if (fontList->Size() > 0) { Add(new cMenuEditStraItem(tr("Name"), &nFont, fontList->Size(), &(*fontList)[0])); -#endif // VDRVERSNUM < 10504 Add(new cMenuEditIntItem(tr("Size"), &nSize, 10, MAXFONTSIZE)); -#if VDRVERSNUM < 10503 || VDRVERSNUM >= 10505 - //VDR 1.5.2 - 1.5.4 can't set TTF width Add(new cMenuEditIntItem(tr("Width"), &nWidth, 50, 150)); -#endif - SetCurrent(Get(current)); + SetCurrent(Get(currentItem)); } else { cOsdItem *item = new cOsdItem(tr("No TrueType fonts installed!")); @@ -525,40 +477,23 @@ eOSState cMenuSetupTTF::ProcessKey(eKeys Key) void cMenuSetupTTF::Store(void) { -#if VDRVERSNUM < 10504 - if (data && availTTFs) { - strncpy(data->Name, availTTFs[nFont], sizeof(data->Name)); - data->Width = nWidth; - data->Size = nSize; - } -#else // VDRVERSNUM >= 10504 if (data) { Utf8Strn0Cpy(data->Name, (*fontList)[nFont], sizeof(data->Name)); data->Width = nWidth; data->Size = nSize; } -#endif // VDRVERSNUM < 10504 } -#endif // Setup: Fonts cMenuSetupFonts::cMenuSetupFonts(cEnigmaConfig* Data) : cMenuSetupSubMenu(tr("Fonts"), Data) { -#ifdef HAVE_FREETYPE allVdrFonts[0] = tr("TrueType Font"); -#else - allVdrFonts[0] = tr("No TTF support!"); -#endif allVdrFonts[1] = tr("Default OSD Font"); allVdrFonts[2] = tr("Default Fixed Size Font"); allVdrFonts[3] = tr("Default Small Font"); -#ifdef HAVE_FREETYPE -#if VDRVERSNUM >= 10504 cFont::GetAvailableFontNames(&fontMonoNames, true); cFont::GetAvailableFontNames(&fontNames); -#endif -#endif Set(); } @@ -571,27 +506,21 @@ eOSState cMenuSetupFonts::ProcessKey(eKeys Key) { eOSState state = cMenuSetupSubMenu::ProcessKey(Key); -#ifdef HAVE_FREETYPE if (state == osUnknown && Key == kBlue && data->allFonts[Current()].VdrId == FONT_TRUETYPE) { -#if VDRVERSNUM < 10504 - state = AddSubMenu(new cMenuSetupTTF(&data->allFonts[Current()])); -#else // VDRVERSNUM >= 10504 state = AddSubMenu(new cMenuSetupTTF(&data->allFonts[Current()], strncmp(Get(Current())->Text(), tr("Fixed Font"), strlen(tr("Fixed Font"))) == 0 ? &fontMonoNames : &fontNames)); -#endif } else { if (!HasSubMenu() && data->allFonts[Current()].VdrId == FONT_TRUETYPE) SetHelp(NULL, NULL, NULL, tr("Button$Set")); else SetHelp(NULL, NULL, NULL, NULL); } -#endif return state; } void cMenuSetupFonts::Set(void) { - int current = Current(); + int currentItem = Current(); Clear(); int numAvailFonts = sizeof(allVdrFonts)/sizeof(char*); @@ -614,13 +543,11 @@ void cMenuSetupFonts::Set(void) Add(new cMenuEditStraItem(tr("Replay: times"), &data->allFonts[FONT_REPLAYTIMES].VdrId, numAvailFonts, allVdrFonts)); Add(new cMenuEditStraItem(tr("Fixed Font"), &data->allFonts[FONT_FIXED].VdrId, numAvailFonts, allVdrFonts)); - SetCurrent(Get(current)); + SetCurrent(Get(currentItem)); Display(); -#ifdef HAVE_FREETYPE if (data->allFonts[Current()].VdrId == FONT_TRUETYPE) SetHelp(NULL, NULL, NULL, tr("Button$Set")); else -#endif SetHelp(NULL, NULL, NULL, NULL); } @@ -642,7 +569,7 @@ eOSState cMenuSetupEpgSearch::ProcessKey(eKeys Key) void cMenuSetupEpgSearch::Set(void) { - int current = Current(); + int currentItem = Current(); Clear(); cPlugin *pEPGsearchPlugin = cPluginManager::GetPlugin("epgsearch"); @@ -662,7 +589,7 @@ void cMenuSetupEpgSearch::Set(void) } } - SetCurrent(Get(current)); + SetCurrent(Get(currentItem)); Display(); SetHelp(NULL, NULL, NULL, NULL); } @@ -36,6 +36,7 @@ private: const char *showRemainingTexts[3]; const char *showRecSizeTexts[3]; const char *statusLineModeTexts[3]; + const char *showScrollbarTexts[3]; protected: virtual eOSState ProcessKey(eKeys Key); void Set(void); @@ -57,7 +58,6 @@ public: cMenuSetupLogos(cEnigmaConfig *Data); }; -#ifndef DISABLE_ANIMATED_TEXT class cMenuSetupAnimText : public cMenuSetupSubMenu { private: const char *scrollModeTexts[2]; @@ -67,43 +67,26 @@ protected: public: cMenuSetupAnimText(cEnigmaConfig *Data); }; -#endif -#ifdef HAVE_FREETYPE class cMenuSetupTTF : public cOsdMenu { private: FontInfo *data; int nFont; int nWidth; int nSize; -#if VDRVERSNUM < 10504 - const char **availTTFs; - int nMaxTTFs; -#else // VDRVERSNUM >= 10504 cStringList *fontList; -#endif // VDRVERSNUM < 10504 protected: virtual eOSState ProcessKey(eKeys Key); void Set(void); void Store(void); public: -#if VDRVERSNUM < 10504 - cMenuSetupTTF(FontInfo *fontinfo); -#else // VDRVERSNUM >= 10504 cMenuSetupTTF(FontInfo *fontinfo, cStringList* fontList); -#endif // VDRVERSNUM < 10504 }; -#endif - class cMenuSetupFonts : public cMenuSetupSubMenu { private: -#ifdef HAVE_FREETYPE -#if VDRVERSNUM >= 10504 cStringList fontNames; cStringList fontMonoNames; -#endif -#endif protected: virtual eOSState ProcessKey(eKeys Key); diff --git a/skinenigmang.c b/skinenigmang.c index 000578e..c623f5c 100644 --- a/skinenigmang.c +++ b/skinenigmang.c @@ -8,7 +8,6 @@ #include "common.h" #include "config.h" #include "enigma.h" -#include "i18n.h" #include "logo.h" #include "setup.h" #include "status.h" @@ -16,24 +15,18 @@ #include <getopt.h> #include <vdr/plugin.h> -#if defined(APIVERSNUM) && APIVERSNUM < 10400 -#error "VDR-1.4.0 API version or greater is required!" +#if defined(APIVERSNUM) && APIVERSNUM < 10600 +#error "VDR-1.6.0 API version or greater is required!" #endif -#if VDRVERSNUM == 10503 -#warning "YOU NEED A PATCHED VDR 1.5.3 OR EnigmaNG WILL CRASH!" -#endif -static const char VERSION[] = "0.0.6"; +static const char VERSION[] = "0.1.0"; static const char DESCRIPTION[] = trNOOP("EnigmaNG skin"); class cPluginSkinEnigma : public cPlugin { private: bool fLogodirSet; bool fImagesDirSet; -#ifdef HAVE_FREETYPE - bool fFontsDirSet; -#endif public: cPluginSkinEnigma(void); @@ -72,9 +65,6 @@ cPluginSkinEnigma::cPluginSkinEnigma(void) // VDR OBJECTS TO EXIST OR PRODUCE ANY OUTPUT! fLogodirSet = false; fImagesDirSet = false; -#ifdef HAVE_FREETYPE - fFontsDirSet = false; -#endif } cPluginSkinEnigma::~cPluginSkinEnigma() @@ -86,9 +76,6 @@ const char *cPluginSkinEnigma::CommandLineHelp(void) { // return a string that describes all known command line options. return -#ifdef HAVE_FREETYPE - " -f <FONTSDIR>, --fonts=<FONTSDIR> Set directory where truetype fonts are stored\n" -#endif " -i <IMAGESDIR>, --epgimages=<IMAGESDIR> Set directory where epgimages are stored\n" " -l <LOGODIR>, --logodir=<LOGODIR> Set directory where logos are stored.\n"; } @@ -97,23 +84,14 @@ bool cPluginSkinEnigma::ProcessArgs(int argc, char *argv[]) { // implement command line argument processing here if applicable. static const struct option long_options[] = { -#ifdef HAVE_FREETYPE - { "fonts", required_argument, NULL, 'f' }, -#endif { "epgimages", required_argument, NULL, 'i' }, { "logodir", required_argument, NULL, 'l' }, - { NULL } + { 0, 0, 0, 0 } }; int c; while ((c = getopt_long(argc, argv, "i:f:l:", long_options, NULL)) != -1) { switch (c) { -#ifdef HAVE_FREETYPE - case 'f': - EnigmaConfig.SetFontsDir(optarg); - fFontsDirSet = true; - break; -#endif case 'i': EnigmaConfig.SetImagesDir(optarg); fImagesDirSet = true; @@ -141,10 +119,6 @@ bool cPluginSkinEnigma::Start(void) // start any background activities the plugin shall perform. debug("cPluginSkinEnigma::Start()"); -#if VDRVERSNUM < 10507 - RegisterI18n(Phrases); -#endif - if (!fLogodirSet) { // set logo directory EnigmaConfig.SetLogoDir(cPlugin::ConfigDirectory(PLUGIN_NAME_I18N)); @@ -160,18 +134,6 @@ bool cPluginSkinEnigma::Start(void) free(dir); } } -#ifdef HAVE_FREETYPE - if (!fFontsDirSet) { - // set fonts directory - char *dir = NULL; - asprintf(&dir, "%s/fonts", cPlugin::ConfigDirectory(PLUGIN_NAME_I18N)); - if (dir) { - EnigmaConfig.SetFontsDir(dir); - fFontsDirSet = true; - free(dir); - } - } -#endif // resize logo cache EnigmaLogoCache.Resize(EnigmaConfig.cacheSize); @@ -204,94 +166,97 @@ cMenuSetupPage *cPluginSkinEnigma::SetupMenu(void) return new cPluginSkinEnigmaSetup(); } -bool cPluginSkinEnigma::SetupParse(const char *Name, const char *Value) +bool cPluginSkinEnigma::SetupParse(const char *OptionName, const char *Value) { // parse your own setup parameters and store their values. // debug("cPluginSkinEnigma::SetupParse()"); - if (!strcasecmp(Name, "SingleArea8Bpp")) EnigmaConfig.singleArea8Bpp = atoi(Value); - else if (!strcasecmp(Name, "ShowAuxInfo")) EnigmaConfig.showAuxInfo = atoi(Value); - else if (!strcasecmp(Name, "ShowProgressBar")) EnigmaConfig.showProgressbar = atoi(Value); - else if (!strcasecmp(Name, "ShowRemaining")) EnigmaConfig.showRemaining = atoi(Value); - else if (!strcasecmp(Name, "ShowListSymbols")) EnigmaConfig.showListSymbols = atoi(Value); - else if (!strcasecmp(Name, "ShowSymbols")) EnigmaConfig.showSymbols = atoi(Value); - else if (!strcasecmp(Name, "ShowSymbolsMenu")) EnigmaConfig.showSymbolsMenu = atoi(Value); - else if (!strcasecmp(Name, "ShowSymbolsReplay")) EnigmaConfig.showSymbolsReplay = atoi(Value); - else if (!strcasecmp(Name, "ShowSymbolsMsgs")) EnigmaConfig.showSymbolsMsgs = atoi(Value); - else if (!strcasecmp(Name, "ShowSymbolsAudio")) EnigmaConfig.showSymbolsAudio = atoi(Value); - else if (!strcasecmp(Name, "ShowLogo")) EnigmaConfig.showLogo = atoi(Value); - else if (!strcasecmp(Name, "ShowInfo")) EnigmaConfig.showInfo = atoi(Value); - else if (!strcasecmp(Name, "ShowMarker")) EnigmaConfig.showMarker = atoi(Value); - else if (!strcasecmp(Name, "ShowVPS")) EnigmaConfig.showVps = atoi(Value); - else if (!strcasecmp(Name, "ShowFlags")) EnigmaConfig.showFlags = atoi(Value); - else if (!strcasecmp(Name, "CacheSize")) EnigmaConfig.cacheSize = atoi(Value); - else if (!strcasecmp(Name, "UseChannelId")) EnigmaConfig.useChannelId = atoi(Value); - else if (!strcasecmp(Name, "NumReruns")) EnigmaConfig.numReruns = atoi(Value); - else if (!strcasecmp(Name, "UseSubtitleRerun")) EnigmaConfig.useSubtitleRerun = atoi(Value); - else if (!strcasecmp(Name, "ShowTimerConflicts")) EnigmaConfig.showTimerConflicts = atoi(Value); - else if (!strcasecmp(Name, "ShowRecSize")) EnigmaConfig.showRecSize = atoi(Value); - else if (!strcasecmp(Name, "ShowImages")) EnigmaConfig.showImages = atoi(Value); - else if (!strcasecmp(Name, "ResizeImages")) EnigmaConfig.resizeImages = atoi(Value); - else if (!strcasecmp(Name, "ShowMailIcon")) EnigmaConfig.showMailIcon = atoi(Value); - else if (!strcasecmp(Name, "ImageWidth")) EnigmaConfig.imageWidth = atoi(Value); - else if (!strcasecmp(Name, "ImageHeight")) EnigmaConfig.imageHeight = atoi(Value); - else if (!strcasecmp(Name, "ImageExtension")) EnigmaConfig.imageExtension = atoi(Value); - else if (!strcasecmp(Name, "FullTitleWidth")) EnigmaConfig.fullTitleWidth = atoi(Value); - else if (!strcasecmp(Name, "UseTextEffects")) EnigmaConfig.useTextEffects = atoi(Value); - else if (!strcasecmp(Name, "ScrollDelay")) EnigmaConfig.scrollDelay = atoi(Value); - else if (!strcasecmp(Name, "ScrollPause")) EnigmaConfig.scrollPause = atoi(Value); - else if (!strcasecmp(Name, "ScrollMode")) EnigmaConfig.scrollMode = atoi(Value); - else if (!strcasecmp(Name, "BlinkPause")) EnigmaConfig.blinkPause = atoi(Value); - else if (!strcasecmp(Name, "ScrollInfo")) EnigmaConfig.scrollInfo = atoi(Value); - else if (!strcasecmp(Name, "ScrollListItem")) EnigmaConfig.scrollListItem = atoi(Value); - else if (!strcasecmp(Name, "ScrollOther")) EnigmaConfig.scrollOther = atoi(Value); - else if (!strcasecmp(Name, "ScrollTitle")) EnigmaConfig.scrollTitle = atoi(Value); - else if (!strcasecmp(Name, "FontOsdTitle")) EnigmaConfig.SetFont(FONT_OSDTITLE, atoi(Value)); - else if (!strcasecmp(Name, "FontOsdTitleName")) EnigmaConfig.SetFont(FONT_OSDTITLE, Value); - else if (!strcasecmp(Name, "FontMessage")) EnigmaConfig.SetFont(FONT_MESSAGE, atoi(Value)); - else if (!strcasecmp(Name, "FontMessageName")) EnigmaConfig.SetFont(FONT_MESSAGE, Value); - else if (!strcasecmp(Name, "FontDate")) EnigmaConfig.SetFont(FONT_DATE, atoi(Value)); - else if (!strcasecmp(Name, "FontDateName")) EnigmaConfig.SetFont(FONT_DATE, Value); - else if (!strcasecmp(Name, "FontHelpKeys")) EnigmaConfig.SetFont(FONT_HELPKEYS, atoi(Value)); - else if (!strcasecmp(Name, "FontHelpKeysName")) EnigmaConfig.SetFont(FONT_HELPKEYS, Value); - else if (!strcasecmp(Name, "FontCiTitle")) EnigmaConfig.SetFont(FONT_CITITLE, atoi(Value)); - else if (!strcasecmp(Name, "FontCiTitleName")) EnigmaConfig.SetFont(FONT_CITITLE, Value); - else if (!strcasecmp(Name, "FontCiSubtitle")) EnigmaConfig.SetFont(FONT_CISUBTITLE, atoi(Value)); - else if (!strcasecmp(Name, "FontCiSubtitleName")) EnigmaConfig.SetFont(FONT_CISUBTITLE, Value); - else if (!strcasecmp(Name, "FontCiLanguage")) EnigmaConfig.SetFont(FONT_CILANGUAGE, atoi(Value)); - else if (!strcasecmp(Name, "FontCiLanguageName")) EnigmaConfig.SetFont(FONT_CILANGUAGE, Value); - else if (!strcasecmp(Name, "FontListItem")) EnigmaConfig.SetFont(FONT_LISTITEM, atoi(Value)); - else if (!strcasecmp(Name, "FontListItemName")) EnigmaConfig.SetFont(FONT_LISTITEM, Value); - else if (!strcasecmp(Name, "FontInfoTimerHeadline")) EnigmaConfig.SetFont(FONT_INFOTIMERHEADLINE, atoi(Value)); - else if (!strcasecmp(Name, "FontInfoTimerHeadlineName")) EnigmaConfig.SetFont(FONT_INFOTIMERHEADLINE, Value); - else if (!strcasecmp(Name, "FontInfoTimerText")) EnigmaConfig.SetFont(FONT_INFOTIMERTEXT, atoi(Value)); - else if (!strcasecmp(Name, "FontInfoTimerTextName")) EnigmaConfig.SetFont(FONT_INFOTIMERTEXT, Value); - else if (!strcasecmp(Name, "FontInfoWarnHeadline")) EnigmaConfig.SetFont(FONT_INFOWARNHEADLINE, atoi(Value)); - else if (!strcasecmp(Name, "FontInfoWarnHeadlineName")) EnigmaConfig.SetFont(FONT_INFOWARNHEADLINE, Value); - else if (!strcasecmp(Name, "FontInfoWarnText")) EnigmaConfig.SetFont(FONT_INFOWARNTEXT, atoi(Value)); - else if (!strcasecmp(Name, "FontInfoWarnTextName")) EnigmaConfig.SetFont(FONT_INFOWARNTEXT, Value); - else if (!strcasecmp(Name, "FontDetailsTitle")) EnigmaConfig.SetFont(FONT_DETAILSTITLE, atoi(Value)); - else if (!strcasecmp(Name, "FontDetailsTitleName")) EnigmaConfig.SetFont(FONT_DETAILSTITLE, Value); - else if (!strcasecmp(Name, "FontDetailsSubtitle")) EnigmaConfig.SetFont(FONT_DETAILSSUBTITLE, atoi(Value)); - else if (!strcasecmp(Name, "FontDetailsSubtitleName")) EnigmaConfig.SetFont(FONT_DETAILSSUBTITLE, Value); - else if (!strcasecmp(Name, "FontDetailsDate")) EnigmaConfig.SetFont(FONT_DETAILSDATE, atoi(Value)); - else if (!strcasecmp(Name, "FontDetailsDateName")) EnigmaConfig.SetFont(FONT_DETAILSDATE, Value); - else if (!strcasecmp(Name, "FontDetailsText")) EnigmaConfig.SetFont(FONT_DETAILSTEXT, atoi(Value)); - else if (!strcasecmp(Name, "FontDetailsTextName")) EnigmaConfig.SetFont(FONT_DETAILSTEXT, Value); - else if (!strcasecmp(Name, "FontReplayTimes")) EnigmaConfig.SetFont(FONT_REPLAYTIMES, atoi(Value)); - else if (!strcasecmp(Name, "FontReplayTimesName")) EnigmaConfig.SetFont(FONT_REPLAYTIMES, Value); - else if (!strcasecmp(Name, "FontFixed")) EnigmaConfig.SetFont(FONT_FIXED, atoi(Value)); - else if (!strcasecmp(Name, "FontFixedName")) EnigmaConfig.SetFont(FONT_FIXED, Value); - else if (!strcasecmp(Name, "DynOSD")) EnigmaConfig.dynOsd = atoi(Value); - else if (!strcasecmp(Name, "StatusLineMode")) EnigmaConfig.statusLineMode = atoi(Value); - else if (!strcasecmp(Name, "ShowWssSymbols")) EnigmaConfig.showWssSymbols = atoi(Value); - else if (!strcasecmp(Name, "ShowStatusSymbols")) EnigmaConfig.showStatusSymbols = atoi(Value); + if (!strcasecmp(OptionName, "SingleArea8Bpp")) EnigmaConfig.singleArea8Bpp = atoi(Value); + else if (!strcasecmp(OptionName, "ShowAuxInfo")) EnigmaConfig.showAuxInfo = atoi(Value); + else if (!strcasecmp(OptionName, "ShowProgressBar")) EnigmaConfig.showProgressbar = atoi(Value); + else if (!strcasecmp(OptionName, "ShowRemaining")) EnigmaConfig.showRemaining = atoi(Value); + else if (!strcasecmp(OptionName, "ShowListSymbols")) EnigmaConfig.showListSymbols = atoi(Value); + else if (!strcasecmp(OptionName, "ShowSymbols")) EnigmaConfig.showSymbols = atoi(Value); + else if (!strcasecmp(OptionName, "ShowSymbolsMenu")) EnigmaConfig.showSymbolsMenu = atoi(Value); + else if (!strcasecmp(OptionName, "ShowSymbolsReplay")) EnigmaConfig.showSymbolsReplay = atoi(Value); + else if (!strcasecmp(OptionName, "ShowSymbolsMsgs")) EnigmaConfig.showSymbolsMsgs = atoi(Value); + else if (!strcasecmp(OptionName, "ShowSymbolsAudio")) EnigmaConfig.showSymbolsAudio = atoi(Value); + else if (!strcasecmp(OptionName, "ShowLogo")) EnigmaConfig.showLogo = atoi(Value); + else if (!strcasecmp(OptionName, "ShowInfo")) EnigmaConfig.showInfo = atoi(Value); + else if (!strcasecmp(OptionName, "ShowMarker")) EnigmaConfig.showMarker = atoi(Value); + else if (!strcasecmp(OptionName, "ShowVPS")) EnigmaConfig.showVps = atoi(Value); + else if (!strcasecmp(OptionName, "ShowFlags")) EnigmaConfig.showFlags = atoi(Value); + else if (!strcasecmp(OptionName, "CacheSize")) EnigmaConfig.cacheSize = atoi(Value); + else if (!strcasecmp(OptionName, "UseChannelId")) EnigmaConfig.useChannelId = atoi(Value); + else if (!strcasecmp(OptionName, "NumReruns")) EnigmaConfig.numReruns = atoi(Value); + else if (!strcasecmp(OptionName, "UseSubtitleRerun")) EnigmaConfig.useSubtitleRerun = atoi(Value); + else if (!strcasecmp(OptionName, "ShowTimerConflicts")) EnigmaConfig.showTimerConflicts = atoi(Value); + else if (!strcasecmp(OptionName, "ShowRecSize")) EnigmaConfig.showRecSize = atoi(Value); + else if (!strcasecmp(OptionName, "ShowImages")) EnigmaConfig.showImages = atoi(Value); + else if (!strcasecmp(OptionName, "ResizeImages")) EnigmaConfig.resizeImages = atoi(Value); + else if (!strcasecmp(OptionName, "ShowMailIcon")) EnigmaConfig.showMailIcon = atoi(Value); + else if (!strcasecmp(OptionName, "ImageWidth")) EnigmaConfig.imageWidth = atoi(Value); + else if (!strcasecmp(OptionName, "ImageHeight")) EnigmaConfig.imageHeight = atoi(Value); + else if (!strcasecmp(OptionName, "ImageExtension")) EnigmaConfig.imageExtension = atoi(Value); + else if (!strcasecmp(OptionName, "FullTitleWidth")) EnigmaConfig.fullTitleWidth = atoi(Value); + else if (!strcasecmp(OptionName, "UseTextEffects")) EnigmaConfig.useTextEffects = atoi(Value); + else if (!strcasecmp(OptionName, "ScrollDelay")) EnigmaConfig.scrollDelay = atoi(Value); + else if (!strcasecmp(OptionName, "ScrollPause")) EnigmaConfig.scrollPause = atoi(Value); + else if (!strcasecmp(OptionName, "ScrollMode")) EnigmaConfig.scrollMode = atoi(Value); + else if (!strcasecmp(OptionName, "BlinkPause")) EnigmaConfig.blinkPause = atoi(Value); + else if (!strcasecmp(OptionName, "ScrollInfo")) EnigmaConfig.scrollInfo = atoi(Value); + else if (!strcasecmp(OptionName, "ScrollListItem")) EnigmaConfig.scrollListItem = atoi(Value); + else if (!strcasecmp(OptionName, "ScrollOther")) EnigmaConfig.scrollOther = atoi(Value); + else if (!strcasecmp(OptionName, "ScrollTitle")) EnigmaConfig.scrollTitle = atoi(Value); + else if (!strcasecmp(OptionName, "FontOsdTitle")) EnigmaConfig.SetFont(FONT_OSDTITLE, atoi(Value)); + else if (!strcasecmp(OptionName, "FontOsdTitleName")) EnigmaConfig.SetFont(FONT_OSDTITLE, Value); + else if (!strcasecmp(OptionName, "FontMessage")) EnigmaConfig.SetFont(FONT_MESSAGE, atoi(Value)); + else if (!strcasecmp(OptionName, "FontMessageName")) EnigmaConfig.SetFont(FONT_MESSAGE, Value); + else if (!strcasecmp(OptionName, "FontDate")) EnigmaConfig.SetFont(FONT_DATE, atoi(Value)); + else if (!strcasecmp(OptionName, "FontDateName")) EnigmaConfig.SetFont(FONT_DATE, Value); + else if (!strcasecmp(OptionName, "FontHelpKeys")) EnigmaConfig.SetFont(FONT_HELPKEYS, atoi(Value)); + else if (!strcasecmp(OptionName, "FontHelpKeysName")) EnigmaConfig.SetFont(FONT_HELPKEYS, Value); + else if (!strcasecmp(OptionName, "FontCiTitle")) EnigmaConfig.SetFont(FONT_CITITLE, atoi(Value)); + else if (!strcasecmp(OptionName, "FontCiTitleName")) EnigmaConfig.SetFont(FONT_CITITLE, Value); + else if (!strcasecmp(OptionName, "FontCiSubtitle")) EnigmaConfig.SetFont(FONT_CISUBTITLE, atoi(Value)); + else if (!strcasecmp(OptionName, "FontCiSubtitleName")) EnigmaConfig.SetFont(FONT_CISUBTITLE, Value); + else if (!strcasecmp(OptionName, "FontCiLanguage")) EnigmaConfig.SetFont(FONT_CILANGUAGE, atoi(Value)); + else if (!strcasecmp(OptionName, "FontCiLanguageName")) EnigmaConfig.SetFont(FONT_CILANGUAGE, Value); + else if (!strcasecmp(OptionName, "FontListItem")) EnigmaConfig.SetFont(FONT_LISTITEM, atoi(Value)); + else if (!strcasecmp(OptionName, "FontListItemName")) EnigmaConfig.SetFont(FONT_LISTITEM, Value); + else if (!strcasecmp(OptionName, "FontInfoTimerHeadline")) EnigmaConfig.SetFont(FONT_INFOTIMERHEADLINE, atoi(Value)); + else if (!strcasecmp(OptionName, "FontInfoTimerHeadlineName")) EnigmaConfig.SetFont(FONT_INFOTIMERHEADLINE, Value); + else if (!strcasecmp(OptionName, "FontInfoTimerText")) EnigmaConfig.SetFont(FONT_INFOTIMERTEXT, atoi(Value)); + else if (!strcasecmp(OptionName, "FontInfoTimerTextName")) EnigmaConfig.SetFont(FONT_INFOTIMERTEXT, Value); + else if (!strcasecmp(OptionName, "FontInfoWarnHeadline")) EnigmaConfig.SetFont(FONT_INFOWARNHEADLINE, atoi(Value)); + else if (!strcasecmp(OptionName, "FontInfoWarnHeadlineName")) EnigmaConfig.SetFont(FONT_INFOWARNHEADLINE, Value); + else if (!strcasecmp(OptionName, "FontInfoWarnText")) EnigmaConfig.SetFont(FONT_INFOWARNTEXT, atoi(Value)); + else if (!strcasecmp(OptionName, "FontInfoWarnTextName")) EnigmaConfig.SetFont(FONT_INFOWARNTEXT, Value); + else if (!strcasecmp(OptionName, "FontDetailsTitle")) EnigmaConfig.SetFont(FONT_DETAILSTITLE, atoi(Value)); + else if (!strcasecmp(OptionName, "FontDetailsTitleName")) EnigmaConfig.SetFont(FONT_DETAILSTITLE, Value); + else if (!strcasecmp(OptionName, "FontDetailsSubtitle")) EnigmaConfig.SetFont(FONT_DETAILSSUBTITLE, atoi(Value)); + else if (!strcasecmp(OptionName, "FontDetailsSubtitleName")) EnigmaConfig.SetFont(FONT_DETAILSSUBTITLE, Value); + else if (!strcasecmp(OptionName, "FontDetailsDate")) EnigmaConfig.SetFont(FONT_DETAILSDATE, atoi(Value)); + else if (!strcasecmp(OptionName, "FontDetailsDateName")) EnigmaConfig.SetFont(FONT_DETAILSDATE, Value); + else if (!strcasecmp(OptionName, "FontDetailsText")) EnigmaConfig.SetFont(FONT_DETAILSTEXT, atoi(Value)); + else if (!strcasecmp(OptionName, "FontDetailsTextName")) EnigmaConfig.SetFont(FONT_DETAILSTEXT, Value); + else if (!strcasecmp(OptionName, "FontReplayTimes")) EnigmaConfig.SetFont(FONT_REPLAYTIMES, atoi(Value)); + else if (!strcasecmp(OptionName, "FontReplayTimesName")) EnigmaConfig.SetFont(FONT_REPLAYTIMES, Value); + else if (!strcasecmp(OptionName, "FontFixed")) EnigmaConfig.SetFont(FONT_FIXED, atoi(Value)); + else if (!strcasecmp(OptionName, "FontFixedName")) EnigmaConfig.SetFont(FONT_FIXED, Value); + else if (!strcasecmp(OptionName, "DynOSD")) EnigmaConfig.dynOsd = atoi(Value); + else if (!strcasecmp(OptionName, "StatusLineMode")) EnigmaConfig.statusLineMode = atoi(Value); + else if (!strcasecmp(OptionName, "ShowWssSymbols")) EnigmaConfig.showWssSymbols = atoi(Value); + else if (!strcasecmp(OptionName, "ShowStatusSymbols")) EnigmaConfig.showStatusSymbols = atoi(Value); + else if (!strcasecmp(OptionName, "ShowScrollbar")) EnigmaConfig.showScrollbar = atoi(Value); + else if (!strcasecmp(OptionName, "ShowSignalInfo")) EnigmaConfig.showSignalInfo = atoi(Value); + else if (!strcasecmp(OptionName, "ShowCaMode")) EnigmaConfig.showCaMode = atoi(Value); else return false; return true; } -bool cPluginSkinEnigma::Service(const char *Id, void *Data) +bool cPluginSkinEnigma::Service(const char * /* Id */, void * /* Data */) { // handle custom service requests from other plugins return false; @@ -303,7 +268,7 @@ const char **cPluginSkinEnigma::SVDRPHelpPages(void) return NULL; } -cString cPluginSkinEnigma::SVDRPCommand(const char *Command, const char *Option, int &ReplyCode) +cString cPluginSkinEnigma::SVDRPCommand(const char * /* Command */, const char * /* Option */, int & /* ReplyCode */) { // process SVDRP commands this plugin implements return NULL; @@ -23,7 +23,7 @@ cEnigmaStatus::cEnigmaStatus(void) : mReplayMode(replayNone), {} void cEnigmaStatus::Replaying(const cControl * /*Control */ , const char *Name, - const char *FileName, bool On) + const char *FileName, bool /* On */) { debug("cEnigmaStatus::Replaying(%s)", Name); @@ -67,7 +67,7 @@ void cEnigmaStatus::Replaying(const cControl * /*Control */ , const char *Name, } } -void cEnigmaStatus::Recording(const cDevice * Device, const char *Name, const char *FileName, bool On) +void cEnigmaStatus::Recording(const cDevice * /* Device */, const char * /* Name */, const char * /* FileName */, bool /* On */) { } @@ -75,11 +75,11 @@ void cEnigmaStatus::OsdClear(void) { } -void cEnigmaStatus::OsdCurrentItem(const char *Text) +void cEnigmaStatus::OsdCurrentItem(const char * /* Text */) { } -void cEnigmaStatus::OsdItem(const char *Text, int Index) +void cEnigmaStatus::OsdItem(const char * /* Text */, int /* ItemIndex */) { } @@ -35,7 +35,7 @@ struct tTimer : public cListObject { {} virtual int Compare(const cListObject & listObj) const { - tTimer *e = (tTimer *) & listObj; + const tTimer *e = (const tTimer *)&listObj; int r = startTime - e->startTime; if (r == 0) r = e->priority - priority; diff --git a/symbols/small/audio.xpm b/symbols/small/audio.xpm index 79b8609..f7b9e29 100644 --- a/symbols/small/audio.xpm +++ b/symbols/small/audio.xpm @@ -1,5 +1,5 @@ /* XPM */ -static char * audio_xpm[] = { +static const char * audio_xpm[] = { "27 18 2 1", " c None", ". c #B9C000", diff --git a/symbols/small/audioleft.xpm b/symbols/small/audioleft.xpm index 282616a..290b127 100644 --- a/symbols/small/audioleft.xpm +++ b/symbols/small/audioleft.xpm @@ -1,5 +1,5 @@ /* XPM */ -static char * audioleft_xpm[] = { +static const char * audioleft_xpm[] = { "27 18 2 1", " c None", ". c #B9C000", diff --git a/symbols/small/audioright.xpm b/symbols/small/audioright.xpm index 5f1cd04..42af4a9 100644 --- a/symbols/small/audioright.xpm +++ b/symbols/small/audioright.xpm @@ -1,5 +1,5 @@ /* XPM */ -static char * audioright_xpm[] = { +static const char * audioright_xpm[] = { "27 18 2 1", " c None", ". c #B9C000", diff --git a/symbols/small/dolbydigital.xpm b/symbols/small/dolbydigital.xpm index c347169..7d3c640 100644 --- a/symbols/small/dolbydigital.xpm +++ b/symbols/small/dolbydigital.xpm @@ -1,5 +1,5 @@ /* XPM */ -static char * dolbydigital_xpm[] = { +static const char * dolbydigital_xpm[] = { "27 18 2 1", " c None", ". c #B9C000", diff --git a/symbols/small/encrypted.xpm b/symbols/small/encrypted.xpm index 73ca50c..89f4cd3 100644 --- a/symbols/small/encrypted.xpm +++ b/symbols/small/encrypted.xpm @@ -1,5 +1,5 @@ /* XPM */ -static char * encrypted_xpm[] = { +static const char * encrypted_xpm[] = { "27 18 2 1", " c None", ". c #B9C000", diff --git a/symbols/small/eventparttimer.xpm b/symbols/small/eventparttimer.xpm index 85d5c97..58411ac 100644 --- a/symbols/small/eventparttimer.xpm +++ b/symbols/small/eventparttimer.xpm @@ -1,5 +1,5 @@ /* XPM */ -static char * eventparttimer_xpm[] = { +static const char * eventparttimer_xpm[] = { "14 22 2 1", ". c #FFFFFF", "+ c #000000", diff --git a/symbols/small/eventtimer.xpm b/symbols/small/eventtimer.xpm index a76bbad..5d3f5f6 100644 --- a/symbols/small/eventtimer.xpm +++ b/symbols/small/eventtimer.xpm @@ -1,5 +1,5 @@ /* XPM */ -static char * eventtimer_xpm[] = { +static const char * eventtimer_xpm[] = { "14 22 2 1", ". c #FFFFFF", "+ c #000000", diff --git a/symbols/small/mail.xpm b/symbols/small/mail.xpm index 2eb5158..ec17902 100644 --- a/symbols/small/mail.xpm +++ b/symbols/small/mail.xpm @@ -1,5 +1,5 @@ /* XPM */ -static char * mail_xpm[] = { +static const char * mail_xpm[] = { "27 18 3 1", " c None", ". c #8D8F8D", diff --git a/symbols/small/recording.xpm b/symbols/small/recording.xpm index 30c0198..028ec49 100644 --- a/symbols/small/recording.xpm +++ b/symbols/small/recording.xpm @@ -1,5 +1,5 @@ /* XPM */ -static char * recording_xpm[] = { +static const char * recording_xpm[] = { "27 18 2 1", " c None", ". c #B9C000", diff --git a/symbols/small/run.xpm b/symbols/small/run.xpm index a26ce01..31ee069 100644 --- a/symbols/small/run.xpm +++ b/symbols/small/run.xpm @@ -1,5 +1,5 @@ /* XPM */ -static char * run_xpm[] = { +static const char * run_xpm[] = { "27 18 2 1", " c None", ". c #B9C000", diff --git a/symbols/small/subtitle.xpm b/symbols/small/subtitle.xpm new file mode 100644 index 0000000..e0f49b2 --- /dev/null +++ b/symbols/small/subtitle.xpm @@ -0,0 +1,23 @@ +/* XPM */ +static const char * subtitle_xpm[] = { +"27 18 2 1", +" c None", +". c #B9C000", +" ", +" ", +" ....................... ", +" ....................... ", +" .. .. ", +" .. .. ", +" .. .. ", +" .. .. ", +" .. .. ", +" .. .. ", +" .. ............... .. ", +" .. ............... .. ", +" .. .. ", +" .. .. ", +" ....................... ", +" ....................... ", +" ", +" "}; diff --git a/symbols/small/teletext.xpm b/symbols/small/teletext.xpm index 65a2fcd..767ab67 100644 --- a/symbols/small/teletext.xpm +++ b/symbols/small/teletext.xpm @@ -1,5 +1,5 @@ /* XPM */ -static char * teletext_xpm[] = { +static const char * teletext_xpm[] = { "27 18 2 1", " c None", ". c #B9C000", diff --git a/symbols/small/timer.xpm b/symbols/small/timer.xpm index 246dd10..b0136d9 100644 --- a/symbols/small/timer.xpm +++ b/symbols/small/timer.xpm @@ -1,5 +1,5 @@ /* XPM */ -static char * timer_xpm[] = { +static const char * timer_xpm[] = { "27 18 2 1", " c None", ". c #B9C000", diff --git a/symbols/small/v_16_9.xpm b/symbols/small/v_16_9.xpm index c8152a4..7cbcc43 100644 --- a/symbols/small/v_16_9.xpm +++ b/symbols/small/v_16_9.xpm @@ -1,5 +1,5 @@ /* XPM */ -static char * v_16_9_xpm[] = { +static const char * v_16_9_xpm[] = { "27 18 2 1", " c None", ". c #B9C000", diff --git a/symbols/small/v_4_3.xpm b/symbols/small/v_4_3.xpm index d837607..d651b93 100644 --- a/symbols/small/v_4_3.xpm +++ b/symbols/small/v_4_3.xpm @@ -1,5 +1,5 @@ /* XPM */ -static char * v_4_3_xpm[] = { +static const char * v_4_3_xpm[] = { "27 18 2 1", " c None", ". c #B9C000", diff --git a/symbols/small/v_l14_9.xpm b/symbols/small/v_l14_9.xpm index 1e204aa..81f39bb 100644 --- a/symbols/small/v_l14_9.xpm +++ b/symbols/small/v_l14_9.xpm @@ -1,5 +1,5 @@ /* XPM */ -static char * v_l14_9_xpm[] = { +static const char * v_l14_9_xpm[] = { "27 18 2 1", " c None", ". c #B9C000", diff --git a/symbols/small/v_l16_9.xpm b/symbols/small/v_l16_9.xpm index 2a5540e..7ea8aed 100644 --- a/symbols/small/v_l16_9.xpm +++ b/symbols/small/v_l16_9.xpm @@ -1,5 +1,5 @@ /* XPM */ -static char * v_l16_9_xpm[] = { +static const char * v_l16_9_xpm[] = { "27 18 2 1", " c None", ". c #B9C000", diff --git a/symbols/small/v_l_16_9.xpm b/symbols/small/v_l_16_9.xpm index 83a0784..864b55f 100644 --- a/symbols/small/v_l_16_9.xpm +++ b/symbols/small/v_l_16_9.xpm @@ -1,5 +1,5 @@ /* XPM */ -static char * v_l_16_9_xpm[] = { +static const char * v_l_16_9_xpm[] = { "27 18 2 1", " c None", ". c #B9C000", diff --git a/symbols/small/v_unknown.xpm b/symbols/small/v_unknown.xpm index 0bac452..b0ed824 100644 --- a/symbols/small/v_unknown.xpm +++ b/symbols/small/v_unknown.xpm @@ -1,5 +1,5 @@ /* XPM */ -static char * v_unknown_xpm[] = { +static const char * v_unknown_xpm[] = { "27 18 2 1", " c None", ". c #B9C000", diff --git a/symbols/small/vps.xpm b/symbols/small/vps.xpm index e97204b..76d81f2 100644 --- a/symbols/small/vps.xpm +++ b/symbols/small/vps.xpm @@ -1,5 +1,5 @@ /* XPM */ -static char * vps_xpm[] = { +static const char * vps_xpm[] = { "27 18 2 1", " c None", ". c #B9C000", diff --git a/texteffects.c b/texteffects.c index e8981ff..5e10941 100644 --- a/texteffects.c +++ b/texteffects.c @@ -5,74 +5,281 @@ #include <algorithm> -#ifndef DISABLE_ANIMATED_TEXT //Redefine macros #undef TE_LOCK #define TE_LOCK UpdateLock() #undef TE_UNLOCK #define TE_UNLOCK UpdateUnlock() -#endif - -#ifdef HAVE_FREETYPE -// needed for case-insensitive sort of vector (for fonts) -struct NoCase { - bool operator()(const std::string& x, const std::string& y) { - std::string lv(x); - std::string rv(y); - lcase(lv); - lcase(rv); - return lv < rv; + + +// --- cEffect ----------------------------------------------- + +cEffect::cEffect(cOsd * osd, int x, int y, int width, int height, int depth /* = 1 */, bool active /* = true */) +{ + debug("cEffect::cEffect(x=%d,y=%d,w=%d,h=%d)", x, y, width, height) + Active = active; + xOff = x; + yOff = y; + Osd = osd; + bmp = NULL; + Width = width; + Height = height; + ColorDepth = depth; + Text = NULL; + changed = false; +} + +cEffect::~cEffect() +{ + delete(Text); + delete(bmp); +} + + +// --- cEffectScroll ----------------------------------------------- + +cEffectScroll::cEffectScroll(cOsd *osd, int x, int y, int width, int height /* = 0 */, tColor fg /* = 0xFFFFFFFF */, tColor bg /* = 0xFF000000 */, int alignment /* = taDefault */, int depth /* = 1 */, bool active /* = true */) : cEffect(osd, x, y, width, height, depth, active) +{ + Fg = fg; + Bg = bg; + Alignment = alignment; + DestWidth = width; + pos = 0; + dir = 0; + Delay = EnigmaConfig.scrollPause; + delay = Delay; + xOffset = 0; +} + +bool cEffectScroll::SetText(const char *text, const cFont *font, int offset /* = 0 */) +{ + debug("cEffectScroll::SetText(%s, %d)", text ? text : "NULL", offset) + + if (!font) + return false; + + changed = true; + if (!text) { // || isempty(text)) { // clear area if no text is given + Osd->DrawRectangle(xOff + xOffset, yOff, xOff + DestWidth, yOff - 1 + Height, Bg); + return false; + } + + if (Text && strcmp(Text, text) == 0) + return true; + + if (Text) + delete(Text); + Text = strdup(text); + + int textwidth = font->Width(text); + int textheight = font->Height(text); + xOffset = offset; + dir = 0; + DestWidth = Width - xOffset; + + // text is given, draw it + Osd->DrawText(xOff + xOffset, yOff, text, Fg, Bg, font, DestWidth, textheight, Alignment); + + if (!DestWidth || !Active) + return false; + + if (textwidth > DestWidth) { + pos = 0; + dir = -1; + Time.Set(); + + if (bmp) + bmp->SetSize(textwidth, textheight); + else + bmp = new cBitmap(textwidth, textheight, ColorDepth); + bmp->DrawText(0, 0, text, Fg, Bg, font); + + delay = Delay; + return true; + } + + return false; +} + +bool cEffectScroll::IsDrawNeeded(void) +{ + if (bmp) { + int elapsed = ((int)Time.Elapsed()); + if (elapsed >= Delay) { + Delay = EnigmaConfig.scrollDelay; + + if (dir == -2) { + pos = 0; + dir = -1; + Delay = EnigmaConfig.scrollPause; + + } else { + pos -= dir; + + if (pos < 0) { + pos = 0; + dir = -1; + Delay = EnigmaConfig.scrollPause; + + } else { + int x = bmp->Width() - DestWidth; + if (pos > x) { + if (EnigmaConfig.scrollMode) { // Restart scrolling from the left + dir = -2; + + } else { // ping-pong scroll + pos = x; + dir = 1; + } + + Delay = EnigmaConfig.scrollPause; + } + } + } + + Time.Set(); + delay = Delay; + return true; + } else { + delay = Delay - elapsed; + } + + } else { + delay = 0; + } + + return false; +} + +int cEffectScroll::DrawIfNeeded(int yMax) +{ + bool needed=IsDrawNeeded(); +// printf("cEffectScroll::DrawIfNeeded(%d) bmp=%p dir=%d yOff=%d needed=%d, DestWidth=%d, h=%d\n", yMax, bmp, dir, yOff, needed, DestWidth, yOff + Height > yMax ? yMax - yOff : bmp->Height()); + + changed = false; + if (bmp && dir && (yMax == 0 || yOff < yMax) && needed) { //TODO + changed = true; + for (int i = 0; i < DestWidth; i++) { + int nHeight = (yMax > 0 && yOff + Height > yMax) ? yMax - yOff : bmp->Height(); + for (int j = 0; j < nHeight; j++) { + Osd->DrawPixel(xOff + xOffset + i, yOff + j, bmp->Color(*(bmp->Data(i + pos, j)))); + } + } + } + + return delay; +} + + +// --- cEffectBlink ----------------------------------------------- + +cEffectBlink::cEffectBlink(cOsd *osd, int x, int y, int width, int height /* = 0 */, tColor fg /* = 0xFFFFFFFF */, tColor bg /* = 0xFF000000 */, int alignment /* = taDefault */, int depth /* = 1 */, bool active /* = true */) : cEffect(osd, x, y, width, height, depth, active) +{ + Fg = fg; + Bg = bg; + Alignment = alignment; + Delay = EnigmaConfig.blinkPause; + delay = Delay; + shown = false; + changed = false; +} + +bool cEffectBlink::SetText(const char *text, const cFont *font, int offset /* = 0 */) +{ + debug("cEffectBlink::SetText(%s, %d)", text ? text : "NULL", offset) + + if (!font) + return false; + + changed = true; + if (!text || isempty(text)) { // clear area if no text is given + Osd->DrawRectangle(xOff + xOffset, yOff, xOff + DestWidth, yOff - 1 + Height, Bg); + return false; } - void lcase(std::string& s) { - int n = s.size(); - for(int i = 0; i < n; i++) - s[i] = tolower(s[i]); + xOffset = offset; + shown = true; + DestWidth = Width - xOffset; + + int textwidth = font->Width(text); + int textheight = font->Height(text); + if (textwidth < DestWidth) + textwidth = DestWidth; + if (textheight < Height) + textheight = Height; + + // text is given, draw it + Osd->DrawText(xOff + xOffset, yOff, text, Fg, Bg, font, DestWidth, textheight, Alignment); + + if (!DestWidth || !Active) + return false; + + if (bmp) + bmp->SetSize(textwidth, textheight); + else + bmp = new cBitmap(textwidth, textheight, ColorDepth); + bmp->DrawText(0, 0, text, Fg, Bg, font, textwidth, textheight, Alignment); + + Time.Set(); + delay = Delay; + return true; +} + +int cEffectBlink::DrawIfNeeded(int yMax) +{ + //debug("cEffectBlink::DrawIfNeeded") + + changed = false; + if (yMax != 0 && yMax < yOff) //TODO + return delay; + + if (bmp) { + int elapsed = ((int)Time.Elapsed()); + if (elapsed >= Delay) { + if (shown) { //hide + Osd->DrawRectangle(xOff, yOff, xOff + Width - 1, yOff + Height - 1, Bg); + shown = false; + + } else { //show + for (int i = 0; i < Width; i++) { + for (int j = 0; j < bmp->Height(); j++) { + Osd->DrawPixel(xOff + xOffset + i, yOff + j, bmp->Color(*(bmp->Data(i, j)))); + } + } + shown = true; + } + + Time.Set(); + delay = Delay; + changed = true; + + } else { + delay = Delay - elapsed; + } + + } else { + delay = 0; } -}; -#endif + return delay; +} + + +// --- cEnigmaTextEffects ----------------------------------------------- -#ifdef DISABLE_ANIMATED_TEXT -cEnigmaTextEffects EnigmaTextEffects; -#else cEnigmaTextEffects EnigmaTextEffects("EnigmaNG effects"); -#endif -#ifdef DISABLE_ANIMATED_TEXT -cEnigmaTextEffects::cEnigmaTextEffects(void) : osd(NULL) -#else cEnigmaTextEffects::cEnigmaTextEffects(const char *Description) : cThread(Description), osd(NULL), condSleep(), mutexSleep(), mutexRunning() -#endif { // SetPriority(19); - -#ifdef HAVE_FREETYPE - availTTFs = NULL; - nMaxTTFs = 0; -#endif + sem_init(&sem_update, 0, 1); } cEnigmaTextEffects::~cEnigmaTextEffects(void) { -#ifndef DISABLE_ANIMATED_TEXT //TODO? Stop(); -#endif - -#ifdef HAVE_FREETYPE - if (availTTFs) { - char **ptr = availTTFs; - while (*ptr) { - delete(*ptr); - ptr++; - } - free(availTTFs); - availTTFs = NULL; - } -#endif } -#ifndef DISABLE_ANIMATED_TEXT void cEnigmaTextEffects::Action(void) { mutexRunning.Lock(); @@ -81,28 +288,23 @@ void cEnigmaTextEffects::Action(void) debug("cEnigmaTextEffects::Action() %lu", pthread_self()); while (EnigmaConfig.useTextEffects && osd) { - uint64_t nNow = cTimeMs::Now(); - int nSleepMs = 0; + int nSleepMs = 5000; + int tempSleep = 0; - TE_LOCK; //This causes an initial wait until thet first Flush() is called (which TE_UNKOCKs) - for (tEffects::iterator effect = vecEffects.begin(); (effect != vecEffects.end()) && osd; effect++) { - tEffect *e = (*effect); + TE_LOCK; //This causes an initial wait until the first Flush() is called (which TE_UNKOCKs) + bool changed = false; + for (Effects_t::iterator effect = vecEffects.begin(); (effect != vecEffects.end()) && osd; effect++) { + cEffect *e = (*effect); if (e == NULL) continue; - if (e->nNextUpdate == 0) { - e->nNextUpdate = nNow + (e->nAction == 0 ? EnigmaConfig.scrollPause : EnigmaConfig.blinkPause); - } else if(nNow >= e->nNextUpdate) { - DoEffect(e, nNow); - } - -// printf("NOW=%llu NEXT=%llu DIFF=%d SLEEP=%d\n", nNow, e->nNextUpdate, (int)(e->nNextUpdate - nNow), nSleepMs); - int nDiff = std::max(3, (int)(e->nNextUpdate - nNow)); - if (nSleepMs == 0 || nDiff < nSleepMs) - nSleepMs = nDiff; + tempSleep = e->DrawIfNeeded(yMessageTop); + changed = (changed || e->changed); + //printf("TEMPSLEEP %d\n", tempSleep); + nSleepMs = nSleepMs < tempSleep ? nSleepMs : (tempSleep <= 0 ? nSleepMs : tempSleep); } - if (osd) + if (osd && changed) osd->Flush(); TE_UNLOCK; @@ -120,97 +322,6 @@ void cEnigmaTextEffects::Action(void) mutexRunning.Unlock(); } -void cEnigmaTextEffects::DoEffect(tEffect *e, uint64_t nNow) -{ - bool fDrawItem = ((yMessageTop == 0) || (e->y + e->Height < yMessageTop)); - - switch (e->nAction) { - case 0: // Scroll - DoScroll(e, nNow, fDrawItem); - break; - - case 1: // Blink - DoBlink(e, nNow, fDrawItem); - break; - } -} - -void cEnigmaTextEffects::DoScroll(tEffect *e, uint64_t nNow, bool fDrawItem) -{ -// debug("cEnigmaTextEffects::DoScroll()"); - if (e->Font->Width(e->strText.c_str()) <= e->Width) { - if (fDrawItem) { - if (e->Skin) - e->Skin->DrawTitle(e->strText.c_str()); - else - osd->DrawText(e->x, e->y, e->strText.c_str(), e->ColorFg, e->ColorBg, e->Font, e->Width, e->Height, e->Alignment); - } - - if (nNow) - e->nNextUpdate = nNow + EnigmaConfig.scrollPause; - return; - } - - if (nNow) { - int nDelay = EnigmaConfig.scrollDelay; - if (fDrawItem) { - switch (e->nDirection) { - case 0: // Scroll from left to right - if (e->Font->Width(e->strText.c_str() + e->nOffset) <= e->Width) { - if (EnigmaConfig.scrollMode) - e->nDirection = 2; - else - e->nDirection = 1; - nDelay = EnigmaConfig.scrollPause; - } else if (e->nOffset < e->strText.length()) - e->nOffset++; - break; - - case 1: // Scroll from right to left - if (e->nOffset > 0) - e->nOffset--; - if (e->nOffset <= 0) { - e->nDirection = false; - nDelay = EnigmaConfig.scrollPause; - } - break; - - case 2: // Restart scrolling from the left - nDelay = EnigmaConfig.scrollPause; - e->nOffset = 0; - e->nDirection = 0; - break; - } - } - e->nNextUpdate = nNow + nDelay; - } - - if (fDrawItem) { -// printf("SCROLL: %d %d %d/%d (%s) %d %lu %lu\n", e->nOffset, e->nDirection, e->Font->Width(e->strText.c_str() + e->nOffset), e->Width, e->strText.c_str() + e->nOffset, e->strText.length(), nNow, e->nNextUpdate); - if (e->Skin) - e->Skin->DrawTitle(e->strText.c_str() + e->nOffset); - else - osd->DrawText(e->x, e->y, e->strText.c_str() + e->nOffset, e->ColorFg, e->ColorBg, e->Font, e->Width, e->Height); - } -} - -void cEnigmaTextEffects::DoBlink(tEffect *e, uint64_t nNow, bool fDrawItem) -{ -// debug("cEnigmaTextEffects::DoBlink()"); - if (fDrawItem) { - if (nNow) { - e->nDirection = (e->nDirection == 0 ? 1 : 0); - e->nNextUpdate = nNow + EnigmaConfig.blinkPause; - } - if (e->nDirection == 1) - osd->DrawText(e->x, e->y, e->strText.c_str() + e->nOffset, e->ColorFg, e->ColorBg, e->Font, e->Width, e->Height, e->Alignment); - else - osd->DrawText(e->x, e->y, e->strText.c_str() + e->nOffset, e->ColorBg, e->ColorBg, e->Font, e->Width, e->Height, e->Alignment); - } else { - e->nNextUpdate = nNow + EnigmaConfig.blinkPause; - } -} - bool cEnigmaTextEffects::Start(cOsd *o) { osd = o; @@ -253,7 +364,7 @@ void cEnigmaTextEffects::Clear(void) //Must be TE_LOCKed by caller - for (tEffects::iterator effect = vecEffects.begin(); effect != vecEffects.end(); effect++) { + for (Effects_t::iterator effect = vecEffects.begin(); effect != vecEffects.end(); effect++) { delete(*effect); } @@ -269,7 +380,7 @@ void cEnigmaTextEffects::PauseEffects(int y) yMessageTop = y; } -void cEnigmaTextEffects::ResetText(int i, tColor ColorFg, tColor ColorBg, bool fDraw) +void cEnigmaTextEffects::ResetText(int i, tColor /* ColorFg */, tColor /* ColorBg */, bool /* fDraw */) { debug("cEnigmaTextEffects::ResetText(%d)", i); @@ -278,14 +389,8 @@ void cEnigmaTextEffects::ResetText(int i, tColor ColorFg, tColor ColorBg, bool f if (i < 0 || i >= (int)vecEffects.size()) return; - tEffect *e = vecEffects[i]; + cEffect *e = vecEffects[i]; if (e) { - if (fDraw && osd) { - osd->DrawText(e->x, e->y, e->strText.c_str(), - ColorFg ? ColorFg : e->ColorFg, - ColorBg ? ColorBg : e->ColorBg, - e->Font, e->Width, e->Height); - } delete(e); vecEffects[i] = NULL; } @@ -293,157 +398,42 @@ void cEnigmaTextEffects::ResetText(int i, tColor ColorFg, tColor ColorBg, bool f vecEffects.resize(vecEffects.size() - 1); } -void cEnigmaTextEffects::UpdateTextWidth(int i, int Width) -{ - debug("cEnigmaTextEffects::UpdateTextWidth(%d)", i); - - //Must be TE_LOCKed by caller - - if (i < 0 || i >= (int)vecEffects.size()) - return; - - tEffect *e = vecEffects[i]; - if (e) { - e->Width = Width; - } -} - -int cEnigmaTextEffects::DrawAnimatedTitle(int o_id, int action, const char *s, int Width, cSkinEnigmaThreadedOsd *skin) -{ - //Must be TE_LOCKed by caller - - if (osd == NULL || skin == NULL) - return -1; - - debug("cEnigmaTextEffects::DrawAnimatedTitle(%d, %d, %s)", o_id, EnigmaConfig.useTextEffects, s); - - if (o_id >= 0) { - // Update animated text - tEffect *effect = vecEffects[o_id]; - if (effect) { - if (s == NULL) - effect->strText = ""; - else if (strcmp(effect->strText.c_str(), s) != 0) { - effect->strText = s; - effect->nOffset = 0; - effect->nDirection = 0; - } - DoEffect(effect); - return o_id; - } else { - return -1; - } - } else { - skin->DrawTitle(s); - const cFont *Font = EnigmaConfig.GetFont(FONT_OSDTITLE); - if (EnigmaConfig.useTextEffects && ((Font->Width(s ? s : "") > Width) || (action > 0))) { - // New scrolling text - tEffect *effect = new tEffect; - if (effect == NULL) { - return -1; - } - - effect->nAction = action; - effect->strText = std::string(s ? s : ""); - effect->Width = Width; - effect->Font = Font; - effect->Skin = skin; - vecEffects.push_back(effect); - return vecEffects.size() - 1; - } else { - return -1; - } - } -} - -int cEnigmaTextEffects::DrawAnimatedText(int o_id, int action, int x, int y, const char *s, tColor ColorFg, tColor ColorBg, const cFont *Font, int Width, int Height, int Alignment) +int cEnigmaTextEffects::DrawAnimatedText(int o_id, int action, bool _active, int x, int y, const char *s, tColor ColorFg, tColor ColorBg, const cFont *Font, int ColorDepth /* = 1 */, int Width /* = 0 */, int Height /* = 0 */, int Alignment /* = taDefault */) { //Must be TE_LOCKed by caller if (osd == NULL) return -1; - debug("cEnigmaTextEffects::DrawAnimatedText(%d, %d, %s)", o_id, EnigmaConfig.useTextEffects, s); + debug("cEnigmaTextEffects::DrawAnimatedText(%d, %d, %d, %d, %d, %s, %d, %d, %p, %d, %d, %d, %d)", o_id, action, _active, x, y, s, ColorFg, ColorBg, Font, ColorDepth, Width, Height, Alignment); if (o_id >= 0) { // Update animated text - tEffect *effect = vecEffects[o_id]; + cEffect *effect = vecEffects[o_id]; if (effect) { - if (s == NULL) - effect->strText = ""; - else if (strcmp(effect->strText.c_str(), s) != 0) { - effect->strText = s; - effect->nOffset = 0; - effect->nDirection = 0; - } - DoEffect(effect); + effect->SetText(s, Font); return o_id; } else { return -1; } } else { - if (Height == 0) - Height = Font->Height(s); - osd->DrawText(x, y, s ? s : "", ColorFg, ColorBg, Font, Width, Height, Alignment); // New animated text - tEffect *effect = new tEffect; + cEffect *effect = NULL; + if (action == 0) + effect = new cEffectScroll(osd, x, y, Width, Height, ColorFg, ColorBg, Alignment, ColorDepth, _active); + else + effect = new cEffectBlink(osd, x, y, Width, Height, ColorFg, ColorBg, Alignment, ColorDepth, _active); if (effect == NULL) { return -1; } - effect->nAction = action; - effect->strText = std::string(s ? s : ""); - effect->x = x; - effect->y = y; - effect->Width = Width; - effect->Height = Height; - effect->ColorFg = ColorFg; - effect->ColorBg = ColorBg; - effect->Font = Font; - effect->Alignment = Alignment; - vecEffects.push_back(effect); - return vecEffects.size() - 1; - } -} -#endif //DISABLE_ANIMATED_TEXT - -#ifdef HAVE_FREETYPE -const char **cEnigmaTextEffects::GetAvailTTFs(void) -{ - if (availTTFs == NULL) { - std::vector<std::string> vecFonts; - cReadDir d(EnigmaConfig.GetFontsDir()); - struct dirent *e; - while ((e = d.Next()) != NULL) { - if ((strcmp(e->d_name, ".") != 0) && (strcmp(e->d_name, "..") != 0)) { - if (strcmp(e->d_name + strlen(e->d_name) - 4, ".ttf") == 0) { - debug("Loading %s", e->d_name); - vecFonts.push_back(std::string(e->d_name)); - } else { - error("Ignoring non-font file: %s", e->d_name); - } - } - } - - if (vecFonts.size() > 0) { - sort(vecFonts.begin(), vecFonts.end(), NoCase()); - availTTFs = (char **)calloc(vecFonts.size() + 1, sizeof(char*)); - if (availTTFs) { - char **ptr = availTTFs; - for (std::vector<std::string>::iterator i = vecFonts.begin(); i != vecFonts.end(); i++) { - if (!(*i).empty()) { - *ptr = strdup((*i).c_str()); - ptr++; - nMaxTTFs++; - } - } - } + if (effect->SetText(s, Font)) { + vecEffects.push_back(effect); + return vecEffects.size() - 1; + } else { + delete effect; + return -1; } - - vecFonts.clear(); } - - return (const char**)availTTFs; } -#endif // vim:et:sw=2:ts=2: diff --git a/texteffects.h b/texteffects.h index ee7ed4b..e0b9922 100644 --- a/texteffects.h +++ b/texteffects.h @@ -1,5 +1,5 @@ /* - * status.h: 'EnigmaNG' skin for the Video Disk Recorder + * texteffects.h: 'EnigmaNG' skin for the Video Disk Recorder * * See the README file for copyright information and how to reach the author. * @@ -8,26 +8,14 @@ #ifndef __TEXTEFFECTS_H #define __TEXTEFFECTS_H +#include <semaphore.h> + #include "common.h" #include "enigma.h" -#ifndef DISABLE_ANIMATED_TEXT #include <vector> -#endif #include <vdr/skins.h> - -#ifdef DISABLE_ANIMATED_TEXT -#define TE_START(osd) ; -#define TE_STOP ; -#define TE_LOCK ; -#define TE_UNLOCK ; -#define TE_WAKEUP ; -#define TE_MARQUEE(osd, id, x...) osd->DrawText(x) -#define TE_BLINK(osd, id, x...) osd->DrawText(x) -#define TE_TITLE(osd, id, s, Width, skin) osd->DrawTitle(s) - -#else // !DISABLE_ANIMATED_TEXT #include <vdr/thread.h> #define TE_START(osd) EnigmaTextEffects.Start(osd); @@ -37,55 +25,87 @@ #define TE_WAKEUP EnigmaTextEffects.RefreshEffects(); #define TE_MARQUEE(osd, id, x...) EnigmaTextEffects.DrawAnimatedText(id, 0, x) #define TE_BLINK(osd, id, x...) EnigmaTextEffects.DrawAnimatedText(id, 1, x) -#define TE_TITLE(osd, id, x...) EnigmaTextEffects.DrawAnimatedTitle(id, 0, x) -#endif //DISABLE_ANIMATED_TEXT +class cEffect +{ +protected: + bool Active; + cOsd *Osd; + int xOff; + int yOff; + int Width; + int Height; + int ColorDepth; + char *Text; + + cTimeMs Time; + cBitmap *bmp; + +public: + cEffect(cOsd *osd, int x, int y, int width, int height = 0, int depth = 1, bool active = true); + virtual ~cEffect(); + virtual bool SetText(const char *text, const cFont *font, int offset = 0) = 0; + virtual int DrawIfNeeded(int yMax) = 0; + bool changed; +}; + +class cEffectScroll : public cEffect +{ +private: + tColor Fg; + tColor Bg; + int Alignment; + int Delay; + + int pos; + int dir; + int delay; + int xOffset; + int DestWidth; + + bool IsDrawNeeded(void); + +public: + cEffectScroll(cOsd *osd, int x, int y, int width, int height = 0, tColor fg = 0xFFFFFFFF, tColor bg = 0xFF000000, int alignment = taDefault, int depth = 1, bool active = true); + virtual ~cEffectScroll() + {}; + virtual bool SetText(const char *text, const cFont *font, int offset = 0); + virtual int DrawIfNeeded(int yMax); +}; + +class cEffectBlink : public cEffect +{ +private: + tColor Fg; + tColor Bg; + int Alignment; + int Delay; + + bool shown; + int delay; + int xOffset; + int DestWidth; + +public: + cEffectBlink(cOsd *osd, int x, int y, int width, int height = 0, tColor fg = 0xFFFFFFFF, tColor bg = 0xFF000000, int alignment = taDefault, int depth = 1, bool active = true); + virtual ~cEffectBlink() + {}; + virtual bool SetText(const char *text, const cFont *font, int offset = 0); + virtual int DrawIfNeeded(int yMax); +}; -#ifdef DISABLE_ANIMATED_TEXT -class cEnigmaTextEffects { -#else class cEnigmaTextEffects : public cThread { -#endif private: cOsd *osd; -#ifdef HAVE_FREETYPE - char **availTTFs; - int nMaxTTFs; -#endif - -#ifndef DISABLE_ANIMATED_TEXT int yMessageTop; - struct tEffect { - int nAction; - uint nOffset; - int nDirection; - uint64_t nNextUpdate; - std::string strText; - int x, y, Width, Height; - tColor ColorFg, ColorBg; - const cFont *Font; - int Alignment; - cSkinEnigmaThreadedOsd *Skin; - - public: - tEffect(void) : nAction(0), nOffset(0), nDirection(0), - nNextUpdate(0), x(0), y(0), Width(0), Height(0), - ColorFg(0), ColorBg(0), Font(NULL), - Alignment(taDefault), Skin(NULL) - {}; - }; - - typedef std::vector<tEffect*> tEffects; - tEffects vecEffects; + typedef std::vector<cEffect*> Effects_t; + Effects_t vecEffects; cCondVar condSleep; cMutex mutexSleep; cMutex mutexRunning; - - void DoEffect(tEffect *e, uint64_t nNow = 0); - void DoScroll(tEffect *e, uint64_t nNow, bool fDrawItem); - void DoBlink(tEffect *e, uint64_t nNow, bool fDrawItem); + sem_t sem_update; void Wakeup(void) { @@ -95,14 +115,8 @@ private: mutexSleep.Unlock(); // printf("WAKE2: %lu\n", pthread_self()); } -#endif //DISABLE_ANIMATED_TEXT public: -#ifdef DISABLE_ANIMATED_TEXT - cEnigmaTextEffects(void); - ~cEnigmaTextEffects(void); - -#else cEnigmaTextEffects(const char *Description = NULL); ~cEnigmaTextEffects(void); @@ -114,32 +128,24 @@ public: void ResetText(int i, tColor ColorFg = 0, tColor ColorBg = 0, bool fDraw = true); void PauseEffects(int y = 0); - void UpdateTextWidth(int i, int Width); - int DrawAnimatedTitle(int o_id, int action, const char *s, int Width, cSkinEnigmaThreadedOsd *skin); - int DrawAnimatedText(int o_id, int action, int x, int y, const char *s, tColor ColorFg, tColor ColorBg, const cFont *Font, int Width = 0, int Height = 0, int Alignment = taDefault); + int DrawAnimatedText(int o_id, int action, bool active, int x, int y, const char *s, tColor ColorFg, tColor ColorBg, const cFont *Font, int ColorDepth = 1, int Width = 0, int Height = 0, int Alignment = taDefault); void UpdateLock(void) { // printf("LOCK1: %lu\n", pthread_self()); - Lock(); + sem_wait(&sem_update); // printf("LOCK2: %lu\n", pthread_self()); } void UpdateUnlock(void) { // printf("UNLOCK1: %lu\n", pthread_self()); - Unlock(); + sem_post(&sem_update); // printf("UNLOCK2: %lu\n", pthread_self()); } void RefreshEffects(void) { Wakeup(); } -#endif //DISABLE_ANIMATED_TEXT - -#ifdef HAVE_FREETYPE - int GetNumAvailTTFs(void) { return nMaxTTFs; } - const char **GetAvailTTFs(void); -#endif }; extern cEnigmaTextEffects EnigmaTextEffects; diff --git a/themes/EnigmaNG-DarkBlue.theme b/themes/EnigmaNG-DarkBlue.theme index 7a61984..090d4bc 100644 --- a/themes/EnigmaNG-DarkBlue.theme +++ b/themes/EnigmaNG-DarkBlue.theme @@ -1,6 +1,6 @@ Description = DarkBlue -clrBackground = B82B2B3C -clrAltBackground = B8171720 +clrBackground = B83E4044 +clrAltBackground = B825252A clrTitleBg = B84158BC clrLogoBg = B8566489 clrBottomBg = B81D2F7D @@ -6,7 +6,6 @@ */ #include "common.h" -#include "i18n.h" #include <sstream> #include <string.h> @@ -43,7 +42,7 @@ std::string parseaux(const char *aux) { bool founditem = false; std::stringstream sstrReturn; - char *start, *end; + const char *start, *end; // check if egpsearch start = strcasestr(aux, AUX_TAGS_EPGSEARCH_START); end = strcasestr(aux, AUX_TAGS_EPGSEARCH_END); @@ -51,11 +50,11 @@ std::string parseaux(const char *aux) // add header sstrReturn << AUX_HEADER_EPGSEARCH; // parse first item - char *tmp; + const char *tmp; if ((tmp = strcasestr(start, AUX_TAGS_EPGSEARCH_ITEM_1A_START)) != NULL) { if (tmp < end) { tmp += strlen(AUX_TAGS_EPGSEARCH_ITEM_1A_START); - char *tmp2; + const char *tmp2; if ((tmp2 = strcasestr(tmp, AUX_TAGS_EPGSEARCH_ITEM_1A_END)) != NULL) { // add channel sstrReturn << tr("Channel:") << " " << std::string(tmp, tmp2 - tmp); @@ -70,7 +69,7 @@ std::string parseaux(const char *aux) if ((tmp = strcasestr(start, AUX_TAGS_EPGSEARCH_ITEM_2A_START)) != NULL) { if (tmp < end) { tmp += strlen(AUX_TAGS_EPGSEARCH_ITEM_2A_START); - char *tmp2; + const char *tmp2; if ((tmp2 = strcasestr(tmp, AUX_TAGS_EPGSEARCH_ITEM_2A_END)) != NULL) { // add separator if (founditem) { @@ -88,7 +87,7 @@ std::string parseaux(const char *aux) if ((tmp = strcasestr(start, AUX_TAGS_EPGSEARCH_ITEM_3A_START)) != NULL) { if (tmp < end) { tmp += strlen(AUX_TAGS_EPGSEARCH_ITEM_3A_START); - char *tmp2; + const char *tmp2; if ((tmp2 = strcasestr(tmp, AUX_TAGS_EPGSEARCH_ITEM_3A_END)) != NULL) { // add separator if (founditem) { @@ -108,7 +107,7 @@ std::string parseaux(const char *aux) if ((tmp = strcasestr(start, AUX_TAGS_EPGSEARCH_ITEM_1B_START)) != NULL) { if (tmp < end) { tmp += strlen(AUX_TAGS_EPGSEARCH_ITEM_1B_START); - char *tmp2; + const char *tmp2; if ((tmp2 = strcasestr(tmp, AUX_TAGS_EPGSEARCH_ITEM_1B_END)) != NULL) { if (std::string(tmp, tmp2 - tmp) != "0") { // add separator @@ -122,14 +121,14 @@ std::string parseaux(const char *aux) if ((tmp = strcasestr(start, AUX_TAGS_EPGSEARCH_ITEM_2B_START)) != NULL) { if (tmp < end) { tmp += strlen(AUX_TAGS_EPGSEARCH_ITEM_2B_START); - char *tmp2; - if ((tmp2 = strcasestr(tmp, AUX_TAGS_EPGSEARCH_ITEM_2B_END)) != NULL) { + const char *tmp3; + if ((tmp3 = strcasestr(tmp, AUX_TAGS_EPGSEARCH_ITEM_2B_END)) != NULL) { // add separator if (founditem) { sstrReturn << ", "; } // add search item - sstrReturn << "eventid=" << std::string(tmp, tmp2 - tmp); + sstrReturn << "eventid=" << std::string(tmp, tmp3 - tmp); } } } @@ -160,11 +159,11 @@ std::string parseaux(const char *aux) // add header sstrReturn << AUX_HEADER_VDRADMIN; // parse first item - char *tmp; + const char *tmp; if ((tmp = strcasestr(start, AUX_TAGS_VDRADMIN_ITEM1_START)) != NULL) { if (tmp < end) { tmp += strlen(AUX_TAGS_VDRADMIN_ITEM1_START); - char *tmp2; + const char *tmp2; if ((tmp2 = strcasestr(tmp, AUX_TAGS_VDRADMIN_ITEM1_END)) != NULL) { // add search item sstrReturn << std::string(tmp, tmp2 - tmp) << std::endl; @@ -179,11 +178,11 @@ std::string parseaux(const char *aux) // add header sstrReturn << AUX_HEADER_PIN; // parse first item - char *tmp; + const char *tmp; if ((tmp = strcasestr(start, AUX_TAGS_PIN_ITEM1_START)) != NULL) { if (tmp < end) { tmp += strlen(AUX_TAGS_PIN_ITEM1_START); - char *tmp2; + const char *tmp2; if ((tmp2 = strcasestr(tmp, AUX_TAGS_PIN_ITEM1_END)) != NULL) { // add search item sstrReturn << std::string(tmp, tmp2 - tmp) << std::endl; |