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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
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();
}
|