Dear visitor, welcome to VDR Portal. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.
IMHO wäre es nicht verkehrt wenn du dich auch mal mit Klaus absprichst, wie er sich sowas vorstellen kann. Nur ein Patch, der zeitnah in den VDR übernommen wird, ist ein guter Patch.

Ist mir aufgefallen. Hast aber Recht. Prinzipiell könnte Klaus bereits jetzt Stellung zu dieser ersten Änderung nehmen.
Eigentlich ist die Diskussion hier nur eine Folge eines von vielen Problemen, die dadurch auftreten, dass der VDR die Trenner zwar unterstützt, aber über keine eingebaute Funktion ändern kann.
Neben der Änderung über SVDRP wäre nämlich meiner Meinung nach auch Ändern via OSD ein wichtiger Punkt. Die Dinger sollten dort auswählbar und markierbar sein, dass man sie wie Kanäle schieben kann.
Soll heißen: Mehr als eine Favoritenliste? Also weiterhin nach Sparten sortierbar?
Soll heißen: Mehr als eine Favoritenliste? Also weiterhin nach Sparten sortierbar?
Moin!
Soll heißen: Mehr als eine Favoritenliste? Also weiterhin nach Sparten sortierbar?
Einfach mal abwarten, bis 2.0 veröffentlicht wurde. Vorher wird da sicherlich nicht viel drüber nachgedacht werden.
@kls:
Ok, dann warte ich ab bzw. schau mal, was mir da so in Richtung Favoritenliste einfällt. Vielleicht kann ich ja da zuarbeiten.
Ich denke, der kleine Patch tut nicht weh und hilft, wenn man eine Kanalliste von extern neu einpflegt.

, dann wären jetzt Trenner Algos einzupflegen umsonst.|
|
Source code |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
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)) {
if (timer->Channel() == channel) {
Reply(550, "Channel \"%s\" is in use by timer %d", Option, timer->Index() + 1);
return;
}
}
int CurrentChannelNr = cDevice::CurrentChannel();
cChannel *CurrentChannel = Channels.GetByNumber(CurrentChannelNr);
if (CurrentChannel && channel == CurrentChannel) {
int n = Channels.GetNextNormal(CurrentChannel->Index());
if (n < 0)
n = Channels.GetPrevNormal(CurrentChannel->Index());
CurrentChannel = Channels.Get(n);
CurrentChannelNr = 0; // triggers channel switch below
}
Channels.Del(channel);
Channels.ReNumber();
Channels.SetModified(true);
isyslog("channel %s deleted", Option);
if (CurrentChannel && CurrentChannel->Number() != CurrentChannelNr) {
if (!cDevice::PrimaryDevice()->Replaying() || cDevice::PrimaryDevice()->Transferring())
Channels.SwitchTo(CurrentChannel->Number());
else
cDevice::SetCurrentChannel(CurrentChannel);
}
Reply(250, "Channel \"%s\" deleted", 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);
}
else
Reply(501, "Missing channel number");
}
|


|
|
Source code |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
diff --git a/svdrp.c b/svdrp.c
index 01366dd..794e6ff 100644
--- a/svdrp.c
+++ b/svdrp.c
@@ -614,9 +614,24 @@ void cSVDRP::CmdCLRE(const char *Option)
void cSVDRP::CmdDELC(const char *Option)
{
if (*Option) {
- if (isnumber(Option)) {
+ if (isnumber(Option) || (Option[0] == ':')) {
if (!Channels.BeingEdited()) {
- cChannel *channel = Channels.GetByNumber(strtol(Option, NULL, 10));
+ cChannel *channel = NULL;
+ if (isnumber(Option))
+ channel = Channels.GetByNumber(strtol(Option, NULL, 10));
+ else if (Option[0] == ':') {
+ int groupNr = -1;
+ do {
+ groupNr = Channels.GetNextGroup(groupNr);
+ if (groupNr < 0)
+ break;
+ cChannel *c = Channels.Get(groupNr);
+ if (c && c->GroupSep() && (strcmp(c->Name(), Option + 1) == 0)) {
+ channel = c;
+ break;
+ }
+ } while (true);
+ }
if (channel) {
for (cTimer *timer = Timers.First(); timer; timer = Timers.Next(timer)) {
if (timer->Channel() == channel) {
@@ -655,7 +670,7 @@ void cSVDRP::CmdDELC(const char *Option)
Reply(501, "Error in channel number \"%s\"", Option);
}
else
- Reply(501, "Missing channel number");
+ Reply(501, "Missing channel number or group separator");
}
void cSVDRP::CmdDELR(const char *Option)
|
This post has been edited 1 times, last edit by "rudirabbit" (Apr 27th 2012, 8:06pm)
