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
|
/*
* targavfd plugin for VDR (C++)
*
* (C) 2010 Andreas Brachold <vdr07 AT deltab de>
*
* This targavfd 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 __VFD_WATCH_H
#define __VFD_WATCH_H
#include <vdr/thread.h>
#include <vdr/status.h>
#include "vfd.h"
enum eWatchMode {
eUndefined,
eLiveTV,
eReplayNormal,
eReplayMusic,
eReplayDVD,
eReplayFile,
eReplayImage,
eReplayAudioCD
};
enum eReplayState {
eReplayNone,
eReplayPlay,
eReplayPaused,
eReplayForward1,
eReplayForward2,
eReplayForward3,
eReplayBackward1,
eReplayBackward2,
eReplayBackward3
};
enum eIconState {
eIconStateQuery,
eIconStateOn,
eIconStateOff,
eIconStateAuto
};
class cVFDWatch
: public cVFD
, protected cThread {
private:
cMutex mutex;
volatile bool m_bShutdown;
eWatchMode m_eWatchMode;
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;
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) const;
bool CurrentTime();
bool ReplayTime();
const char * FormatReplayTime(int current, int total) const;
public:
cVFDWatch();
virtual ~cVFDWatch();
virtual bool open();
virtual void close ();
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, int bTwoLineMode);
eIconState ForceIcon(unsigned int nIcon, eIconState nState);
};
#endif
|