summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkamel5 <vdr.kamel5 (at) gmx (dot) net>2019-10-13 12:16:34 +0200
committerkamel5 <vdr.kamel5 (at) gmx (dot) net>2019-10-13 13:46:23 +0200
commit9173d14b10ee39ab206be98fe5a01c5591f392d2 (patch)
treef420d70723531255c8349beb4aefdcf0807a8ebb
parent3386c05e915d23c1f6126b8c7deac172857feaaf (diff)
downloadvdr-plugin-tvguide-9173d14b10ee39ab206be98fe5a01c5591f392d2.tar.gz
vdr-plugin-tvguide-9173d14b10ee39ab206be98fe5a01c5591f392d2.tar.bz2
Fixed updating current time
-rw-r--r--timeline.c34
-rw-r--r--timeline.h3
-rw-r--r--tvguideosd.c9
3 files changed, 27 insertions, 19 deletions
diff --git a/timeline.c b/timeline.c
index b21d9dd..c13a7c0 100644
--- a/timeline.c
+++ b/timeline.c
@@ -3,6 +3,7 @@
cTimeLine::cTimeLine(cTimeManager *timeManager) {
this->timeManager = timeManager;
+ lastClock = "";
if (config.displayMode == eVertical) {
dateViewer = new cStyledPixmap(osdManager.requestPixmap(1, cRect(0,
geoManager.statusHeaderHeight + geoManager.clockHeight,
@@ -263,20 +264,25 @@ void cTimeLine::setTimeline() {
drawCurrentTimeBase();
}
-void cTimeLine::drawClock() {
- if (config.displayMode == eVertical)
- clock->Fill(clrTransparent);
+bool cTimeLine::drawClock() {
cString currentTime = timeManager->GetCurrentTime();
- const cFont *font = (config.displayMode == eVertical)?fontManager.FontTimeLineTime:fontManager.FontTimeLineTimeHorizontal;
- int textHeight = font->Height();
- int clockTextWidth = font->Width(*currentTime);
- tColor colorFontBack = (config.style == eStyleFlat)?theme.Color(clrHeader):clrTransparent;
- if (config.style == eStyleGraphical) {
- clock->drawBackgroundGraphical(bgClock);
- } else {
- clock->setColor(theme.Color(clrHeader), theme.Color(clrHeaderBlending));
- clock->drawBackground();
- clock->drawBorder();
+ if (strcmp(currentTime, lastClock)) {
+ if (config.displayMode == eVertical)
+ clock->Fill(clrTransparent);
+ const cFont *font = (config.displayMode == eVertical) ? fontManager.FontTimeLineTime : fontManager.FontTimeLineTimeHorizontal;
+ int textHeight = font->Height();
+ int clockTextWidth = font->Width(*currentTime);
+ tColor colorFontBack = (config.style == eStyleFlat) ? theme.Color(clrHeader) : clrTransparent;
+ if (config.style == eStyleGraphical) {
+ clock->drawBackgroundGraphical(bgClock);
+ } else {
+ clock->setColor(theme.Color(clrHeader), theme.Color(clrHeaderBlending));
+ clock->drawBackground();
+ clock->drawBorder();
+ }
+ clock->DrawText(cPoint((geoManager.clockWidth - clockTextWidth) / 2, (geoManager.clockHeight - textHeight) / 2), *currentTime, theme.Color(clrFont), colorFontBack, font);
+ lastClock = currentTime;
+ return true;
}
- clock->DrawText(cPoint((geoManager.clockWidth-clockTextWidth)/2, (geoManager.clockHeight-textHeight)/2), *currentTime, theme.Color(clrFont), colorFontBack, font);
+ return false;
}
diff --git a/timeline.h b/timeline.h
index 45fe673..7c424e8 100644
--- a/timeline.h
+++ b/timeline.h
@@ -13,6 +13,7 @@ private:
cPixmap *timeline;
cStyledPixmap *clock;
cPixmap *timeBase;
+ cString lastClock;
void decorateTile(int posX, int posY, int tileWidth, int tileHeight);
void drawRoundedCorners(int posX, int posY, int width, int height, int radius);
cImage *createBackgroundImage(int width, int height, tColor clrBgr, tColor clrBlend);
@@ -23,7 +24,7 @@ public:
void setTimeline();
void drawDateViewer();
void drawTimeline();
- void drawClock();
+ bool drawClock();
};
#endif //__TVGUIDE_TIMELINE_H
diff --git a/tvguideosd.c b/tvguideosd.c
index 897ad6c..f35bdbc 100644
--- a/tvguideosd.c
+++ b/tvguideosd.c
@@ -352,7 +352,7 @@ void cTvGuideOsd::channelBack() {
void cTvGuideOsd::timeForward() {
bool actionDone = false;
- if ( (timeManager->GetEnd() - activeGrid->EndTime())/60 < 30 ) {
+ if ((timeManager->GetEnd() - activeGrid->EndTime())/60 < 30 ) {
ScrollForward();
actionDone = true;
}
@@ -373,7 +373,6 @@ void cTvGuideOsd::timeForward() {
void cTvGuideOsd::ScrollForward() {
timeManager->AddStep(config.stepMinutes);
timeLine->drawDateViewer();
- timeLine->drawClock();
timeLine->setTimeline();
for (cChannelEpg *column = columns.First(); column; column = columns.Next(column)) {
column->AddNewGridsAtEnd();
@@ -384,7 +383,7 @@ void cTvGuideOsd::ScrollForward() {
void cTvGuideOsd::timeBack() {
bool actionDone = false;
- if ( (activeGrid->StartTime() - timeManager->GetStart())/60 < 30 ) {
+ if ((activeGrid->StartTime() - timeManager->GetStart())/60 < 30 ) {
ScrollBack();
actionDone = true;
}
@@ -408,7 +407,6 @@ void cTvGuideOsd::ScrollBack() {
if (tooFarInPast)
return;
timeLine->drawDateViewer();
- timeLine->drawClock();
timeLine->setTimeline();
for (cChannelEpg *column = columns.First(); column; column = columns.Next(column)) {
column->AddNewGridsAtStart();
@@ -776,6 +774,9 @@ eOSState cTvGuideOsd::ProcessKey(eKeys Key) {
case kNone: if (channelJumper) CheckTimeout(); break;
default: break;
}
+ if (timeLine->drawClock()) {
+ osdManager.flush();
+ }
}
if (!alreadyUnlocked) {
cPixmap::Unlock();