summaryrefslogtreecommitdiff
path: root/status.c
diff options
context:
space:
mode:
authorAndreas Mair <amair.sob@googlemail.com>2007-02-14 12:24:25 +0100
committerAndreas Mair <amair.sob@googlemail.com>2007-02-14 12:24:25 +0100
commit2ced4d35c533969fdb0ee6fa963a2fef26c50b79 (patch)
treeb49facd42724fda2ad7c294479373d8f0f08a527 /status.c
downloadvdr-plugin-skinenigmang-2ced4d35c533969fdb0ee6fa963a2fef26c50b79.tar.gz
vdr-plugin-skinenigmang-2ced4d35c533969fdb0ee6fa963a2fef26c50b79.tar.bz2
2007-02-14: Version 0.0.1v0.0.1
- Initial release.
Diffstat (limited to 'status.c')
-rw-r--r--status.c116
1 files changed, 116 insertions, 0 deletions
diff --git a/status.c b/status.c
new file mode 100644
index 0000000..749aea2
--- /dev/null
+++ b/status.c
@@ -0,0 +1,116 @@
+/*
+ * status.c: The 'EnigmaNG' VDR skin.
+ *
+ * See the README file for copyright information and how to reach the author.
+ *
+ */
+
+#include "common.h"
+#include "status.h"
+#include <vdr/timers.h>
+#include <vdr/plugin.h>
+#include <vdr/menu.h>
+
+const char *ReplayNames[7] =
+ { "", "recordings", "mp3", "mplayer", "dvd", "vcd", "image" };
+
+cEnigmaStatus EnigmaStatus;
+
+cEnigmaStatus::cEnigmaStatus(void) : mReplayMode(replayNone),
+ mReplayIsLoop(false),
+ mReplayIsShuffle(false)
+{}
+
+void cEnigmaStatus::Replaying(const cControl * /*Control */ , const char *Name,
+ const char *FileName, bool On)
+{
+ debug("cEnigmaStatus::Replaying(%s)\n", Name);
+
+ if (Name != NULL) {
+ mReplayMode = replayMPlayer;
+ if (strlen(Name) > 6 && Name[0] == '[' && Name[3] == ']' && Name[5] == '(') {
+ int i;
+ for (i = 6; Name[i]; ++i) {
+ if (Name[i] == ' ' && Name[i - 1] == ')')
+ break;
+ }
+ if (Name[i]) { // replaying mp3
+ mReplayMode = replayMP3;
+ mReplayIsLoop = Name[1] == 'L';
+ mReplayIsShuffle = Name[2] == 'S';
+ }
+ } else if (FileName ? Recordings.GetByName(FileName) : NULL) {
+ mReplayMode = replayNormal;
+ } else if (strcmp(Name, "DVD") == 0)
+ mReplayMode = replayDVD;
+ else if (strcmp(Name, "VCD") == 0)
+ mReplayMode = replayVCD;
+ else if (access(Name, F_OK) == 0)
+ mReplayMode = replayMPlayer;
+ else if (strncmp(Name, "[image]", 7) == 0)
+ mReplayMode = replayImage;
+ else if (strlen(Name) > 7) {
+ int i, n;
+ for (i = 0, n = 0; Name[i]; ++i) {
+ if (Name[i] == ' ' && Name[i - 1] == ',' && ++n == 4)
+ break;
+ }
+ if (Name[i]) { // replaying DVD
+ mReplayMode = replayDVD;
+ }
+ }
+ } else {
+ mReplayMode = replayNone;
+ mReplayIsLoop = false;
+ mReplayIsShuffle = false;
+ }
+}
+
+void cEnigmaStatus::Recording(const cDevice * Device, const char *Name, const char *FileName, bool On)
+{
+}
+
+void cEnigmaStatus::OsdClear(void)
+{
+}
+
+void cEnigmaStatus::OsdCurrentItem(const char *Text)
+{
+}
+
+void cEnigmaStatus::OsdItem(const char *Text, int Index)
+{
+}
+
+void cEnigmaStatus::UpdateActiveTimers(void)
+{
+ mTimers.Clear();
+ Timers.IncBeingEdited();
+
+ for (cTimer * tim = Timers.First(); tim; tim = Timers.Next(tim)) {
+ if (tim->HasFlags(tfActive)) {
+ int i = 0;
+ cTimer dummy;
+ dummy = *tim;
+
+ do {
+ mTimers.Add(new tTimer(&dummy));
+
+ if (!dummy.IsSingleEvent()) // add 4 additional rep. timer
+ {
+ int j = 0;
+ do {
+ j++; // just to avoid a endless loop
+ dummy.Skip();
+ dummy.Matches(); // Refresh start- and end-time
+ } while (!dummy.DayMatches(dummy.StartTime()) && (j < 7));
+ }
+
+ i++;
+ } while (!dummy.IsSingleEvent() && i < 5);
+ }
+ }
+
+ Timers.DecBeingEdited();
+ mTimers.Sort();
+}