summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS30
-rw-r--r--HISTORY38
-rw-r--r--channels.conf29
-rw-r--r--config.h6
-rw-r--r--epg.c334
-rw-r--r--fontosd-iso8859-2.c452
-rw-r--r--i18n.c779
-rw-r--r--keys.c12
-rw-r--r--menu.c181
-rw-r--r--menu.h5
-rw-r--r--menuitems.c53
-rw-r--r--menuitems.h4
-rw-r--r--recording.c6
-rw-r--r--recording.h6
-rw-r--r--tools.c30
-rw-r--r--tools.h10
-rw-r--r--transfer.c3
-rw-r--r--vdr.c31
18 files changed, 1111 insertions, 898 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index dadcf8c..5b460ca 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -936,6 +936,9 @@ Rolf Ahrenberg <rahrenbe@cc.hut.fi>
for reporting a bug in handling key macros with keys after @plugin
for adding compiler options "-fPIC -g" to all plugins
for adding a leading '0' to the day in the DayDateTime() function
+ for reporting a crash in the Schedule menu with events that have no title
+ for a patch that was used to implement automatic cursor advance when entering text
+ via the numeric keys
Ralf Klueber <ralf.klueber@vodafone.com>
for reporting a bug in cutting a recording if there is only a single editing mark
@@ -1154,11 +1157,14 @@ Andreas Regel <andreas.regel@gmx.de>
for reporting a problem with messages when a cOsdObject uses the raw OSD
for implementing palette replace mode in the OSD bitmaps
-Thomas Bergwinkl <Thomas.Bergwinkl@t-online.de>
+Thomas Bergwinkl <Thomas.Bergwinkl@vr-web.de>
for fixing the validity check for channel IDs, because some providers use TIDs
with value 0
for pointing out that transponder handling didn't work with satellites that provide
two transponders on the same frequency, with different polarization
+ for fixing detecting if there can be any useful further input when entering channel
+ numbers
+ for fixing handling the '0' key for switching between the last two channels
Stéphane Esté-Gracias <sestegra@free.fr>
for fixing a typo in libsi/si.h
@@ -1655,3 +1661,25 @@ André Weidemann <Andre.Weidemann@web.de>
Jürgen Schilling <juergen_schilling@web.de>
for reporting that color buttons were displayed in the recording info menu if it
has been invoked from a player
+
+Jesus Bravo Alvarez <jba@pobox.com>
+ for reporting a second place where a message should be given when an instant
+ recording is started
+ for updating the Spanish OSD texts
+
+Francois-Xavier Kowalski <francois-xavier.kowalski@hp.com>
+ for suggesting how to modify logging so that even on NPTL systems each line in
+ the log file shows the individual thread's pid
+
+Franz Gangkofer <Franz.Gangkofer@cadsoft.de>
+ for reporting a problem with @plugin in keymacros.conf in case the named plugin
+ is not loaded
+
+Malte Schröder <MalteSch@gmx.de>
+ for reporting a crash after executing the SVDRP command CLRE
+
+Markus Hahn <mhahn@reel-multimedia.com>
+ for suggesting to only start recordings if there is at least 300MB free disk space
+
+Jaroslaw Swierczynski <swiergot@gmail.com>
+ for updating the Polish OSD texts and the fontosd-iso8859-2.c file
diff --git a/HISTORY b/HISTORY
index 3a657c0..18e5636 100644
--- a/HISTORY
+++ b/HISTORY
@@ -4189,3 +4189,41 @@ Video Disk Recorder Revision History
Ahrenberg).
- No longer displaying color buttons in the recording info menu if it has been
invoked from a player (reported by Jürgen Schilling).
+
+2006-01-22: Version 1.3.40
+
+- Fixed a second place where a message should be given when an instant recording
+ is started (reported by Jesus Bravo Alvarez).
+- Modified logging so that even on NPTL systems each line in the log file shows
+ the individual thread's pid (based on a suggestion from Francois-Xavier Kowalski).
+- Fixed a problem with @plugin in keymacros.conf in case the named plugin is not
+ loaded (reported by Franz Gangkofer).
+- Fixed a crash after executing the SVDRP command CLRE, caused by dangling 'schedule'
+ pointers from cChannel objects (reported by Malte Schröder).
+- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
+- Improved NULL checking in strreplace().
+- Fixed a crash in the Schedule menu with events that have no title (reported by
+ Rolf Ahrenberg). cEvent::FixEpgBugs() now assigns a "No title" string to events
+ that have no title.
+- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
+- Recordings are now only started if there is at least 300MB free disk space
+ (suggested by Markus Hahn).
+- When entering text via the numeric keys, the cursor now automatically advances
+ (based on a patch from Rolf Ahrenberg).
+- Updated the Polish OSD texts and the fontosd-iso8859-2.c file (thanks to Jaroslaw
+ Swierczynski).
+- Disabled the "buffer reserve" in Transfer Mode. Last chance to complain if you
+ really need it - it will be completely removed in the next version. If you are
+ experiencing problems with a/v running out of sync, try the latest driver and
+ firmware (if you are using a full featured DVB card).
+- Switching channels with the Up/Down or Channel+/Channel- keys now works a lot
+ faster when the repeat function kicks in, by not actually switching the
+ channel every time, but rather only displaying the channel info and doing
+ the final switch when the key is released.
+- The channel display is now updated _before_ the channel is switched.
+- Added a missing initialization of 'timeout' in the cDisplayChannel constructor.
+- Fixed detecting if there can be any useful further input when entering channel
+ numbers (thanks to Thomas Bergwinkl).
+- Updated the Spanish OSD texts (thanks to Jesus Bravo Alvarez).
+- Fixed handling the '0' key for switching between the last two channels (thanks
+ to Thomas Bergwinkl).
diff --git a/channels.conf b/channels.conf
index c427628..e15663d 100644
--- a/channels.conf
+++ b/channels.conf
@@ -23,7 +23,7 @@ Super RTL,S RTL;RTL World:12187:hC34:S19.2E:27500:165:120=deu:65:0:12040:1:1089:
VOX;RTL World:12187:hC34:S19.2E:27500:167:136=deu:71:0:12060:1:1089:0
KABEL1;ProSiebenSat.1:12480:vC34:S19.2E:27500:511:512=deu:33:0:899:133:33:0
DAS VIERTE,D VIERTE;BetaDigital:12460:hC34:S19.2E:27500:2047:2048=deu:36:0:1793:133:5:0
-NEUN LIVE Television,NEUN LIVE;BetaDigital:12480:vC34:S19.2E:27500:767:768=deu:35:0:897:133:33:0
+9Live;BetaDigital:12480:vC34:S19.2E:27500:767:768=deu:35:0:897:133:33:0
DSF;BetaDigital:12480:vC34:S19.2E:27500:1023:1024=deu:39:0:900:133:33:0
HSE24,HSE24;BetaDigital:12480:vC34:S19.2E:27500:1279:1280=deu:37:0:40:133:33:0
Bloomberg TV Germany;Bloomberg:12551:vC56:S19.2E:22000:162:99=deu:0:0:12160:1:1108:0
@@ -46,7 +46,7 @@ rbb Berlin;ARD:12109:hC34:S19.2E:27500:601:602=deu:604:0:28206:1:1073:0
:Premiere World
PREMIERE START,START;PREMIERE:11797:hC34:S19.2E:27500:255:256=deu:32:1801,1722,1702:8:133:2:0
PREMIERE 1,PREM 1;PREMIERE:11797:hC34:S19.2E:27500:511:512=deu;515=deu:32:1801,1722,1702:10:133:2:0
-PREMIERE 2,PREM 2;PREMIERE:11797:hC34:S19.2E:27500:1791:1792=deu,1793=deu;1795=deu:32:1801,1722,1702:11:133:2:0
+PREMIERE 2,PREM 2;PREMIERE:11797:hC34:S19.2E:27500:1791:1792=deu;1795=deu:32:1801,1722,1702:11:133:2:0
PREMIERE 3,PREM 3;PREMIERE:11797:hC34:S19.2E:27500:2303:2304=deu,2305=deu:32:1722,1702,1801:43:133:2:0
PREMIERE 4,PREM 4;PREMIERE:11797:hC34:S19.2E:27500:767:768=deu,769=deu:32:1801,1722,1702:9:133:2:0
PREMIERE 5,PREM 5;PREMIERE:11797:hC34:S19.2E:27500:1279:1280=deu:32:1722,1702,1801:29:133:2:0
@@ -65,6 +65,7 @@ PREMIERE WIN,WIN;PREMIERE:12031:hC34:S19.2E:27500:3839:3840=deu:33:0:27:133:4:0
N24;ProSiebenSat.1:12480:vC34:S19.2E:27500:2047:2048=deu:36:0:47:133:33:0
LibertyTV FR;LibertyTV.com:12610:vC56:S19.2E:22000:941:943=deu:0:0:12199:1:1112:0
:-
+münchen.TV/RFO,müTV/RFO;BetaDigital:12148:hC34:S19.2E:27500:495:496=deu:0:0:658:133:7:0
ProSieben Austria;ProSiebenSat.1:12051:vC34:S19.2E:27500:161:84=deu;85=deu:36:0:20002:1:1082:0
Kabel 1 Schweiz;ProSiebenSat.1:12051:vC34:S19.2E:27500:162:163=deu:165:0:20003:1:1082:0
Kabel 1 Austria;ProSiebenSat.1:12051:vC34:S19.2E:27500:166:167=deu:169:0:20004:1:1082:0
@@ -83,10 +84,26 @@ RTL TELE Letzebuerg:12551:vC56:S19.2E:22000:168:144=eng,146=fra,151=ltz:74:0:399
Nick/Talpa;CANALDIGITAAL:12574:hC56:S19.2E:22000:512+8190:84=dut:33:622,100:5010:53:1109:0
NICK;MTV Networks:12226:hC34:S19.2E:27500:513+8190:661=deu:577:0:28640:1:1091:0
MTV Central;MTV Networks:11739:vC34:S19.2E:27500:3031:3032:3034:0:28653:1:1066:0
-VIVA;VIVA Fernsehen GmbH & Co. KG:12669:vC56:S19.2E:22000:309:310=deu:311:0:12732:1:1116:0
-VIVA PLUS;VIVA Fernsehen GmbH & Co. KG:12551:vC56:S19.2E:22000:171:172=deu:173:0:12120:1:1108:0
+VIVA;MTV Networks:11973:vC34:S19.2E:27500:4061+8190:4062:4064:0:28676:1:1078:0
+VIVA PLUS;MTV Networks:11973:vC34:S19.2E:27500:4071+8190:4072:4074:0:28677:1:1078:0
QVC Deutschland;QVC:12551:vC56:S19.2E:22000:165:166:167:0:12100:1:1108:0
TELE 5;BetaDigital:12480:vC34:S19.2E:27500:1535:1536=deu:38:0:51:133:33:0
+:NTSC
+Venevision;T-Systems/MTI:11200:vC56:S13.0E:27500:922:923=und:0:0:4750:0:13400:0
+EBC.1;T-Systems/MTI:11200:vC56:S13.0E:27500:373:374=eng:0:0:4747:0:13400:0
+:HDTV
+HDFORUM;TF1:11242:vC34:S13.0E:27500:33:36=fra:0:0:13809:100:200:0
+HDFORUM;TF1:11242:vC34:S13.0E:27500:33:36=fra:0:0:13809:318:200:0
+Euro1080 HD-5;Euro1080:10758:vC78:S23.5E:22000:34:160=eng:0:0:1085:9999:3104:0
+Euro1080;EURO1080:12168:vC56:S19.2E:27500:308:256:0:0:21100:1:1088:0
+SMD HD;SES ASTRA:12699:vC56:S19.2E:22000:133+80:234=eng:0:0:29700:0:0:0
+SMD HD:12699:V:S19.2E:22000:133:234=eng:0:0:3231:1:1118:0
+Astra HD:12441:vC34:S19.2E:27500:133+80:134=eng:0:0:29700:0:0:0
+TV HD;CSAT:12581:vC56:S19.2E:22000:165:100=fra;101=fra:0:0:9306:1:1110:0
+C M HD;Telenor:11261:hC78:S1.0W:24500:517:660=eng;661=eng:0:B00:3306:70:33:0
+C MORE HD;Telenor:11389:hC78:S1.0W:24500:512:640;641=eng:0:B00:3306:70:34:0
+HELLAS-HDTV;Scopus Network Technologies:11642:hC34:S13.0E:27500:2201:2211=ell,2212=eng:0:0:2200:318:15700:0
+TPS Star:10757:vC34:S13.0E:27500:420:430=fra,431=eng:440:500,100:1204:176:11200:0
:@201 Sky
Sky One;BSkyB:12226:hC23:S28.2E:27500:515+8190:643=eng:579:960,961:4705:2:2027:0
Sky Two;BSkyB:12226:hC23:S28.2E:27500:514+8190:642=eng,662=NAR:578:960,961:5104:2:2027:0
@@ -115,10 +132,6 @@ S1T;BSkyB:12285:vC23:S28.2E:27500:513+8190:641=eng,661=NAR:577:960,961:4409:2:20
CNN;BSkyB:12051:vC23:S28.2E:27500:2313:2315=eng:2314:0:7140:2:2018:0
BBC PARL'MNT;BSkyB:10847:vC56:S28.2E:22000:2327:2328=eng:2331:0:6902:2:2050:0
IGLESIA MME;T-Systems/MTI:11200:vC56:S13.0E:27500:4097:4098:0:0:4733:318:13400:0
-Euro1080 HD-5;Euro1080:10758:vC78:S23.5E:22000:34:160=eng:0:0:1085:9999:3104:0
-Euro1080;EURO1080:12168:vC56:S19.2E:27500:308:256:0:0:21100:1:1088:0
-SMD HD;SES ASTRA:12699:vC56:S19.2E:22000:133+80:234=eng:0:0:29700:0:0:0
-Astra HD:12441:vC34:S19.2E:27500:133+80:134=eng:0:0:29700:0:0:0
eng-WRN-multi;WRN:12597:vC34:S13.0E:27500:0:2132:0:0:8230:318:9400:0
Challenger Tv;Telespazio:11304:hC34:S13.0E:27500:490:491:0:0:8409:318:500:0
TVS Teleport Bonn;DMV:11535:vC34:S1.0W:5632:308+8190:256=eng,257=eng:0:3:1:65535:1:0
diff --git a/config.h b/config.h
index 3d63ec6..03e4451 100644
--- a/config.h
+++ b/config.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: config.h 1.240 2006/01/13 15:17:19 kls Exp $
+ * $Id: config.h 1.241 2006/01/15 16:01:48 kls Exp $
*/
#ifndef __CONFIG_H
@@ -19,8 +19,8 @@
#include "i18n.h"
#include "tools.h"
-#define VDRVERSION "1.3.39"
-#define VDRVERSNUM 10339 // Version * 10000 + Major * 100 + Minor
+#define VDRVERSION "1.3.40"
+#define VDRVERSNUM 10340 // Version * 10000 + Major * 100 + Minor
#define MAXPRIORITY 99
#define MAXLIFETIME 99
diff --git a/epg.c b/epg.c
index 79c1176..384f86b 100644
--- a/epg.c
+++ b/epg.c
@@ -7,7 +7,7 @@
* Original version (as used in VDR before 1.3.0) written by
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
*
- * $Id: epg.c 1.49 2006/01/15 13:58:30 kls Exp $
+ * $Id: epg.c 1.51 2006/01/20 14:09:48 kls Exp $
*/
#include "epg.h"
@@ -422,197 +422,196 @@ void cEvent::FixEpgBugs(void)
strreplace(description, '\x86', ' ');
strreplace(description, '\x87', ' ');
+ if (!title) {
+ // we don't want any "(null)" titles
+ title = strcpyrealloc(title, tr("No title"));
+ EpgBugFixStat(12, ChannelID());
+ }
+
if (Setup.EPGBugfixLevel == 0)
return;
// Some TV stations apparently have their own idea about how to fill in the
// EPG data. Let's fix their bugs as good as we can:
- if (title) {
-
- // Some channels put the ShortText in quotes and use either the ShortText
- // or the Description field, depending on how long the string is:
- //
- // Title
- // "ShortText". Description
- //
- if ((shortText == NULL) != (description == NULL)) {
- char *p = shortText ? shortText : description;
- if (*p == '"') {
- const char *delim = "\".";
- char *e = strstr(p + 1, delim);
- if (e) {
- *e = 0;
- char *s = strdup(p + 1);
- char *d = strdup(e + strlen(delim));
- free(shortText);
- free(description);
- shortText = s;
- description = d;
- EpgBugFixStat(1, ChannelID());
- }
- }
- }
- // Some channels put the Description into the ShortText (preceded
- // by a blank) if there is no actual ShortText and the Description
- // is short enough:
- //
- // Title
- // Description
- //
- if (shortText && !description) {
- if (*shortText == ' ') {
- memmove(shortText, shortText + 1, strlen(shortText));
- description = shortText;
- shortText = NULL;
- EpgBugFixStat(2, ChannelID());
+ // Some channels put the ShortText in quotes and use either the ShortText
+ // or the Description field, depending on how long the string is:
+ //
+ // Title
+ // "ShortText". Description
+ //
+ if ((shortText == NULL) != (description == NULL)) {
+ char *p = shortText ? shortText : description;
+ if (*p == '"') {
+ const char *delim = "\".";
+ char *e = strstr(p + 1, delim);
+ if (e) {
+ *e = 0;
+ char *s = strdup(p + 1);
+ char *d = strdup(e + strlen(delim));
+ free(shortText);
+ free(description);
+ shortText = s;
+ description = d;
+ EpgBugFixStat(1, ChannelID());
}
}
+ }
- // Sometimes they repeat the Title in the ShortText:
- //
- // Title
- // Title
- //
- if (shortText && strcmp(title, shortText) == 0) {
- free(shortText);
+ // Some channels put the Description into the ShortText (preceded
+ // by a blank) if there is no actual ShortText and the Description
+ // is short enough:
+ //
+ // Title
+ // Description
+ //
+ if (shortText && !description) {
+ if (*shortText == ' ') {
+ memmove(shortText, shortText + 1, strlen(shortText));
+ description = shortText;
shortText = NULL;
- EpgBugFixStat(3, ChannelID());
+ EpgBugFixStat(2, ChannelID());
}
+ }
- // Some channels put the ShortText between double quotes, which is nothing
- // but annoying (some even put a '.' after the closing '"'):
- //
- // Title
- // "ShortText"[.]
- //
- if (shortText && *shortText == '"') {
- int l = strlen(shortText);
- if (l > 2 && (shortText[l - 1] == '"' || (shortText[l - 1] == '.' && shortText[l - 2] == '"'))) {
- memmove(shortText, shortText + 1, l);
- char *p = strrchr(shortText, '"');
- if (p)
- *p = 0;
- EpgBugFixStat(4, ChannelID());
- }
+ // Sometimes they repeat the Title in the ShortText:
+ //
+ // Title
+ // Title
+ //
+ if (shortText && strcmp(title, shortText) == 0) {
+ free(shortText);
+ shortText = NULL;
+ EpgBugFixStat(3, ChannelID());
+ }
+
+ // Some channels put the ShortText between double quotes, which is nothing
+ // but annoying (some even put a '.' after the closing '"'):
+ //
+ // Title
+ // "ShortText"[.]
+ //
+ if (shortText && *shortText == '"') {
+ int l = strlen(shortText);
+ if (l > 2 && (shortText[l - 1] == '"' || (shortText[l - 1] == '.' && shortText[l - 2] == '"'))) {
+ memmove(shortText, shortText + 1, l);
+ char *p = strrchr(shortText, '"');
+ if (p)
+ *p = 0;
+ EpgBugFixStat(4, ChannelID());
}
+ }
- if (Setup.EPGBugfixLevel <= 1)
- return;
+ if (Setup.EPGBugfixLevel <= 1)
+ return;
- // Some channels apparently try to do some formatting in the texts,
- // which is a bad idea because they have no way of knowing the width
- // of the window that will actually display the text.
- // Remove excess whitespace:
- title = compactspace(title);
- shortText = compactspace(shortText);
- description = compactspace(description);
+ // Some channels apparently try to do some formatting in the texts,
+ // which is a bad idea because they have no way of knowing the width
+ // of the window that will actually display the text.
+ // Remove excess whitespace:
+ title = compactspace(title);
+ shortText = compactspace(shortText);
+ description = compactspace(description);
#define MAX_USEFUL_EPISODE_LENGTH 40
- // Some channels put a whole lot of information in the ShortText and leave
- // the Description totally empty. So if the ShortText length exceeds
- // MAX_USEFUL_EPISODE_LENGTH, let's put this into the Description
- // instead:
- if (!isempty(shortText) && isempty(description)) {
- if (strlen(shortText) > MAX_USEFUL_EPISODE_LENGTH) {
- free(description);
- description = shortText;
- shortText = NULL;
- EpgBugFixStat(6, ChannelID());
- }
+ // Some channels put a whole lot of information in the ShortText and leave
+ // the Description totally empty. So if the ShortText length exceeds
+ // MAX_USEFUL_EPISODE_LENGTH, let's put this into the Description
+ // instead:
+ if (!isempty(shortText) && isempty(description)) {
+ if (strlen(shortText) > MAX_USEFUL_EPISODE_LENGTH) {
+ free(description);
+ description = shortText;
+ shortText = NULL;
+ EpgBugFixStat(6, ChannelID());
}
+ }
- // Some channels put the same information into ShortText and Description.
- // In that case we delete one of them:
- if (shortText && description && strcmp(shortText, description) == 0) {
- if (strlen(shortText) > MAX_USEFUL_EPISODE_LENGTH) {
- free(shortText);
- shortText = NULL;
- }
- else {
- free(description);
- description = NULL;
- }
- EpgBugFixStat(7, ChannelID());
+ // Some channels put the same information into ShortText and Description.
+ // In that case we delete one of them:
+ if (shortText && description && strcmp(shortText, description) == 0) {
+ if (strlen(shortText) > MAX_USEFUL_EPISODE_LENGTH) {
+ free(shortText);
+ shortText = NULL;
+ }
+ else {
+ free(description);
+ description = NULL;
}
+ EpgBugFixStat(7, ChannelID());
+ }
- // Some channels use the ` ("backtick") character, where a ' (single quote)
- // would be normally used. Actually, "backticks" in normal text don't make
- // much sense, so let's replace them:
- strreplace(title, '`', '\'');
- strreplace(shortText, '`', '\'');
- strreplace(description, '`', '\'');
+ // Some channels use the ` ("backtick") character, where a ' (single quote)
+ // would be normally used. Actually, "backticks" in normal text don't make
+ // much sense, so let's replace them:
+ strreplace(title, '`', '\'');
+ strreplace(shortText, '`', '\'');
+ strreplace(description, '`', '\'');
- if (Setup.EPGBugfixLevel <= 2)
- return;
+ if (Setup.EPGBugfixLevel <= 2)
+ return;
- // The stream components have a "description" field which some channels
- // apparently have no idea of how to set correctly:
- if (components) {
- for (int i = 0; i < components->NumComponents(); i++) {
- tComponent *p = components->Component(i);
- switch (p->stream) {
- case 0x01: { // video
- if (p->description) {
- if (strcasecmp(p->description, "Video") == 0 ||
- strcasecmp(p->description, "Bildformat") == 0) {
- // Yes, we know it's video - that's what the 'stream' code
- // is for! But _which_ video is it?
- free(p->description);
- p->description = NULL;
- EpgBugFixStat(8, ChannelID());
- }
- }
- if (!p->description) {
- switch (p->type) {
- case 0x01:
- case 0x05: p->description = strdup("4:3"); break;
- case 0x02:
- case 0x03:
- case 0x06:
- case 0x07: p->description = strdup("16:9"); break;
- case 0x04:
- case 0x08: p->description = strdup(">16:9"); break;
- case 0x09:
- case 0x0D: p->description = strdup("HD 4:3"); break;
- case 0x0A:
- case 0x0B:
- case 0x0E:
- case 0x0F: p->description = strdup("HD 16:9"); break;
- case 0x0C:
- case 0x10: p->description = strdup("HD >16:9"); break;
- }
- EpgBugFixStat(9, ChannelID());
+ // The stream components have a "description" field which some channels
+ // apparently have no idea of how to set correctly:
+ if (components) {
+ for (int i = 0; i < components->NumComponents(); i++) {
+ tComponent *p = components->Component(i);
+ switch (p->stream) {
+ case 0x01: { // video
+ if (p->description) {
+ if (strcasecmp(p->description, "Video") == 0 ||
+ strcasecmp(p->description, "Bildformat") == 0) {
+ // Yes, we know it's video - that's what the 'stream' code
+ // is for! But _which_ video is it?
+ free(p->description);
+ p->description = NULL;
+ EpgBugFixStat(8, ChannelID());
}
}
- break;
- case 0x02: { // audio
- if (p->description) {
- if (strcasecmp(p->description, "Audio") == 0) {
- // Yes, we know it's audio - that's what the 'stream' code
- // is for! But _which_ audio is it?
- free(p->description);
- p->description = NULL;
- EpgBugFixStat(10, ChannelID());
- }
- }
- if (!p->description) {
- switch (p->type) {
- case 0x05: p->description = strdup("Dolby Digital"); break;
- // all others will just display the language
- }
- EpgBugFixStat(11, ChannelID());
+ if (!p->description) {
+ switch (p->type) {
+ case 0x01:
+ case 0x05: p->description = strdup("4:3"); break;
+ case 0x02:
+ case 0x03:
+ case 0x06:
+ case 0x07: p->description = strdup("16:9"); break;
+ case 0x04:
+ case 0x08: p->description = strdup(">16:9"); break;
+ case 0x09:
+ case 0x0D: p->description = strdup("HD 4:3"); break;
+ case 0x0A:
+ case 0x0B:
+ case 0x0E:
+ case 0x0F: p->description = strdup("HD 16:9"); break;
+ case 0x0C:
+ case 0x10: p->description = strdup("HD >16:9"); break;
+ }
+ EpgBugFixStat(9, ChannelID());
+ }
+ }
+ break;
+ case 0x02: { // audio
+ if (p->description) {
+ if (strcasecmp(p->description, "Audio") == 0) {
+ // Yes, we know it's audio - that's what the 'stream' code
+ // is for! But _which_ audio is it?
+ free(p->description);
+ p->description = NULL;
+ EpgBugFixStat(10, ChannelID());
}
}
- break;
- }
- }
- }
- }
- else {
- // we don't want any "(null)" titles
- title = strcpyrealloc(title, tr("No title"));
- EpgBugFixStat(12, ChannelID());
+ if (!p->description) {
+ switch (p->type) {
+ case 0x05: p->description = strdup("Dolby Digital"); break;
+ // all others will just display the language
+ }
+ EpgBugFixStat(11, ChannelID());
+ }
+ }
+ break;
+ }
+ }
}
}
@@ -935,7 +934,10 @@ bool cSchedules::ClearAll(void)
cSchedulesLock SchedulesLock(true, 1000);
cSchedules *s = (cSchedules *)Schedules(SchedulesLock);
if (s) {
- s->Clear();
+ for (cTimer *Timer = Timers.First(); Timer; Timer = Timers.Next(Timer))
+ Timer->SetEvent(NULL);
+ for (cSchedule *Schedule = s->First(); Schedule; Schedule = s->Next(Schedule))
+ Schedule->Cleanup(INT_MAX);
return true;
}
return false;
diff --git a/fontosd-iso8859-2.c b/fontosd-iso8859-2.c
index 979c902..e61e9a8 100644
--- a/fontosd-iso8859-2.c
+++ b/fontosd-iso8859-2.c
@@ -3948,23 +3948,23 @@ cFont::tPixelData FontOsd_iso8859_2[][29] = {
0x00000000, // .............
0x00000000, // .............
0x00000000, // .............
- 0x000001F0, // ....*****....
- 0x000003F8, // ...*******...
- 0x0000071C, // ..***...***..
- 0x00000C0C, // .**......**..
- 0x00000C06, // .**.......**.
- 0x00000C06, // .**.......**.
- 0x00000E00, // .***.........
- 0x00000700, // ..***........
+ 0x00000600, // ..**.........
+ 0x00000600, // ..**.........
+ 0x00000600, // ..**.........
+ 0x00000600, // ..**.........
+ 0x00000600, // ..**.........
+ 0x00000600, // ..**.........
+ 0x00000600, // ..**.........
+ 0x00000600, // ..**.........
+ 0x00000FE0, // .*******.....
0x00000FE0, // .*******.....
- 0x00000FA0, // .*****.*.....
- 0x00000380, // ...***.......
- 0x00000180, // ....**.......
- 0x00000180, // ....**.......
- 0x00000300, // ...**........
0x00000600, // ..**.........
- 0x00000FFE, // .***********.
- 0x00000FFC, // .**********..
+ 0x00000600, // ..**.........
+ 0x00000600, // ..**.........
+ 0x00000600, // ..**.........
+ 0x00000600, // ..**.........
+ 0x000007FE, // ..**********.
+ 0x000007FE, // ..**********.
0x00000000, // .............
0x00000000, // .............
0x00000000, // .............
@@ -4032,34 +4032,34 @@ cFont::tPixelData FontOsd_iso8859_2[][29] = {
0x00000000, // .............
},
{ // 166
- 6, 27,
- 0x00000000, // ......
- 0x00000000, // ......
- 0x00000000, // ......
- 0x00000000, // ......
- 0x00000000, // ......
- 0x0000000C, // ..**..
- 0x0000000C, // ..**..
- 0x0000000C, // ..**..
- 0x0000000C, // ..**..
- 0x0000000C, // ..**..
- 0x0000000C, // ..**..
- 0x0000000C, // ..**..
- 0x0000000C, // ..**..
- 0x0000000C, // ..**..
- 0x00000000, // ......
- 0x00000000, // ......
- 0x00000000, // ......
- 0x00000000, // ......
- 0x0000000C, // ..**..
- 0x0000000C, // ..**..
- 0x0000000C, // ..**..
- 0x0000000C, // ..**..
- 0x0000000C, // ..**..
- 0x0000000C, // ..**..
- 0x0000000C, // ..**..
- 0x0000000C, // ..**..
- 0x0000000C, // ..**..
+ 15, 27,
+ 0x00000070, // ........***....
+ 0x000000E0, // .......***.....
+ 0x000001C0, // ......***......
+ 0x00000380, // .....***.......
+ 0x00000000, // ...............
+ 0x000003E0, // .....*****.....
+ 0x00000FF8, // ...*********...
+ 0x00000C1C, // ...**.....***..
+ 0x0000180C, // ..**.......**..
+ 0x00001804, // ..**........*..
+ 0x00001800, // ..**...........
+ 0x00001C00, // ..***..........
+ 0x00000F80, // ...*****.......
+ 0x000007F8, // ....********...
+ 0x0000007C, // ........*****..
+ 0x0000000E, // ...........***.
+ 0x00000006, // ............**.
+ 0x00003006, // .**.........**.
+ 0x00001806, // ..**........**.
+ 0x0000180C, // ..**.......**..
+ 0x00000FF8, // ...*********...
+ 0x000007F0, // ....*******....
+ 0x00000000, // ...............
+ 0x00000000, // ...............
+ 0x00000000, // ...............
+ 0x00000000, // ...............
+ 0x00000000, // ...............
},
{ // 167
13, 27,
@@ -4212,34 +4212,34 @@ cFont::tPixelData FontOsd_iso8859_2[][29] = {
0x00000000, // ..............
},
{ // 172
- 13, 27,
- 0x00000000, // .............
- 0x00000000, // .............
- 0x00000000, // .............
- 0x00000000, // .............
- 0x00000000, // .............
- 0x00000000, // .............
- 0x00000000, // .............
- 0x00000000, // .............
- 0x00000000, // .............
- 0x00000000, // .............
- 0x00000000, // .............
- 0x00000000, // .............
- 0x00000000, // .............
- 0x00000FFF, // .************
- 0x00000FFF, // .************
- 0x00000003, // ...........**
- 0x00000003, // ...........**
- 0x00000003, // ...........**
- 0x00000003, // ...........**
- 0x00000003, // ...........**
- 0x00000000, // .............
- 0x00000000, // .............
- 0x00000000, // .............
- 0x00000000, // .............
- 0x00000000, // .............
- 0x00000000, // .............
- 0x00000000, // .............
+ 14, 27,
+ 0x00000000, // ..............
+ 0x00000030, // ........**....
+ 0x00000060, // .......**.....
+ 0x000000C0, // ......**......
+ 0x00000000, // ..............
+ 0x00001FFE, // .************.
+ 0x00001FFE, // .************.
+ 0x0000000E, // ..........***.
+ 0x0000000C, // ..........**..
+ 0x0000001C, // .........***..
+ 0x00000038, // ........***...
+ 0x00000070, // .......***....
+ 0x000000E0, // ......***.....
+ 0x000000C0, // ......**......
+ 0x000001C0, // .....***......
+ 0x00000380, // ....***.......
+ 0x00000700, // ...***........
+ 0x00000600, // ...**.........
+ 0x00000E00, // ..***.........
+ 0x00001C00, // .***..........
+ 0x00001FFE, // .************.
+ 0x00001FFE, // .************.
+ 0x00000000, // ..............
+ 0x00000000, // ..............
+ 0x00000000, // ..............
+ 0x00000000, // ..............
+ 0x00000000, // ..............
},
{ // 173
8, 27,
@@ -4302,34 +4302,34 @@ cFont::tPixelData FontOsd_iso8859_2[][29] = {
0x00000000, // ..............
},
{ // 175
- 8, 27,
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
- 0x0000007E, // .******.
- 0x0000007E, // .******.
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
+ 14, 27,
+ 0x00000000, // ..............
+ 0x00000000, // ..............
+ 0x000000C0, // ......**......
+ 0x000000C0, // ......**......
+ 0x00000000, // ..............
+ 0x00001FFE, // .************.
+ 0x00001FFE, // .************.
+ 0x0000000E, // ..........***.
+ 0x0000000C, // ..........**..
+ 0x0000001C, // .........***..
+ 0x00000038, // ........***...
+ 0x00000070, // .......***....
+ 0x000000E0, // ......***.....
+ 0x000000C0, // ......**......
+ 0x000001C0, // .....***......
+ 0x00000380, // ....***.......
+ 0x00000700, // ...***........
+ 0x00000600, // ...**.........
+ 0x00000E00, // ..***.........
+ 0x00001C00, // .***..........
+ 0x00001FFE, // .************.
+ 0x00001FFE, // .************.
+ 0x00000000, // ..............
+ 0x00000000, // ..............
+ 0x00000000, // ..............
+ 0x00000000, // ..............
+ 0x00000000, // ..............
},
{ // 176
14, 27,
@@ -4371,23 +4371,23 @@ cFont::tPixelData FontOsd_iso8859_2[][29] = {
0x00000000, // .............
0x00000000, // .............
0x00000000, // .............
- 0x00000060, // ......**.....
- 0x00000060, // ......**.....
- 0x00000060, // ......**.....
- 0x00000060, // ......**.....
- 0x00000FFE, // .***********.
- 0x00000FFE, // .***********.
- 0x00000060, // ......**.....
- 0x00000060, // ......**.....
- 0x00000060, // ......**.....
- 0x00000060, // ......**.....
- 0x00000060, // ......**.....
- 0x00000000, // .............
- 0x00000FFE, // .***********.
- 0x00000FFE, // .***********.
- 0x00000000, // .............
0x00000000, // .............
0x00000000, // .............
+ 0x000001F0, // ....*****....
+ 0x000007FC, // ..*********..
+ 0x0000060C, // ..**.....**..
+ 0x0000040C, // ..*......**..
+ 0x0000000C, // .........**..
+ 0x000001FC, // ....*******..
+ 0x000007CC, // ..*****..**..
+ 0x00000E0C, // .***.....**..
+ 0x00000C0C, // .**......**..
+ 0x00000C1C, // .**.....***..
+ 0x00000FFE, // .***********.
+ 0x000003EE, // ...*****.***.
+ 0x0000000E, // .........***.
+ 0x0000000E, // .........***.
+ 0x00000006, // ..........**.
0x00000000, // .............
0x00000000, // .............
},
@@ -4428,23 +4428,23 @@ cFont::tPixelData FontOsd_iso8859_2[][29] = {
0x00000000, // ........
0x00000000, // ........
0x00000000, // ........
- 0x00000000, // ........
- 0x0000003C, // ..****..
- 0x0000007E, // .******.
- 0x00000046, // .*...**.
- 0x00000006, // .....**.
- 0x0000001C, // ...***..
- 0x00000006, // .....**.
- 0x00000003, // ......**
- 0x000000C3, // **....**
- 0x0000007E, // .******.
+ 0x00000030, // ..**....
+ 0x00000030, // ..**....
+ 0x00000030, // ..**....
+ 0x00000030, // ..**....
+ 0x00000030, // ..**....
+ 0x00000030, // ..**....
+ 0x0000001E, // ...****.
0x0000003C, // ..****..
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
- 0x00000000, // ........
+ 0x00000070, // .***....
+ 0x00000030, // ..**....
+ 0x00000030, // ..**....
+ 0x00000030, // ..**....
+ 0x00000030, // ..**....
+ 0x00000030, // ..**....
+ 0x00000030, // ..**....
+ 0x00000030, // ..**....
+ 0x00000030, // ..**....
0x00000000, // ........
0x00000000, // ........
0x00000000, // ........
@@ -4518,27 +4518,27 @@ cFont::tPixelData FontOsd_iso8859_2[][29] = {
0x00000000, // ............
0x00000000, // ............
0x00000000, // ............
- 0x000000FF, // ....********
- 0x000001FF, // ...*********
- 0x000003F6, // ..******.**.
- 0x000003F6, // ..******.**.
- 0x000007F6, // .*******.**.
- 0x000007F6, // .*******.**.
- 0x000007F6, // .*******.**.
- 0x000007F6, // .*******.**.
- 0x000003F6, // ..******.**.
- 0x000003F6, // ..******.**.
- 0x000000F6, // ....****.**.
- 0x00000036, // ......**.**.
- 0x00000036, // ......**.**.
- 0x00000036, // ......**.**.
- 0x00000036, // ......**.**.
- 0x00000036, // ......**.**.
- 0x00000036, // ......**.**.
- 0x00000036, // ......**.**.
- 0x00000036, // ......**.**.
- 0x00000036, // ......**.**.
- 0x00000036, // ......**.**.
+ 0x00000030, // ......**....
+ 0x00000060, // .....**.....
+ 0x000000C0, // ....**......
+ 0x00000000, // ............
+ 0x00000000, // ............
+ 0x000001F8, // ...******...
+ 0x000003FC, // ..********..
+ 0x0000060C, // .**.....**..
+ 0x00000600, // .**.........
+ 0x00000700, // .***........
+ 0x000003F0, // ..******....
+ 0x000000FC, // ....******..
+ 0x0000000E, // ........***.
+ 0x00000606, // .**......**.
+ 0x00000606, // .**......**.
+ 0x000007FC, // .*********..
+ 0x000001F8, // ...******...
+ 0x00000000, // ............
+ 0x00000000, // ............
+ 0x00000000, // ............
+ 0x00000000, // ............
0x00000000, // ............
},
{ // 183
@@ -4692,34 +4692,34 @@ cFont::tPixelData FontOsd_iso8859_2[][29] = {
0x00000000, // .......
},
{ // 188
- 20, 27,
- 0x00000000, // ....................
- 0x00000000, // ....................
- 0x00000000, // ....................
- 0x00000000, // ....................
- 0x00000000, // ....................
- 0x00000000, // ....................
- 0x00018030, // ...**.........**....
- 0x00038020, // ..***.........*.....
- 0x00078040, // .****........*......
- 0x000180C0, // ...**.......**......
- 0x00018180, // ...**......**.......
- 0x00018100, // ...**......*........
- 0x0001830C, // ...**.....**....**..
- 0x0001860C, // ...**....**.....**..
- 0x0001861C, // ...**....**....***..
- 0x00000C3C, // ........**....****..
- 0x0000186C, // .......**....**.**..
- 0x0000384C, // ......***....*..**..
- 0x000030FF, // ......**....********
- 0x000060FF, // .....**.....********
- 0x0000E00C, // ....***.........**..
- 0x0000C004, // ....**...........*..
- 0x00000000, // ....................
- 0x00000000, // ....................
- 0x00000000, // ....................
- 0x00000000, // ....................
- 0x00000000, // ....................
+ 12, 27,
+ 0x00000000, // ............
+ 0x00000000, // ............
+ 0x00000000, // ............
+ 0x00000000, // ............
+ 0x00000000, // ............
+ 0x00000030, // ......**....
+ 0x00000060, // .....**.....
+ 0x000000C0, // ....**......
+ 0x00000000, // ............
+ 0x00000000, // ............
+ 0x000007FC, // .*********..
+ 0x000007FC, // .*********..
+ 0x00000018, // .......**...
+ 0x00000018, // .......**...
+ 0x00000030, // ......**....
+ 0x00000060, // .....**.....
+ 0x000000C0, // ....**......
+ 0x00000180, // ...**.......
+ 0x00000300, // ..**........
+ 0x00000600, // .**.........
+ 0x000007FE, // .**********.
+ 0x000007FE, // .**********.
+ 0x00000000, // ............
+ 0x00000000, // ............
+ 0x00000000, // ............
+ 0x00000000, // ............
+ 0x00000000, // ............
},
{ // 189
20, 27,
@@ -4782,34 +4782,34 @@ cFont::tPixelData FontOsd_iso8859_2[][29] = {
0x00000000, // ............
},
{ // 191
- 14, 27,
- 0x00000000, // ..............
- 0x00000000, // ..............
- 0x00000000, // ..............
- 0x00000000, // ..............
- 0x00000000, // ..............
- 0x00000000, // ..............
- 0x00000000, // ..............
- 0x00000000, // ..............
- 0x00000000, // ..............
- 0x00000000, // ..............
- 0x000000C0, // ......**......
- 0x000000C0, // ......**......
- 0x00000000, // ..............
- 0x00000000, // ..............
- 0x00000000, // ..............
- 0x000000C0, // ......**......
- 0x000000C0, // ......**......
- 0x000001C0, // .....***......
- 0x00000380, // ....***.......
- 0x00000700, // ...***........
- 0x00000600, // ...**.........
- 0x00000C00, // ..**..........
- 0x00000C0C, // ..**......**..
- 0x00000C0C, // ..**......**..
- 0x00000E1C, // ..***....***..
- 0x000007F8, // ...********...
- 0x000003E0, // ....*****.....
+ 12, 27,
+ 0x00000000, // ............
+ 0x00000000, // ............
+ 0x00000000, // ............
+ 0x00000000, // ............
+ 0x00000000, // ............
+ 0x00000000, // ............
+ 0x00000060, // .....**.....
+ 0x00000060, // .....**.....
+ 0x00000000, // ............
+ 0x00000000, // ............
+ 0x000007FC, // .*********..
+ 0x000007FC, // .*********..
+ 0x00000018, // .......**...
+ 0x00000018, // .......**...
+ 0x00000030, // ......**....
+ 0x00000060, // .....**.....
+ 0x000000C0, // ....**......
+ 0x00000180, // ...**.......
+ 0x00000300, // ..**........
+ 0x00000600, // .**.........
+ 0x000007FE, // .**********.
+ 0x000007FE, // .**********.
+ 0x00000000, // ............
+ 0x00000000, // ............
+ 0x00000000, // ............
+ 0x00000000, // ............
+ 0x00000000, // ............
},
{ // 192
15, 27,
@@ -5113,10 +5113,10 @@ cFont::tPixelData FontOsd_iso8859_2[][29] = {
},
{ // 202
15, 27,
- 0x000000C0, // .......**......
- 0x000001E0, // ......****.....
- 0x00000320, // .....**..*.....
- 0x00000230, // .....*...**....
+ 0x00000000, // ...............
+ 0x00000000, // ...............
+ 0x00000000, // ...............
+ 0x00000000, // ...............
0x00000000, // ...............
0x00001FFE, // ..************.
0x00001FFE, // ..************.
@@ -5135,9 +5135,9 @@ cFont::tPixelData FontOsd_iso8859_2[][29] = {
0x00001800, // ..**...........
0x00001FFE, // ..************.
0x00001FFE, // ..************.
- 0x00000000, // ...............
- 0x00000000, // ...............
- 0x00000000, // ...............
+ 0x00000006, // ............**.
+ 0x00000006, // ............**.
+ 0x00000006, // ............**.
0x00000000, // ...............
0x00000000, // ...............
},
@@ -5323,10 +5323,10 @@ cFont::tPixelData FontOsd_iso8859_2[][29] = {
},
{ // 209
17, 27,
- 0x00000000, // .................
- 0x00000760, // ......***.**.....
- 0x00000FE0, // .....*******.....
+ 0x00000070, // ..........***....
+ 0x00000060, // ..........**.....
0x000000C0, // .........**......
+ 0x00000180, // ........**.......
0x00000000, // .................
0x0000600C, // ..**.........**..
0x0000700C, // ..***........**..
@@ -6078,9 +6078,9 @@ cFont::tPixelData FontOsd_iso8859_2[][29] = {
0x00000000, // .............
0x00000000, // .............
0x00000000, // .............
- 0x000000E0, // .....***.....
- 0x000000B0, // .....*.**....
- 0x00000190, // ....**..*....
+ 0x00000000, // .............
+ 0x00000000, // .............
+ 0x00000000, // .............
0x00000000, // .............
0x00000000, // .............
0x000001F0, // ....*****....
@@ -6095,9 +6095,9 @@ cFont::tPixelData FontOsd_iso8859_2[][29] = {
0x0000060C, // ..**.....**..
0x000007F8, // ..********...
0x000001F0, // ....*****....
- 0x00000000, // .............
- 0x00000000, // .............
- 0x00000000, // .............
+ 0x00000038, // .......***...
+ 0x00000070, // ......***....
+ 0x00000038, // .......***...
0x00000000, // .............
0x00000000, // .............
},
@@ -6288,9 +6288,9 @@ cFont::tPixelData FontOsd_iso8859_2[][29] = {
0x00000000, // .............
0x00000000, // .............
0x00000000, // .............
- 0x00000180, // ....**.......
- 0x000003F8, // ...*******...
- 0x00000270, // ...*..***....
+ 0x0000000C, // .........**..
+ 0x00000018, // ........**...
+ 0x00000030, // .......**....
0x00000000, // .............
0x00000000, // .............
0x000004F8, // ..*..*****...
diff --git a/i18n.c b/i18n.c
index 4080fd1..1bd20da 100644
--- a/i18n.c
+++ b/i18n.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: i18n.c 1.235 2006/01/15 12:22:15 kls Exp $
+ * $Id: i18n.c 1.240 2006/01/22 15:55:28 kls Exp $
*
* Translations provided by:
*
@@ -15,8 +15,8 @@
* French Jean-Claude Repetto <jc@repetto.org>, Olivier Jacques <jacquesolivier@hotmail.com>, Gregoire Favre <greg@magma.unil.ch>, Nicolas Huillard <nhuillard@e-dition.fr>
* Norwegian Jørgen Tvedt <pjtvedt@online.no>, Truls Slevigen <truls@slevigen.no>
* Finnish Hannu Savolainen <hannu@opensound.com>, Jaakko Hyvätti <jaakko@hyvatti.iki.fi>, Niko Tarnanen <niko.tarnanen@hut.fi>, Rolf Ahrenberg <rahrenbe@cc.hut.fi>
- * Polish Michael Rakowski <mrak@gmx.de>
- * Spanish Ruben Nunez Francisco <ruben.nunez@tang-it.com>
+ * Polish Michael Rakowski <mrak@gmx.de>, Jaroslaw Swierczynski <swiergot@gmail.com>
+ * Spanish Ruben Nunez Francisco <ruben.nunez@tang-it.com>, Jesus Bravo Alvarez <jba@pobox.com>
* Greek Dimitrios Dimitrakos <mail@dimitrios.de>
* Swedish Tomas Prybil <tomas@prybil.se>, Jan Ekholm <chakie@infa.abo.fi>
* Romanian Paul Lacatus <paul@campina.iiruc.ro>, Lucian Muresan <lucianm@users.sourceforge.net>
@@ -112,8 +112,8 @@ const tI18nPhrase Phrases[] = {
"iso8859-1",
"iso8859-1",
"iso8859-15",
- "iso8859-1",
- "iso8859-1",
+ "iso8859-2",
+ "iso8859-15",
"iso8859-7",
"iso8859-1",
"iso8859-2",
@@ -198,7 +198,7 @@ const tI18nPhrase Phrases[] = {
"Chaînes",
"Kanaler",
"Kanavat",
- "Kanaly",
+ "Kana³y",
"Canales",
"ÊáíÜëéá",
"Kanaler",
@@ -220,7 +220,7 @@ const tI18nPhrase Phrases[] = {
"Timere",
"Ajastimet",
"Timery",
- "Timer",
+ "Programar grabaciones",
"×ñïíïðñïãñáììáôéóìïß",
"Timers",
"Timer-e",
@@ -261,8 +261,8 @@ const tI18nPhrase Phrases[] = {
"Infos sur l'enregistrement",
"",// TODO
"Tallenteen tiedot",
- "",// TODO
- "",// TODO
+ "Informacje o nagraniu",
+ "Información de grabación",
"Ðëçñïöïñßåò EããñáöÞò",
"Inspelning",
"Detaliile înregistrãrii",
@@ -282,7 +282,7 @@ const tI18nPhrase Phrases[] = {
"Configuration",
"Konfigurasjon",
"Asetukset",
- "Nastawy",
+ "Ustawienia",
"Configuración",
"Ñõèìéóåéò",
"Inställningar",
@@ -303,7 +303,7 @@ const tI18nPhrase Phrases[] = {
"Commandes",
"Kommandoer",
"Komennot",
- "Rozkazy",
+ "Polecenia",
"Órdenes",
"ÅíôïëÝò",
"Kommandon",
@@ -324,7 +324,7 @@ const tI18nPhrase Phrases[] = {
"Commandes d'enregistrement",
"",// TODO
"Tallennekomennot",
- "Rozkazy Nagran",
+ "Polecenia nagrañ",
"Órdenes de grabación",
"ÅíôïëÝò ãéÜ åããñáöÝò",
"Inspelningskommandon",
@@ -345,7 +345,7 @@ const tI18nPhrase Phrases[] = {
"Modifier une chaîne",
"Editer kanal",
"Muokkaa kanavaa",
- "Ustawienie kanalu",
+ "Edycja kana³u",
"Modificar canal",
"Ôñïðïðïßçóç Êáíáëéïý",
"Ändra kanal",
@@ -366,8 +366,8 @@ const tI18nPhrase Phrases[] = {
"Changer la programmation",
"Editer timer",
"Muokkaa ajastinta",
- "Ustawienie timerow",
- "Modificar timer",
+ "Edycja timera",
+ "Modificar programación",
"Ôñïðïðïßçóç ÷ñïíïðñïãñáììáôéóìïý",
"Ändra timer",
"Modificare timer",
@@ -408,8 +408,8 @@ const tI18nPhrase Phrases[] = {
"Info",
"",//TODO
"Tiedot",
- "",//TODO
- "",//TODO
+ "Info",
+ "Info",
"Ðëçñïöïñßåò",
"Info",
"Info",
@@ -430,7 +430,7 @@ const tI18nPhrase Phrases[] = {
"Program Guide - %s",
"Ohjelmisto - %s",
"Program - %s",
- "Programa - %s",
+ "Guía de programación - %s",
"Ðñüãñáììá - %s",
"Program - %s",
"Programul canalului %s",
@@ -438,7 +438,7 @@ const tI18nPhrase Phrases[] = {
"Guia de Programació - %s",
"¿àÞÓàÐÜÜÐ - %s",
"Raspored - %s",
- "Programm - %s",
+ "Ajakava - %s",
"Program - %s",
},
{ "This event - %s",
@@ -449,17 +449,17 @@ const tI18nPhrase Phrases[] = {
"",//TODO
"",//TODO
"",//TODO
+ "Tämä tapahtuma - %s",
"",//TODO
+ "Este evento - %s",
"",//TODO
+ "Ta audycja - %s",
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
- "",//TODO
- "",//TODO
- "",//TODO
- "",//TODO
+ "See sündmus - %s",
"",//TODO
},
{ "This event - all channels",
@@ -470,17 +470,17 @@ const tI18nPhrase Phrases[] = {
"",//TODO
"",//TODO
"",//TODO
+ "Tämä tapahtuma - kaikki kanavat",
"",//TODO
+ "Este evento - todos los canales",
"",//TODO
+ "Ta audycja - wszystkie kana³y",
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
- "",//TODO
- "",//TODO
- "",//TODO
- "",//TODO
+ "See sündmus - kõik kanalid",
"",//TODO
},
{ "All events - all channels",
@@ -491,17 +491,17 @@ const tI18nPhrase Phrases[] = {
"",//TODO
"",//TODO
"",//TODO
+ "Kaikki tapahtumat - kaikki kanavat",
"",//TODO
+ "Todos los eventos - todos los canales",
"",//TODO
+ "Wszystkie audycje - wszystkie kana³y",
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
- "",//TODO
- "",//TODO
- "",//TODO
- "",//TODO
+ "Kõik sündmused - kõik kanalid",
"",//TODO
},
{ "What's on now?",
@@ -513,7 +513,7 @@ const tI18nPhrase Phrases[] = {
"Programmes en cours",
"Hvilket program sendes nå?",
"Menossa nyt",
- "Program biezacy",
+ "Program bie¿±cy",
"¿Qué hay ahora?",
"ÔñÝ÷ïí ðñüãñáììá",
"Vad sänds nu?",
@@ -534,8 +534,8 @@ const tI18nPhrase Phrases[] = {
"Prochains programmes",
"Hvilket program er neste?",
"Tulossa seuraavaksi",
- "Program nastepny",
- "¿Qué hay proximo?",
+ "Nastêpne audycje",
+ "¿Qué hay después?",
"Åðüìåíï ðñüãñáììá",
"Vilket är nästa program?",
"Ce emisiuni urmeazã?",
@@ -555,7 +555,7 @@ const tI18nPhrase Phrases[] = {
"Résumé",
"Sammendrag",
"Yhteenveto",
- "Zawartosc",
+ "Podsumowanie",
"Resumen",
"Ðåñéå÷üìåíï",
"Sammanfattning",
@@ -564,7 +564,7 @@ const tI18nPhrase Phrases[] = {
"Resum",
"¾ßØáÐÝØÕ",
"Sadr¾aj",
- "Kokkuvõte",
+ "Ülevaade",
"Omtale",
},
// Button texts (should not be more than 10 characters!):
@@ -577,7 +577,7 @@ const tI18nPhrase Phrases[] = {
"Modifier",
"Editer",
"Muokkaa",
- "Edycja",
+ "Edytuj",
"Modificar",
"ÐñïóáñìïãÞ",
"Ändra",
@@ -619,7 +619,7 @@ const tI18nPhrase Phrases[] = {
"Supprimer",
"Slett",
"Poista",
- "Usunac",
+ "Usuñ",
"Borrar",
"ÄéáãñáöÞ",
"Ta bort",
@@ -640,7 +640,7 @@ const tI18nPhrase Phrases[] = {
"Marquer",
"Marker",
"Siirrä",
- "Zaznaczyc",
+ "Zaznacz",
"Marcar",
"ÅðéëïãÞ",
"Märk",
@@ -661,7 +661,7 @@ const tI18nPhrase Phrases[] = {
"Marche/Arr",
"Av/På",
"Päällä/Pois",
- "Zal./ Wyl.",
+ "W³/Wy³",
"On/Off",
"Aíïé÷/Këåéóôü",
"På/Av",
@@ -670,7 +670,7 @@ const tI18nPhrase Phrases[] = {
"On/Off",
"²ÚÛ/²ëÚÛ",
"De-/Aktiviraj",
- "Sees/Väljas",
+ "On/Off",
"Til/Fra",
},
{ "Timer",
@@ -682,6 +682,8 @@ const tI18nPhrase Phrases[] = {
"",// TODO
"",// TODO
"Ajastin",
+ "Timer",// TODO
+ "Programa",
"",// TODO
"",// TODO
"",// TODO
@@ -689,9 +691,7 @@ const tI18nPhrase Phrases[] = {
"",// TODO
"",// TODO
"",// TODO
- "",// TODO
- "",// TODO
- "",// TODO
+ "Taimer",
"",// TODO
},
{ "Button$Record",
@@ -703,7 +703,7 @@ const tI18nPhrase Phrases[] = {
"Enregistre",
"Ta opp",
"Tallenna",
- "Nagrywac",
+ "Nagraj",
"Grabar",
"ÅããñáöÞ",
"Inspelning",
@@ -724,7 +724,7 @@ const tI18nPhrase Phrases[] = {
"Lire",
"Spill av",
"Toista",
- "Odtwarzac",
+ "Odtwórz",
"Play",
"ÁíáðáñáãùãÞ",
"Spela upp",
@@ -745,7 +745,7 @@ const tI18nPhrase Phrases[] = {
"Pause",
"",// TODO
"Tauko",
- "Przerwa",
+ "Pauza",
"Pausa",
"Ðáýóç",
"Pausa",
@@ -766,7 +766,7 @@ const tI18nPhrase Phrases[] = {
"Retour",
"Spol tilbake",
"Alkuun",
- "Poczatek",
+ "Pocz±tek",
"Rebobinar",
"ÌåôáöïñÜ óôçí Áñ÷Þ",
"Återspolning",
@@ -787,7 +787,7 @@ const tI18nPhrase Phrases[] = {
"Arrêt",
"Stopp",
"Lopeta",
- "Zakonczyc",
+ "Zatrzymaj",
"Parar",
"ÔÝñìá",
"Stopp",
@@ -808,7 +808,7 @@ const tI18nPhrase Phrases[] = {
"Reprendre",
"Fortsett",
"Jatka",
- "Dalej",
+ "Wznów",
"Continuar",
"ÅðáíáöïñÜ",
"Fortsätt",
@@ -829,7 +829,7 @@ const tI18nPhrase Phrases[] = {
"Ouvrir",
"Åpne",
"Avaa",
- "Otworzyc",
+ "Otwórz",
"Abrir",
"Áíïéãìá",
"Öppna",
@@ -850,7 +850,7 @@ const tI18nPhrase Phrases[] = {
"Regarder",
"Skift til",
"Valitse",
- "Przelaczyc",
+ "Prze³±cz",
"Cambiar",
"AëëáãÞ",
"Byt",
@@ -892,8 +892,8 @@ const tI18nPhrase Phrases[] = {
"Après",
"Neste",
"Seuraavaksi",
- "Nastepny",
- "Siguiente",
+ "Nastêpnie",
+ "Después",
"Åðüìåíï",
"Nästa",
"Urmãtor",
@@ -901,7 +901,7 @@ const tI18nPhrase Phrases[] = {
"Següent",
"´ÐÛÕÕ",
"Slijedi",
- "Järgmine",
+ "Tulekul",
"Næste",
},
{ "Button$Schedule",
@@ -914,7 +914,7 @@ const tI18nPhrase Phrases[] = {
"Programmer",
"Ohjelmisto",
"Program",
- "Programa",
+ "Guía",
"Ðñüãñáììá",
"Program",
"Program",
@@ -922,7 +922,7 @@ const tI18nPhrase Phrases[] = {
"Programar",
"¿àÞÓàÐÜÜÐ",
"Raspored",
- "Kava",
+ "Ajakava",
"Program",
},
{ "Button$ABC/abc",
@@ -955,7 +955,7 @@ const tI18nPhrase Phrases[] = {
"Insérer",
"",// TODO
"Lisää",
- "Wstawiac",
+ "Wstaw",
"Insertar",
"ÅéóáãùãÞ",
"Infoga",
@@ -976,7 +976,7 @@ const tI18nPhrase Phrases[] = {
"Écraser",
"",// TODO
"Korvaa",
- "Przepisac",
+ "Nadpisz",
"Sobreescribir",
"ÁíôéêáôÜóôáóç",
"Skriv över",
@@ -1039,8 +1039,8 @@ const tI18nPhrase Phrases[] = {
"Scan",
"",//TODO
"Päivitä",
- "",//TODO
- "",//TODO
+ "Skanuj",
+ "Escanear",
"ÓÜñùóç",
"Skanna",
"Cãutare canale",
@@ -1060,8 +1060,8 @@ const tI18nPhrase Phrases[] = {
"Audio",
"",// TODO
"Ääni",
- "",// TODO
- "",// TODO
+ "D¼wiêk",
+ "Audio",
"¹÷ïò",
"Ljud",
"Sunet",
@@ -1082,7 +1082,7 @@ const tI18nPhrase Phrases[] = {
"Supprimer la chaîne?",
"Slette kanal?",
"Poistetaanko kanava?",
- "Usunac kanal?",
+ "Usun±æ kana³?",
"¿Eliminar canal?",
"ÄéáãñáöÞ êáíáëéïý?",
"Ta bort kanalen?",
@@ -1103,8 +1103,8 @@ const tI18nPhrase Phrases[] = {
"Supprimer la programmation?",
"Slette timer?",
"Poistetaanko ajastin?",
- "Usunac timer?",
- "¿Eliminar timer?",
+ "Usun±æ timer?",
+ "¿Eliminar programación?",
"ÄéáãñáöÞ ÷ñïíïðñïãñáììáôéóìïý;?",
"Ta bort timern?",
"ªterg timer-ul?",
@@ -1124,7 +1124,7 @@ const tI18nPhrase Phrases[] = {
"Supprimer l'enregistrement?",
"Slette opptak?",
"Poistetaanko tallenne?",
- "Usunac nagranie?",
+ "Usun±æ nagranie?",
"¿Eliminar grabacion?",
"ÄéáãñáöÞ åããñáöÞò?",
"Ta bort inspelningen?",
@@ -1145,8 +1145,8 @@ const tI18nPhrase Phrases[] = {
"Enregistrement en cours - confirmez la suppression",
"Timer gjør opptak - vil du slette likevel?",
"Ajastettu tallennus käynnissä - poistetaanko silti?",
- "Nagrywanie w trakcie - napewno usunac?",
- "¿Timer activo - de verdad eliminarlo?",
+ "Trwa nagrywanie - na pewno usun±æ?",
+ "Todavía está grabando - ¿eliminar realmente?",
"×ñïíïðñïãñáììáôéóìüò óÝ åîÝëéîç - ÄéáãñáöÞ óßãïõñá?",
"Timerstyrd inspelning pågår - Avbryta ändå?",
"Timer-ul tocmai înregistreazã - ºterg, totuºi?",
@@ -1166,7 +1166,7 @@ const tI18nPhrase Phrases[] = {
"Arrêter l'enregistrement?",
"Stoppe opptak?",
"Lopetetaanko tallennus?",
- "Zakonczyc nagranie?",
+ "Zatrzymaæ nagrywanie?",
"¿Parar grabación?",
"Áêýñùóç åããñáöÞò?",
"Stanna inspelning?",
@@ -1187,8 +1187,8 @@ const tI18nPhrase Phrases[] = {
"Annuler les modifications?",
"Avbryte redigering?",
"Perutaanko muokkaus?",
- "Zakonczyc montaz?",
- "¿Cancelar modificación?",
+ "Anulowaæ monta¿?",
+ "¿Cancelar edición?",
"Aêýñùóç åðåîåñãáóßáò?",
"Avbryta redigeringen?",
"Opresc montajul înregistrãrii?",
@@ -1208,8 +1208,8 @@ const tI18nPhrase Phrases[] = {
"Redémarrer?",
"Vil du virkelig starte på nytt?",
"Käynnistetäänkö uudelleen?",
- "Rzeczywiscie nowy start?",
- "¿De verdad reiniciar?",
+ "Na pewno zrestartowaæ?",
+ "¿Reiniciar realmente?",
"Ná ãßíåé óßãïõñá åðáíåêêßíçóç?",
"Vill du verkligen starta om?",
"Sigur repornesc?",
@@ -1229,8 +1229,8 @@ const tI18nPhrase Phrases[] = {
"Enregistrement en cours - redémarrer?",
"Gjør opptak - starte på nytt likevel?",
"Tallennus kesken - käynnistetäänkö uudelleen?",
- "Nagrywanie w trakcie - rzeczywiscie nowy start?",
- "Grabando - ¿reiniciar?",
+ "Trwa nagrywanie - zrestartowaæ mimo to?",
+ "Grabación en curso - ¿reiniciar igualmente?",
"Ãßíåôáé åããñáöÞ - ÔåëéêÜ íá ãßíåé åðáíåêêßíçóç?",
"Inspelning pågår, vill du ändå starta om?",
"Tocmai se înregistreazã - repornesc, totuºi?",
@@ -1250,8 +1250,8 @@ const tI18nPhrase Phrases[] = {
"Enregistrement en cours - confirmez l'arrêt",
"Gjør opptak - slå av likevel?",
"Tallennus kesken - sammutetaanko?",
- "Nagrywanie w trakcie - mimo to wylaczyc?",
- "Grabando - ¿apagar?",
+ "Trwa nagrywanie - wy³±czyæ mimo to?",
+ "Grabación en curso - ¿apagar igualmente?",
"Ãßíåôáé åããñáöÞ - ÔåëéêÜ íá ãßíåé ôåñìáôéóìüò?",
"Inspelning pågår, vill du ändå avbryta?",
"Tocmai se înregistreazã - închid, totuºi?",
@@ -1271,8 +1271,8 @@ const tI18nPhrase Phrases[] = {
"Enregistrement dans %d minutes - confirmez l'arrêt",
"Skal gjøre opptak om %d minutter - slå av likevel?",
"Tallennus alkaa %d min kuluttua - sammutetaanko?",
- "Nagrywanie za %d minut - mimo to wylaczyc?",
- "Grabando en %d minutos, ¿de verdad apagar?",
+ "Nagrywanie za %d minut - wy³±czyæ mimo to?",
+ "Grabación dentro de %d minutos, ¿apagar realmente?",
"ÁíáìÝíåôáé åããñáöÞ óÝ %d ëåðôÜ - ÔåëéêÜ íá ôåñìáôéóôåß?",
"Inspelning startar om %d minuter, vill du avsluta?",
"Înregistrez peste %d minute - închid, totuºi?",
@@ -1292,7 +1292,7 @@ const tI18nPhrase Phrases[] = {
"Appuyez sur une touche pour annuler l'arrêt",
"Trykk en tast for ikke å slå av",
"Peru sammutus painamalla mitä tahansa näppäintä",
- "Dowolny przycisk zatrzyma wylaczanie",
+ "Naci¶nij dowolny klawisz aby nie wy³±czaæ",
"Pulse una tecla para interrumpir apagar",
"Ðßåóå Ýíá ðëÞêôñï ãéÜ áêýñùäç ôåñìáôéóìïý",
"Tryck valfri knapp för att återkalla avstängningen",
@@ -1335,7 +1335,7 @@ const tI18nPhrase Phrases[] = {
"Fréquence",
"Frekvens",
"Taajuus",
- "Czestotliwosc",
+ "Czêstotliwo¶æ",
"Frecuencia",
"Óõ÷íüôçôá",
"Frekvens",
@@ -1377,8 +1377,8 @@ const tI18nPhrase Phrases[] = {
"Source",
"",//TODO
"Lähde",
- "Zrodlo",
- "",//TODO
+ "¬ród³o",
+ "Fuente",
"ÐçãÞ",
"Källa",
"Sursã",
@@ -1399,7 +1399,7 @@ const tI18nPhrase Phrases[] = {
"Srate",
"Symbolinopeus",
"Srate",
- "Srate",
+ "T.símbolos",
"Srate",
"Srate",
"Ratã simboluri",
@@ -1567,7 +1567,7 @@ const tI18nPhrase Phrases[] = {
"Kortleser",
"Salaus (CA)",
"CA",
- "CA",
+ "Acceso condicional (CA)",
"CA",
"Kortläsare",
"CA (Acces Condiþional)",
@@ -1586,17 +1586,17 @@ const tI18nPhrase Phrases[] = {
"",//TODO
"",//TODO
"",//TODO
+ "vapaa",
"",//TODO
+ "en abierto",
"",//TODO
+ "Otwarta transmisja",
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
- "",//TODO
- "",//TODO
- "",//TODO
- "",//TODO
+ "FTA",
"",//TODO
},
{ "encrypted",
@@ -1607,17 +1607,17 @@ const tI18nPhrase Phrases[] = {
"",//TODO
"",//TODO
"",//TODO
+ "salattu",
"",//TODO
+ "cifrado",
"",//TODO
+ "szyfrowany",
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
- "",//TODO
- "",//TODO
- "",//TODO
- "",//TODO
+ "krüptitud",
"",//TODO
},
{ "Sid",
@@ -1650,7 +1650,7 @@ const tI18nPhrase Phrases[] = {
"Inversion",
"Inversion",
"Inversio",
- "Inversion",
+ "Inwersja",
"Inversion",
"ÁíôéóôñïöÞ",
"Inversion",
@@ -1671,8 +1671,8 @@ const tI18nPhrase Phrases[] = {
"Bande passante",
"Bandwidth",
"Kaistanleveys",
- "Szerokosc pasma",
- "Bandwidth",
+ "Pasmo",
+ "Ancho de banda",
"Åýñïò Óõ÷íïôÞôùí",
"Bandbredd",
"Lãrgime de bandã",
@@ -1735,7 +1735,7 @@ const tI18nPhrase Phrases[] = {
"Modulation",
"Modulaatio",
"Modulacja",
- "Modulation",
+ "Modulación",
"Äéáìüñöùóç",
"Modulation",
"Modulaþie",
@@ -1756,7 +1756,7 @@ const tI18nPhrase Phrases[] = {
"Transmission",
"Transmissio",
"Transmisja",
- "Transmission",
+ "Transmisión",
"ÌåôÜäïóç",
"Transmission",
"Transmisiune",
@@ -1777,7 +1777,7 @@ const tI18nPhrase Phrases[] = {
"Guard",
"Suojaväli",
"Guard",
- "Guard",
+ "Int.Guarda",
"Ðñïóôáóßá",
"Guard",
"Guard",
@@ -1797,8 +1797,8 @@ const tI18nPhrase Phrases[] = {
"Hiérarchie",
"Hierarchy",
"Hierarkia",
- "Hierachia",
- "Hierarchy",
+ "Hierarchia",
+ "Jerarquía",
"Éåñáñ÷åßá",
"Hierarchy",
"Ierarhie",
@@ -1840,7 +1840,7 @@ const tI18nPhrase Phrases[] = {
"Chaîne",
"Kanal",
"Kanava",
- "Kanal",
+ "Kana³",
"Canal",
"ÊáíÜëé",
"Kanal",
@@ -1861,7 +1861,7 @@ const tI18nPhrase Phrases[] = {
"Jour",
"Dag",
"Päivä",
- "Dzien",
+ "Dzieñ",
"Día",
"ÇìÝñá",
"Dag",
@@ -1882,7 +1882,7 @@ const tI18nPhrase Phrases[] = {
"Début",
"Start",
"Aloitus",
- "Poczatek",
+ "Pocz±tek",
"Comienzo",
"Áñ÷Þ",
"Börjar",
@@ -1924,8 +1924,8 @@ const tI18nPhrase Phrases[] = {
"VPS",
"",// TODO
"VPS",
- "",// TODO
- "",// TODO
+ "VPS",
+ "VPS",
"VPS",
"VPS",
"VPS",
@@ -1966,8 +1966,8 @@ const tI18nPhrase Phrases[] = {
"Durée de vie",
"Levetid",
"Elinikä",
- "Trwalosc dni",
- "Durabilidad",
+ "Czas ¿ycia",
+ "Duración",
"ÄéÝñêåéá ÐáñáìïíÞò",
"Livstid",
"Timp de pãstrare",
@@ -2008,7 +2008,7 @@ const tI18nPhrase Phrases[] = {
"Premier jour",
"Første dag",
"1. päivä",
- "Pierwszy dzien",
+ "Pierwszy dzieñ",
"Primer día",
"Ðñþôç ìÝñá",
"Första dag",
@@ -2030,8 +2030,8 @@ const tI18nPhrase Phrases[] = {
"Cette chaîne est en cours d'utilisation!",
"Kanalen er i bruk av en timer!",
"Kanava on ajastimen käytössä!",
- "Kanal jest zajety przez timer nagran",
- "¡Canal está ocupado por un timer!",
+ "Kana³ jest u¿ywany przez timer!",
+ "¡Hay una grabación programada para este canal!",
"Ôï êáíÜëç ÷ñéóéìïðïéåßôáé áðü ÷ñïíïðñïãñáììáôéóìü!",
"Kanalen används av en timer!",
"Canalul este utilizat de un timer!",
@@ -2051,8 +2051,8 @@ const tI18nPhrase Phrases[] = {
"Impossible de changer de chaîne!",
"Ikke mulig å skifte kanal!",
"Kanavan vaihtaminen ei mahdollista!",
- "Kanal nie moze byc teraz przelaczony!",
- "¡No puedo cambiar canal!",
+ "Nie mo¿na prze³±czyæ kana³u!",
+ "¡No se puede cambiar de canal!",
"ÁëëáãÞ êáíáëéïý áäýíáôç!",
"Omöjligt att byta kanal!",
"Nu pot comuta canalul!",
@@ -2073,7 +2073,7 @@ const tI18nPhrase Phrases[] = {
"Timer gjør opptak!",
"Ajastintallennus käynnissä!",
"Timer nagrywa!",
- "¡Timer esta grabando!",
+ "¡Grabación en curso!",
"Ãßíåôáé ðñïãñáìáôéóìÝíç åããñáöÞ!",
"Timerstyrd inspelning pågår!",
"Timer-ul tocmai înregistreazã!",
@@ -2081,7 +2081,7 @@ const tI18nPhrase Phrases[] = {
"El temporitzador està gravant!",
"¸Ôñâ ×ÐßØáì ßÞ âÐÙÜÕàã!",
"Snimanje po definiranom terminu!",
- "Taimeri salvestamine!",
+ "Taimeriga salvestamine aktiivne!",
"Timer optager nu!",
},
{ "Error while accessing recording!",
@@ -2093,7 +2093,7 @@ const tI18nPhrase Phrases[] = {
"Impossible d'accèder à l'enregistrement",
"Feil under lesing av opptak!",
"Tallenteen toistaminen epäonnistui!",
- "Blad - brak dostepu do nagrania!",
+ "Bl±d podczas dostêpu do nagrania!",
"¡Error al acceder a la grabación!",
"Ðñüâëçìá óôÞí ðñïóðÝëáóç åããñáöÞò!",
"Inspelningen går inte att läsa!",
@@ -2114,7 +2114,7 @@ const tI18nPhrase Phrases[] = {
"Erreur de suppression de l'enregistrement!",
"Feil under sletting av opptak!",
"Tallenteen poistaminen epäonnistui!",
- "Blad przy usuwaniu nagrania!",
+ "Bl±d podczas usuwania nagrania!",
"¡Error al borrar la grabación!",
"ËÜèïò êáôÜ ôÞí äéáãñáöÞ ôïõ áñ÷åßïõ!",
"Inspelningen går inte att ta bort!",
@@ -2135,8 +2135,8 @@ const tI18nPhrase Phrases[] = {
"*** Chaîne invalide! ***",
"*** Ugyldig Kanal! ***",
"*** Virheellinen kanavavalinta! ***",
- "*** Niewazny kanal ***",
- "*** Canal inválido ***",
+ "*** Niepoprawny kana³ ***",
+ "*** Canal no válido ***",
"*** Áêõñï êáíÜëç ***",
"*** Felaktig kanal ***",
"*** Canal invalid ***",
@@ -2157,7 +2157,7 @@ const tI18nPhrase Phrases[] = {
"Ingen ledige DVB enheter for opptak!",
"Ei vapaata DVB-viritintä tallennukselle!",
"Brak wolnej karty DVB do nagrywania!",
- "¡No hay dispositivo DVB disponible para grabar!",
+ "¡Ningún dispositivo DVB disponible para grabar!",
"ÁíåðÜñêåéá DVB ÊÜñôáò ãéÜ åããñáöÞ!",
"Det finns ingen ledig DVB enhet för inspelning!",
"Nu mai sunt dispozitive DVB disponibile pentru înregistrare!",
@@ -2177,7 +2177,7 @@ const tI18nPhrase Phrases[] = {
"Chaîne non disponible!",
"",//TODO
"Kanava ei ole käytettävissä!",
- "Kanal jest niedostepny!",
+ "Kana³ nie jest dostêpny!",
"!Canal no disponible!",
"Ôï êáíÜëç äÝí åßíáé äéáèÝóéìï!",
"Kanalen är inte tillgänglig!",
@@ -2198,7 +2198,7 @@ const tI18nPhrase Phrases[] = {
"Caractéristiques des chaînes ne sont pas uniques",
"",//TODO
"Kanava-asetukset eivät ole yksilölliset!",
- "Nastawy kanalu sa niejednoznaczne!",
+ "Ustawienia kana³u nie s± unikalne!",
"!Propiedades de canal duplicadas!",
"Ïé ñéèìýóåéò ôïí êáíáëéþí áëëõëïóõìðßðôïõí!",
"Kanalinställningarna är ej unika!",
@@ -2219,7 +2219,7 @@ const tI18nPhrase Phrases[] = {
"Chaîne verrouillée (enregistrement en cours)!",
"Kanalen er låst (opptak)!",
"Kanava lukittu (tallennus käynnissä)!",
- "Kanal zablokowany (nagrywanie w toku)!",
+ "Kana³ zablokowany (trwa nagrywanie)!",
"¡Canal bloqueado (grabando)!",
"Ôï êáíÜëé åßíáé áðïó÷ïëéìÝíï (Ãßíåôå åããñáöÞ)!",
"Kanalen är låst (inspelning pågår)!",
@@ -2240,8 +2240,8 @@ const tI18nPhrase Phrases[] = {
"Impossible d'utiliser le mode transfert!",
"Kan ikke starte transfer modus!",
"Siirtotilan aloitus epäonnistui!",
- "Tryb transferowy jest niemozliwy!",
- "¡No puedo iniciar modo de transferencia!",
+ "Nie mo¿na uruchomiæ trybu transferu!",
+ "¡No se puede iniciar el modo de transferencia!",
"Áäõíáìßá åêêßíçóçò êáôÜóôáóçò ìåôáöïñÜò!",
"Kan inte starta Transfer Mode!",
"Nu pot porni modul de transfer!",
@@ -2261,8 +2261,8 @@ const tI18nPhrase Phrases[] = {
"Pas de marques d'édition définies!",
"",//TODO
"Muokkausmerkinnät puuttuvat!",
- "Brak znakow montazowych!",
- "",//TODO
+ "Nie zdefiniowano znaczników monta¿u!",
+ "¡No se definieron marcas de edición!",
"ÄÝí Ý÷ïõí ïñéóôåß óçìåßá åðåîåñãáóßáò",
"Det finns inga redigeringsmärken",//TODO
"Nu s-au pus marcaje de montaj pentru aceastã înregistrare",
@@ -2282,8 +2282,8 @@ const tI18nPhrase Phrases[] = {
"Impossible de commencer le montage!",
"Kan ikke starte redigeringsprosessen!",
"Muokkauksen aloitus epäonnistui!",
- "Uruchamianie montazu jest niemozliwe!",
- "¡No puedo iniciar proceso de modificación!",
+ "Nie mo¿na uruchomiæ procesu edycji!",
+ "¡No se puede iniciar el proceso de edición!",
"Áäõíáìßá åêêßíçóçò ôçò åðåîåñãáóßáò!",
"Kan inte starta redigering!",
"Nu pot porni montajul înregistrãrii!",
@@ -2303,8 +2303,8 @@ const tI18nPhrase Phrases[] = {
"Montage déjà en cours!",
"Redigeringsprosessen er allerede aktiv!",
"Muokkaus on jo käynnissä!",
- "Montaz w toku!",
- "¡Proceso de modificación ya fue iniciado!",
+ "Proces edycji jest ju¿ aktywny!",
+ "¡El proceso de edición ya está activo!",
"Åðåîåñãáóßá âñßóêåôáé óÝ åîÝëéîç!",
"Redigeringen är redan aktiv!",
"Montajul înregistrãrii este deja activ!",
@@ -2312,7 +2312,7 @@ const tI18nPhrase Phrases[] = {
"Procés d'edició iniciat anteriorment!",
"¿àÞæÕáá ÒØÔÕÞÜÞÝâÐÖÐ ãÖÕ ×ÐßãéÕÝ!",
"Ureðivanje je veæ aktivirano!",
- "Redigeerimine on juba aktiivne!",
+ "Redigeerimine juba aktiivne!",
"Redigeringsproces er allerede aktiv!",
},
{ "Can't shutdown - option '-s' not given!",
@@ -2324,8 +2324,8 @@ const tI18nPhrase Phrases[] = {
"Arrêt impossible - option '-s' absente!",
"Kan ikke slå av - startet uten parameteret '-s'!",
"Sammutus ei onnistu - '-s' parametri puuttuu!",
- "Wylaczenie niemozliwe - brak opcji '-s'!",
- "¡No puedo apagar - opción '-s' ausente!",
+ "Nie mo¿na wy³±czyæ - nie podano opcji '-s'!",
+ "¡No se puede apagar - falta el parámetro '-s'!",
"Áäýíáôïí íá ãßíåé ôåñìáôéóìüò. Áíýðáñêôç ç ðáñÜìåôñïò '-s'!",
"Kan inte avsluta, måste använda parameter '-s'",
"Nu pot închide - vezi opþiunea '-s'",
@@ -2336,6 +2336,27 @@ const tI18nPhrase Phrases[] = {
"Väljalülitamine ebaõnnestus - '-s' parameeter puudub!",
"Kan ikke slukke - parameter '-s' ikke angivet!",
},
+ { "Not enough disk space to start recording!",
+ "Nicht genügend Plattenplatz für Aufnahme!",
+ "",//TODO
+ "",//TODO
+ "",//TODO
+ "",//TODO
+ "",//TODO
+ "",//TODO
+ "",//TODO
+ "",//TODO
+ "",//TODO
+ "",//TODO
+ "",//TODO
+ "",//TODO
+ "",//TODO
+ "",//TODO
+ "",//TODO
+ "",//TODO
+ "",//TODO
+ "",//TODO
+ },
{ "Low disk space!",
"Platte beinahe voll!",
"Premalo prostora na disku!",
@@ -2345,8 +2366,8 @@ const tI18nPhrase Phrases[] = {
"Disque presque plein!",
"Lite ledig diskplass!",
"Tallennustila loppumassa!",
- "Dysk wkrotce pelny!",
- "¡Disco casi lleno",
+ "Ma³o miejsca na dysku!",
+ "¡Poco espacio en disco!",
"Ï óêëçñüò êïíôåýåé íÜ ãåìßóåé!",
"Lågt diskutrymme!",
"Spaþiul pe disc e foarte scãzut!",
@@ -2354,7 +2375,7 @@ const tI18nPhrase Phrases[] = {
"Disc gairebé ple!",
"½ÕÔÞáâÐâÞçÝÞ ÜÕáâÐ ÝÐ ÔØáÚÕ!",
"Nedovoljno prostora na disku",
- "Kõvaketas peaaegu täis!",
+ "Kõvaketas täis!",
"Kun lidt diskplads tilbage!",
},
{ "Opening CAM menu...",
@@ -2366,8 +2387,8 @@ const tI18nPhrase Phrases[] = {
"",//TODO
"",//TODO
"Avataan CA-moduulin valikkoa...",
- "",//TODO
- "",//TODO
+ "Otwieram menu CAM...",
+ "Abriendo el menú CAM...",
"",//TODO
"Åßóïäïò CAM Ìåíïý",
"",//TODO
@@ -2387,8 +2408,8 @@ const tI18nPhrase Phrases[] = {
"Impossible d'ouvrir le menu CAM!",
"",//TODO
"CA-moduulin valikko ei saatavilla",
- "CAM-Menu niedostepne!",
- "¡No pudeo acceder al menú de la CAM!",
+ "Nie mo¿na otworzyæ menu CAM!",
+ "¡No se puede abrir el menú CAM!",
"Áäýíáôç ç ðñüóâáóç óôü CAM ìåíïý!",
"Det går inte att öppna CAM menyn!",
"Nu pot deschide meniul CAM",
@@ -2408,8 +2429,8 @@ const tI18nPhrase Phrases[] = {
"",//TODO
"",//TODO
"CA-moduuli palautetaan alkutilaan...",
- "",//TODO
- "",//TODO
+ "Resetujê CAM...",
+ "Reiniciando CAM...",
"",//TODO
"ÅðáíáöïñÜ CAM",
"",//TODO
@@ -2429,8 +2450,8 @@ const tI18nPhrase Phrases[] = {
"Impossible de réinitialiser la CAM!",
"",//TODO
"CA-moduulin palautus alkutilaan epäonnistui!",
- "Nieudany CAM-Reset!",
- "¡No puedo reiniciar la CAM!",
+ "Nie mo¿na zresetowaæ CAM!",
+ "¡No se puede reiniciar CAM!",
"Áäýíáôç ç åðáíáöïñÜ óôü CAM",
"Kan inte återställa CAM!",
"Nu pot reseta CAM",
@@ -2450,8 +2471,8 @@ const tI18nPhrase Phrases[] = {
"La CAM a été réinitialisée",
"",//TODO
"CA-moduuli palautettu alkutilaan",
- "CAM-Reset wykonany",
- "CAM reiniciada",
+ "CAM zosta³ zresetowany",
+ "CAM reiniciado",
"¸ãéíå åðáíáöïñÜ óôï CAM",
"CA modulen har återställts",
"CAM-ul a fost resetat",
@@ -2471,8 +2492,8 @@ const tI18nPhrase Phrases[] = {
"",//TODO
"",//TODO
"Syötä %d numeroa!",
- "",//TODO
- "",//TODO
+ "Proszê podaæ %d cyfr!",
+ "¡Escriba %d dígitos!",
"",//TODO
"Ðáñáêáëü ðëçêôñïëïãÞóåôå %d íïýìåñá",
"",//TODO
@@ -2492,8 +2513,8 @@ const tI18nPhrase Phrases[] = {
"",//TODO
"Pas d'audio disponible!",
"Äänen kieli ei ole valittavissa!",
- "",//TODO
- "",//TODO
+ "D¼wiêk nie jest dostêpny!",
+ "¡No hay audio disponible!",
"Ìç äéáèÝóéìïò Þ÷ïò",
"Ljud saknas!"
"Lipseºte sunetul!",
@@ -2620,7 +2641,7 @@ const tI18nPhrase Phrases[] = {
"Opptak",
"Tallennus",
"Nagranie",
- "Opciones de Grabación",
+ "Opciones de grabación",
"ÅããñáöÞ",
"Inspelning",
"Înregistrare",
@@ -2641,7 +2662,7 @@ const tI18nPhrase Phrases[] = {
"Spill av",
"Toisto",
"Odtwarzanie",
- "Opciones de Reproducción",
+ "Opciones de reproducción",
"ÁíáðáñáãùãÞ",
"Uppspelning",
"Redare",
@@ -2661,7 +2682,7 @@ const tI18nPhrase Phrases[] = {
"Divers",
"Forskjellig",
"Sekalaiset",
- "Pozostale",
+ "Ró¿ne",
"Varios",
"ÄéÜöïñá",
"Diverse",
@@ -2682,7 +2703,7 @@ const tI18nPhrase Phrases[] = {
"Plugins",
"Plugins",
"Laajennokset",
- "Plugins",
+ "Wtyczki",
"Plugins",
"ÅðåêôÜóåéò",
"Moduler",
@@ -2703,7 +2724,7 @@ const tI18nPhrase Phrases[] = {
"Plugin",
"Plugin",
"Laajennos",
- "Plugin",
+ "Wtyczka",
"Plugin",
"ÅðÝêôáóç",
"Modul",
@@ -2724,7 +2745,7 @@ const tI18nPhrase Phrases[] = {
"Redémarrer",
"Start på nytt",
"Käynnistä uudelleen",
- "Zastartowac",
+ "Restart",
"Reiniciar",
"Åðáíåêêßíçóç",
"Omstart",
@@ -2746,7 +2767,7 @@ const tI18nPhrase Phrases[] = {
"Langue",
"Språk",
"Kieli",
- "Jezyk",
+ "Jêzyk",
"Idioma",
"Ãëþóóá",
"Språk",
@@ -2767,8 +2788,8 @@ const tI18nPhrase Phrases[] = {
"Skin",
"",// TODO
"Ulkoasu",
- "",// TODO
- "",// TODO
+ "Skórka",
+ "Skin",
"ÅðéöÜíåéá",
"Skin",
"Skin",
@@ -2788,8 +2809,8 @@ const tI18nPhrase Phrases[] = {
"Thème",
"",// TODO
"Teema",
- "",// TODO
- "",// TODO
+ "Motyw",
+ "Tema",
"ÈÝìá",
"Tema",
"Temã",
@@ -2809,8 +2830,8 @@ const tI18nPhrase Phrases[] = {
"Gauche",
"",// TODO
"Vaakakeskitys",
- "",// TODO
- "",// TODO
+ "Od lewej",
+ "Izquierda",
"ÁñéóôåñÜ",
"Vänster",
"Stânga",
@@ -2830,8 +2851,8 @@ const tI18nPhrase Phrases[] = {
"Haut",
"",// TODO
"Pystykeskitys",
- "",// TODO
- "",// TODO
+ "Od góry",
+ "Arriba",
"ÅðÜíù",
"Övre",
"Sus",
@@ -2851,7 +2872,7 @@ const tI18nPhrase Phrases[] = {
"Largeur",
"Bredde",
"Leveys",
- "Szerokosc",
+ "Szeroko¶æ",
"Anchura",
"ÌÜêñïò",
"Bredd",
@@ -2872,7 +2893,7 @@ const tI18nPhrase Phrases[] = {
"Hauteur",
"Høyde",
"Korkeus",
- "Wysokosc",
+ "Wysoko¶æ",
"Altura",
"¾øïò",
"Höjd",
@@ -2893,8 +2914,8 @@ const tI18nPhrase Phrases[] = {
"Durée affichage message (s)",
"Tid meldinger skal vises (s)",
"Viestien esitysaika (s)",
- "Czas wyswietlania wiadomosci (s)",
- "Duración muestra mensajes (s)",
+ "Czas trwania wiadomo¶ci (s)",
+ "Duración de los mensajes (sg)",
"×ñüíïò Ýíäåéîçò ìõíçìÜôùí (ä)",
"Tid för meddelanden (sek)",
"Timp afiºare mesaje (sec)",
@@ -2914,8 +2935,8 @@ const tI18nPhrase Phrases[] = {
"Utiliser les petits caractères",
"",// TODO
"Käytä pieniä kirjasimia",
- "",// TODO
- "",// TODO
+ "U¿ywaj ma³ej czcionki",
+ "Usar letra pequeña",
"×ñéóçìïðïßçóç ìéêñüí ãñáììáôïóåéñþí",
"Använd liten font",
"Utilizare fonturi mici",
@@ -2935,8 +2956,8 @@ const tI18nPhrase Phrases[] = {
"jamais",
"",// TODO
"ei koskaan",
- "",// TODO
- "",// TODO
+ "nigdy",
+ "nunca",
"ÐïôÝ"
"aldrig",
"niciodatã",
@@ -2956,8 +2977,8 @@ const tI18nPhrase Phrases[] = {
"dépend du skin",
"",// TODO
"ulkoasun mukaan",
- "",// TODO
- "",// TODO
+ "zal. od skórki",
+ "según skin",
"ÅîáñôÜôå áðü ôÞí åðéöÜíåéá",
"skin beroende",
"dep. de skin",
@@ -2977,8 +2998,8 @@ const tI18nPhrase Phrases[] = {
"toujours",
"",// TODO
"aina",
- "",// TODO
- "",// TODO
+ "zawsze",
+ "siempre",
"ðÜíôá",
"alltid",
"întotdeauna",
@@ -2998,8 +3019,8 @@ const tI18nPhrase Phrases[] = {
"Position infos chaînes",
"Posisjon på kanalinformasjon",
"Kanavatiedon sijainti",
- "Lokalizacja informacji o kanale",
- "Posición para información canal",
+ "Pozycja informacji o kanale",
+ "Posición para información de canal",
"ÈÝóç ðëçñïöïñßáò êáíáëéþí",
"Placering av kanalinformation",
"Poziþia informaþiilor despre canal",
@@ -3019,8 +3040,8 @@ const tI18nPhrase Phrases[] = {
"Durée affichage infos chaînes (s)",
"",// TODO
"Kanavatiedon esitysaika (s)",
- "",// TODO
- "",// TODO
+ "Czas trwania informacji o kanale (s)",
+ "Tiempo de información de canal (sg)",
"÷ñüíïò Ýíäåéêóçò ðëçñïöïñßùí êáíáëéïý óå (ä)",
"Kanal information (s)",
"Durata afiºãrii info-canal (s)",
@@ -3028,7 +3049,7 @@ const tI18nPhrase Phrases[] = {
"",// TODO
"¿ÞÚÐ× ØÝäÞàÜÐæØØ Þ ÚÐÝÐÛÕ (áÕÚ)",
"Vrijeme prikaza informacije o programu (s)",
- "Kanaliteate esitusaeg (s)",
+ "Kanaliinfo esitusaeg (s)",
"Tid kanalinfo skal vises (s)",
},
{ "Setup.OSD$Info on channel switch",
@@ -3040,8 +3061,8 @@ const tI18nPhrase Phrases[] = {
"Affichage progr. en cours",
"Info ved kanalskifte",
"Näytä kanavatieto vaihdettaessa",
- "Informacja przy zmianie kanalu",
- "Información para cambio de canal",
+ "Informacja przy zmianie kana³u",
+ "Mostrar info al cambiar de canal",
"Ðëçñïöïñßåò óôÞí áëëáãÞ êáíáëéïý",
"Information vid kanalbyte",
"Informaþii la comutarea canalului",
@@ -3049,7 +3070,7 @@ const tI18nPhrase Phrases[] = {
"Informació del canvi de canal",
"¿ÞÚÐ×ëÒÐâì ØÝäÞàÜÐæØî Þ ÚÐÝÐÛÕ",
"Informacije kod promjene kanala",
- "Kanaliteate näitamine",
+ "Kanaliinfo näitamine",
"Info ved kanalskift",
},
{ "Setup.OSD$Timeout requested channel info",
@@ -3061,6 +3082,8 @@ const tI18nPhrase Phrases[] = {
"", // TODO
"", // TODO
"Sulje kanavatieto pyydettäessä",
+ "Czas oczekiwania na informacje",
+ "Auto-cerrar al solicitar info de canal",
"", // TODO
"", // TODO
"", // TODO
@@ -3068,9 +3091,7 @@ const tI18nPhrase Phrases[] = {
"", // TODO
"", // TODO
"", // TODO
- "", // TODO
- "", // TODO
- "", // TODO
+ "Kanaliinfo kuvamise ajapiirang",
"", // TODO
},
{ "Setup.OSD$Scroll pages",
@@ -3082,8 +3103,8 @@ const tI18nPhrase Phrases[] = {
"Défilement par pages",
"Rask rulling i menyer",
"Valikoiden vieritys sivuttain",
- "Przesuwac stronami",
- "Desplazar página entera",
+ "Przesuwaj stronami",
+ "Deslizar páginas enteras",
"Êýëéóç óåëßäáò",
"Bläddra sidor",
"Deruleazã pagini",
@@ -3103,8 +3124,8 @@ const tI18nPhrase Phrases[] = {
"Défilement rotatif",
"",// TODO
"Valikoiden vieritys ympäri",
- "",// TODO
- "",// TODO
+ "Skrajne pozycje s±siaduj±",
+ "Rotar arriba/abajo al deslizar",
"Êýëéóç ãýñù-ãýñù",
"Rulla texten",
"Derulare circularã",
@@ -3123,17 +3144,17 @@ const tI18nPhrase Phrases[] = {
"",// TODO
"",// TODO
"",// TODO
+ "Sulje valikkonäppäimellä",
"",// TODO
+ "Cerrar al pulsar botón de menú",
"",// TODO
+ "Klawisz Menu zamyka",
"",// TODO
"",// TODO
"",// TODO
"",// TODO
"",// TODO
- "",// TODO
- "",// TODO
- "",// TODO
- "",// TODO
+ "Sulgemine Menüü klahviga",
"",// TODO
},
{ "Setup.OSD$Sort timers",
@@ -3145,8 +3166,8 @@ const tI18nPhrase Phrases[] = {
"Trier les programmations",
"Sorter timere",
"Järjestä ajastimet",
- "Sortowanie timerow",
- "Ordenar timers",
+ "Sortuj timery",
+ "Ordenar programas de grabación",
"ÏñãÜíùóç ÷ñïíïðñïãñáììáôéóìþí",
"Sortera timers",
"Sortare timer-e",
@@ -3166,8 +3187,8 @@ const tI18nPhrase Phrases[] = {
"Dossiers d'enregistrements",
"Kataloger til opptak",
"Näytä tallennehakemistot",
- "Wykaz nagran",
- "Gracaciones en directorios",
+ "Katalogi nagrañ",
+ "Mostrar directorios de grabaciones",
"ÖÜêåëïé åããñáöþí",
"Kataloger för inspelningar",
"Directoare înregistrãri",
@@ -3187,8 +3208,8 @@ const tI18nPhrase Phrases[] = {
"Inactivité avant rech. EPG (h)",
"Ledig tid før EPG-søk (h)",
"Ohjelmaoppaan taustapäivitys (h)",
- "Czas do skanu EPG (h)",
- "Tiempo hasta exploración EPG (h)",
+ "Czas skanowania EPG (h)",
+ "Tiempo de exploración de EPG (h)",
"×ñüíïò äéÜñêåéáò åîÝôáóçò EPG óå þñåò",
"EPG sökning timeout",
"Interval achiziþie EPG (h)",
@@ -3208,8 +3229,8 @@ const tI18nPhrase Phrases[] = {
"Niveau de correction EPG",
"Nivå for EPG-feilretting",
"Ohjelmaoppaan korjaustaso",
- "Poziom bledow EPG",
- "Nivel para arreglar EPG",
+ "Stopieñ poprawek b³êdów EPG",
+ "Nivel de corrección de EPG",
"Âáèìüò äéüñèùóçò ïäçãïý EPG",
"Nivå för EPG bugfix",
"Nivel corecþie EPG",
@@ -3229,8 +3250,8 @@ const tI18nPhrase Phrases[] = {
"Montrer l'EPG périmé (min)",
"",// TODO
"Vanha tieto näkyy (min)",
- "",// TODO
- "",// TODO
+ "Czas przechowywania EPG (min)",
+ "Mostrar datos antiguos de EPG (m)",
"¸íäåéîç îåðåñáóìÝíùí ðëçñïöïñéþí (ëåðôÜ)",
"Visa gammal information (min)",
"Date EPG expirate cel mult (min)",
@@ -3250,7 +3271,7 @@ const tI18nPhrase Phrases[] = {
"Ajuster l'heure du système",
"Juster system-klokken",
"Tahdista kellonaika",
- "Ustawianie czasu",
+ "Ustawiaj czas systemowy",
"Ajustar reloj de sistema",
"Óõíôïíéóìüò þñáò õðïëïãéóôÞ",
"Ställ in systemtid",
@@ -3271,8 +3292,8 @@ const tI18nPhrase Phrases[] = {
"Utiliser l'heure de la chaîne",
"Bruk klokke fra transponder",
"Vastaanota kellonaika transponderilta",
- "Transponder do ustawiania czasu",
- "Transponder para reloj de sistema",
+ "U¿yj czasu z transpondera",
+ "Transponder del que tomar la hora",
"Áíáìåôáäüôçò óõíôïíéóìïý þñáò",
"Använd klockan från transponder",
"Preia ora din transponder",
@@ -3292,8 +3313,8 @@ const tI18nPhrase Phrases[] = {
"Langues préférées",
"",// TODO
"Suosikkikielet",
- "",// TODO
- "",// TODO
+ "Preferowanych jêzyków",
+ "Idiomas preferidos",
"Ðñïôåéíüìåíåò ãëþóóåò",
"Önskade språk",
"Limbi preferate",
@@ -3313,8 +3334,8 @@ const tI18nPhrase Phrases[] = {
"Langue préférée",
"",// TODO
"Suosikkikieli",
- "",// TODO
- "",// TODO
+ "Preferowany jêzyk",
+ "Idioma preferido",
"Ðñïôåéíüìåíç ãëþóóá",
"Önskat språk",
"Limba preferatã",
@@ -3334,8 +3355,8 @@ const tI18nPhrase Phrases[] = {
"Carte DVB primaire",
"Hoved DVB-enhet",
"Ensisijainen DVB-sovitin",
- "Pierwotny interfejs DVB",
- "Primer interface DVB",
+ "Pierwszy interfejs DVB",
+ "Interfaz DVB primario",
"Êýñéá DVB êÜñôá",
"Primär DVB enhet",
"Dispozitiv DVB primar",
@@ -3355,8 +3376,8 @@ const tI18nPhrase Phrases[] = {
"Format d'affichage",
"",//TODO
"Näyttömuoto",
- "",//TODO
- "",//TODO
+ "Format wy¶wietlania obrazu",
+ "Formato de visualización",
"ÌïñöÞ áðåéêüíéóçò Âßíôåï",
"Format för video display",
"Formatul redãrii video",
@@ -3439,8 +3460,8 @@ const tI18nPhrase Phrases[] = {
"Format vidéo",
"TV-Format",
"Kuvasuhde",
- "Format telewizyjny",
- "Formato Vídeo",
+ "Format obrazu",
+ "Formato de vídeo",
"ÌïñöÞ ïèüíçò",
"Video format",
"Format video",
@@ -3460,8 +3481,8 @@ const tI18nPhrase Phrases[] = {
"Utiliser le Dolby Digital",
"",//TODO
"Käytä Dolby Digital -ääntä",
- "",//TODO
- "",//TODO
+ "U¿ywaj Dolby Digital",
+ "Usar Dolby Digital",
"×ñÞóç Þ÷ïõ Dolby Digital",
"Använd Dolby Digital",
"Sunet Dolby Digital",
@@ -3481,8 +3502,8 @@ const tI18nPhrase Phrases[] = {
"Mettre à jour les chaînes",
"",// TODO
"Päivitä kanavat",
- "",// TODO
- "",// TODO
+ "Aktualizuj kana³y",
+ "Actualizar canales",
"ÅíçìÝñùóç êáíáëéþí",
"Uppdatera kanaler",
"Actualizare canale",
@@ -3502,8 +3523,8 @@ const tI18nPhrase Phrases[] = {
"noms uniquement",
"",// TODO
"vain nimet",
- "",// TODO
- "",// TODO
+ "tylko nazwy",
+ "sólo nombres",
"ìüíï ïíüìáôá",
"bara namn",
"doar numele",
@@ -3523,8 +3544,8 @@ const tI18nPhrase Phrases[] = {
"noms et PIDs",
"",// TODO
"nimet ja PID:it",
- "",// TODO
- "",// TODO
+ "nazwy i PID-y",
+ "nombres y PIDs",
"Ïíüìáôá êáß PIDs",
"namn och PID",
"nume si PID-uri",
@@ -3532,7 +3553,7 @@ const tI18nPhrase Phrases[] = {
"",// TODO
"ÝÐ×ÒÐÝØï Ø PIDë",
"imena i identifikatore (PIDs)",
- "nimed ja PID-id",
+ "nimi ja PID-id",
"navne og PIDs",
},
{ "add new channels",
@@ -3544,8 +3565,8 @@ const tI18nPhrase Phrases[] = {
"ajouter chaînes",
"",// TODO
"uudet kanavat",
- "",// TODO
- "",// TODO
+ "dodawaj nowe kana³y",
+ "añadir canales",
"ðñïóèÞêç íÝùí êáíáëéþí",
"lägg till nya kanaler",
"adãugare canale noi",
@@ -3565,8 +3586,8 @@ const tI18nPhrase Phrases[] = {
"ajouter transpondeurs",
"",// TODO
"uudet transponderit",
- "",// TODO
- "",// TODO
+ "dodawaj nowe transpondery",
+ "añadir transponders",
"ðñïóèÞêç íÝïõ áíáìåôáäüôç",
"lägg till nya transponders",
"adãugare transpondere noi",
@@ -3586,8 +3607,8 @@ const tI18nPhrase Phrases[] = {
"Langues audio",
"",//TODO
"Äänen kielet",
- "",//TODO
- "",//TODO
+ "Jêzyków d¼wiêku",
+ "Idiomas de audio",
"Ãëþóóåò Þ÷ïõ",
"Antal ljudspråk",
"Limbi sunet",
@@ -3607,8 +3628,8 @@ const tI18nPhrase Phrases[] = {
"Langue audio",
"",//TODO
"Äänen kieli",
- "",//TODO
- "",//TODO
+ "Jêzyk d¼wiêku",
+ "Idioma de audio",
"Ãëþóóá Þ÷ïõ",
"Ljudspråk",
"Limba sunetului",
@@ -3649,8 +3670,8 @@ const tI18nPhrase Phrases[] = {
"Fréquence basse LNB (MHz)",
"LO-frekvens i lavbåndet (MHz)",
"LNB-alataajuus (MHz)",
- "Dolna czestotliwosc LNB (MHz)",
- "Frecuencia baja LNB (MHz)",
+ "Dolna czêstotliwo¶æ LNB (MHz)",
+ "Frecuencia inferior del LNB (MHz)",
"ÊÜôù LNB-Óõ÷íüôçôá (MHz)",
"Undre LNB frekvens (MHz)",
"Frecvnþã LNB inferioarã (Mhz)",
@@ -3670,8 +3691,8 @@ const tI18nPhrase Phrases[] = {
"Fréquence haute LNB (MHz)",
"LO-frekvens i høybåndet (MHz)",
"LNB-ylätaajuus (MHz)",
- "Gorna czestotliwosc LNB (MHz)",
- "Frecuencia alta LNB (MHz)",
+ "Górna czêstotliwo¶æ LNB (MHz)",
+ "Frecuencia superior del LNB (MHz)",
"¢íù LNB-Óõ÷íüôçôá (MHz)",
"Övre LNB frekvens (MHz)",
"Frecvnþã LNB superioarã (MHz)",
@@ -3691,7 +3712,7 @@ const tI18nPhrase Phrases[] = {
"Utiliser le DiSEqC",
"Bruk DiSEqC",
"Käytä DiSEqC-kytkintä",
- "Uzywac DiSEqC",
+ "U¿ywaj DiSEqC",
"Utilizar DiSEqC",
"Åíåñãïðïßçóç DiSEqC",
"Använd DiSEqC",
@@ -3733,7 +3754,7 @@ const tI18nPhrase Phrases[] = {
"Marge antérieure (min)",
"Opptaksmargin start (min)",
"Aloitusmarginaali (min)",
- "Poczatkowy czas buforowy (min)",
+ "Margines na pocz±tku (min)",
"Comenzar grabación antes (min)",
"Ðñüóèåôïò ÷ñüíïò óôçí áñ÷Þ (ëåðôÜ)",
"Marginal för start (min)",
@@ -3754,8 +3775,8 @@ const tI18nPhrase Phrases[] = {
"Marge postérieure (min)",
"Opptaksmargin slutt (min)",
"Lopetusmarginaali (min)",
- "Koncowy czas buforowy (min)",
- "Cortar grabación después (min)",
+ "Margines na koñcu (min)",
+ "Acabar grabación después (min)",
"Ðñüóèåôïò ÷ñüíïò óôü ôÝëïò (ëåðôÜ)",
"Marginal för stopp (min)",
"Marjã la oprire (min)",
@@ -3775,7 +3796,7 @@ const tI18nPhrase Phrases[] = {
"Limite primaire",
"Prioritetsgrense HovedDVB",
"Ensisijaisen sovittimen prioriteettiraja",
- "Pierwotny limit",
+ "Podstawowy limit",
"Límite primario",
"Ðñïôåýïí üñéï",
"Primär gräns",
@@ -3784,7 +3805,7 @@ const tI18nPhrase Phrases[] = {
"Límit primari",
"¼ØÝ. ßàØÞàØâÕâ ×ÐåÒÐâÐ ÞáÝ. ãáâàÞÙáâÒÐ",
"Standardno ogranièenje",
- "Esmase seadme prioriteet",
+ "Esmane prioriteet",
"Primær grænse",
},
{ "Setup.Recording$Default priority",
@@ -3796,8 +3817,8 @@ const tI18nPhrase Phrases[] = {
"Priorité par défaut",
"Normal prioritet (Timer)",
"Tallenteen oletusprioriteetti",
- "Priorytet pierwotny",
- "Prioridad predefinida",
+ "Domy¶lny priorytet",
+ "Prioridad por defecto",
"ÐñïêáèïñéóìÝíç ðñïôåñáéüôçôá",
"Normal prioritet",
"Prioritate implicitã",
@@ -3817,8 +3838,8 @@ const tI18nPhrase Phrases[] = {
"Durée de vie par défaut (j)",
"Normal levetid timer (d)",
"Tallenteen oletuselinikä (d)",
- "Pierwotna trwalosc (d)",
- "Duración predefinida",
+ "Domy¶lny czas ¿ycia (d)",
+ "Duración por defecto (días)",
"ÐñïêáèïñéóìÝíç äéÜñêåéá ðáñáìïíÞò (ÇìÝñåò)",
"Normal livstid (dagar)",
"Timp de pãstrare predefinit (zile)",
@@ -3838,8 +3859,8 @@ const tI18nPhrase Phrases[] = {
"Priorité des pauses",
"",// TODO
"Taukotallenteen prioriteetti",
- "Priorytet przerwy",
- "",// TODO
+ "Priorytet pauzy",
+ "Prioridad en modo pausa",
"Ðñïôåñáéüôçôá äéáëåßììáôïò",
"Prioritet för direktinspelning",
"Prioritate pauzã",
@@ -3859,8 +3880,8 @@ const tI18nPhrase Phrases[] = {
"Durée de vie des pauses (j)",
"",// TODO
"Taukotallenteen elinikä (d)",
- "Okres trwania przerwy (d)",
- "",// TODO
+ "Czas ¿ycia pauzy (d)",
+ "Duración en modo pausa (días)",
"ÄéÜñêåéá äéáëåßìáôïò",
"Livstid för direktinspelning (dagar)",
"Pãstrarea emisiunilor 'pauzate' (zile)",
@@ -3880,7 +3901,7 @@ const tI18nPhrase Phrases[] = {
"Utiliser le nom de l'épisode",
"Bruk episodenavn",
"Käytä jakson nimeä",
- "Czy uzywac nazwe epizodu",
+ "U¿ywaj nazwy epizodu",
"Utilizar nombre de episodo",
"×ñÞóç ïíüìáôïò åðåéóïäßïõ",
"Använd episodnamn",
@@ -3901,8 +3922,8 @@ const tI18nPhrase Phrases[] = {
"Utiliser le VPS",
"",// TODO
"Käytä VPS-toimintoa",
- "",// TODO
- "",// TODO
+ "U¿ywaj VPS",
+ "Usar servicio VPS",
"×ñÞóç VPS",
"Använd VPS",
"Utilizeazã VPS",
@@ -3922,8 +3943,8 @@ const tI18nPhrase Phrases[] = {
"Marge VPS",
"",// TODO
"VPS-toiminnon aloitusmarginaali (s)",
- "",// TODO
- "",// TODO
+ "Margines VPS (s)",
+ "Margen VPS (sg)",
"Ðåñéèþñéï VPS (ä)",
"VPS marginal (s)",
"Marjã de timp la utilizare VPS (s)",
@@ -3943,8 +3964,8 @@ const tI18nPhrase Phrases[] = {
"Marquage enregistr. immédiats",
"Markere direkteopptak",
"Merkitse pikatallenne",
- "Zaznaczyc natychm. nagranie",
- "Marcar grabaciones instantáneas",
+ "Zaznaczaj natychm. nagrywanie",
+ "Marcar grabaciones inmediatas",
"ÅðéëïãÞ ôñÝ÷ïõóáò åããñáöÞò",
"Märk direktinspelning",
"Marcheazã înregistrare imediatã",
@@ -3964,8 +3985,8 @@ const tI18nPhrase Phrases[] = {
"Noms enregistr. immédiats",
"Navngi direkteopptak",
"Nimeä pikatallenne",
- "Nazwac natychm. nagranie",
- "Nombrar grabaciones instantáneas",
+ "Nazywaj natychm. nagrywanie",
+ "Nombrar grabaciones inmediatas",
"Ïíïìáóßá ôñÝ÷ïõóáò åããñáöÞò",
"Namnge direktinspelning",
"Nume înregistrare imediatã",
@@ -3985,8 +4006,8 @@ const tI18nPhrase Phrases[] = {
"Durée enregistr. immédiat (min)",
"",//TODO
"Pikatallennuksen kesto (min)",
- "Dlugosc bezposredniego nagrania (min)",
- "Tiempo de grabación instantánea (min)",
+ "Czas natychm. nagrywania (min)",
+ "Tiempo de grabación inmediata (min)",
"ÄéÜñêåéá óôãìéáßáò åããñáöÞò (ëåðôÜ)",
"Direktinspelning längd (min)",
"Timpul de înregistare imediatã (min)",
@@ -4006,8 +4027,8 @@ const tI18nPhrase Phrases[] = {
"Taille maxi des fichiers (MB)",
"Maksimal størrelse på videofiler (MB)",
"Suurin tiedostokoko (Mt)",
- "Maks. wielkosc pliku (MB)",
- "Tamaño máx. de fichero (MB)",
+ "Maksymalny rozmiar pliku (MB)",
+ "Tamaño máximo de fichero (MB)",
"ÌÝãéóôï ìÝãåèïò áñ÷åßïõ (MB)",
"Maximal filstorlek för inspelning (MB)",
"Dimensiune maximã a fiºierului video (MB)",
@@ -4027,8 +4048,8 @@ const tI18nPhrase Phrases[] = {
"Séparer les séquences éditées",
"Splitt redigerte filer",
"Jaottele muokatut tallenteet",
- "Dzielic montowane pliki",
- "Quebrar ficheros",
+ "Dziel edytowane pliki",
+ "Partir ficheros editados",
"ÄéáìÝëéóìüò åðåîåñãáóìÝíùí áñ÷åßùí",
"Dela upp redigerade filer",
"Separare fiºiere montate",
@@ -4048,7 +4069,7 @@ const tI18nPhrase Phrases[] = {
"Mode multi-vitesses",
"Multispeed modus",
"Käytä toiston moninopeustilaa",
- "Tryb wielopredkosciowy",
+ "Tryb wieloprêdko¶ciowy",
"Modo multi-velocidad",
"Ìåèïäïò ðïëëáðëÞò ôá÷ýôçôáò",
"Multispeed mode",
@@ -4069,8 +4090,8 @@ const tI18nPhrase Phrases[] = {
"Affichage mode de lecture",
"Vis avspillingsmodus",
"Näytä toiston tila",
- "Wyswietlac status odtwarzania",
- "Mostrar modo de replay",
+ "Pokazuj tryb odtwarzania",
+ "Mostrar modo de reproducción",
"¸íäåéîç êáôÜóôáóçò áíáìåôÜäïóçò",
"Visa uppspelningsläge",
"Afiºeazã redarea",
@@ -4090,8 +4111,8 @@ const tI18nPhrase Phrases[] = {
"ID de reprise",
"Resume ID",// TODO
"Tallenteen paluutunniste",
- "ID odtwarzania",
- "Continuar ID",
+ "ID wznowienia",
+ "ID de continuación",
"ID áíáìåôÜäïóçò",
"Återuppta ID",
"Identificator continuare",
@@ -4111,8 +4132,8 @@ const tI18nPhrase Phrases[] = {
"MinEventTimeout (min)",
"Minste hendelsespause (min)",
"Tapahtuman odotusaika (min)",
- "Min. czas do nast. akcji (Event) (min)",
- "Tiempo mínimo pausa (min)",
+ "Minimalny czas audycji (min)",
+ "Tiempo mín. antes de un evento (m)",
"ÅëÜ÷éóôïò ÷ñÜíïò ðáñåìâïëÞò (ëåðôÜ)",
"Minsta händelse-pause (min)",
"Duratã minimã emisiuni (min)",
@@ -4132,8 +4153,8 @@ const tI18nPhrase Phrases[] = {
"Durée minimale d'inact. (min)",
"Minimumstid med inaktivitet (min)",
"Käyttäjätoiminnon odotusaika (min)",
- "Min. brak aktywnosci uzytkownika (min)",
- "Tiempo mínimo inactividad (min)",
+ "Minimalny czas nieaktywno¶ci (min)",
+ "Tiempo mín. de inactividad (m)",
"ÅëÜ÷éóôïò ÷ñüíïò áíáìïíÞò (ëåðôÜ)",
"Minsta användar-inaktivitet (min)",
"Durata minimã de inactivitate (min)",
@@ -4153,8 +4174,8 @@ const tI18nPhrase Phrases[] = {
"Temps maxi SVDRP (s)",
"Ubrukt SVDRP-levetid (s)",
"SVDRP-komennon odotusaika (s)",
- "Min. brak aktywnosci SVDRP (s)",
- "SVDRP Timeout (s)",
+ "Czas oczekiwania na SVDRP (s)",
+ "Tiempo de espera de SVDRP (sg)",
"SVDRP äéáêïðÞ (ä)",
"SVDRP Timeout (s)",
"Timeout SVDRP (sec)",
@@ -4174,8 +4195,8 @@ const tI18nPhrase Phrases[] = {
"Prise en compte chaîne (s)",
"",// TODO
"Kanavavalinnan odotusaika (s)",
- "",// TODO
- "",// TODO
+ "Czas oczekiwania na zap (s)",
+ "Considerar canal como visto (sg)",
"ÆÜðéíãê äéáêïðÞ (ä)",
"Zap timeout(s)",
"Interval zapping (s)",
@@ -4196,8 +4217,8 @@ const tI18nPhrase Phrases[] = {
"LMMJVSD",
"MTOTFLS",
"MTKTPLS",
- "PWSCPSN",
- "LMMJVSD",
+ "PW¦CPSN",
+ "LMXJVSD",
"ÄÔÔÐÐÓÊ",
"MTOTFLS",
"LMMJVSD",
@@ -4217,7 +4238,7 @@ const tI18nPhrase Phrases[] = {
"LunMarMerJeuVenSamDim",
"ManTirOnsTorFreLørSøn",
"Ma Ti Ke To Pe La Su ",
- "PonWtoSroCzwPiaSobNie",
+ "PonWto¦roCzwPi±SobNie",
"LunMarMieJueVieSabDom",
"ÄåõÔñßÔåôÐÝìÐáñÓÜâKõñ",
"MånTisOnsTorFreLörSön",
@@ -4239,8 +4260,8 @@ const tI18nPhrase Phrases[] = {
" aàbcçdeéèêfghiîjklmnoôpqrstuùûvwxyz0123456789-.#~,/_@",
"",// TODO
" abcdefghijklmnopqrstuvwxyzåäö0123456789-.#~,/_@",
- " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@",
- " aábcdeéfghiíjklmnñoópqrstuúvwxyz0123456789-.#~,/_@",
+ " a±bcædeêfghijkl³mnñoópqrs¶tuvwxyz¼¿0123456789-.#~,/_@",
+ " aábcçdeéfghiíjklmnñoópqrstuúvwxyz0123456789-.#~,/_@",
" áÜâãäåÝæçÞèéßêëìíîïüðñóòôõýö÷øùþ0123456789-.#~,/_@abcdefghijklmnopqrstuvwxyz",
" abcdefghijklmnopqrstuvwxyzåäö0123456789-.#~,/_@",
" aãâbcdefghiîjklmnopqrsºtþuvwxyz0123456789-.#~,/_@",
@@ -4261,6 +4282,8 @@ const tI18nPhrase Phrases[] = {
"",//TODO
"",//TODO
" 0\t-.#~,/_@1\tabcäå2\tdef3\tghi4\tjkl5\tmnoö6\tpqrs7\ttuv8\twxyz9",
+ " 0\t-.#~,/_@1\tabc2±æ\tdef3ê\tghi4\tjkl5³\tmno6ñó\tpqrs7¶\ttuv8\twxyz9¼¿",
+ " 0\t-.#~,/_@1\tabcáç2\tdefé3\tghií4\tjkl5\tmnoñó6\tpqrs7\ttuvú8\twxyz9",
"",//TODO
"",//TODO
"",//TODO
@@ -4268,9 +4291,7 @@ const tI18nPhrase Phrases[] = {
"",//TODO
"",//TODO
"",//TODO
- "",//TODO
- "",//TODO
- "",//TODO
+ " 0\t-.#~,/_@1\tabcäå2\tdef3\tghi4\tjkl5\tmnoõö6\tpqrsð7\ttuvü8\twxyzþ9",
"",//TODO
},
// Learning keys:
@@ -4283,8 +4304,8 @@ const tI18nPhrase Phrases[] = {
"Apprentissage des codes de télécommande",
"Lære fjernkontrolltaster",
"Kaukosäätimen opettaminen",
- "Nauka kodu pilota",
- "Aprendiendo teclas del telemando",
+ "Nauka klawiszy pilota",
+ "Aprendiendo teclas del mando",
"ÅêìÜèçóç ðëÞêôñùí ôçëå÷åéñéóìïý",
"Inlärning av fjärrkontrollsknappar",
"Învãþare taste telecomandã",
@@ -4304,8 +4325,8 @@ const tI18nPhrase Phrases[] = {
"Phase 1: Détection du type de code",
"Fase 1: Finne fjernkontroll-kodetype",
"Vaihe 1: Koodauksen tunnistaminen",
- "Faza 1: Detekcja typu kodu",
- "Fase 1: Detectando tipo de receptor",
+ "Etap 1: Wykrywanie rodzaju kodu pilota",
+ "Fase 1: Detectando tipo de mando",
"ÖÜóç 1: Áíß÷íåõóç êþäéêá RC",
"Steg1: identifiering av kod",
"Faza 1: Detecþia tipului telecomenzii",
@@ -4325,8 +4346,8 @@ const tI18nPhrase Phrases[] = {
"Appuyer sur une touche de la télécommande",
"Trykk en av tastene på fjernkontrollen",
"Paina mitä tahansa kaukosäätimen näppäintä",
- "Nacisnac klawisz pilota",
- "Pulse una tecla en el telemando",
+ "Naci¶nij dowolny klawisz na pilocie",
+ "Pulse cualquier tecla en el mando",
"Ðßåóå Ýíá ðëÞêôñï óôï ôçëå÷åéñéóôÞñéï",
"Tryck valfri tangent på fjärrkontrollen",
"Apãsaþi o tastã pe telecomandã",
@@ -4346,8 +4367,8 @@ const tI18nPhrase Phrases[] = {
"Code de la télécommande détecté!",
"Fjernkontroll-kodetype funnet!",
"Näppäinpainallus vastaanotettu!",
- "Kod pilota zostal poznany!",
- "¡Código detectado!",
+ "Wykryto kod pilota!",
+ "¡Código RC detectado!",
"ÂñÝèçêå êþäéêáò RC!",
"Koden detekterad!",
"S-a detectat tipul telecomenzii!",
@@ -4367,7 +4388,7 @@ const tI18nPhrase Phrases[] = {
"N'appuyer sur aucune touche ...",
"Ikke trykk på noen av tastene...",
"Älä paina kaukosäätimen näppäimiä...",
- "Nie naciskac klawiszy...",
+ "Nie naciskaj teraz ¿adnego klawisza...",
"No pulse ninguna tecla...",
"ÌÞí ðáôÜò ðëÞêôñá...",
"Tryck inte på någon knapp...",
@@ -4388,7 +4409,7 @@ const tI18nPhrase Phrases[] = {
"Phase 2: Apprentissage des codes des touches",
"Fase 2: Lære spesifikke tastekoder",
"Vaihe 2: Näppäinkoodien opettelu",
- "Faza 2: Nauka pojedynczych klawiszy",
+ "Etap 2: Nauka konkretnych kodów klawiszy",
"Fase 2: Aprendiendo códigos específicos",
"Öáóç 2: ÅêìÜèçóç ìåìïíïìÝíùí ðëÞêôñùí",
"Fas 2: Inlärning av specifika knapp-koder",
@@ -4409,8 +4430,8 @@ const tI18nPhrase Phrases[] = {
"Appuyer sur la touche '%s'",
"Trykk tasten for '%s'",
"Paina näppäintä toiminnolle '%s'",
- "Nacisnac klawisz dla '%s'",
- "Pulsar tecla para '%s'",
+ "Naci¶nij klawisz dla '%s'",
+ "Pulse la tecla para '%s'",
"Ðßåóå ôï ðëÞêôñï ãéÜ '%s'",
"Tryck på knappen för '%s'",
"Apãsaþi tasta pentru '%s'",
@@ -4430,7 +4451,7 @@ const tI18nPhrase Phrases[] = {
"Appuyer sur 'Haut' pour confirmer",
"Trykk 'Opp' for å bekrefte",
"Hyväksy painamalla 'Ylös'",
- "Nacisnac 'Gora' do potwierdzenia",
+ "Naci¶nij 'Do góry' aby potwierdziæ",
"Pulse 'Arriba' para confirmar",
"Ðßåóå 'ðÜíù' ãéÜ áðïäï÷Þ",
"Tryck 'Upp' för att bekräfta",
@@ -4451,8 +4472,8 @@ const tI18nPhrase Phrases[] = {
"Appuyer sur 'Bas' pour continuer",
"Trykk Ned' for å fortsette",
"Jatka painamalla 'Alas'",
- "Nacisnac 'Dol' zeby kontynuowac",
- "Pulse 'Abajo' para confirmar",
+ "Naci¶nij 'Na dó³' aby kontynuowaæ",
+ "Pulse 'Abajo' para continuar",
"Ðßåóå 'êÜôù' ãéÜ óõíÝ÷åéá",
"Tryck 'Ner' för att bekräfta",
"Apãsaþi 'Jos' pentru continuare",
@@ -4472,7 +4493,7 @@ const tI18nPhrase Phrases[] = {
"(Appuyer sur 'Haut' pour revenir en arrière)",
"(trykk 'Opp' for å gå tilbake)",
"(palaa takaisin painamalla 'Ylös')",
- "(Nacisnac 'Gora' cofa)",
+ "(naci¶nij 'Do góry' aby siê cofn±æ)",
"(Pulse 'Arriba' para retornar)",
"(Ðßåóå 'ðÜíù' ãéÜ åðéóôñïöÞ",
"(Tryck 'Upp' för att backa)",
@@ -4493,8 +4514,8 @@ const tI18nPhrase Phrases[] = {
"(Appuyer sur 'Bas' pour terminer)",
"(trykk 'Ned' for å avslutte innlæring)",
"(lopeta opettaminen painamalla 'Alas')",
- "(Nacisnac 'Dol' by zakonczyc)",
- "(Pulse 'Abajo' para terminar programación teclas)",
+ "(naci¶nij 'Na dó³' aby zakoñczyæ definiowanie)",
+ "(Pulse 'Abajo' para terminar el aprendizaje)",
"(Ðßåóå 'êÜôù' ãéÜ ôåñìáôéóìü äçëþóåùí ðëÞêôñùí)",
"(Tryck 'Ner' för att avsluta inlärningen)",
"(Apãsaþi 'Jos' pentru terminare)",
@@ -4514,8 +4535,8 @@ const tI18nPhrase Phrases[] = {
"('Menu' pour passer cette touche)",
"",// TODO
"näppäimen puuttuessa paina 'Valikko'",
- "(Nacisnac 'Menu' by ominac klawisz)",
- "Pulse 'Menu' para saltarse esta tecla",
+ "(naci¶nij 'Menu' aby pomin±æ ten klawisz)",
+ "Pulse 'Menú' para omitir esta tecla",
"Ðßåóå 'ìåíïý' ãéá ðñïóðÝñáóç áõôïý ôïý ðëÞêôñïõ",
"(Tryck 'Meny' för att hoppa över knappen.)",
"Apãsaþi 'Meniu' pentru a sãri peste aceastã tastã",
@@ -4535,8 +4556,8 @@ const tI18nPhrase Phrases[] = {
"Phase 3: Sauvegarde des codes des touches",
"Fase 3: Lagre tastekoder",
"Vaihe 3: Näppäinkoodien tallentaminen",
- "Faza 3: Zapamietac Kod",
- "Fase 3: Guardar códigos de teclas",
+ "Etap 3: Zapisywanie kodów klawiszy",
+ "Fase 3: Guardando los códigos de teclas",
"Öáóç 3: ÁðïèÞêåõóç êùäéêþí",
"Fas 3: Spara knappkoder",
"Faza 3: Salvarea codurilor de taste",
@@ -4556,7 +4577,7 @@ const tI18nPhrase Phrases[] = {
"Appuyer sur 'Haut' pour sauvegarder, 'Bas' pour annuler",
"Trykk 'Opp' for å lagre, 'Ned' for å avbryte",
"Paina 'Ylös' tallentaaksesi ja 'Alas' peruuttaaksesi",
- "'Gora' zapamietuje, 'Dol' przerywa",
+ "Naci¶nij 'Do góry' aby zapisaæ, 'Na dó³' - aby anulowaæ",
"Pulse 'Arriba' para guardar, 'Abajo' para anular",
"Ðßåóå 'ÐÜíù' ãéá áðïèÞêåõóç, 'ÊÜôù' ãéá áêýñùóç",
"Tryck 'Upp' för att spara eller 'Ner' för att avsluta.",
@@ -4578,7 +4599,7 @@ const tI18nPhrase Phrases[] = {
"Haut",
"Opp",
"Ylös",
- "Gora",
+ "Do góry",
"Arriba",
"ÐÜíù",
"Upp",
@@ -4599,7 +4620,7 @@ const tI18nPhrase Phrases[] = {
"Bas",
"Ned",
"Alas",
- "Dol",
+ "Na dó³",
"Abajo",
"ÊÜôù",
"Ner",
@@ -4621,7 +4642,7 @@ const tI18nPhrase Phrases[] = {
"Meny",
"Valikko",
"Menu",
- "Menu",
+ "Menú",
"Ìåíïý",
"Meny",
"Meniu",
@@ -4683,7 +4704,7 @@ const tI18nPhrase Phrases[] = {
"Gauche",
"Venstre",
"Vasemmalle",
- "Lewo",
+ "W lewo",
"Izquierda",
"ÁñéóôåñÜ",
"Vänster",
@@ -4704,7 +4725,7 @@ const tI18nPhrase Phrases[] = {
"Droite",
"Høyre",
"Oikealle",
- "Prawo",
+ "W prawo",
"Derecha",
"ÄåîéÜ",
"Höger",
@@ -4767,7 +4788,7 @@ const tI18nPhrase Phrases[] = {
"Jaune",
"Gul",
"Keltainen",
- "Zolty",
+ "¯ó³ty",
"Amarillo",
"Êßôñéíï",
"Gul",
@@ -4809,8 +4830,8 @@ const tI18nPhrase Phrases[] = {
"Info",
"",//TODO
"Tiedot",
- "",//TODO
- "",//TODO
+ "Info",
+ "Info",
"Ðëçñïöïñßåò",
"Info",
"Info",
@@ -4830,7 +4851,7 @@ const tI18nPhrase Phrases[] = {
"Lecture",
"",// TODO
"Toista",
- "Odtworzenie",
+ "Odtwórz",
"Reproducir",
"ÁíáðáñáãùãÞ",
"Spela upp",
@@ -4851,7 +4872,7 @@ const tI18nPhrase Phrases[] = {
"Pause",
"",// TODO
"Tauko",
- "Przerwa",
+ "Pauza",
"Pausa",
"Ðáýóç",
"Pausa",
@@ -4893,7 +4914,7 @@ const tI18nPhrase Phrases[] = {
"Enregistrement",
"",// TODO
"Tallenna",
- "Nagrywac",
+ "Nagrywaj",
"Grabar",
"EããñáöÞ",
"Spela in",
@@ -4914,8 +4935,8 @@ const tI18nPhrase Phrases[] = {
"Avance rapide",
"",// TODO
"Pikakelaus >>",
- "Naprzod",
- "Adelante rápido",
+ "Do przodu",
+ "Avance rápido",
"Ðñïþèçóç åìðñüò",
"Snabbspolning framåt",
"Derulare înainte",
@@ -4935,8 +4956,8 @@ const tI18nPhrase Phrases[] = {
"Retour rapide",
"",// TODO
"Pikakelaus <<",
- "Wstecz",
- "Atrás rápido",
+ "Do ty³u",
+ "Retroceso rápido",
"Ðñïþèçóç ðßóù",
"Snabbspolning bakåt",
"Derulare înapoi",
@@ -4956,8 +4977,8 @@ const tI18nPhrase Phrases[] = {
"Veille", // This one caused some bug reports ;)
"Power",
"Virtakytkin",
- "Wylaczyc",
- "Corriente",
+ "Wy³±cz",
+ "Apagar",
"Këåßóéìï",
"På/Av",
"Închidere",
@@ -4977,8 +4998,8 @@ const tI18nPhrase Phrases[] = {
"Chaîne+",
"",// TODO
"Kanava +",
- "Kanal+",
- "Canal +",
+ "Kana³+",
+ "Canal+",
"ÊáíÜëé+",
"Kanal+",
"Canal+",
@@ -4998,8 +5019,8 @@ const tI18nPhrase Phrases[] = {
"Chaîne-",
"",// TODO
"Kanava -",
- "Kanal-",
- "Canal -",
+ "Kana³-",
+ "Canal-",
"ÊáíÜëé-",
"Kanal-",
"Canal-",
@@ -5019,7 +5040,7 @@ const tI18nPhrase Phrases[] = {
"Volume+",
"Volum+",
"Äänenvoimakkuus +",
- "Glosnej",
+ "G³o¶niej",
"Volumen+",
"¸íôáóç+",
"Volym+",
@@ -5061,7 +5082,7 @@ const tI18nPhrase Phrases[] = {
"Coupure du son",
"Lyd av",
"Äänetön",
- "Cisza",
+ "Wycisz",
"Mudo",
"Óéùðçëü",
"Ljud Av",
@@ -5082,8 +5103,8 @@ const tI18nPhrase Phrases[] = {
"Audio",
"",// TODO
"Ääni",
- "",// TODO
- "",// TODO
+ "D¼wiêk",
+ "Audio",
"¹÷ïò",
"Ljud",
"Sunet",
@@ -5146,7 +5167,7 @@ const tI18nPhrase Phrases[] = {
"off",
"",// TODO
"pois",
- "wyl.",
+ "wy³±cz",
"off",
"êëåéóôü",
"av",
@@ -5167,7 +5188,7 @@ const tI18nPhrase Phrases[] = {
"aucun",
"",// TODO
"tyhjä",
- "zaden",
+ "brak",
"ninguno",
"êáíÝíá",
"ingen",
@@ -5209,8 +5230,8 @@ const tI18nPhrase Phrases[] = {
"haut",
"øvre",
"yläreuna",
- "gora",
- "parte superior",
+ "góra",
+ "arriba",
"ðÜíù",
"övre",
"sus",
@@ -5230,8 +5251,8 @@ const tI18nPhrase Phrases[] = {
"bas",
"nedre",
"alareuna",
- "dol",
- "parte inferior",
+ "dó³",
+ "abajo",
"êÜôù",
"undre",
"jos",
@@ -5251,7 +5272,7 @@ const tI18nPhrase Phrases[] = {
"Disque",
"Disk",
"Levy",
- "Disk",
+ "Dysk",
"Disco",
"Äßóêïò",
"Disk",
@@ -5272,7 +5293,7 @@ const tI18nPhrase Phrases[] = {
"restant",
"ledig",
"vapaana",
- "pozostalo",
+ "wolnego",
"libre",
"Åëåýèåñïò",
"ledigt",
@@ -5294,7 +5315,7 @@ const tI18nPhrase Phrases[] = {
"Hopp: ",
"Siirry: ",
"Skok: ",
- "Salta a: ",
+ "Saltar: ",
"ÔïðïèÝôçóç: ",
"Hopp: ",
"Salt la: ",
@@ -5314,7 +5335,7 @@ const tI18nPhrase Phrases[] = {
"Volume ",
"Volum ",
"Äänenvoimakkuus ",
- "Glosnosc ",
+ "G³o¶no¶æ ",
"Volumen ",
"¸íôáóç ",
"Volym ",
@@ -5335,7 +5356,7 @@ const tI18nPhrase Phrases[] = {
" Arrêter la lecture",
" Stopp avspilling",
" Lopeta toisto",
- " Zatrzymac odtwarzanie",
+ " Zatrzymaj odtwarzanie",
" Parar reprodución",
" ÔÝëïò áíáðáñáãùãÞò",
" Avsluta uppspelning",
@@ -5356,7 +5377,7 @@ const tI18nPhrase Phrases[] = {
" Arrêter l'enregistrement ",
" Stopp opptak fra ",
" Lopeta tallennus ",
- " Zatrzymac nagrywanie ",
+ " Zatrzymaj nagrywanie ",
" Parar grabación ",
" ÔÝëïò åããáöÞò ",
" Avsluta inspelning ",
@@ -5377,8 +5398,8 @@ const tI18nPhrase Phrases[] = {
" Annuler le montage",
" Avbryt redigering",
" Peru muokkaus",
- " Przerwac montaz",
- " Anular modificación ",
+ " Anuluj edycjê",
+ " Anular edición",
" Áêýñùóç åðåîåñãáóßáò",
" Avbryt redigering",
" Opreºte montajul înregistrãrii",
@@ -5398,8 +5419,8 @@ const tI18nPhrase Phrases[] = {
"Changement de carte DVB primaire...",
"Bytter første DVB-enhet...",
"Vaihdetaan ensisijaista DVB-sovitinta...",
- "Pierwszy interfejs DVB przelacza...",
- "Cambio al interface DVB primario...",
+ "Przê³±czam na pierwszy interfejs DVB...",
+ "Cambiando el interfaz DVB primario...",
"Ç êýñéá DVB êÜñôá áëëÜæåé...",
"Byter primär DVB enhet...",
"Comut dispozitiv DVB primar...",
@@ -5419,8 +5440,8 @@ const tI18nPhrase Phrases[] = {
"Haut/Bas -> nouvelle place - OK -> déplacer",
"Opp/Ned for ny plass - OK for å flytte",
"'Ylös/Alas' uusi paikka - 'OK' hyväksy",
- "Gora/Dol na nowa pozycje - Ok zmienia",
- "Arriba/Abajo para el nuevo lugar - OK para mover",
+ "Do góry/Na dó³ na now± pozycjê - Ok zatwierdza",
+ "Arriba/Abajo para mover - OK para confirmar",
"ÐÜíù/ÊÜôù ãéÜ íÝá èÝóç. ÌåôÜ ÏÊ",
"Upp/Ner för nya platsen - därefter OK för att flytta",
"Sus/Jos pentru noua locaþie - OK pentru a muta",
@@ -5440,8 +5461,8 @@ const tI18nPhrase Phrases[] = {
"Opération de montage lancée",
"Redigeringsprosess startet",
"Muokkaus aloitettu",
- "Uruchomiony proces montazu",
- "Proceso modificación iniciado",
+ "Proces edycji rozpoczêty",
+ "Proceso de edición iniciado",
"Áñ÷éóå ç åðåîåñãáóßá",
"Redigeringen startar",
"Montajul înregistrãrii a început",
@@ -5461,8 +5482,8 @@ const tI18nPhrase Phrases[] = {
"Montage terminé",
"Redigeringsprosess avsluttet",
"Muokkaus valmis",
- "Proces montazu zakonczony",
- "Proceso de modificación terminado",
+ "Proces edycji zakoñczony",
+ "Proceso de edición terminado",
"Ç åðåîåñãáóßá ôåëåßùóå",
"Redigering avslutad",
"Montajul înregistrãrii s-a terminat",
@@ -5470,7 +5491,7 @@ const tI18nPhrase Phrases[] = {
"Procés d'edició finalitzat",
"¼ÞÝâÐÖ ÞÚÞÝçÕÝ",
"Rezanje zavr¹eno",
- "Redigeerimine on lõpetatud",
+ "Redigeerimine lõpetatud",
"Redigeringsproces afsluttet",
},
{ "Editing process failed!",
@@ -5482,8 +5503,8 @@ const tI18nPhrase Phrases[] = {
"Echec du montage!",
"Feil under redigering!",
"Muokkaus epäonnistui!",
- "Bledny proces montazu!",
- "Modificación ha fallado!",
+ "Proces edycji nie powiód³ siê!",
+ "¡Proceso de edición fallido!",
"Ç åðåîåñãáóßá áðÝôõ÷å!",
"Redigeringsprocessen misslyckades",
"Montajul înregistrãrii a eºuat",
@@ -5503,6 +5524,8 @@ const tI18nPhrase Phrases[] = {
"",//TODO
"",//TODO
"Tallennus aloitettu",
+ "Rozpoczêto nagrywanie",
+ "Iniciando grabación",
"",//TODO
"",//TODO
"",//TODO
@@ -5510,9 +5533,7 @@ const tI18nPhrase Phrases[] = {
"",//TODO
"",//TODO
"",//TODO
- "",//TODO
- "",//TODO
- "",//TODO
+ "Salvestamine algas",
"",//TODO
},
{ "Pausing live video...",
@@ -5524,8 +5545,8 @@ const tI18nPhrase Phrases[] = {
"Pause de l'émission en direct...",
"",// TODO
"Pysäytetään lähetys...",
- "Zatrzymany program biezacy...",
- "Emisión en directo parada...",
+ "Pauzujê program na ¿ywo...",
+ "Pausa de la emisión en directo...",
"ÐÜãùìá æùíôáíïý óÞìáôïò",
"Pausar direktinspelningen",
"Trec în pauzã emisiunea transmisã...",
@@ -5545,8 +5566,8 @@ const tI18nPhrase Phrases[] = {
"Mise à jour du guide des programmes",
"",// TODO
"Ohjelmaoppaan päivitys aloitettu",
- "",// TODO
- "",// TODO
+ "Rozpoczynam skanowanie EPG",
+ "Iniciando la exploración de EPG",
"Áñ÷Þ óÜñùóç EPG",
"Påbörjar EPG skanning",
"Pornesc achiziþia EPG",
@@ -5566,7 +5587,7 @@ const tI18nPhrase Phrases[] = {
"Ce plugin n'a pas de paramètres!",
"",// TODO
"Tällä laajennoksella ei ole asetuksia!",
- "Ten plugin niema parametrow!",
+ "Ta wtyczka nie ma ¿adnych ustawieñ!",
"Este plugin no admite configuración",
"ÁõôÞ ç åðÝêôáóç äåí Ý÷åé ðáñÜìåôñïõò!",
"Den här modulen har inga parametrar",
@@ -5587,8 +5608,8 @@ const tI18nPhrase Phrases[] = {
"VDR Classique",// TODO
"",// TODO
"Klassinen VDR",
- "",// TODO
- "",// TODO
+ "Klasyczny VDR",
+ "VDR clásico",
"Êëáóéêü VDR",
"Klassisk VDR",
"VDR clasic",
@@ -5608,8 +5629,8 @@ const tI18nPhrase Phrases[] = {
"Consoles ST:TNG",
"",// TODO
"ST:TNG konsoli",
- "",// TODO
- "",// TODO
+ "Panel ST:TNG",
+ "Paneles ST:TNG",
"ÌïñöÝò ST:TNG",
"ST:TNG konsoll",
"Cons. ST:TNG",
@@ -5629,8 +5650,8 @@ const tI18nPhrase Phrases[] = {
"Sans titre",
"",// TODO
"Ei esitystä",
- "",// TODO
- "",// TODO
+ "Bez tytu³u",
+ "Sin título",
"×ùñßò Ôßôëï",
"ingen titel",
"Fãrã titlu",
diff --git a/keys.c b/keys.c
index 4215d7b..9fd5552 100644
--- a/keys.c
+++ b/keys.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: keys.c 1.10 2006/01/05 15:39:26 kls Exp $
+ * $Id: keys.c 1.11 2006/01/16 17:01:25 kls Exp $
*/
#include "keys.h"
@@ -250,9 +250,11 @@ cKeyMacros KeyMacros;
const cKeyMacro *cKeyMacros::Get(eKeys Key)
{
- for (cKeyMacro *k = First(); k; k = Next(k)) {
- if (*k->Macro() == Key)
- return k;
- }
+ if (Key != kNone) {
+ for (cKeyMacro *k = First(); k; k = Next(k)) {
+ if (*k->Macro() == Key)
+ return k;
+ }
+ }
return NULL;
}
diff --git a/menu.c b/menu.c
index dff1909..ec49b1c 100644
--- a/menu.c
+++ b/menu.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: menu.c 1.396 2006/01/15 15:02:36 kls Exp $
+ * $Id: menu.c 1.403 2006/01/22 16:06:39 kls Exp $
*/
#include "menu.h"
@@ -36,6 +36,8 @@
#define MAXRECORDCONTROLS (MAXDEVICES * MAXRECEIVERS)
#define MAXINSTANTRECTIME (24 * 60 - 1) // 23:59 hours
#define MAXWAITFORCAMMENU 4 // seconds to wait for the CAM menu to open
+#define MINFREEDISK 300 // minimum free disk space required to start recording
+#define NODISKSPACEDELTA 300 // seconds between "Not enough disk space to start recording!" messages
#define CHNUMWIDTH (numdigits(Channels.MaxNumber()) + 1)
@@ -2996,9 +2998,12 @@ static void SetTrackDescriptions(bool Live)
#define DIRECTCHANNELTIMEOUT 1000 //ms
+cDisplayChannel *cDisplayChannel::currentDisplayChannel = NULL;
+
cDisplayChannel::cDisplayChannel(int Number, bool Switched)
:cOsdObject(true)
{
+ currentDisplayChannel = this;
group = -1;
withInfo = !Switched || Setup.ShowInfoOnChSwitch;
displayChannel = Skins.Current()->DisplayChannel(withInfo);
@@ -3017,12 +3022,15 @@ cDisplayChannel::cDisplayChannel(int Number, bool Switched)
cDisplayChannel::cDisplayChannel(eKeys FirstKey)
:cOsdObject(true)
{
+ currentDisplayChannel = this;
group = -1;
number = 0;
+ timeout = true;
lastPresent = lastFollowing = NULL;
lastTime.Set();
withInfo = Setup.ShowInfoOnChSwitch;
displayChannel = Skins.Current()->DisplayChannel(withInfo);
+ channel = Channels.GetByNumber(cDevice::CurrentChannel());
ProcessKey(FirstKey);
}
@@ -3030,6 +3038,7 @@ cDisplayChannel::~cDisplayChannel()
{
delete displayChannel;
cStatus::MsgOsdClear();
+ currentDisplayChannel = NULL;
}
void cDisplayChannel::DisplayChannel(void)
@@ -3063,14 +3072,27 @@ void cDisplayChannel::DisplayInfo(void)
void cDisplayChannel::Refresh(void)
{
- channel = Channels.GetByNumber(cDevice::CurrentChannel());
DisplayChannel();
displayChannel->SetEvents(NULL, NULL);
- lastTime.Set();
+}
+
+cChannel *cDisplayChannel::NextAvailableChannel(cChannel *Channel, int Direction)
+{
+ if (Direction) {
+ while (Channel) {
+ Channel = Direction > 0 ? Channels.Next(Channel) : Channels.Prev(Channel);
+ if (Channel && !Channel->GroupSep() && cDevice::GetDevice(Channel, 0))
+ return Channel;
+ }
+ }
+ return NULL;
}
eOSState cDisplayChannel::ProcessKey(eKeys Key)
{
+ cChannel *NewChannel = NULL;
+ if (Key != kNone)
+ lastTime.Set();
switch (Key) {
case k0:
if (number == 0) {
@@ -3081,31 +3103,32 @@ eOSState cDisplayChannel::ProcessKey(eKeys Key)
case k1 ... k9:
if (number >= 0) {
number = number * 10 + Key - k0;
- if (number > 0) {
- channel = Channels.GetByNumber(number);
- displayChannel->SetEvents(NULL, NULL);
- withInfo = false;
- DisplayChannel();
- lastTime.Set();
- // Lets see if there can be any useful further input:
- int n = channel ? number * 10 : 0;
- cChannel *ch = channel;
- while (ch && (ch = Channels.Next(ch)) != NULL) {
- if (!ch->GroupSep()) {
- if (n <= ch->Number() && ch->Number() <= n + 9) {
- n = 0;
- break;
- }
- if (ch->Number() > n)
- n *= 10;
+ channel = Channels.GetByNumber(number);
+ displayChannel->SetEvents(NULL, NULL);
+ withInfo = false;
+ DisplayChannel();
+ // Lets see if there can be any useful further input:
+ int n = channel ? number * 10 : 0;
+ int m = 10;
+ cChannel *ch = channel;
+ while (ch && (ch = Channels.Next(ch)) != NULL) {
+ if (!ch->GroupSep()) {
+ if (n <= ch->Number() && ch->Number() < n + m) {
+ n = 0;
+ break;
+ }
+ if (ch->Number() > n) {
+ n *= 10;
+ m *= 10;
}
}
- if (n > 0) {
- // This channel is the only one that fits the input, so let's take it right away:
- displayChannel->Flush(); // makes sure the user sees his last input
- Channels.SwitchTo(number);
- return osEnd;
}
+ if (n > 0) {
+ // This channel is the only one that fits the input, so let's take it right away:
+ displayChannel->Flush(); // makes sure the user sees his last input
+ NewChannel = channel;
+ withInfo = true;
+ number = 0;
}
}
break;
@@ -3136,18 +3159,27 @@ eOSState cDisplayChannel::ProcessKey(eKeys Key)
group = -1;
}
}
- lastTime.Set();
break;
case kUp|k_Repeat:
case kUp:
case kDown|k_Repeat:
case kDown:
- cDevice::SwitchChannel(NORMALKEY(Key) == kUp ? 1 : -1);
- // no break here
case kChanUp|k_Repeat:
case kChanUp:
case kChanDn|k_Repeat:
- case kChanDn:
+ case kChanDn: {
+ eKeys k = NORMALKEY(Key);
+ cChannel *ch = NextAvailableChannel(channel, (k == kUp || k == kChanUp) ? 1 : -1);
+ if (ch)
+ channel = ch;
+ }
+ // no break here
+ case kUp|k_Release:
+ case kDown|k_Release:
+ case kChanUp|k_Release:
+ case kChanDn|k_Release:
+ if (!(Key & k_Repeat) && channel)
+ NewChannel = channel;
withInfo = true;
group = -1;
number = 0;
@@ -3155,43 +3187,57 @@ eOSState cDisplayChannel::ProcessKey(eKeys Key)
break;
case kNone:
if (number && lastTime.Elapsed() > DIRECTCHANNELTIMEOUT) {
- if (Channels.GetByNumber(number))
- Channels.SwitchTo(number);
- else {
- number = 0;
- channel = NULL;
- DisplayChannel();
- lastTime.Set();
- return osContinue;
- }
- return osEnd;
+ channel = Channels.GetByNumber(number);
+ if (channel)
+ NewChannel = channel;
+ withInfo = true;
+ number = 0;
+ Refresh();
+ lastTime.Set();
}
break;
//TODO
//XXX case kGreen: return osEventNow;
//XXX case kYellow: return osEventNext;
- case kOk: if (group >= 0) {
- channel = Channels.Get(Channels.GetNextNormal(group));
- if (channel)
- Channels.SwitchTo(channel->Number());
- withInfo = true;
- group = -1;
- Refresh();
- break;
- }
- else if (number > 0 && channel)
- Channels.SwitchTo(number);
- return osEnd;
- default: if ((Key & (k_Repeat | k_Release)) == 0) {
- cRemote::Put(Key);
- return osEnd;
- }
+ case kOk:
+ if (group >= 0) {
+ channel = Channels.Get(Channels.GetNextNormal(group));
+ if (channel)
+ NewChannel = channel;
+ withInfo = true;
+ group = -1;
+ Refresh();
+ }
+ else if (number > 0) {
+ channel = Channels.GetByNumber(number);
+ if (channel)
+ NewChannel = channel;
+ withInfo = true;
+ number = 0;
+ Refresh();
+ }
+ else
+ return osEnd;
+ break;
+ default:
+ if ((Key & (k_Repeat | k_Release)) == 0) {
+ cRemote::Put(Key);
+ return osEnd;
+ }
};
if (!timeout || lastTime.Elapsed() < (uint64)(Setup.ChannelInfoTime * 1000)) {
- if (!number && group < 0 && channel && channel->Number() != cDevice::CurrentChannel())
- Refresh(); // makes sure a channel switch through the SVDRP CHAN command is displayed
+ if (Key == kNone && !number && group < 0 && !NewChannel && channel && channel->Number() != cDevice::CurrentChannel()) {
+ // makes sure a channel switch through the SVDRP CHAN command is displayed
+ channel = Channels.GetByNumber(cDevice::CurrentChannel());
+ Refresh();
+ lastTime.Set();
+ }
DisplayInfo();
displayChannel->Flush();
+ if (NewChannel) {
+ Channels.SwitchTo(NewChannel->Number());
+ channel = NewChannel;
+ }
return osContinue;
}
return osEnd;
@@ -3520,6 +3566,23 @@ int cRecordControls::state = 0;
bool cRecordControls::Start(cTimer *Timer, bool Pause)
{
+ static time_t LastNoDiskSpaceMessage = 0;
+ int FreeMB = 0;
+ if (Timer) {
+ AssertFreeDiskSpace(Timer->Priority(), !Timer->Pending());
+ Timer->SetPending(true);
+ }
+ VideoDiskSpace(&FreeMB);
+ if (FreeMB < MINFREEDISK) {
+ if (!Timer || time(NULL) - LastNoDiskSpaceMessage > NODISKSPACEDELTA) {
+ isyslog("not enough disk space to start recording%s%s", Timer ? " timer " : "", Timer ? *Timer->ToDescr() : "");
+ Skins.Message(mtWarning, tr("Not enough disk space to start recording!"));
+ LastNoDiskSpaceMessage = time(NULL);
+ }
+ return false;
+ }
+ LastNoDiskSpaceMessage = 0;
+
ChangeState();
int ch = Timer ? Timer->Channel()->Number() : cDevice::CurrentChannel();
cChannel *channel = Channels.GetByNumber(ch);
@@ -3548,8 +3611,10 @@ bool cRecordControls::Start(cTimer *Timer, bool Pause)
}
}
}
- else if (!Timer || (Timer->Priority() >= Setup.PrimaryLimit && !Timer->Pending()))
+ else if (!Timer || (Timer->Priority() >= Setup.PrimaryLimit && !Timer->Pending())) {
isyslog("no free DVB device to record channel %d!", ch);
+ Skins.Message(mtError, tr("No free DVB device to record!"));
+ }
}
else
esyslog("ERROR: channel %d not defined!", ch);
diff --git a/menu.h b/menu.h
index f88a597..55d179c 100644
--- a/menu.h
+++ b/menu.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: menu.h 1.81 2006/01/06 11:30:38 kls Exp $
+ * $Id: menu.h 1.82 2006/01/22 14:24:31 kls Exp $
*/
#ifndef __MENU_H
@@ -82,14 +82,17 @@ private:
cChannel *channel;
const cEvent *lastPresent;
const cEvent *lastFollowing;
+ static cDisplayChannel *currentDisplayChannel;
void DisplayChannel(void);
void DisplayInfo(void);
void Refresh(void);
+ cChannel *NextAvailableChannel(cChannel *Channel, int Direction);
public:
cDisplayChannel(int Number, bool Switched);
cDisplayChannel(eKeys FirstKey);
virtual ~cDisplayChannel();
virtual eOSState ProcessKey(eKeys Key);
+ static bool IsOpen(void) { return currentDisplayChannel != NULL; }
};
class cDisplayVolume : public cOsdObject {
diff --git a/menuitems.c b/menuitems.c
index 88e8a50..455070d 100644
--- a/menuitems.c
+++ b/menuitems.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: menuitems.c 1.29 2006/01/07 15:37:03 kls Exp $
+ * $Id: menuitems.c 1.30 2006/01/21 12:27:14 kls Exp $
*/
#include "menuitems.h"
@@ -15,6 +15,8 @@
#include "skins.h"
#include "status.h"
+#define AUTO_ADVANCE_TIMEOUT 1500 // ms before auto advance when entering characters via numeric keys
+
const char *FileNameChars = " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@";
// --- cMenuEditItem ---------------------------------------------------------
@@ -262,6 +264,23 @@ void cMenuEditStrItem::SetHelpKeys(void)
cSkinDisplay::Current()->SetButtons(NULL);
}
+void cMenuEditStrItem::AdvancePos(void)
+{
+ if (pos < length - 2 && pos < int(strlen(value)) ) {
+ if (++pos >= int(strlen(value))) {
+ if (pos >= 2 && value[pos - 1] == ' ' && value[pos - 2] == ' ')
+ pos--; // allow only two blanks at the end
+ else {
+ value[pos] = ' ';
+ value[pos + 1] = 0;
+ }
+ }
+ }
+ newchar = true;
+ if (!insert && isalpha(value[pos]))
+ uppercase = isupper(value[pos]);
+}
+
void cMenuEditStrItem::Set(void)
{
char buf[1000];
@@ -326,6 +345,13 @@ eOSState cMenuEditStrItem::ProcessKey(eKeys Key)
bool SameKey = Key == lastKey;
if (Key != kNone)
lastKey = Key;
+ else if (!newchar && autoAdvanceTimeout.TimedOut()) {
+ AdvancePos();
+ newchar = true;
+ currentChar = NULL;
+ Set();
+ return osContinue;
+ }
switch (Key) {
case kRed: // Switch between upper- and lowercase characters
if (InEditMode()) {
@@ -382,19 +408,7 @@ eOSState cMenuEditStrItem::ProcessKey(eKeys Key)
uppercase = isupper(value[pos]);
break;
case kRight|k_Repeat:
- case kRight: if (pos < length - 2 && pos < int(strlen(value)) ) {
- if (++pos >= int(strlen(value))) {
- if (pos >= 2 && value[pos - 1] == ' ' && value[pos - 2] == ' ')
- pos--; // allow only two blanks at the end
- else {
- value[pos] = ' ';
- value[pos + 1] = 0;
- }
- }
- }
- newchar = true;
- if (!insert && isalpha(value[pos]))
- uppercase = isupper(value[pos]);
+ case kRight: AdvancePos();
if (pos == 0)
SetHelpKeys();
break;
@@ -413,15 +427,19 @@ eOSState cMenuEditStrItem::ProcessKey(eKeys Key)
value[pos] = toupper(Inc(tolower(value[pos]), NORMALKEY(Key) == kUp));
else
value[pos] = Inc( value[pos], NORMALKEY(Key) == kUp);
- newchar = false;
+ newchar = true;
}
else
return cMenuEditItem::ProcessKey(Key);
break;
+ case k0|k_Repeat ... k9|k_Repeat:
case k0 ... k9: {
- if (!SameKey)
- currentChar = NULL;
if (InEditMode()) {
+ if (!SameKey) {
+ if (!newchar)
+ AdvancePos();
+ currentChar = NULL;
+ }
if (insert && newchar) {
// create a new character in insert mode
if (int(strlen(value)) < length - 1) {
@@ -445,6 +463,7 @@ eOSState cMenuEditStrItem::ProcessKey(eKeys Key)
currentChar++;
}
newchar = false;
+ autoAdvanceTimeout.Set(AUTO_ADVANCE_TIMEOUT);
}
else
return cMenuEditItem::ProcessKey(Key);
diff --git a/menuitems.h b/menuitems.h
index bfaf436..ec8e08f 100644
--- a/menuitems.h
+++ b/menuitems.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: menuitems.h 1.15 2006/01/06 15:16:25 kls Exp $
+ * $Id: menuitems.h 1.16 2006/01/21 10:45:55 kls Exp $
*/
#ifndef __MENUITEMS_H
@@ -85,7 +85,9 @@ private:
const char *charMap;
const char *currentChar;
eKeys lastKey;
+ cTimeMs autoAdvanceTimeout;
void SetHelpKeys(void);
+ void AdvancePos(void);
virtual void Set(void);
char Inc(char c, bool Up);
protected:
diff --git a/recording.c b/recording.c
index 0f704af..5c57e18 100644
--- a/recording.c
+++ b/recording.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: recording.c 1.132 2006/01/08 11:40:13 kls Exp $
+ * $Id: recording.c 1.133 2006/01/20 17:18:59 kls Exp $
*/
#include "recording.h"
@@ -117,7 +117,7 @@ void RemoveDeletedRecordings(void)
}
}
-void AssertFreeDiskSpace(int Priority)
+void AssertFreeDiskSpace(int Priority, bool Force)
{
static cMutex Mutex;
cMutexLock MutexLock(&Mutex);
@@ -126,7 +126,7 @@ void AssertFreeDiskSpace(int Priority)
// it will get removed during the next call.
static time_t LastFreeDiskCheck = 0;
int Factor = (Priority == -1) ? 10 : 1;
- if (time(NULL) - LastFreeDiskCheck > DISKCHECKDELTA / Factor) {
+ if (Force || time(NULL) - LastFreeDiskCheck > DISKCHECKDELTA / Factor) {
if (!VideoFileSpaceAvailable(MINDISKSPACE)) {
// Make sure only one instance of VDR does this:
cLockFile LockFile(VideoDirectory);
diff --git a/recording.h b/recording.h
index d79b6b4..7eaddcc 100644
--- a/recording.h
+++ b/recording.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: recording.h 1.48 2005/12/18 11:26:51 kls Exp $
+ * $Id: recording.h 1.49 2006/01/20 17:18:28 kls Exp $
*/
#ifndef __RECORDING_H
@@ -21,9 +21,11 @@
extern bool VfatFileSystem;
void RemoveDeletedRecordings(void);
-void AssertFreeDiskSpace(int Priority = 0);
+void AssertFreeDiskSpace(int Priority = 0, bool Force = false);
///< The special Priority value -1 means that we shall get rid of any
///< deleted recordings faster than normal (because we're cutting).
+ ///< If Force is true, the check will be done even if the timeout
+ ///< hasn't expired yet.
class cResumeFile {
private:
diff --git a/tools.c b/tools.c
index 33b2ec6..031c120 100644
--- a/tools.c
+++ b/tools.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: tools.c 1.110 2006/01/15 14:31:45 kls Exp $
+ * $Id: tools.c 1.112 2006/01/20 14:01:28 kls Exp $
*/
#include "tools.h"
@@ -26,9 +26,22 @@ extern "C" {
#include <unistd.h>
#include <utime.h>
#include "i18n.h"
+#include "thread.h"
int SysLogLevel = 3;
+#define MAXSYSLOGBUF 256
+
+void syslog_with_tid(int priority, const char *format, ...)
+{
+ va_list ap;
+ char fmt[MAXSYSLOGBUF];
+ snprintf(fmt, sizeof(fmt), "[%d] %s", cThread::ThreadId(), format);
+ va_start(ap, format);
+ vsyslog(priority, fmt, ap);
+ va_end(ap);
+}
+
int BCD2INT(int x)
{
return ((1000000 * BCDCHARTOINT((x >> 24) & 0xFF)) +
@@ -125,13 +138,14 @@ char *strn0cpy(char *dest, const char *src, size_t n)
char *strreplace(char *s, char c1, char c2)
{
- char *p = s;
-
- while (p && *p) {
- if (*p == c1)
- *p = c2;
- p++;
- }
+ if (s) {
+ char *p = s;
+ while (*p) {
+ if (*p == c1)
+ *p = c2;
+ p++;
+ }
+ }
return s;
}
diff --git a/tools.h b/tools.h
index 23afea5..7e57744 100644
--- a/tools.h
+++ b/tools.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: tools.h 1.89 2006/01/08 11:40:37 kls Exp $
+ * $Id: tools.h 1.90 2006/01/15 16:19:56 kls Exp $
*/
#ifndef __TOOLS_H
@@ -26,9 +26,9 @@ typedef unsigned long long int uint64;
extern int SysLogLevel;
-#define esyslog(a...) void( (SysLogLevel > 0) ? syslog(LOG_ERR, a) : void() )
-#define isyslog(a...) void( (SysLogLevel > 1) ? syslog(LOG_INFO, a) : void() )
-#define dsyslog(a...) void( (SysLogLevel > 2) ? syslog(LOG_DEBUG, a) : void() )
+#define esyslog(a...) void( (SysLogLevel > 0) ? syslog_with_tid(LOG_ERR, a) : void() )
+#define isyslog(a...) void( (SysLogLevel > 1) ? syslog_with_tid(LOG_INFO, a) : void() )
+#define dsyslog(a...) void( (SysLogLevel > 2) ? syslog_with_tid(LOG_DEBUG, a) : void() )
#define LOG_ERROR esyslog("ERROR (%s,%d): %m", __FILE__, __LINE__)
#define LOG_ERROR_STR(s) esyslog("ERROR: %s: %m", s)
@@ -52,6 +52,8 @@ template<class T> inline int sgn(T a) { return a < 0 ? -1 : a > 0 ? 1 : 0; }
template<class T> inline void swap(T &a, T &b) { T t = a; a = b; b = t; }
#endif
+void syslog_with_tid(int priority, const char *format, ...);
+
#define BCDCHARTOINT(x) (10 * ((x & 0xF0) >> 4) + (x & 0xF))
int BCD2INT(int x);
diff --git a/transfer.c b/transfer.c
index f34dea7..8a0db4d 100644
--- a/transfer.c
+++ b/transfer.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: transfer.c 1.30 2005/08/14 10:55:03 kls Exp $
+ * $Id: transfer.c 1.31 2006/01/21 14:13:16 kls Exp $
*/
#include "transfer.h"
@@ -63,6 +63,7 @@ void cTransfer::Action(void)
int Result = 0;
#ifdef FW_NEEDS_BUFFER_RESERVE_FOR_AC3
bool GotBufferReserve = false;
+ GotBufferReserve = true; //XXX remove this line if you absolutely need the buffer reserve
int RequiredBufferReserve = KILOBYTE(DvbCardWith4MBofSDRAM ? 288 : 576);
#endif
while (Running()) {
diff --git a/vdr.c b/vdr.c
index bd4f950..1658590 100644
--- a/vdr.c
+++ b/vdr.c
@@ -22,7 +22,7 @@
*
* The project's page is at http://www.cadsoft.de/vdr
*
- * $Id: vdr.c 1.238 2006/01/15 13:31:57 kls Exp $
+ * $Id: vdr.c 1.244 2006/01/22 15:59:13 kls Exp $
*/
#include <getopt.h>
@@ -447,7 +447,7 @@ int main(int argc, char *argv[])
// Log file:
if (SysLogLevel > 0)
- openlog("vdr", LOG_PID | LOG_CONS, SysLogTarget);
+ openlog("vdr", LOG_CONS, SysLogTarget); // LOG_PID doesn't work as expected under NPTL
// Check the video directory:
@@ -727,7 +727,7 @@ int main(int argc, char *argv[])
LastChannel = cDevice::CurrentChannel();
LastChannelChanged = time(NULL);
}
- if (time(NULL) - LastChannelChanged >= Setup.ZapTimeout && LastChannel != PreviousChannel[0] && LastChannel != PreviousChannel[1])
+ if (time(NULL) - LastChannelChanged >= Setup.ZapTimeout && LastChannel != PreviousChannel[PreviousChannelIndex])
PreviousChannel[PreviousChannelIndex ^= 1] = LastChannel;
// Timers and Recordings:
if (!Timers.BeingEdited()) {
@@ -822,6 +822,7 @@ int main(int argc, char *argv[])
}
}
break;
+ // Direct main menu functions:
#define DirectMainFunction(function)\
DELETE_MENU;\
if (cControl::Control())\
@@ -855,7 +856,15 @@ int main(int argc, char *argv[])
case kChanUp:
case kChanDn|k_Repeat:
case kChanDn:
- cDevice::SwitchChannel(NORMALKEY(key) == kChanUp ? 1 : -1);
+ if (!Interact)
+ Menu = new cDisplayChannel(NORMALKEY(key));
+ else if (cDisplayChannel::IsOpen()) {
+ Interact->ProcessKey(key);
+ continue;
+ }
+ else
+ cDevice::SwitchChannel(NORMALKEY(key) == kChanUp ? 1 : -1);
+ key = kNone; // nobody else needs to see these keys
break;
// Volume control:
case kVolUp|k_Repeat:
@@ -901,9 +910,7 @@ int main(int argc, char *argv[])
case kRecord:
if (!cControl::Control()) {
if (cRecordControls::Start())
- ;//XXX Skins.Message(mtInfo, tr("Recording"));
- else
- Skins.Message(mtError, tr("No free DVB device to record!"));
+ Skins.Message(mtInfo, tr("Recording started"));
key = kNone; // nobody else needs to see this key
}
break;
@@ -947,8 +954,6 @@ int main(int argc, char *argv[])
case osRecord: DELETE_MENU;
if (cRecordControls::Start())
Skins.Message(mtInfo, tr("Recording started"));
- else
- Skins.Message(mtError, tr("No free DVB device to record!"));
break;
case osRecordings:
DELETE_MENU;
@@ -985,7 +990,7 @@ int main(int argc, char *argv[])
}
else {
// Key functions in "normal" viewing mode:
- if (KeyMacros.Get(key)) {
+ if (key != kNone && KeyMacros.Get(key)) {
cRemote::PutMacro(key);
key = kNone;
}
@@ -999,21 +1004,17 @@ int main(int argc, char *argv[])
}
// Direct Channel Select:
case k1 ... k9:
- Menu = new cDisplayChannel(key);
- break;
// Left/Right rotates trough channel groups:
case kLeft|k_Repeat:
case kLeft:
case kRight|k_Repeat:
case kRight:
- Menu = new cDisplayChannel(NORMALKEY(key));
- break;
// Up/Down Channel Select:
case kUp|k_Repeat:
case kUp:
case kDown|k_Repeat:
case kDown:
- cDevice::SwitchChannel(NORMALKEY(key) == kUp ? 1 : -1);
+ Menu = new cDisplayChannel(NORMALKEY(key));
break;
// Viewing Control:
case kOk: LastChannel = -1; break; // forces channel display