Version 1.2.1

- Fixed OSD access in case none of the devices provides one (thanks to Axel
  Gruber for reporting this one).
- Fixed editing channels ('timers.conf' was not written after a channel has
  been modified, which could result in errors upon the next start of VDR).
- Fixed a crash when canceling a newly created timer (thanks to Thomas Schmidt
  for reporting this one).
- Completed Hungarian language texts (thanks to Istvan Koenigsberger and Guido
  Josten).
- Fixed device handling in the CICAM menu in case a VDR instance was started
  with a specific device using the -D option (thanks to Gerald Raaf for reporting
  ths one).
- Initializing the current channel to '1' to avoid a crash in creating a new
  timer in case there is no device in the system that can actually receive any
  channel (thanks to Malcolm Caldwell for reporting this one).
- Some corrections to the Finnish OSD texts (thanks to Niko Tarnanen and Rolf
  Ahrenberg).
This commit is contained in:
Klaus Schmidinger 2003-06-09 18:00:00 +02:00
parent 40334f3e09
commit 64ddfca3b0
8 changed files with 110 additions and 90 deletions

View File

@ -90,6 +90,7 @@ Peter Hofmann <software@pxh.de>
Axel Gruber <axel@agm.de> Axel Gruber <axel@agm.de>
for his support in keeping the Premiere World channels up to date in 'channels.conf' for his support in keeping the Premiere World channels up to date in 'channels.conf'
for helping to debug support for Viaccess CAMs for helping to debug support for Viaccess CAMs
for reporting a problem in case none of the devices provides an OSD
Arnold Niessen <niessen@iae.nl> <arnold.niessen@philips.com> Arnold Niessen <niessen@iae.nl> <arnold.niessen@philips.com>
for translating OSD texts to the Dutch language for translating OSD texts to the Dutch language
@ -370,6 +371,8 @@ Gerald Raaf <graaf@attglobal.net>
for helping to fix the still picture workaround in case the progress display for helping to fix the still picture workaround in case the progress display
is active is active
for his support in keeping the Premiere World channels up to date in 'channels.conf' for his support in keeping the Premiere World channels up to date in 'channels.conf'
for reporting a problem in device handling in the CICAM menu in case a VDR
instance was started with a specific device using the -D option
Andreas Roedl <flood@flood-net.de> Andreas Roedl <flood@flood-net.de>
for adding some DVB-T channels for Berlin (Germany) to channels.conf.terr for adding some DVB-T channels for Berlin (Germany) to channels.conf.terr
@ -617,6 +620,8 @@ Sascha Volkenandt <sascha@akv-soft.de>
Malcolm Caldwell <malcolm.caldwell@ntu.edu.au> Malcolm Caldwell <malcolm.caldwell@ntu.edu.au>
for modifying LOF handling to allow for C-band reception for modifying LOF handling to allow for C-band reception
for reporting a crash in creating a new timer in case there is no device in the
system that can actually receive any channel
Ludwig Nussel <ludwig.nussel@web.de> Ludwig Nussel <ludwig.nussel@web.de>
for making the LIRC thread avoid high CPU load in case the connection to LIRC gets lost for making the LIRC thread avoid high CPU load in case the connection to LIRC gets lost
@ -711,3 +716,6 @@ Karim Afifi <karim.afifi@free.fr>
Jon Burgess <mplayer@jburgess.uklinux.net> Jon Burgess <mplayer@jburgess.uklinux.net>
for pointing out a problem with NPTL ("Native Posix Thread Library") for pointing out a problem with NPTL ("Native Posix Thread Library")
Thomas Schmidt <thomas.schmidt@in.stud.tu-ilmenau.de>
for reporting a crash when cancelling a newly created timer

19
HISTORY
View File

@ -2234,3 +2234,22 @@ Video Disk Recorder Revision History
(thanks to Jon Burgess for pointing this out). (thanks to Jon Burgess for pointing this out).
- Some corrections to the Finnish OSD texts (thanks to Jaakko Hyvätti). - Some corrections to the Finnish OSD texts (thanks to Jaakko Hyvätti).
- Officially released as version 1.2.0. - Officially released as version 1.2.0.
2003-06-09: Version 1.2.1
- Fixed OSD access in case none of the devices provides one (thanks to Axel
Gruber for reporting this one).
- Fixed editing channels ('timers.conf' was not written after a channel has
been modified, which could result in errors upon the next start of VDR).
- Fixed a crash when cancelling a newly created timer (thanks to Thomas Schmidt
for reporting this one).
- Completed Hungarian language texts (thanks to Istvan Koenigsberger and Guido
Josten).
- Fixed device handling in the CICAM menu in case a VDR instance was started
with a specific device using the -D option (thanks to Gerald Raaf for reporting
ths one).
- Initializing the current channel to '1' to avoid a crash in creating a new
timer in case there is no device in the system that can actually receive any
channel (thanks to Malcolm Caldwell for reporting this one).
- Some corrections to the Finnish OSD texts (thanks to Niko Tarnanen and Rolf
Ahrenberg).

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: config.h 1.163 2003/05/31 09:10:58 kls Exp $ * $Id: config.h 1.164 2003/06/06 12:28:20 kls Exp $
*/ */
#ifndef __CONFIG_H #ifndef __CONFIG_H
@ -19,8 +19,8 @@
#include "device.h" #include "device.h"
#include "tools.h" #include "tools.h"
#define VDRVERSION "1.2.0" #define VDRVERSION "1.2.1"
#define VDRVERSNUM 10200 // Version * 10000 + Major * 100 + Minor #define VDRVERSNUM 10201 // Version * 10000 + Major * 100 + Minor
#define MAXPRIORITY 99 #define MAXPRIORITY 99
#define MAXLIFETIME 99 #define MAXLIFETIME 99

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: device.c 1.44 2003/05/25 10:57:59 kls Exp $ * $Id: device.c 1.45 2003/06/08 09:19:59 kls Exp $
*/ */
#include "device.h" #include "device.h"
@ -28,7 +28,7 @@
int cDevice::numDevices = 0; int cDevice::numDevices = 0;
int cDevice::useDevice = 0; int cDevice::useDevice = 0;
int cDevice::nextCardIndex = 0; int cDevice::nextCardIndex = 0;
int cDevice::currentChannel = 0; int cDevice::currentChannel = 1;
cDevice *cDevice::device[MAXDEVICES] = { NULL }; cDevice *cDevice::device[MAXDEVICES] = { NULL };
cDevice *cDevice::primaryDevice = NULL; cDevice *cDevice::primaryDevice = NULL;

60
i18n.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: i18n.c 1.125 2003/06/01 08:49:47 kls Exp $ * $Id: i18n.c 1.128 2003/06/09 09:49:29 kls Exp $
* *
* Translations provided by: * Translations provided by:
* *
@ -222,7 +222,7 @@ const tI18nPhrase Phrases[] = {
"Entoles gia egrafes", "Entoles gia egrafes",
"Inspelningskommandon", "Inspelningskommandon",
"",// TODO "",// TODO
"",// TODO "Parancsok a felvett filmekhez",
"Ordres de gravació", "Ordres de gravació",
}, },
{ "Edit channel", { "Edit channel",
@ -733,7 +733,7 @@ const tI18nPhrase Phrases[] = {
"Epanafora", "Epanafora",
"Återställ", "Återställ",
"",//TODO "",//TODO
"",//TODO "Reset",
"Reiniciar", "Reiniciar",
}, },
// Confirmations: // Confirmations:
@ -932,7 +932,7 @@ const tI18nPhrase Phrases[] = {
"Pressione qualquer tecla para cancelar", "Pressione qualquer tecla para cancelar",
"Appuyez sur une touche pour annuler l'arrêt", "Appuyez sur une touche pour annuler l'arrêt",
"Trykk en tast for ikke å slå av", "Trykk en tast for ikke å slå av",
"Peru sammutus painamalla jotain näppäintä", "Peru sammutus painamalla mitä tahansa näppäintä",
"Dowolny przycisk zatrzyma wylaczanie", "Dowolny przycisk zatrzyma wylaczanie",
"Pulse una tecla para interrumpir apagar", "Pulse una tecla para interrumpir apagar",
"Piese ena pliktro na akirothei o termatismos", "Piese ena pliktro na akirothei o termatismos",
@ -1007,7 +1007,7 @@ const tI18nPhrase Phrases[] = {
"Pigi", "Pigi",
"Källa", "Källa",
"",//TODO "",//TODO
"",//TODO "Forrás",
"Origen", "Origen",
}, },
{ "Srate", { "Srate",
@ -1587,7 +1587,7 @@ const tI18nPhrase Phrases[] = {
"To kanali den ine diathesimo", "To kanali den ine diathesimo",
"Kanalen ej tillgänglig!", "Kanalen ej tillgänglig!",
"",//TODO "",//TODO
"",//TODO "A csatorna nem elérhetö",
"Canal no disponible!", "Canal no disponible!",
}, },
{ "Channel settings are not unique!", { "Channel settings are not unique!",
@ -1604,7 +1604,7 @@ const tI18nPhrase Phrases[] = {
"Oi rithmiseis tou kanaliou simpiptoun me allo!", "Oi rithmiseis tou kanaliou simpiptoun me allo!",
"Kanalinställningarna är ej unika!", "Kanalinställningarna är ej unika!",
"",//TODO "",//TODO
"",//TODO "A csatornabeállítások nem egyértelmüek",
"Propietats del canal duplicades!", "Propietats del canal duplicades!",
}, },
{ "Channel locked (recording)!", { "Channel locked (recording)!",
@ -1655,7 +1655,7 @@ const tI18nPhrase Phrases[] = {
"Den exoun oristei simeia gia epexsergasia", "Den exoun oristei simeia gia epexsergasia",
"Det finns inga redigeringsmärken",//TODO "Det finns inga redigeringsmärken",//TODO
"",//TODO "",//TODO
"",//TODO "A vágópont nincs kijelölve",//TODO
"No hi ha marques d'edició definides", "No hi ha marques d'edició definides",
}, },
{ "Can't start editing process!", { "Can't start editing process!",
@ -1740,7 +1740,7 @@ const tI18nPhrase Phrases[] = {
"Den mpori na aniksi to CAM menou!", "Den mpori na aniksi to CAM menou!",
"Det går inte att öppna CAM menyn!", "Det går inte att öppna CAM menyn!",
"",//TODO "",//TODO
"",//TODO "A CAM-Menü nem nyitható",
"No puc obrir el menú de la CAM!", "No puc obrir el menú de la CAM!",
}, },
{ "Can't reset CAM!", { "Can't reset CAM!",
@ -1757,7 +1757,7 @@ const tI18nPhrase Phrases[] = {
"Adinato na gini epanafora sto CAM", "Adinato na gini epanafora sto CAM",
"Kan inte återställa CAM!", "Kan inte återställa CAM!",
"",//TODO "",//TODO
"",//TODO "A CAM-Reset nem sikerült",
"No puc reiniciar la CAM!", "No puc reiniciar la CAM!",
}, },
{ "CAM has been reset", { "CAM has been reset",
@ -1774,7 +1774,7 @@ const tI18nPhrase Phrases[] = {
"Sto CAM egine apanafora", "Sto CAM egine apanafora",
"CA modulen har återställts", "CA modulen har återställts",
"",//TODO "",//TODO
"",//TODO "A CAM vissza lett állítva",
"CAM reiniciada", "CAM reiniciada",
}, },
// Setup pages: // Setup pages:
@ -2405,7 +2405,7 @@ const tI18nPhrase Phrases[] = {
"",// TODO "",// TODO
"Prioritet för direktinspelning", "Prioritet för direktinspelning",
"",// TODO "",// TODO
"",// TODO "Szünet prioritás",
"Prioritat de la pausa", "Prioritat de la pausa",
}, },
{ "Setup.Recording$Pause lifetime (d)", { "Setup.Recording$Pause lifetime (d)",
@ -2422,7 +2422,7 @@ const tI18nPhrase Phrases[] = {
"",// TODO "",// TODO
"Livstid för direktinspelning (dagar)", "Livstid för direktinspelning (dagar)",
"",// TODO "",// TODO
"",// TODO "Szünet élettartama",
"Durada de la pausa (d)", "Durada de la pausa (d)",
}, },
{ "Setup.Recording$Use episode name", { "Setup.Recording$Use episode name",
@ -2592,7 +2592,7 @@ const tI18nPhrase Phrases[] = {
"Resume ID",// TODO "Resume ID",// TODO
"Återuppta ID", "Återuppta ID",
"Resume ID",// TODO "Resume ID",// TODO
"Resume ID",// TODO "Lejátszás ID",
"ID de Continuar", "ID de Continuar",
}, },
{ "Setup.Miscellaneous$Min. event timeout (min)", { "Setup.Miscellaneous$Min. event timeout (min)",
@ -2696,7 +2696,7 @@ const tI18nPhrase Phrases[] = {
"",// TODO "",// TODO
" abcdefghijklmnopqrstuvxyzåäö0123456789-.#~", " abcdefghijklmnopqrstuvxyzåäö0123456789-.#~",
" abcdefghijklmnopqrstuvwxyz0123456789-.#~", " abcdefghijklmnopqrstuvwxyz0123456789-.#~",
" aábcdeéfghijklmnoóöpqrstuúüvwxyz0123456789-.,#~", " aábcdeéfghiíjklmnoóöpqrstuúüvwxyz0123456789-.,#~",
" aàbcçdeéèfghiíjklmnoòpqrstuúvwxyz0123456789-.,#~_·", " aàbcçdeéèfghiíjklmnoòpqrstuúvwxyz0123456789-.,#~_·",
}, },
// Learning keys: // Learning keys:
@ -2742,7 +2742,7 @@ const tI18nPhrase Phrases[] = {
"Pressione qualquer tecla do telecomando", "Pressione qualquer tecla do telecomando",
"Appuyer sur une touche de la télécommande", "Appuyer sur une touche de la télécommande",
"Trykk en av tastene på fjernkontrollen", "Trykk en av tastene på fjernkontrollen",
"Paina jotain kaukosäätimen näppäintä", "Paina mitä tahansa kaukosäätimen näppäintä",
"Nacisnac klawisz pilota", "Nacisnac klawisz pilota",
"Pulse una tecla en el telemando", "Pulse una tecla en el telemando",
"Piese ena pliktro sto tilexiristirio", "Piese ena pliktro sto tilexiristirio",
@ -2901,7 +2901,7 @@ const tI18nPhrase Phrases[] = {
"Pata 'Menou' gia prosperasi aftou tou pliktrou", "Pata 'Menou' gia prosperasi aftou tou pliktrou",
"Tryck 'Meny' för att hoppa över denna knapp.", "Tryck 'Meny' för att hoppa över denna knapp.",
"",// TODO "",// TODO
"",// TODO "A Menü gombot nyomni ennek a gombnak a kihagyásához",
"Premeu 'Menú' per obviar aquesta tecla", "Premeu 'Menú' per obviar aquesta tecla",
}, },
{ "Phase 3: Saving key codes", { "Phase 3: Saving key codes",
@ -3140,7 +3140,7 @@ const tI18nPhrase Phrases[] = {
"Anametadosi", "Anametadosi",
"Spela upp", "Spela upp",
"",// TODO "",// TODO
"",// TODO "Lejátszás",
"Reproduir", "Reproduir",
}, },
{ "Pause", { "Pause",
@ -3157,7 +3157,7 @@ const tI18nPhrase Phrases[] = {
"Dialima", "Dialima",
"Pausa", "Pausa",
"",// TODO "",// TODO
"",// TODO "Szünet",
"Pausa", "Pausa",
}, },
{ "Stop", { "Stop",
@ -3174,7 +3174,7 @@ const tI18nPhrase Phrases[] = {
"Terma", "Terma",
"Stoppa", "Stoppa",
"",// TODO "",// TODO
"",// TODO "Stop",
"Aturar", "Aturar",
}, },
{ "Record", { "Record",
@ -3191,7 +3191,7 @@ const tI18nPhrase Phrases[] = {
"Egrafi", "Egrafi",
"Spela in", "Spela in",
"",// TODO "",// TODO
"",// TODO "Felvenni",
"Gravar", "Gravar",
}, },
{ "FastFwd", { "FastFwd",
@ -3208,7 +3208,7 @@ const tI18nPhrase Phrases[] = {
"Girisma mprosta", "Girisma mprosta",
"Snabbspolning framåt", "Snabbspolning framåt",
"",// TODO "",// TODO
"",// TODO "Elöre pörgetni",
"Endavant ràpidament", "Endavant ràpidament",
}, },
{ "FastRew", { "FastRew",
@ -3225,7 +3225,7 @@ const tI18nPhrase Phrases[] = {
"Girisma piso", "Girisma piso",
"Snabbspolning bakåt", "Snabbspolning bakåt",
"",// TODO "",// TODO
"",// TODO "Vissza pörgetni",
"Enrera ràpidament", "Enrera ràpidament",
}, },
{ "Power", { "Power",
@ -3259,7 +3259,7 @@ const tI18nPhrase Phrases[] = {
"Kanali+", "Kanali+",
"Kanal+", "Kanal+",
"",// TODO "",// TODO
"",// TODO "Csatorna+",
"Canal +", "Canal +",
}, },
{ "Channel-", { "Channel-",
@ -3276,7 +3276,7 @@ const tI18nPhrase Phrases[] = {
"Kanali-", "Kanali-",
"Kanal-", "Kanal-",
"",// TODO "",// TODO
"",// TODO "Csatorna-",
"Canal -", "Canal -",
}, },
{ "Volume+", { "Volume+",
@ -3379,7 +3379,7 @@ const tI18nPhrase Phrases[] = {
"klisto", "klisto",
"av", "av",
"",// TODO "",// TODO
"",// TODO "ki",
"off", "off",
}, },
{ "none", { "none",
@ -3396,7 +3396,7 @@ const tI18nPhrase Phrases[] = {
"kanena", "kanena",
"ingen", "ingen",
"",// TODO "",// TODO
"",// TODO "semmi",
"cap", "cap",
}, },
{ "auto", { "auto",
@ -3413,7 +3413,7 @@ const tI18nPhrase Phrases[] = {
"aftomato", "aftomato",
"automatisk", "automatisk",
"",// TODO "",// TODO
"",// TODO "auto",
"auto", "auto",
}, },
{ "top", { "top",
@ -3685,7 +3685,7 @@ const tI18nPhrase Phrases[] = {
"",// TODO "",// TODO
"Pausar direktinspelningen", "Pausar direktinspelningen",
"",// TODO "",// TODO
"",// TODO "Az élö adás megállítva...",
"Pausa d'emissió en directe...", "Pausa d'emissió en directe...",
}, },
{ "This plugin has no setup parameters!", { "This plugin has no setup parameters!",
@ -3702,7 +3702,7 @@ const tI18nPhrase Phrases[] = {
"Afto to plugin den exi parametrous", "Afto to plugin den exi parametrous",
"Den här modulen har inga parametrar", "Den här modulen har inga parametrar",
"",// TODO "",// TODO
"",// TODO "Ennek a plugin-nak nincs setup-parametere!",
"Aquest plugin no admet configuració!", "Aquest plugin no admet configuració!",
}, },
{ NULL } { NULL }

74
menu.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: menu.c 1.253 2003/05/30 09:53:57 kls Exp $ * $Id: menu.c 1.256 2003/06/07 12:31:57 kls Exp $
*/ */
#include "menu.h" #include "menu.h"
@ -615,6 +615,7 @@ eOSState cMenuEditChannel::ProcessKey(eKeys Key)
if (channel) { if (channel) {
*channel = data; *channel = data;
isyslog("edited channel %d %s", channel->Number(), data.ToText()); isyslog("edited channel %d %s", channel->Number(), data.ToText());
Timers.Save();
state = osBack; state = osBack;
} }
else { else {
@ -834,21 +835,21 @@ private:
cTimer *timer; cTimer *timer;
cTimer data; cTimer data;
int channel; int channel;
bool deleteIfCancelled; bool addIfConfirmed;
cMenuEditDateItem *firstday; cMenuEditDateItem *firstday;
void SetFirstDayItem(void); void SetFirstDayItem(void);
public: public:
cMenuEditTimer(int Index, bool New = false); cMenuEditTimer(cTimer *Timer, bool New = false);
virtual ~cMenuEditTimer(); virtual ~cMenuEditTimer();
virtual eOSState ProcessKey(eKeys Key); virtual eOSState ProcessKey(eKeys Key);
}; };
cMenuEditTimer::cMenuEditTimer(int Index, bool New) cMenuEditTimer::cMenuEditTimer(cTimer *Timer, bool New)
:cOsdMenu(tr("Edit timer"), 12) :cOsdMenu(tr("Edit timer"), 12)
{ {
firstday = NULL; firstday = NULL;
timer = Timers.Get(Index); timer = Timer;
deleteIfCancelled = New; addIfConfirmed = New;
if (timer) { if (timer) {
data = *timer; data = *timer;
if (New) if (New)
@ -869,12 +870,8 @@ cMenuEditTimer::cMenuEditTimer(int Index, bool New)
cMenuEditTimer::~cMenuEditTimer() cMenuEditTimer::~cMenuEditTimer()
{ {
if (timer && deleteIfCancelled) { if (timer && addIfConfirmed)
int Index = timer->Index(); delete timer; // apparently it wasn't confirmed
Timers.Del(timer);
Timers.Save();
isyslog("timer %d deleted", Index + 1);
}
Timers.DecBeingEdited(); Timers.DecBeingEdited();
} }
@ -908,14 +905,18 @@ eOSState cMenuEditTimer::ProcessKey(eKeys Key)
} }
if (!*data.file) if (!*data.file)
strcpy(data.file, data.Channel()->Name()); strcpy(data.file, data.Channel()->Name());
if (timer && memcmp(timer, &data, sizeof(data)) != 0) { if (timer) {
if (memcmp(timer, &data, sizeof(data)) != 0) {
*timer = data; *timer = data;
if (timer->active) if (timer->active)
timer->active = 1; // allows external programs to mark active timers with values > 1 and recognize if the user has modified them timer->active = 1; // allows external programs to mark active timers with values > 1 and recognize if the user has modified them
Timers.Save();
isyslog("timer %d modified (%s)", timer->Index() + 1, timer->active ? "active" : "inactive");
} }
deleteIfCancelled = false; if (addIfConfirmed)
Timers.Add(timer);
Timers.Save();
isyslog("timer %d %s (%s)", timer->Index() + 1, addIfConfirmed ? "added" : "modified", timer->active ? "active" : "inactive");
addIfConfirmed = false;
}
} }
return osBack; return osBack;
case kRed: case kRed:
@ -1033,19 +1034,14 @@ eOSState cMenuTimers::Edit(void)
if (HasSubMenu() || Count() == 0) if (HasSubMenu() || Count() == 0)
return osContinue; return osContinue;
isyslog("editing timer %d", CurrentTimer()->Index() + 1); isyslog("editing timer %d", CurrentTimer()->Index() + 1);
return AddSubMenu(new cMenuEditTimer(CurrentTimer()->Index())); return AddSubMenu(new cMenuEditTimer(CurrentTimer()));
} }
eOSState cMenuTimers::New(void) eOSState cMenuTimers::New(void)
{ {
if (HasSubMenu()) if (HasSubMenu())
return osContinue; return osContinue;
cTimer *timer = new cTimer; return AddSubMenu(new cMenuEditTimer(new cTimer, true));
Timers.Add(timer);
Add(new cMenuTimerItem(timer), true);
Timers.Save();
isyslog("timer %d added", timer->Index() + 1);
return AddSubMenu(new cMenuEditTimer(timer->Index(), true));
} }
eOSState cMenuTimers::Delete(void) eOSState cMenuTimers::Delete(void)
@ -1094,8 +1090,7 @@ eOSState cMenuTimers::Summary(void)
eOSState cMenuTimers::ProcessKey(eKeys Key) eOSState cMenuTimers::ProcessKey(eKeys Key)
{ {
cTimer *ti = HasSubMenu() ? CurrentTimer() : NULL; int TimerNumber = HasSubMenu() ? Count() : -1;
int TimerNumber = ti ? ti->Index() : -1;
eOSState state = cOsdMenu::ProcessKey(Key); eOSState state = cOsdMenu::ProcessKey(Key);
if (state == osUnknown) { if (state == osUnknown) {
@ -1112,9 +1107,9 @@ eOSState cMenuTimers::ProcessKey(eKeys Key)
default: break; default: break;
} }
} }
if (TimerNumber >= 0 && !HasSubMenu() && !Timers.Get(TimerNumber)) { if (TimerNumber >= 0 && !HasSubMenu() && Timers.Get(TimerNumber)) {
// a newly created timer wasn't confirmed with Ok // a newly created timer was confirmed with Ok
cOsdMenu::Del(Current()); Add(new cMenuTimerItem(Timers.Get(TimerNumber)), true);
Display(); Display();
} }
return state; return state;
@ -1274,16 +1269,11 @@ eOSState cMenuWhatsOn::Record(void)
if (item) { if (item) {
cTimer *timer = new cTimer(item->eventInfo); cTimer *timer = new cTimer(item->eventInfo);
cTimer *t = Timers.GetTimer(timer); cTimer *t = Timers.GetTimer(timer);
if (!t) { if (t) {
Timers.Add(timer);
Timers.Save();
isyslog("timer %d added", timer->Index() + 1);
}
else {
delete timer; delete timer;
timer = t; timer = t;
} }
return AddSubMenu(new cMenuEditTimer(timer->Index(), !t)); return AddSubMenu(new cMenuEditTimer(timer, !t));
} }
return osContinue; return osContinue;
} }
@ -1408,16 +1398,11 @@ eOSState cMenuSchedule::Record(void)
if (item) { if (item) {
cTimer *timer = new cTimer(item->eventInfo); cTimer *timer = new cTimer(item->eventInfo);
cTimer *t = Timers.GetTimer(timer); cTimer *t = Timers.GetTimer(timer);
if (!t) { if (t) {
Timers.Add(timer);
Timers.Save();
isyslog("timer %d added", timer->Index() + 1);
}
else {
delete timer; delete timer;
timer = t; timer = t;
} }
return AddSubMenu(new cMenuEditTimer(timer->Index(), !t)); return AddSubMenu(new cMenuEditTimer(timer, !t));
} }
return osContinue; return osContinue;
} }
@ -2124,8 +2109,9 @@ cMenuSetupCICAM::cMenuSetupCICAM(void)
for (int d = 0; d < cDevice::NumDevices(); d++) { for (int d = 0; d < cDevice::NumDevices(); d++) {
for (int i = 0; i < 2; i++) { for (int i = 0; i < 2; i++) {
char buffer[32]; char buffer[32];
snprintf(buffer, sizeof(buffer), "%s%d %d", tr("Setup.CICAM$CICAM DVB"), d + 1, i + 1); int CardIndex = cDevice::GetDevice(d)->CardIndex();
Add(new cMenuEditCaItem(buffer, &data.CaCaps[d][i])); snprintf(buffer, sizeof(buffer), "%s%d %d", tr("Setup.CICAM$CICAM DVB"), CardIndex + 1, i + 1);
Add(new cMenuEditCaItem(buffer, &data.CaCaps[CardIndex][i]));
} }
} }
SetHelpKeys(); SetHelpKeys();

14
osd.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: osd.c 1.42 2003/05/03 14:46:38 kls Exp $ * $Id: osd.c 1.43 2003/06/04 16:13:00 kls Exp $
*/ */
#include "osd.h" #include "osd.h"
@ -99,6 +99,8 @@ void cOsd::Open(int w, int h)
//XXX //XXX
osd = OpenRaw(x, y); osd = OpenRaw(x, y);
//XXX TODO this should be transferred to the places where the individual windows are requested (there's too much detailed knowledge here!) //XXX TODO this should be transferred to the places where the individual windows are requested (there's too much detailed knowledge here!)
if (!osd)
return;
if (h / lineHeight == 5) { //XXX channel display if (h / lineHeight == 5) { //XXX channel display
osd->Create(0, 0, w, h, 4); osd->Create(0, 0, w, h, 4);
} }
@ -145,6 +147,7 @@ void cOsd::Clear(void)
Fill(0, 0, cols, rows, clrBackground); Fill(0, 0, cols, rows, clrBackground);
refresh(); refresh();
#else #else
if (osd)
osd->Clear(); osd->Clear();
#endif #endif
} }
@ -161,6 +164,7 @@ void cOsd::Fill(int x, int y, int w, int h, eDvbColor color)
} }
wsyncup(window); // shouldn't be necessary because of 'syncok()', but w/o it doesn't work wsyncup(window); // shouldn't be necessary because of 'syncok()', but w/o it doesn't work
#else #else
if (osd)
osd->Fill(x * charWidth, y * lineHeight, (x + w) * charWidth - 1, (y + h) * lineHeight - 1, color); osd->Fill(x * charWidth, y * lineHeight, (x + w) * charWidth - 1, (y + h) * lineHeight - 1, color);
#endif #endif
} }
@ -168,6 +172,7 @@ void cOsd::Fill(int x, int y, int w, int h, eDvbColor color)
void cOsd::SetBitmap(int x, int y, const cBitmap &Bitmap) void cOsd::SetBitmap(int x, int y, const cBitmap &Bitmap)
{ {
#ifndef DEBUG_OSD #ifndef DEBUG_OSD
if (osd)
osd->SetBitmap(x, y, Bitmap); osd->SetBitmap(x, y, Bitmap);
#endif #endif
} }
@ -200,7 +205,7 @@ int cOsd::Width(unsigned char c)
#ifdef DEBUG_OSD #ifdef DEBUG_OSD
return 1; return 1;
#else #else
return osd->Width(c); return osd ? osd->Width(c) : 1;
#endif #endif
} }
@ -209,7 +214,7 @@ int cOsd::WidthInCells(const char *s)
#ifdef DEBUG_OSD #ifdef DEBUG_OSD
return strlen(s); return strlen(s);
#else #else
return (osd->Width(s) + charWidth - 1) / charWidth; return osd ? (osd->Width(s) + charWidth - 1) / charWidth : strlen(s);
#endif #endif
} }
@ -218,7 +223,7 @@ eDvbFont cOsd::SetFont(eDvbFont Font)
#ifdef DEBUG_OSD #ifdef DEBUG_OSD
return Font; return Font;
#else #else
return osd->SetFont(Font); return osd ? osd->SetFont(Font) : Font;
#endif #endif
} }
@ -231,6 +236,7 @@ void cOsd::Text(int x, int y, const char *s, eDvbColor colorFg, eDvbColor colorB
wmove(window, y, x); // ncurses wants 'y' before 'x'! wmove(window, y, x); // ncurses wants 'y' before 'x'!
waddnstr(window, s, cols - x); waddnstr(window, s, cols - x);
#else #else
if (osd)
osd->Text(x * charWidth, y * lineHeight, s, colorFg, colorBg); osd->Text(x * charWidth, y * lineHeight, s, colorFg, colorBg);
#endif #endif
} }

View File

@ -10,7 +10,7 @@
* and interact with the Video Disk Recorder - or write a full featured * and interact with the Video Disk Recorder - or write a full featured
* graphical interface that sits on top of an SVDRP connection. * graphical interface that sits on top of an SVDRP connection.
* *
* $Id: svdrp.c 1.51 2003/04/27 14:21:07 kls Exp $ * $Id: svdrp.c 1.52 2003/06/06 13:30:52 kls Exp $
*/ */
#include "svdrp.h" #include "svdrp.h"
@ -790,6 +790,7 @@ void cSVDRP::CmdMODC(const char *Option)
Channels.ReNumber(); Channels.ReNumber();
Channels.Save(); Channels.Save();
isyslog("modifed channel %d %s", channel->Number(), channel->ToText()); isyslog("modifed channel %d %s", channel->Number(), channel->ToText());
Timers.Save();
Reply(250, "%d %s", channel->Number(), channel->ToText()); Reply(250, "%d %s", channel->Number(), channel->ToText());
} }
else else