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
|
/*
* targavfd plugin for VDR (C++)
*
* (C) 2010-2013 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,
eReplay
};
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;
time_t tsVolumeLast;
int m_nReplayCurrent;
int m_nReplayTotal;
cString* osdTitle;
cString* osdItem;
cString* osdMessage;
cString* replayTitle;
cString* replayTitleShort;
cString* replayTitleShortLast;
cString* replayTime;
time_t tsCurrentLast;
cString* currentTime;
protected:
virtual void Action(void);
bool Program();
bool Replay();
bool RenderScreenSinglePage(bool bReDraw);
bool RenderScreenPages(bool bReDraw, unsigned int &nPage, unsigned int &nMaxPages);
bool RenderText(bool bForce, bool bReDraw, cString* scRender);
bool RenderSpectrumAnalyzer();
eReplayState ReplayMode() const;
bool ReplayPosition(int ¤t, int &total, double& dFrameRate) const;
bool CurrentTimeHM(time_t ts);
bool CurrentTimeHMS(time_t ts);
bool ReplayTime();
const char * FormatReplayTime(int current, int total, double dFrameRate) const;
public:
cVFDWatch();
virtual ~cVFDWatch();
virtual bool open();
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
|