Feature #175 » final.patch
imon.c | ||
---|---|---|
}
|
||
/*
|
||
* Send commands needed to initialize Display.
|
||
*
|
||
*/
|
||
bool ciMonLCD::SendCmdInitSequence() {
|
||
SendCmd(this->cmd_clear_alarm);
|
||
SendCmd(this->cmd_display_on);
|
||
SendCmd(CMD_INIT); /* unknown, required init command */
|
||
SendCmd(CMD_SET_ICONS);
|
||
/* clear the progress-bars on top and bottom of the display */
|
||
SendCmd(CMD_SET_LINES0);
|
||
SendCmd(CMD_SET_LINES1);
|
||
SendCmd(CMD_SET_LINES2);
|
||
return true;
|
||
}
|
||
/*
|
||
* Show the big clock. We need to set it to the current time, then it just
|
||
* keeps counting automatically.
|
||
*/
|
imon.h | ||
---|---|---|
bool SendCmd(const uint64_t & cmdData);
|
||
bool SendCmdClock(time_t tAlarm);
|
||
bool SendCmdShutdown();
|
||
bool SendCmdInitSequence();
|
||
bool Contrast(int nContrast);
|
||
public:
|
||
ciMonLCD();
|
watch.c | ||
---|---|---|
#include "setup.h"
|
||
#include <vdr/tools.h>
|
||
#include <vdr/shutdown.h>
|
||
// during following times display is turned off
|
||
// when user is inactive
|
||
#define DEFAULT_BEDTIME_HOUR 22
|
||
#define DEFAULT_BEDTIME_END_HOUR 8
|
||
struct cMutexLooker {
|
||
cMutex& mutex;
|
||
... | ... | |
replayTitleLast = NULL;
|
||
currentTime = NULL;
|
||
tsCurrentLast = 0;
|
||
display_off = false;
|
||
m_eWatchMode = eLiveTV;
|
||
m_eVideoMode = eVideoNone;
|
||
... | ... | |
unsigned int nIcons = 0;
|
||
bool bUpdateIcons = false;
|
||
bool bFlush = false;
|
||
if (ShutdownHandler.IsUserInactive() && isBedtime())
|
||
{
|
||
if (!display_off)
|
||
{ // turn off display
|
||
SendCmdShutdown();
|
||
display_off = true;
|
||
}
|
||
continue; // start next iteration
|
||
}
|
||
|
||
if (display_off)
|
||
{ // turn display on
|
||
SendCmdInitSequence();
|
||
display_off = false;
|
||
}
|
||
if(m_bShutdown)
|
||
break;
|
||
else {
|
||
... | ... | |
}
|
||
// every second the clock need updates.
|
||
if (theSetup.m_bTwoLineMode && m_eWatchMode != eLiveTV) {
|
||
if (theSetup.m_bTwoLineMode) {
|
||
if((0 == (nCnt % 10))) {
|
||
m_bUpdateScreen |= CurrentTime();
|
||
}
|
||
if(m_eWatchMode >= eReplayNormal)
|
||
{
|
||
m_bUpdateScreen = true;
|
||
}
|
||
}
|
||
bFlush = RenderScreen();
|
||
... | ... | |
bool ciMonWatch::RenderScreen() {
|
||
cString* scRender;
|
||
cString* scHeader = NULL;
|
||
int current = 0, total = 0;
|
||
bool bForce = m_bUpdateScreen;
|
||
if(osdMessage) {
|
||
scRender = osdMessage;
|
||
... | ... | |
if(chPresentTitle)
|
||
scRender = chPresentTitle;
|
||
else {
|
||
scHeader = currentTime;
|
||
scRender = chName;
|
||
// in twoline Mode don't show channel name in lower line
|
||
if(theSetup.m_bTwoLineMode)
|
||
{
|
||
scRender = NULL;
|
||
}
|
||
}
|
||
} else {
|
||
if(Replay()) {
|
||
bForce = true;
|
||
}
|
||
scHeader = currentTime;
|
||
ReplayPosition(current,total);
|
||
scRender = replayTitle;
|
||
}
|
||
|
||
if(bForce) {
|
||
m_nScrollOffset = 0;
|
||
m_bScrollBackward = false;
|
||
... | ... | |
}
|
||
}
|
||
if(scHeader && theSetup.m_bTwoLineMode) {
|
||
this->DrawText(0, 0, *scHeader);
|
||
if(theSetup.m_bTwoLineMode)
|
||
{
|
||
if(scHeader) {
|
||
this->DrawText(0, 0, *scHeader);
|
||
} else if(current > 0) {
|
||
this->DrawText(0, 0, IndexToHMSF(current));
|
||
}
|
||
this->DrawText(70, 0, *currentTime); // time top right
|
||
}
|
||
m_bUpdateScreen = false;
|
||
... | ... | |
return false;
|
||
}
|
||
bool ciMonWatch::isBedtime() {
|
||
|
||
if (tsCurrentLast == 0)
|
||
{
|
||
CurrentTime();
|
||
}
|
||
struct tm l;
|
||
localtime_r(&tsCurrentLast, &l);
|
||
// from now til midnight
|
||
if(l.tm_hour >= DEFAULT_BEDTIME_HOUR)
|
||
{
|
||
return true;
|
||
}
|
||
// from midnight til now
|
||
if(l.tm_hour <= DEFAULT_BEDTIME_END_HOUR)
|
||
{
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
bool ciMonWatch::CurrentTime() {
|
||
time_t ts = time(NULL);
|
||
watch.h | ||
---|---|---|
time_t tsCurrentLast;
|
||
cString* currentTime;
|
||
bool display_off;
|
||
protected:
|
||
virtual void Action(void);
|
||
bool Program();
|
||
bool Replay();
|
||
bool RenderScreen();
|
||
bool isBedtime();
|
||
eReplayState ReplayMode() const;
|
||
bool ReplayPosition(int ¤t, int &total) const;
|
||
bool CurrentTime();
|
- « Previous
- 1
- 2
- Next »