mirror of
https://projects.vdr-developer.org/git/vdr-plugin-tvguide.git
synced 2023-10-05 13:01:48 +00:00
Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
263a734a0d | ||
|
7300fdf91c | ||
|
89e9086943 | ||
|
e236d9e571 | ||
|
8794891599 | ||
|
cd62a9bd6b | ||
|
3f0bd75011 | ||
|
a711aed160 | ||
|
cdb5a46145 | ||
|
fc784f34e5 | ||
|
b707292485 | ||
|
587fbe1f44 | ||
|
9173d14b10 |
20
HISTORY
20
HISTORY
@@ -216,3 +216,23 @@ Version 1.2.11
|
||||
- Fixed a segfault with graphicsmagick > 1.3.31
|
||||
- Fixed a possible deadlock in detailview
|
||||
- Optical changes in cMenuSetupImageCache
|
||||
|
||||
Version 1.2.12
|
||||
|
||||
- Fixed updating current time
|
||||
- Fixed updating current TimeBase
|
||||
- Diplay the current TimeBase throughout the whole timeline
|
||||
|
||||
Version 1.2.13
|
||||
|
||||
- Revert "Diplay the current TimeBase throughout the whole timeline"
|
||||
|
||||
Version 1.2.14
|
||||
|
||||
- Diplay the current TimeBase throughout the whole timeline
|
||||
- Can switch off and optimize diplay time in epggrid "displayMode == Vertical"
|
||||
- Fixed a error while changing a Theme
|
||||
|
||||
Version 1.2.15
|
||||
|
||||
- Workaround for HWAccelerated OSD
|
||||
|
@@ -130,9 +130,11 @@ int cChannelEpg::getY() {
|
||||
return geoManager.statusHeaderHeight + geoManager.timeLineHeight + num*geoManager.rowHeight;
|
||||
}
|
||||
|
||||
cGridElement *cChannelEpg::getActive() {
|
||||
cGridElement *cChannelEpg::getActive(bool last) {
|
||||
cTimeManager t;
|
||||
t.Now();
|
||||
if (last)
|
||||
return grids.Last();
|
||||
for (cGridElement *grid = grids.First(); grid; grid = grids.Next(grid)) {
|
||||
if (grid->Match(t.Get()))
|
||||
return grid;
|
||||
|
@@ -42,7 +42,7 @@ public:
|
||||
int Stop() { return timeManager->GetEnd(); };
|
||||
const char* Name() { return channel->Name(); };
|
||||
const cChannel *getChannel() {return channel;}
|
||||
cGridElement *getActive();
|
||||
cGridElement *getActive(bool last = false);
|
||||
cGridElement *getNext(cGridElement *activeGrid);
|
||||
cGridElement *getPrev(cGridElement *activeGrid);
|
||||
cGridElement *getNeighbor(cGridElement *activeGrid);
|
||||
|
7
config.c
7
config.c
@@ -2,6 +2,7 @@
|
||||
#include "config.h"
|
||||
|
||||
cTVGuideConfig::cTVGuideConfig() {
|
||||
useHWAccel = false;
|
||||
debugImageLoading = 0;
|
||||
showMainMenuEntry = 1;
|
||||
replaceOriginalSchedule = 0;
|
||||
@@ -95,6 +96,7 @@ cTVGuideConfig::cTVGuideConfig() {
|
||||
FontRecMenuItemLargeDelta = 0;
|
||||
timeFormat = 1;
|
||||
useNopacityTheme = 1;
|
||||
useNopacityThemeCurrent = -1;
|
||||
themeIndex = -1;
|
||||
themeIndexCurrent = -1;
|
||||
themeName = "";
|
||||
@@ -124,13 +126,14 @@ bool cTVGuideConfig::LoadTheme() {
|
||||
//is correct theme already loaded?
|
||||
if (nOpacityTheme.size() == 0)
|
||||
nOpacityTheme = Setup.OSDTheme;
|
||||
if ((themeIndex > -1) && (themeIndex == themeIndexCurrent)) {
|
||||
if ((themeIndex > -1) && (themeIndex == themeIndexCurrent) && (useNopacityTheme == useNopacityThemeCurrent)) {
|
||||
if (!nOpacityTheme.compare(Setup.OSDTheme)) {
|
||||
return false;
|
||||
} else {
|
||||
nOpacityTheme = Setup.OSDTheme;
|
||||
}
|
||||
}
|
||||
esyslog("tvguide: loading new Theme");
|
||||
//Load available Themes
|
||||
cThemes themes;
|
||||
themes.Load(*cString("tvguide"));
|
||||
@@ -167,6 +170,7 @@ bool cTVGuideConfig::LoadTheme() {
|
||||
themeIndex = 0;
|
||||
|
||||
themeIndexCurrent = themeIndex;
|
||||
useNopacityThemeCurrent = useNopacityTheme;
|
||||
|
||||
const char *themePath = themes.FileName(themeIndex);
|
||||
if (access(themePath, F_OK) == 0) {
|
||||
@@ -240,6 +244,7 @@ cString cTVGuideConfig::checkSlashAtEnd(std::string path) {
|
||||
bool cTVGuideConfig::SetupParse(const char *Name, const char *Value) {
|
||||
if (strcmp(Name, "timeFormat") == 0) timeFormat = atoi(Value);
|
||||
else if (strcmp(Name, "debugImageLoading") == 0) debugImageLoading = atoi(Value);
|
||||
else if (strcmp(Name, "useHWAccel") == 0) useHWAccel = atoi(Value);
|
||||
else if (strcmp(Name, "showMainMenuEntry") == 0) showMainMenuEntry = atoi(Value);
|
||||
else if (strcmp(Name, "replaceOriginalSchedule") == 0) replaceOriginalSchedule = atoi(Value);
|
||||
else if (strcmp(Name, "useNopacityTheme") == 0) useNopacityTheme = atoi(Value);
|
||||
|
2
config.h
2
config.h
@@ -49,6 +49,7 @@ class cTVGuideConfig {
|
||||
public:
|
||||
cTVGuideConfig();
|
||||
~cTVGuideConfig();
|
||||
int useHWAccel;
|
||||
int debugImageLoading;
|
||||
int showMainMenuEntry;
|
||||
int replaceOriginalSchedule;
|
||||
@@ -149,6 +150,7 @@ class cTVGuideConfig {
|
||||
int FontRecMenuItemLargeDelta;
|
||||
int timeFormat;
|
||||
int useNopacityTheme;
|
||||
int useNopacityThemeCurrent;
|
||||
int themeIndex;
|
||||
int themeIndexCurrent;
|
||||
cString themeName;
|
||||
|
26
epggrid.c
26
epggrid.c
@@ -92,12 +92,11 @@ void cEpgGrid::SetSwitchTimer() {
|
||||
|
||||
void cEpgGrid::setText() {
|
||||
if (config.displayMode == eVertical) {
|
||||
cString strText;
|
||||
strText = cString::sprintf("%s - %s:\n%s", *(event->GetTimeString()), *(event->GetEndTimeString()), event->Title());
|
||||
text->Set(*(strText), fontManager.FontGrid, geoManager.colWidth-2*borderWidth);
|
||||
text->Set(event->Title(), fontManager.FontGrid, geoManager.colWidth - 2 * borderWidth);
|
||||
extText->Set(event->ShortText(), fontManager.FontGridSmall, geoManager.colWidth - 2 * borderWidth);
|
||||
} else if (config.displayMode == eHorizontal) {
|
||||
timeString = cString::sprintf("%s - %s", *(event->GetTimeString()), *(event->GetEndTimeString()));
|
||||
}
|
||||
if (config.showTimeInGrid) {
|
||||
timeString = cString::sprintf("%s - %s:", *(event->GetTimeString()), *(event->GetEndTimeString()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,16 +113,21 @@ void cEpgGrid::drawText() {
|
||||
if (Height() / geoManager.minutePixel < 6)
|
||||
return;
|
||||
int textHeight = fontManager.FontGrid->Height();
|
||||
int textHeightSmall = fontManager.FontGridSmall->Height();
|
||||
int textLines = text->Lines();
|
||||
int titleY = borderWidth;
|
||||
if (config.showTimeInGrid) { // mit Zeitangabe im Grid
|
||||
pixmap->DrawText(cPoint(borderWidth, borderWidth), *timeString, colorText, colorTextBack, fontManager.FontGridSmall);
|
||||
titleY += textHeightSmall;
|
||||
}
|
||||
for (int i = 0; i < textLines; i++) {
|
||||
pixmap->DrawText(cPoint(borderWidth, borderWidth + i*textHeight), text->GetLine(i), colorText, colorTextBack, fontManager.FontGrid);
|
||||
pixmap->DrawText(cPoint(borderWidth, titleY + i * textHeight), text->GetLine(i), colorText, colorTextBack, fontManager.FontGrid);
|
||||
}
|
||||
int extTextLines = extText->Lines();
|
||||
int offset = (textLines+1)*textHeight - 0.5*textHeight;
|
||||
textHeight = fontManager.FontGridSmall->Height();
|
||||
if ((Height()-textHeight-10) > offset) {
|
||||
int offset = titleY + (textLines + 0.5) * textHeight;
|
||||
if ((Height() - textHeightSmall - 10) > offset) {
|
||||
for (int i = 0; i < extTextLines; i++) {
|
||||
pixmap->DrawText(cPoint(borderWidth, borderWidth + offset + i*textHeight), extText->GetLine(i), colorText, colorTextBack, fontManager.FontGridSmall);
|
||||
pixmap->DrawText(cPoint(borderWidth, offset + i * textHeightSmall), extText->GetLine(i), colorText, colorTextBack, fontManager.FontGridSmall);
|
||||
}
|
||||
}
|
||||
} else if (config.displayMode == eHorizontal) {
|
||||
@@ -134,7 +138,7 @@ void cEpgGrid::drawText() {
|
||||
}
|
||||
cString strTitle = CutText(event->Title(), viewportHeight, fontManager.FontGridHorizontal).c_str();
|
||||
int titleY = 0;
|
||||
if (config.showTimeInGrid) {
|
||||
if (config.showTimeInGrid) { // mit Zeitangabe im Grid
|
||||
pixmap->DrawText(cPoint(borderWidth, borderWidth), *timeString, colorText, colorTextBack, fontManager.FontGridHorizontalSmall);
|
||||
titleY = fontManager.FontGridHorizontalSmall->Height() + (geoManager.rowHeight - fontManager.FontGridHorizontalSmall->Height() - fontManager.FontGridHorizontal->Height()) / 2;
|
||||
} else {
|
||||
|
17
po/ca_ES.po
17
po/ca_ES.po
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: vdr-tvguide 0.0.1\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2019-04-22 14:34+0200\n"
|
||||
"POT-Creation-Date: 2019-11-03 12:37+0100\n"
|
||||
"PO-Revision-Date: 2013-09-21 17:49+0200\n"
|
||||
"Last-Translator: My friend <Sampep> Thanks David <Gabychan> <gbonich@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
@@ -99,12 +99,6 @@ msgstr ""
|
||||
msgid "recordings done"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's on now"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's on next"
|
||||
msgstr ""
|
||||
|
||||
msgid "Instant Record"
|
||||
msgstr "Enregistra a l'instant"
|
||||
|
||||
@@ -567,6 +561,12 @@ msgstr "No s'han trobat gravacions per"
|
||||
msgid "No Favorites available"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's on now"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's on next"
|
||||
msgstr ""
|
||||
|
||||
msgid "whole term must appear"
|
||||
msgstr "expressió completa"
|
||||
|
||||
@@ -675,6 +675,9 @@ msgstr "si existeix"
|
||||
msgid "always"
|
||||
msgstr "sempre"
|
||||
|
||||
msgid "Use workaround for HWAccelerated OSD"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show Main Menu Entry"
|
||||
msgstr "Mostra entrada del menú principal"
|
||||
|
||||
|
17
po/de_DE.po
17
po/de_DE.po
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: vdr-tvguide 0.0.1\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2019-04-22 14:34+0200\n"
|
||||
"POT-Creation-Date: 2019-11-03 12:37+0100\n"
|
||||
"PO-Revision-Date: 2012-08-25 17:49+0200\n"
|
||||
"Last-Translator: Horst\n"
|
||||
"Language-Team: \n"
|
||||
@@ -96,12 +96,6 @@ msgstr "aktive Timer"
|
||||
msgid "recordings done"
|
||||
msgstr "erledigte Aufnahmen"
|
||||
|
||||
msgid "What's on now"
|
||||
msgstr "Was läuft jetzt?"
|
||||
|
||||
msgid "What's on next"
|
||||
msgstr "Was läuft als nächstes?"
|
||||
|
||||
msgid "Instant Record"
|
||||
msgstr "Aufnahme"
|
||||
|
||||
@@ -564,6 +558,12 @@ msgstr "Keine Aufnahmen gefunden für"
|
||||
msgid "No Favorites available"
|
||||
msgstr "Keine Favoriten verfügbar"
|
||||
|
||||
msgid "What's on now"
|
||||
msgstr "Was läuft jetzt?"
|
||||
|
||||
msgid "What's on next"
|
||||
msgstr "Was läuft als nächstes?"
|
||||
|
||||
msgid "whole term must appear"
|
||||
msgstr "vollständiger Ausdruck"
|
||||
|
||||
@@ -672,6 +672,9 @@ msgstr "falls vorhanden"
|
||||
msgid "always"
|
||||
msgstr "immer"
|
||||
|
||||
msgid "Use workaround for HWAccelerated OSD"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show Main Menu Entry"
|
||||
msgstr "Hauptmenüeintrag anzeigen"
|
||||
|
||||
|
17
po/it_IT.po
17
po/it_IT.po
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: vdr-tvguide 0.0.1\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2019-04-22 14:34+0200\n"
|
||||
"POT-Creation-Date: 2019-11-03 12:37+0100\n"
|
||||
"PO-Revision-Date: 2012-08-25 17:49+0200\n"
|
||||
"Last-Translator: fiveten_59\n"
|
||||
"Language-Team: \n"
|
||||
@@ -96,12 +96,6 @@ msgstr "Timers attivi"
|
||||
msgid "recordings done"
|
||||
msgstr "registrazione eseguita"
|
||||
|
||||
msgid "What's on now"
|
||||
msgstr "Was läuft jetzt?"
|
||||
|
||||
msgid "What's on next"
|
||||
msgstr "Was läuft als nächstes?"
|
||||
|
||||
msgid "Instant Record"
|
||||
msgstr "Registrazione immediata"
|
||||
|
||||
@@ -564,6 +558,12 @@ msgstr "Nessuna registrazione trovata per"
|
||||
msgid "No Favorites available"
|
||||
msgstr "Nessun Favoriti disponibile"
|
||||
|
||||
msgid "What's on now"
|
||||
msgstr "Was läuft jetzt?"
|
||||
|
||||
msgid "What's on next"
|
||||
msgstr "Was läuft als nächstes?"
|
||||
|
||||
msgid "whole term must appear"
|
||||
msgstr "vollständiger Ausdruck"
|
||||
|
||||
@@ -672,6 +672,9 @@ msgstr "se esiste"
|
||||
msgid "always"
|
||||
msgstr "sempre"
|
||||
|
||||
msgid "Use workaround for HWAccelerated OSD"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show Main Menu Entry"
|
||||
msgstr "Hauptmenüeintrag anzeigen"
|
||||
|
||||
|
17
po/ru_RU.po
17
po/ru_RU.po
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: vdr-tvguide 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2019-04-22 14:34+0200\n"
|
||||
"POT-Creation-Date: 2019-11-03 12:37+0100\n"
|
||||
"PO-Revision-Date: 2013-09-25 17:49+0400\n"
|
||||
"Last-Translator: AmiD, ilya\n"
|
||||
"Language-Team: Russia-Cherepovets(wm.amid@gmail.com)\n"
|
||||
@@ -96,12 +96,6 @@ msgstr ""
|
||||
msgid "recordings done"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's on now"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's on next"
|
||||
msgstr ""
|
||||
|
||||
msgid "Instant Record"
|
||||
msgstr "Записать"
|
||||
|
||||
@@ -564,6 +558,12 @@ msgstr "Не найдено записей:"
|
||||
msgid "No Favorites available"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's on now"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's on next"
|
||||
msgstr ""
|
||||
|
||||
msgid "whole term must appear"
|
||||
msgstr "фраза"
|
||||
|
||||
@@ -672,6 +672,9 @@ msgstr "если существует"
|
||||
msgid "always"
|
||||
msgstr "всегда"
|
||||
|
||||
msgid "Use workaround for HWAccelerated OSD"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show Main Menu Entry"
|
||||
msgstr "Показывать пункт в главном меню"
|
||||
|
||||
|
17
po/sk_SK.po
17
po/sk_SK.po
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: vdr-tvguide 1.1.0\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2019-04-22 14:34+0200\n"
|
||||
"POT-Creation-Date: 2019-11-03 12:37+0100\n"
|
||||
"PO-Revision-Date: 2013-09-15 00:12+0100\n"
|
||||
"Last-Translator: Milan Hrala <hrala.milan@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
@@ -96,12 +96,6 @@ msgstr ""
|
||||
msgid "recordings done"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's on now"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's on next"
|
||||
msgstr ""
|
||||
|
||||
msgid "Instant Record"
|
||||
msgstr "Okam<61>ite nahra<72>"
|
||||
|
||||
@@ -564,6 +558,12 @@ msgstr "Nena
|
||||
msgid "No Favorites available"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's on now"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's on next"
|
||||
msgstr ""
|
||||
|
||||
msgid "whole term must appear"
|
||||
msgstr "kompletn<74> v<>raz"
|
||||
|
||||
@@ -672,6 +672,9 @@ msgstr "ak s
|
||||
msgid "always"
|
||||
msgstr "v<>dy"
|
||||
|
||||
msgid "Use workaround for HWAccelerated OSD"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show Main Menu Entry"
|
||||
msgstr "Zobrazi<7A> v hlavnom menu"
|
||||
|
||||
|
4
setup.c
4
setup.c
@@ -60,6 +60,7 @@ void cTvguideSetup::Store(void) {
|
||||
SetupStore("debugImageLoading", config.debugImageLoading);
|
||||
SetupStore("useNopacityTheme", config.useNopacityTheme);
|
||||
SetupStore("themeIndex", config.themeIndex);
|
||||
SetupStore("useHWAccel", config.useHWAccel);
|
||||
SetupStore("showMainMenuEntry", config.showMainMenuEntry);
|
||||
SetupStore("replaceOriginalSchedule", config.replaceOriginalSchedule);
|
||||
SetupStore("displayMode", config.displayMode);
|
||||
@@ -203,6 +204,7 @@ cMenuSetupGeneral::cMenuSetupGeneral(cTVGuideConfig* data) : cMenuSetupSubMenu(
|
||||
void cMenuSetupGeneral::Set(void) {
|
||||
int currentItem = Current();
|
||||
Clear();
|
||||
Add(new cMenuEditBoolItem(tr("Use workaround for HWAccelerated OSD"), &tmpConfig->useHWAccel));
|
||||
Add(new cMenuEditBoolItem(tr("Show Main Menu Entry"), &tmpConfig->showMainMenuEntry));
|
||||
Add(new cMenuEditBoolItem(tr("Replace VDR Schedules Menu"), &tmpConfig->replaceOriginalSchedule));
|
||||
Add(new cMenuEditBoolItem(tr("Use appropriate nOpacity Theme"), &tmpConfig->useNopacityTheme));
|
||||
@@ -275,8 +277,8 @@ void cMenuSetupScreenLayout::Set(void) {
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Width of Channel Header (Perc. of osd width)")), &tmpConfig->channelHeaderWidthPercent, 5, 30));
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Height of Timeline (Perc. of osd height)")), &tmpConfig->timeLineHeightPercent, 5, 30));
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Number of Channels to display")), &tmpConfig->channelRows, 3, 12));
|
||||
Add(new cMenuEditBoolItem(*cString::sprintf("%s%s", *indent, tr("Display time in EPG Grids")), &tmpConfig->showTimeInGrid));
|
||||
}
|
||||
Add(new cMenuEditBoolItem(tr("Display time in EPG Grids"), &tmpConfig->showTimeInGrid));
|
||||
Add(new cMenuEditIntItem(tr("Height of Headers (Status Header and EPG View, Perc. of osd height)"), &tmpConfig->headerHeightPercent, 10, 50));
|
||||
Add(new cMenuEditIntItem(tr("Height of Footer (Perc. of osd height)"), &tmpConfig->footerHeightPercent, 3, 20));
|
||||
|
||||
|
61
timeline.c
61
timeline.c
@@ -3,6 +3,8 @@
|
||||
|
||||
cTimeLine::cTimeLine(cTimeManager *timeManager) {
|
||||
this->timeManager = timeManager;
|
||||
lastClock = "";
|
||||
timeBase = NULL;
|
||||
if (config.displayMode == eVertical) {
|
||||
dateViewer = new cStyledPixmap(osdManager.requestPixmap(1, cRect(0,
|
||||
geoManager.statusHeaderHeight + geoManager.clockHeight,
|
||||
@@ -16,10 +18,6 @@ cTimeLine::cTimeLine(cTimeManager *timeManager) {
|
||||
0,
|
||||
geoManager.timeLineWidth,
|
||||
1440 * geoManager.minutePixel));
|
||||
timeBase = osdManager.requestPixmap(3, cRect(0,
|
||||
geoManager.statusHeaderHeight + geoManager.channelGroupsHeight + geoManager.channelHeaderHeight,
|
||||
geoManager.osdWidth,
|
||||
geoManager.timeLineGridHeight));
|
||||
} else if (config.displayMode == eHorizontal) {
|
||||
dateViewer = new cStyledPixmap(osdManager.requestPixmap(1, cRect(geoManager.clockWidth,
|
||||
geoManager.statusHeaderHeight,
|
||||
@@ -33,33 +31,19 @@ cTimeLine::cTimeLine(cTimeManager *timeManager) {
|
||||
0,
|
||||
1440 * geoManager.minutePixel,
|
||||
geoManager.timeLineHeight));
|
||||
timeBase = osdManager.requestPixmap(3, cRect(geoManager.channelGroupsWidth + geoManager.channelHeaderWidth,
|
||||
}
|
||||
clock = new cStyledPixmap(osdManager.requestPixmap(3, cRect(0,
|
||||
geoManager.statusHeaderHeight,
|
||||
geoManager.timeLineGridWidth,
|
||||
geoManager.timeLineHeight + config.channelRows * geoManager.rowHeight));
|
||||
}
|
||||
timeBase->Fill(clrTransparent);
|
||||
int clockY;
|
||||
int clockX;
|
||||
if (config.displayMode == eVertical) {
|
||||
clockY = geoManager.statusHeaderHeight;
|
||||
clockX = 0;
|
||||
}
|
||||
else {
|
||||
clockY = geoManager.statusHeaderHeight;
|
||||
clockX = 0;
|
||||
}
|
||||
clock = new cStyledPixmap(osdManager.requestPixmap(3, cRect(clockX,
|
||||
clockY,
|
||||
geoManager.clockWidth,
|
||||
geoManager.clockHeight)));
|
||||
}
|
||||
|
||||
cTimeLine::~cTimeLine(void) {
|
||||
delete dateViewer;
|
||||
osdManager.releasePixmap(timeline);
|
||||
if (clock)
|
||||
delete clock;
|
||||
osdManager.releasePixmap(timeBase);
|
||||
osdManager.releasePixmap(timeline);
|
||||
delete dateViewer;
|
||||
}
|
||||
|
||||
void cTimeLine::drawDateViewer() {
|
||||
@@ -206,19 +190,30 @@ void cTimeLine::drawRoundedCorners(int posX, int posY, int width, int height, in
|
||||
}
|
||||
|
||||
void cTimeLine::drawCurrentTimeBase(void) {
|
||||
if (!timeManager->NowVisible()) {
|
||||
if (timeBase)
|
||||
timeBase->Fill(clrTransparent);
|
||||
bool nowVisible = timeManager->NowVisible();
|
||||
if (!nowVisible)
|
||||
return;
|
||||
}
|
||||
osdManager.releasePixmap(timeBase);
|
||||
int deltaTime = (timeManager->GetNow() - timeManager->GetStart()) / 60 * geoManager.minutePixel;
|
||||
int x1, x2, y1, y2;
|
||||
if (config.displayMode == eVertical) {
|
||||
timeBase->DrawRectangle(cRect(0, deltaTime - 2, timeBase->ViewPort().Width(), 4), theme.Color(clrTimeBase));
|
||||
x1 = 0;
|
||||
y1 = geoManager.statusHeaderHeight + geoManager.channelGroupsHeight + geoManager.channelHeaderHeight + deltaTime - 2;
|
||||
x2 = geoManager.osdWidth;
|
||||
y2 = 4;
|
||||
} else {
|
||||
timeBase->DrawRectangle(cRect(deltaTime-2, 0, 4, timeBase->ViewPort().Height()), theme.Color(clrTimeBase));
|
||||
x1 = geoManager.channelGroupsWidth + geoManager.channelHeaderWidth + deltaTime - 2;
|
||||
y1 = geoManager.statusHeaderHeight;
|
||||
x2 = 4;
|
||||
y2 = geoManager.timeLineHeight + config.channelRows * geoManager.rowHeight;
|
||||
}
|
||||
timeBase = osdManager.requestPixmap(3, cRect(x1, y1, x2, y2));
|
||||
timeBase->Fill(clrTransparent);
|
||||
timeBase->DrawRectangle(cRect(0, 0, timeBase->ViewPort().Width(), timeBase->ViewPort().Height()), theme.Color(clrTimeBase));
|
||||
}
|
||||
|
||||
|
||||
cImage *cTimeLine::createBackgroundImage(int width, int height, tColor clrBgr, tColor clrBlend) {
|
||||
cImage *image = NULL;
|
||||
if (config.style == eStyleBlendingDefault) {
|
||||
@@ -263,10 +258,10 @@ void cTimeLine::setTimeline() {
|
||||
drawCurrentTimeBase();
|
||||
}
|
||||
|
||||
void cTimeLine::drawClock() {
|
||||
if (config.displayMode == eVertical)
|
||||
clock->Fill(clrTransparent);
|
||||
bool cTimeLine::drawClock() {
|
||||
cString currentTime = timeManager->GetCurrentTime();
|
||||
if (strcmp(currentTime, lastClock)) {
|
||||
clock->Fill(clrTransparent);
|
||||
const cFont *font = (config.displayMode == eVertical) ? fontManager.FontTimeLineTime : fontManager.FontTimeLineTimeHorizontal;
|
||||
int textHeight = font->Height();
|
||||
int clockTextWidth = font->Width(*currentTime);
|
||||
@@ -279,4 +274,8 @@ void cTimeLine::drawClock() {
|
||||
clock->drawBorder();
|
||||
}
|
||||
clock->DrawText(cPoint((geoManager.clockWidth - clockTextWidth) / 2, (geoManager.clockHeight - textHeight) / 2), *currentTime, theme.Color(clrFont), colorFontBack, font);
|
||||
lastClock = currentTime;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
11
timeline.h
11
timeline.h
@@ -13,17 +13,18 @@ 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);
|
||||
void drawCurrentTimeBase(void);
|
||||
public:
|
||||
cTimeLine(cTimeManager *timeManager);
|
||||
virtual ~cTimeLine(void);
|
||||
void setTimeline();
|
||||
void drawDateViewer();
|
||||
void drawTimeline();
|
||||
void drawClock();
|
||||
void setTimeline(void);
|
||||
void drawDateViewer(void);
|
||||
void drawTimeline(void);
|
||||
void drawCurrentTimeBase(void);
|
||||
bool drawClock();
|
||||
};
|
||||
|
||||
#endif //__TVGUIDE_TIMELINE_H
|
||||
|
@@ -27,7 +27,7 @@
|
||||
#error "VDR-2.0.0 API version or greater is required!"
|
||||
#endif
|
||||
|
||||
static const char *VERSION = "1.2.11";
|
||||
static const char *VERSION = "1.2.15";
|
||||
static const char *DESCRIPTION = tr("A fancy 2d EPG Viewer");
|
||||
static const char *MAINMENUENTRY = "Tvguide";
|
||||
|
||||
|
20
tvguideosd.c
20
tvguideosd.c
@@ -195,7 +195,7 @@ void cTvGuideOsd::drawGridsChannelJump(int offset) {
|
||||
}
|
||||
}
|
||||
|
||||
void cTvGuideOsd::drawGridsTimeJump() {
|
||||
void cTvGuideOsd::drawGridsTimeJump(bool last) {
|
||||
if (columns.Count() == 0)
|
||||
return;
|
||||
cChannelEpg *colActive = NULL;
|
||||
@@ -209,7 +209,7 @@ void cTvGuideOsd::drawGridsTimeJump() {
|
||||
column->readGrids();
|
||||
column->drawGrids();
|
||||
}
|
||||
activeGrid = colActive->getActive();
|
||||
activeGrid = colActive->getActive(last);
|
||||
if (activeGrid) {
|
||||
activeGrid->SetActive();
|
||||
activeGrid->Draw();
|
||||
@@ -372,15 +372,21 @@ void cTvGuideOsd::timeForward() {
|
||||
|
||||
void cTvGuideOsd::ScrollForward() {
|
||||
timeManager->AddStep(config.stepMinutes);
|
||||
if (config.useHWAccel) {
|
||||
drawGridsTimeJump(true);
|
||||
timeLine->drawDateViewer();
|
||||
timeLine->drawClock();
|
||||
timeLine->setTimeline();
|
||||
} else {
|
||||
timeLine->drawDateViewer();
|
||||
timeLine->setTimeline();
|
||||
for (cChannelEpg *column = columns.First(); column; column = columns.Next(column)) {
|
||||
column->AddNewGridsAtEnd();
|
||||
column->ClearOutdatedStart();
|
||||
column->drawGrids();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void cTvGuideOsd::timeBack() {
|
||||
bool actionDone = false;
|
||||
@@ -407,15 +413,21 @@ void cTvGuideOsd::ScrollBack() {
|
||||
bool tooFarInPast = timeManager->DelStep(config.stepMinutes);
|
||||
if (tooFarInPast)
|
||||
return;
|
||||
if (config.useHWAccel) {
|
||||
drawGridsTimeJump();
|
||||
timeLine->drawDateViewer();
|
||||
timeLine->drawClock();
|
||||
timeLine->setTimeline();
|
||||
} else {
|
||||
timeLine->drawDateViewer();
|
||||
timeLine->setTimeline();
|
||||
for (cChannelEpg *column = columns.First(); column; column = columns.Next(column)) {
|
||||
column->AddNewGridsAtStart();
|
||||
column->ClearOutdatedEnd();
|
||||
column->drawGrids();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void cTvGuideOsd::processKeyUp() {
|
||||
if (!activeGrid) {
|
||||
@@ -776,6 +788,10 @@ eOSState cTvGuideOsd::ProcessKey(eKeys Key) {
|
||||
case kNone: if (channelJumper) CheckTimeout(); break;
|
||||
default: break;
|
||||
}
|
||||
if (timeLine->drawClock()) {
|
||||
timeLine->drawCurrentTimeBase();
|
||||
osdManager.flush();
|
||||
}
|
||||
}
|
||||
if (!alreadyUnlocked) {
|
||||
cPixmap::Unlock();
|
||||
|
@@ -31,7 +31,7 @@ private:
|
||||
void drawOsd();
|
||||
void readChannels(const cChannel *channelStart);
|
||||
void drawGridsChannelJump(int offset = 0);
|
||||
void drawGridsTimeJump();
|
||||
void drawGridsTimeJump(bool last = false);
|
||||
void processKeyUp();
|
||||
void processKeyDown();
|
||||
void processKeyLeft();
|
||||
|
Reference in New Issue
Block a user