Project

General

Profile

Feature #161 ยป imonlcd-0.0.2-twolinemode.patch

patch - Anonymous, 09/28/2009 05:51 PM

View differences:

imonlcd-0.0.2/imon.c 2009-09-24 07:21:47.000000000 +0200
ciMonFont* tmpFont = NULL;
cString sFileName = cFont::GetFontFileName(szFont);
if(!isempty(sFileName)) {
tmpFont = new ciMonFont(sFileName,12,11);
if(!isempty(sFileName))
{
if (theSetup.m_bTwoLineMode)
{
tmpFont = new ciMonFont(sFileName,6,8);
} else {
tmpFont = new ciMonFont(sFileName,12,11);
}
} else {
esyslog("iMonLCD: unable to find file for font '%s'",szFont);
}
imonlcd-0.0.2/setup.c 2009-09-24 07:23:38.000000000 +0200
#define DEFAULT_HEIGHT 16
#define DEFAULT_FONT "Sans:Bold"
#define DEFAULT_WAKEUP 5
#define DEFAULT_TWO_LINE_MODE false
/// The one and only Stored setup data
cIMonSetup theSetup;
......
m_nHeight = DEFAULT_HEIGHT;
m_nWakeup = DEFAULT_WAKEUP;
m_bTwoLineMode = DEFAULT_TWO_LINE_MODE;
strncpy(m_szFont,DEFAULT_FONT,sizeof(m_szFont));
}
......
m_nHeight = x.m_nHeight;
m_nWakeup = x.m_nWakeup;
m_bTwoLineMode = x.m_bTwoLineMode;
strncpy(m_szFont,x.m_szFont,sizeof(m_szFont));
......
m_nWakeup = n;
return true;
}
// Two Line Mode
// TODO: support different types to enable/disable (Yes, No, true, false, 0,1)
if(!strcasecmp(szName, "TwoLineMode")) {
int n = atoi(szValue);
if ((n != 0) && (n != 1))
{
esyslog("iMonLCD: TwoLineMode must be 0 or 1. Setting %d", DEFAULT_TWO_LINE_MODE );
n = DEFAULT_TWO_LINE_MODE;
}
if (n) {
m_bTwoLineMode = true;
} else {
m_bTwoLineMode = false;
}
return true;
}
//Unknow parameter
return false;
}
......
SetupStore("Contrast", theSetup.m_nContrast);
SetupStore("Font", theSetup.m_szFont);
SetupStore("Wakeup", theSetup.m_nWakeup);
if (theSetup.m_bTwoLineMode) {
SetupStore("TwoLineMode", 1);
} else {
SetupStore("TwoLineMode", 0);
}
}
ciMonMenuSetup::ciMonMenuSetup(ciMonWatch* pDev)
imonlcd-0.0.2/setup.h 2009-09-24 07:19:47.000000000 +0200
char m_szFont[256];
int m_nWakeup;
int m_bTwoLineMode; /* enable two line mode ?*/
cIMonSetup(void);
cIMonSetup(const cIMonSetup& x);
imonlcd-0.0.2/watch.c 2009-09-25 09:12:07.000000000 +0200
bool ciMonWatch::RenderScreen() {
cString* scRender;
cString* firstLine = NULL;
bool bForce = m_bUpdateScreen;
if(osdMessage) {
scRender = osdMessage;
} else if(osdItem) {
scRender = osdItem;
} else if(m_eWatchMode == eLiveTV) {
firstLine = chName;
if(Program()) {
bForce = true;
}
if(chPresentTitle)
scRender = chPresentTitle;
else
scRender = chName;
else {
if (theSetup.m_bTwoLineMode) {
scRender = NULL;
} else {
scRender = chName;
}
}
} else {
if(Replay()) {
bForce = true;
}
scRender = replayTitle;
}
if (theSetup.m_bTwoLineMode && (m_eWatchMode >= eReplayNormal) ) {
time_t ts = time(NULL);
struct tm l;
localtime_r(&ts, &l);
char* buffer = new char[20];
sprintf(buffer, "%d:%d", l.tm_hour, l.tm_min);
firstLine = new cString(buffer);;
}
if(bForce) {
m_nScrollOffset = 0;
m_bScrollBackward = false;
......
if(bForce || m_nScrollOffset > 0 || m_bScrollBackward) {
this->clear();
if(scRender) {
int iRet = this->DrawText(0 - m_nScrollOffset,0,(*scRender));
int iRet = -1;
if (theSetup.m_bTwoLineMode) {
iRet = this->DrawText(0 - m_nScrollOffset,8 ,(*scRender));
} else {
iRet = this->DrawText(0 - m_nScrollOffset,0,(*scRender));
}
switch(iRet) {
case 0:
if(m_nScrollOffset <= 0) {
......
}
}
if (firstLine && theSetup.m_bTwoLineMode ) {
this->DrawText(0, 0, *firstLine);
// if we are in replay mode the clock need updates. Therefore we have to leave slighly different
if (m_eWatchMode >= eReplayNormal) {
m_bUpdateScreen = true;
return true;
}
}
m_bUpdateScreen = false;
return true;
}
    (1-1/1)