Sisyphus repository
Last update: 1 october 2023 | SRPMs: 18631 | Visits: 37840223
en ru br
ALT Linux repos
S:2.2.0-alt12
D:1.6.0-alt1
3.0: 1.3.15-alt1

Group :: Video
RPM: vdr

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs and FR  Repocop 

Patch: timercmd-0.1_1.6.0.diff
Download


diff -Nru vdr-1.6.0/config.c vdr-1.6.0-patched/config.c
--- vdr-1.6.0/config.c	2008-02-17 14:39:00.000000000 +0100
+++ vdr-1.6.0-patched/config.c	2008-04-29 22:55:41.000000000 +0200
@@ -125,6 +125,7 @@
 
 cCommands Commands;
 cCommands RecordingCommands;
+cCommands TimerCommands;
 
 // --- cSVDRPhosts -----------------------------------------------------------
 
diff -Nru vdr-1.6.0/config.h vdr-1.6.0-patched/config.h
--- vdr-1.6.0/config.h	2008-03-23 11:26:10.000000000 +0100
+++ vdr-1.6.0-patched/config.h	2008-04-29 22:55:41.000000000 +0200
@@ -168,6 +168,7 @@
 
 extern cCommands Commands;
 extern cCommands RecordingCommands;
+extern cCommands TimerCommands;
 extern cSVDRPhosts SVDRPhosts;
 
 class cSetupLine : public cListObject {
diff -Nru vdr-1.6.0/menu.c vdr-1.6.0-patched/menu.c
--- vdr-1.6.0/menu.c	2008-03-16 12:15:28.000000000 +0100
+++ vdr-1.6.0-patched/menu.c	2008-04-29 22:55:41.000000000 +0200
@@ -772,8 +772,20 @@
   return state;
 }
 
-// --- cMenuTimerItem --------------------------------------------------------
+// --- cMenuCommands ---------------------------------------------------------
+// declaration shifted so it can be used in cMenuTimers
+class cMenuCommands : public cOsdMenu {
+private:
+  cCommands *commands;
+  char *parameters;
+  eOSState Execute(void);
+public:
+  cMenuCommands(const char *Title, cCommands *Commands, const char *Parameters = NULL);
+  virtual ~cMenuCommands();
+  virtual eOSState ProcessKey(eKeys Key);
+  };
 
+// --- cMenuTimerItem --------------------------------------------------------
 class cMenuTimerItem : public cOsdItem {
 private:
   cTimer *timer;
@@ -836,6 +848,7 @@
   eOSState OnOff(void);
   eOSState Info(void);
   cTimer *CurrentTimer(void);
+  eOSState Commands(eKeys Key = kNone);
   void SetHelpKeys(void);
 public:
   cMenuTimers(void);
@@ -952,6 +965,53 @@
   return osContinue;
 }
 
+#define CHECK_2PTR_NULL(x_,y_) ((x_)? ((y_)? y_:""):"")
+
+eOSState cMenuTimers::Commands(eKeys Key)
+{
+  if (HasSubMenu() || Count() == 0)
+     return osContinue;
+  cTimer *ti = CurrentTimer();
+  if (ti) {
+     char *parameter = NULL;
+     const cEvent *pEvent = ti->Event();
+     int iRecNumber=0;
+
+     if(!pEvent) {
+        Timers.SetEvents();
+        pEvent = ti->Event();
+     }
+     if(pEvent) {
+// create a dummy recording to get the real filename
+        cRecording *rc_dummy = new cRecording(ti, pEvent);
+        Recordings.Load();
+        cRecording *rc = Recordings.GetByName(rc_dummy->FileName());
+     
+        delete rc_dummy;
+        if(rc)
+           iRecNumber=rc->Index() + 1;
+     }
+//Parameter format TimerNumber 'ChannelId' Start Stop 'Titel' 'Subtitel' 'file' RecNumer
+//                 1           2           3     4    5       6          7      8
+     asprintf(&parameter, "%d '%s' %d %d '%s' '%s' '%s' %d", ti->Index(), 
+                                                             *ti->Channel()->GetChannelID().ToString(),
+                                                             (int)ti->StartTime(),
+                                                             (int)ti->StopTime(),
+                                                             CHECK_2PTR_NULL(pEvent, pEvent->Title()),
+                                                             CHECK_2PTR_NULL(pEvent, pEvent->ShortText()),
+                                                             ti->File(),
+                                                             iRecNumber);
+     isyslog("timercmd: %s", parameter);
+     cMenuCommands *menu;
+     eOSState state = AddSubMenu(menu = new cMenuCommands(tr("Timer commands"), &TimerCommands, parameter));
+     free(parameter);
+     if (Key != kNone)
+        state = menu->ProcessKey(Key);
+     return state;
+     }
+  return osContinue;
+}
+
 eOSState cMenuTimers::ProcessKey(eKeys Key)
 {
   int TimerNumber = HasSubMenu() ? Count() : -1;
@@ -966,6 +1026,8 @@
        case kInfo:
        case kBlue:   return Info();
                      break;
+       case k1...k9: return Commands(Key);
+       case k0:      return (TimerCommands.Count()? Commands():osContinue);
        default: break;
        }
      }
@@ -1548,17 +1610,6 @@
 
 // --- cMenuCommands ---------------------------------------------------------
 
-class cMenuCommands : public cOsdMenu {
-private:
-  cCommands *commands;
-  char *parameters;
-  eOSState Execute(void);
-public:
-  cMenuCommands(const char *Title, cCommands *Commands, const char *Parameters = NULL);
-  virtual ~cMenuCommands();
-  virtual eOSState ProcessKey(eKeys Key);
-  };
-
 cMenuCommands::cMenuCommands(const char *Title, cCommands *Commands, const char *Parameters)
 :cOsdMenu(Title)
 {
diff -Nru vdr-1.6.0/po/de_DE.po vdr-1.6.0-patched/po/de_DE.po
--- vdr-1.6.0/po/de_DE.po	2008-03-23 11:31:29.000000000 +0100
+++ vdr-1.6.0-patched/po/de_DE.po	2008-04-29 22:55:41.000000000 +0200
@@ -381,6 +381,9 @@
 msgid "Timer still recording - really delete?"
 msgstr "Timer zeichnet auf - trotzdem löschen?"
 
+msgid "Timer commands"
+msgstr "Befehle für Timer"
+
 msgid "Event"
 msgstr "Sendung"
 
diff -Nru vdr-1.6.0/vdr.c vdr-1.6.0-patched/vdr.c
--- vdr-1.6.0/vdr.c	2008-03-14 14:22:39.000000000 +0100
+++ vdr-1.6.0-patched/vdr.c	2008-04-29 22:55:41.000000000 +0200
@@ -569,6 +569,7 @@
         Timers.Load(AddDirectory(ConfigDirectory, "timers.conf")) &&
         Commands.Load(AddDirectory(ConfigDirectory, "commands.conf"), true) &&
         RecordingCommands.Load(AddDirectory(ConfigDirectory, "reccmds.conf"), true) &&
+        TimerCommands.Load(AddDirectory(ConfigDirectory, "timercmds.conf"), true) &&
         SVDRPhosts.Load(AddDirectory(ConfigDirectory, "svdrphosts.conf"), true) &&
         Keys.Load(AddDirectory(ConfigDirectory, "remote.conf")) &&
         KeyMacros.Load(AddDirectory(ConfigDirectory, "keymacros.conf"), true)
 
design & coding: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
current maintainer: Michael Shigorin