Now checking whether timers or channels are currently being edited via the menu before making changes through SVDRP

This commit is contained in:
Klaus Schmidinger 2005-07-31 14:34:38 +02:00
parent d6b8a28329
commit 068e17303c
3 changed files with 93 additions and 68 deletions

View File

@ -1277,6 +1277,8 @@ Andreas Brugger <brougs78@gmx.net>
for reporting a possible crash when pausing live video and the recording was
unable to start, maybe because there was no lock on the device
for reporting the missing Euro sign in iso8859-1
for reporting a problem with making changes to timers through SVDRP while they
are being edited via the menu
Dino Ravnic <dino.ravnic@fer.hr>
for fixing some characters in the iso8859-2 font file

View File

@ -3650,3 +3650,6 @@ Video Disk Recorder Revision History
PUTE SVDRP command (thanks to Olaf Titz for reporting this one).
- Added the command line options '--lirc', '--rcu' and '--no-kbd' to allow setting
the remote control at runtime (based on a patch by Darren Salt).
- Now checking whether timers or channels are currently being edited via the menu
before making changes through SVDRP (thanks to Andreas Brugger for reporting a
problem with this).

22
svdrp.c
View File

@ -10,7 +10,7 @@
* and interact with the Video Disk Recorder - or write a full featured
* graphical interface that sits on top of an SVDRP connection.
*
* $Id: svdrp.c 1.72 2005/05/26 09:59:09 kls Exp $
* $Id: svdrp.c 1.73 2005/07/31 14:31:45 kls Exp $
*/
#include "svdrp.h"
@ -476,6 +476,7 @@ void cSVDRP::CmdDELC(const char *Option)
{
if (*Option) {
if (isnumber(Option)) {
if (!Channels.BeingEdited()) {
cChannel *channel = Channels.GetByNumber(strtol(Option, NULL, 10));
if (channel) {
for (cTimer *timer = Timers.First(); timer; timer = Timers.Next(timer)) {
@ -493,6 +494,9 @@ void cSVDRP::CmdDELC(const char *Option)
else
Reply(501, "Channel \"%s\" not defined", Option);
}
else
Reply(550, "Channels are being edited - try again later");
}
else
Reply(501, "Error in channel number \"%s\"", Option);
}
@ -532,6 +536,7 @@ void cSVDRP::CmdDELT(const char *Option)
{
if (*Option) {
if (isnumber(Option)) {
if (!Timers.BeingEdited()) {
cTimer *timer = Timers.Get(strtol(Option, NULL, 10) - 1);
if (timer) {
if (!timer->Recording()) {
@ -546,6 +551,9 @@ void cSVDRP::CmdDELT(const char *Option)
else
Reply(501, "Timer \"%s\" not defined", Option);
}
else
Reply(550, "Timers are being edited - try again later");
}
else
Reply(501, "Error in timer number \"%s\"", Option);
}
@ -880,6 +888,7 @@ void cSVDRP::CmdMODC(const char *Option)
int n = strtol(Option, &tail, 10);
if (tail && tail != Option) {
tail = skipspace(tail);
if (!Channels.BeingEdited()) {
cChannel *channel = Channels.GetByNumber(n);
if (channel) {
cChannel ch;
@ -900,6 +909,9 @@ void cSVDRP::CmdMODC(const char *Option)
else
Reply(501, "Channel \"%d\" not defined", n);
}
else
Reply(550, "Channels are being edited - try again later");
}
else
Reply(501, "Error in channel number");
}
@ -914,6 +926,7 @@ void cSVDRP::CmdMODT(const char *Option)
int n = strtol(Option, &tail, 10);
if (tail && tail != Option) {
tail = skipspace(tail);
if (!Timers.BeingEdited()) {
cTimer *timer = Timers.Get(n - 1);
if (timer) {
cTimer t = *timer;
@ -933,6 +946,9 @@ void cSVDRP::CmdMODT(const char *Option)
else
Reply(501, "Timer \"%d\" not defined", n);
}
else
Reply(550, "Timers are being edited - try again later");
}
else
Reply(501, "Error in timer number");
}
@ -1054,6 +1070,7 @@ void cSVDRP::CmdUPDT(const char *Option)
if (*Option) {
cTimer *timer = new cTimer;
if (timer->Parse(Option)) {
if (!Timers.BeingEdited()) {
cTimer *t = Timers.GetTimer(timer);
if (t) {
t->Parse(Option);
@ -1069,6 +1086,9 @@ void cSVDRP::CmdUPDT(const char *Option)
Reply(250, "%d %s", timer->Index() + 1, *timer->ToText());
return;
}
else
Reply(550, "Timers are being edited - try again later");
}
else
Reply(501, "Error in timer settings");
delete timer;