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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
|
/*
* iMON LCD plugin for VDR (C++)
*
* (C) 2009-2012 Andreas Brachold <vdr07 AT deltab de>
*
* This iMON LCD plugin is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published
* by the Free Software Foundation, version 3 of the License.
*
* See the files README and COPYING for details.
*
*/
#ifndef __IMON_WATCH_H
#define __IMON_WATCH_H
#include <vdr/thread.h>
#include <vdr/status.h>
#include "imon.h"
enum eWatchMode {
eUndefined,
eLiveTV,
eReplayNormal,
eReplayMusic,
eReplayDVD,
eReplayFile,
eReplayImage,
eReplayAudioCD
};
enum eReplayState {
eReplayNone,
eReplayPlay,
eReplayPaused,
eReplayForward1,
eReplayForward2,
eReplayForward3,
eReplayBackward1,
eReplayBackward2,
eReplayBackward3
};
enum eReplayMode {
eReplayModeNormal,
eReplayModeShuffle,
eReplayModeRepeat,
eReplayModeRepeatShuffle,
};
enum eVideoMode {
eVideoNone,
eVideoMPG,
eVideoDivX,
eVideoXviD,
eVideoWMV
};
enum eAudioMode {
eAudioNone = 0,
eAudioMPG = 1 << 0,
eAudioAC3 = 1 << 1,
eAudioDTS = 1 << 2,
eAudioWMA = 1 << 3,
eAudioMP3 = 1 << 4,
eAudioOGG = 1 << 5,
eAudioWAV = 1 << 6
};
enum eIconState {
eIconStateQuery,
eIconStateOn,
eIconStateOff,
eIconStateAuto
};
class ciMonWatch
: public ciMonLCD
, protected cThread {
private:
cMutex mutex;
volatile bool m_bShutdown;
eWatchMode m_eWatchMode;
eVideoMode m_eVideoMode;
int m_eAudioMode;
int m_nScrollOffset;
bool m_bScrollBackward;
bool m_bScrollNeeded;
bool m_bUpdateScreen;
int m_nCardIsRecording[MAXDEVICES];
unsigned int m_nIconsForceOn;
unsigned int m_nIconsForceOff;
unsigned int m_nIconsForceMask;
const cControl *m_pControl;
tChannelID chID;
tEventID chEventID;
time_t chPresentTime;
time_t chFollowingTime;
cString* chName;
cString* chPresentTitle;
cString* chPresentShortTitle;
int m_nLastVolume;
bool m_bVolumeMute;
cString* osdTitle;
cString* osdItem;
cString* osdMessage;
eReplayMode m_eReplayMode;
cString* replayTitle;
cString* replayTitleLast;
cString* replayTime;
time_t tsCurrentLast;
cString* currentTime;
protected:
virtual void Action(void);
bool Program();
bool Replay();
bool RenderScreen(bool bRedraw);
eReplayState ReplayMode() const;
bool ReplayPosition(int ¤t, int &total, double& dFrameRate) const;
bool CurrentTime();
bool ReplayTime(int& current, int& total);
const char * FormatReplayTime(int current, int total, double dFrameRate) const;
public:
ciMonWatch();
virtual ~ciMonWatch();
virtual int open(const char* szDevice, eProtocol pro);
virtual void shutdown(int nExitMode);
void Replaying(const cControl *pControl, const char *szName, const char *szFileName, bool bOn);
void Recording(const cDevice *pDevice, const char *szName, const char *szFileName, bool bOn);
void Channel(int nChannelNumber);
void Volume(int nVolume, bool bAbsolute);
void OsdClear();
void OsdTitle(const char *sz);
void OsdCurrentItem(const char *sz);
void OsdStatusMessage(const char *sz);
virtual bool SetFont(const char *szFont, bool bTwoLineMode, int nBigFontHeight, int nSmallFontHeight);
eIconState ForceIcon(unsigned int nIcon, eIconState nState);
};
#endif
|