diff options
author | louis <louis.braun@gmx.de> | 2013-05-24 16:23:23 +0200 |
---|---|---|
committer | louis <louis.braun@gmx.de> | 2013-05-24 16:23:23 +0200 |
commit | 9f47ab764efc83d8bf94f25c4badeb6e4c91c649 (patch) | |
tree | d919adf7613949f0107b968c2bf13736075c17fc | |
parent | c611e004582067640111ef2f023410025201157d (diff) | |
download | vdr-plugin-tvguide-9f47ab764efc83d8bf94f25c4badeb6e4c91c649.tar.gz vdr-plugin-tvguide-9f47ab764efc83d8bf94f25c4badeb6e4c91c649.tar.bz2 |
Version 0.0.4
-rw-r--r-- | HISTORY | 7 | ||||
-rw-r--r-- | channelcolumn.c | 6 | ||||
-rw-r--r-- | channelcolumn.h | 1 | ||||
-rw-r--r-- | config.c | 238 | ||||
-rw-r--r-- | config.h | 66 | ||||
-rw-r--r-- | detailview.c | 31 | ||||
-rw-r--r-- | dummygrid.c | 69 | ||||
-rw-r--r-- | epggrid.c | 98 | ||||
-rw-r--r-- | epggrid.h | 1 | ||||
-rw-r--r-- | footer.c | 6 | ||||
-rw-r--r-- | headergrid.c | 122 | ||||
-rw-r--r-- | headergrid.h | 2 | ||||
-rw-r--r-- | imageloader.c | 9 | ||||
-rw-r--r-- | osdmanager.c | 3 | ||||
-rwxr-xr-x | po/de_DE.po | 101 | ||||
-rw-r--r-- | setup.c | 138 | ||||
-rw-r--r-- | setup.h | 5 | ||||
-rw-r--r-- | statusheader.c | 15 | ||||
-rw-r--r-- | statusheader.h | 1 | ||||
-rw-r--r-- | themes/tvguide-nOpacitydarkred.theme | 28 | ||||
-rw-r--r-- | timeline.c | 114 | ||||
-rw-r--r-- | timer.c | 12 | ||||
-rw-r--r-- | tvguide.c | 6 | ||||
-rw-r--r-- | tvguideosd.c | 273 | ||||
-rw-r--r-- | tvguideosd.h | 4 |
25 files changed, 873 insertions, 483 deletions
@@ -11,7 +11,7 @@ VDR Plugin 'tvguide' Revision History - Changed channelheader to display transparent logos properly - Added "style nOpacity" for backgrounds and theme nOpacity -Version 0.0.3 +2013-05-13: Version 0.0.3 - Added dummy grids if no EPG information is available for a certain time @@ -19,3 +19,8 @@ Version 0.0.3 - Completely rewrote code for scrolling forward and backward in time - Added status header with epg information of currently selected schedule and scaled video picture + +2013-05-24: Version 0.0.4 + +- Introduced horizontal display +- Added Theme DarkRed diff --git a/channelcolumn.c b/channelcolumn.c index ef6e555..7537ef2 100644 --- a/channelcolumn.c +++ b/channelcolumn.c @@ -105,7 +105,11 @@ void cChannelColumn::drawGrids() { } int cChannelColumn::getX() { - return tvguideConfig.timeColWidth + num*tvguideConfig.colWidth; + return tvguideConfig.timeLineWidth + num*tvguideConfig.colWidth; +} + +int cChannelColumn::getY() { + return tvguideConfig.statusHeaderHeight + tvguideConfig.timeLineHeight + num*tvguideConfig.rowHeight; } cGrid * cChannelColumn::getActive() { diff --git a/channelcolumn.h b/channelcolumn.h index 054a8c5..eda8f0f 100644 --- a/channelcolumn.h +++ b/channelcolumn.h @@ -26,6 +26,7 @@ public: bool readGrids(); void drawGrids(); int getX(); + int getY(); int Start() { return myTime->GetStart(); }; int Stop() { return myTime->GetEnd(); }; const char* Name() { return channel->Name(); }; @@ -5,100 +5,141 @@ enum { e24Hours
};
+enum {
+ eVertical,
+ eHorizontal
+};
+
+
cTvguideConfig::cTvguideConfig() {
osdWidth = 0;
osdHeight = 0;
+ displayMode = eHorizontal;
colWidth = 0;
+ rowHeight = 0;
channelCols = 5;
+ channelRows = 10;
displayTime = 160;
- minuteHeight = 0;
+ minutePixel = 0;
displayStatusHeader = 1;
statusHeaderPercent = 20;
statusHeaderHeight = 0;
scaleVideo = 1;
- timeColWidth = 120;
- headerHeight = 150;
- footerHeight = 80;
+ decorateVideo = 1;
+ timeLineWidthPercent = 8;
+ timeLineHeightPercent = 4;
+ displayChannelName = 1;
+ channelHeaderWidthPercent = 20;
+ channelHeaderHeightPercent = 15;
+ footerHeight = 80;
stepMinutes = 30;
- bigStepHours = 3;
+ bigStepHours = 3;
hugeStepHours = 24;
- jumpChannels = 5;
+ jumpChannels = 10;
hideChannelLogos = 0;
- logoWidth = 130;
- logoHeight = 100;
+ logoWidthRatio = 13;
+ logoHeightRatio = 10;
logoExtension = 0;
hideEpgImages = 0;
epgImageWidth = 315;
epgImageHeight = 240;
fontIndex = 0;
fontNameDefault = "VDRSymbols Sans:Book";
- fontHeaderSize = 33;
- fontStatusHeaderSize = 27;
- fontStatusHeaderLargeSize = 33;
- fontGridSize = 27;
- fontGridSmallSize = 24;
- fontTimeLineWeekdaySize = 40;
- fontTimeLineDateSize = 33;
- fontTimeLineTimeSize = 0;
- fontTimeLineTimeSizeDef12 = 24;
- fontTimeLineTimeSizeDef24 = 33;
- fontButtonSize = 33;
- fontDetailViewSize = 33;
- fontDetailHeaderSize = 40;
- fontMessageBoxSize = 33;
- fontMessageBoxLargeSize = 40;
- FontHeader = NULL;
- FontGrid = NULL;
- FontGridSmall = NULL;
- FontTimeLineWeekday = NULL;
- FontTimeLineDate = NULL;
- FontTimeLineTime = NULL;
+ FontButtonDelta = 0;
+ FontDetailViewDelta = 0;
+ FontDetailHeaderDelta = 0;
+ FontMessageBoxDelta = 0;
+ FontMessageBoxLargeDelta = 0;
+ FontStatusHeaderDelta = 0;
+ FontStatusHeaderLargeDelta = 0;
+ FontChannelHeaderDelta = 0;
+ FontGridDelta = 0;
+ FontGridSmallDelta = 0;
+ FontTimeLineWeekdayDelta = 0;
+ FontTimeLineDateDelta = 0;
+ FontTimeLineTimeDelta = 0;
+ FontChannelHeaderHorizontalDelta = 0;
+ FontGridHorizontalDelta = 0;
+ FontGridHorizontalSmallDelta = 0;
+ FontTimeLineDateHorizontalDelta = 0;
+ FontTimeLineTimeHorizontalDelta = 0;
+ //Common Fonts
FontButton = NULL;
FontDetailView = NULL;
FontDetailHeader = NULL;
FontMessageBox = NULL;
FontMessageBoxLarge = NULL;
-
+ FontStatusHeader = NULL;
+ FontStatusHeaderLarge = NULL;
+ //Fonts for vertical Display
+ FontChannelHeader = NULL;
+ FontGrid = NULL;
+ FontGridSmall = NULL;
+ FontTimeLineWeekday = NULL;
+ FontTimeLineDate = NULL;
+ FontTimeLineTime = NULL;
+ //Fonts for horizontal Display
+ FontChannelHeaderHorizontal = NULL;
+ FontGridHorizontal = NULL;
+ FontGridHorizontalSmall = NULL;
+ FontTimeLineDateHorizontal = NULL;
+ FontTimeLineTimeHorizontal = NULL;
+
timeFormat = 1;
- themeIndex = 0;
- useBlending = 1;
+ themeIndex = 4;
+ useBlending = 2;
roundedCorners = 0;
}
cTvguideConfig::~cTvguideConfig() {
- delete FontHeader;
+ delete FontButton;
+ delete FontDetailView;
+ delete FontDetailHeader;
+ delete FontMessageBox;
+ delete FontMessageBoxLarge;
delete FontStatusHeader;
delete FontStatusHeaderLarge;
- delete FontGrid;
+ delete FontChannelHeader;
+ delete FontGrid;
delete FontGridSmall;
- delete FontTimeLineWeekday;
+ delete FontTimeLineWeekday;
delete FontTimeLineDate;
delete FontTimeLineTime;
- delete FontButton;
- delete FontDetailView;
- delete FontDetailHeader;
- delete FontMessageBox;
- delete FontMessageBoxLarge;
+ delete FontChannelHeaderHorizontal;
+ delete FontGridHorizontal;
+ delete FontGridHorizontalSmall;
+ delete FontTimeLineDateHorizontal;
+ delete FontTimeLineTimeHorizontal;
}
void cTvguideConfig::setDynamicValues(int width, int height) {
+ SetGeometry(width, height);
+ SetFonts();
+}
+
+void cTvguideConfig::SetGeometry(int width, int height) {
osdWidth = width;
osdHeight = height;
- colWidth = (osdWidth - timeColWidth) / channelCols;
- statusHeaderHeight = (displayStatusHeader)?(statusHeaderPercent * osdHeight / 100):0;
- minuteHeight = (osdHeight - statusHeaderHeight - headerHeight - footerHeight) / displayTime;
-
- if (!fontTimeLineTimeSize) {
- if (timeFormat == e12Hours) {
- fontTimeLineTimeSize = fontTimeLineTimeSizeDef12;
- } else if (timeFormat == e24Hours) {
- fontTimeLineTimeSize = fontTimeLineTimeSizeDef24;
- }
- } else if ((fontTimeLineTimeSize == fontTimeLineTimeSizeDef12) && (timeFormat == e24Hours)) {
- fontTimeLineTimeSize = fontTimeLineTimeSizeDef24;
- } else if ((fontTimeLineTimeSize == fontTimeLineTimeSizeDef24) && (timeFormat == e12Hours)) {
- fontTimeLineTimeSize = fontTimeLineTimeSizeDef12;
- }
+ statusHeaderHeight = (displayStatusHeader)?(statusHeaderPercent * osdHeight / 100):0;
+ channelHeaderWidth = channelHeaderWidthPercent * osdWidth / 100;
+ channelHeaderHeight = channelHeaderHeightPercent * osdHeight / 100;
+ timeLineWidth = timeLineWidthPercent * osdWidth / 100;
+ timeLineHeight = timeLineHeightPercent * osdHeight / 100;
+
+ if (displayMode == eVertical) {
+ colWidth = (osdWidth - timeLineWidth) / channelCols;
+ rowHeight = 0;
+ minutePixel = (osdHeight - statusHeaderHeight - channelHeaderHeight - footerHeight) / displayTime;
+ } else if (displayMode == eHorizontal) {
+ colWidth = 0;
+ rowHeight = (osdHeight - statusHeaderHeight - timeLineHeight - footerHeight) / channelRows;
+ minutePixel = (osdWidth - channelHeaderWidth) / displayTime;
+ }
+
+ numGrids = (displayMode == eVertical)?channelCols:channelRows;
+}
+
+void cTvguideConfig::SetFonts(void){
cString fontname;
if (fontIndex == 0) {
fontname = fontNameDefault;
@@ -111,24 +152,34 @@ void cTvguideConfig::setDynamicValues(int width, int height) { fontname = fontNameDefault;
}
cFont *test = NULL;
- test = cFont::CreateFont(*fontname, fontHeaderSize);
+ test = cFont::CreateFont(*fontname, 30);
if (!test) {
fontname = DefaultFontSml;
}
delete test;
- FontHeader = cFont::CreateFont(*fontname, fontHeaderSize);
- FontStatusHeader = cFont::CreateFont(*fontname, fontStatusHeaderSize);
- FontStatusHeaderLarge = cFont::CreateFont(*fontname, fontStatusHeaderLargeSize);
- FontGrid = cFont::CreateFont(*fontname, fontGridSize);
- FontGridSmall = cFont::CreateFont(*fontname, fontGridSmallSize);
- FontTimeLineWeekday = cFont::CreateFont(*fontname, fontTimeLineWeekdaySize);
- FontTimeLineDate = cFont::CreateFont(*fontname, fontTimeLineDateSize);
- FontTimeLineTime = cFont::CreateFont(*fontname, fontTimeLineTimeSize);
- FontButton = cFont::CreateFont(*fontname, fontButtonSize);
- FontDetailView = cFont::CreateFont(*fontname, fontDetailViewSize);
- FontDetailHeader = cFont::CreateFont(*fontname, fontDetailHeaderSize);
- FontMessageBox = cFont::CreateFont(*fontname, fontMessageBoxSize);
- FontMessageBoxLarge = cFont::CreateFont(*fontname, fontMessageBoxLargeSize);
+
+ //Common Fonts
+ FontButton = cFont::CreateFont(*fontname, footerHeight/3 + 4 + FontButtonDelta);
+ FontDetailView = cFont::CreateFont(*fontname, osdHeight/30 + FontDetailViewDelta);
+ FontDetailHeader = cFont::CreateFont(*fontname, osdHeight/25 + FontDetailHeaderDelta);
+ FontMessageBox = cFont::CreateFont(*fontname, osdHeight/33 + FontMessageBoxDelta);
+ FontMessageBoxLarge = cFont::CreateFont(*fontname, osdHeight/30 + FontMessageBoxLargeDelta);
+ FontStatusHeader = cFont::CreateFont(*fontname, statusHeaderHeight/6 - 4 + FontStatusHeaderDelta);
+ FontStatusHeaderLarge = cFont::CreateFont(*fontname, statusHeaderHeight/5 + FontStatusHeaderLargeDelta);
+ //Fonts for vertical Display
+ FontChannelHeader = cFont::CreateFont(*fontname, colWidth/10 + FontChannelHeaderDelta);
+ FontGrid = cFont::CreateFont(*fontname, colWidth/12 + FontGridDelta);
+ FontGridSmall = cFont::CreateFont(*fontname, colWidth/12 + FontGridSmallDelta);
+ FontTimeLineWeekday = cFont::CreateFont(*fontname, timeLineWidth/3 + FontTimeLineWeekdayDelta);
+ FontTimeLineDate = cFont::CreateFont(*fontname, timeLineWidth/4 + FontTimeLineDateDelta);
+ FontTimeLineTime = cFont::CreateFont(*fontname, timeLineWidth/4 + FontTimeLineTimeDelta);
+ //Fonts for horizontal Display
+ FontChannelHeaderHorizontal = cFont::CreateFont(*fontname, rowHeight/3 + FontChannelHeaderHorizontalDelta);
+ FontGridHorizontal = cFont::CreateFont(*fontname, rowHeight/3 + 5 + FontGridHorizontalDelta);
+ FontGridHorizontalSmall = cFont::CreateFont(*fontname, rowHeight/4 + FontGridHorizontalSmallDelta);
+ FontTimeLineDateHorizontal = cFont::CreateFont(*fontname, timeLineHeight/2 + 5 + FontTimeLineDateHorizontalDelta);
+ FontTimeLineTimeHorizontal = cFont::CreateFont(*fontname, timeLineHeight/2 + FontTimeLineTimeHorizontalDelta);
+
}
void cTvguideConfig::SetLogoPath(cString path) {
@@ -151,40 +202,51 @@ void cTvguideConfig::loadTheme() { bool cTvguideConfig::SetupParse(const char *Name, const char *Value) {
if (strcmp(Name, "timeFormat") == 0) timeFormat = atoi(Value);
else if (strcmp(Name, "themeIndex") == 0) themeIndex = atoi(Value);
+ else if (strcmp(Name, "displayMode") == 0) displayMode = atoi(Value);
else if (strcmp(Name, "displayStatusHeader") == 0) displayStatusHeader = atoi(Value);
else if (strcmp(Name, "statusHeaderPercent") == 0) statusHeaderPercent = atoi(Value);
else if (strcmp(Name, "scaleVideo") == 0) scaleVideo = atoi(Value);
+ else if (strcmp(Name, "decorateVideo") == 0) decorateVideo = atoi(Value);
else if (strcmp(Name, "useBlending") == 0) useBlending = atoi(Value);
else if (strcmp(Name, "roundedCorners") == 0) roundedCorners = atoi(Value);
else if (strcmp(Name, "channelCols") == 0) channelCols = atoi(Value);
+ else if (strcmp(Name, "channelRows") == 0) channelRows = atoi(Value);
else if (strcmp(Name, "displayTime") == 0) displayTime = atoi(Value);
else if (strcmp(Name, "hideChannelLogos") == 0) hideChannelLogos = atoi(Value);
else if (strcmp(Name, "logoExtension") == 0) logoExtension = atoi(Value);
- else if (strcmp(Name, "logoWidth") == 0) logoWidth = atoi(Value);
- else if (strcmp(Name, "logoHeight") == 0) logoHeight = atoi(Value);
+ else if (strcmp(Name, "logoWidthRatio") == 0) logoWidthRatio = atoi(Value);
+ else if (strcmp(Name, "logoHeightRatio") == 0) logoHeightRatio = atoi(Value);
else if (strcmp(Name, "bigStepHours") == 0) bigStepHours = atoi(Value);
else if (strcmp(Name, "hugeStepHours") == 0) hugeStepHours = atoi(Value);
else if (strcmp(Name, "jumpChannels") == 0) jumpChannels = atoi(Value);
else if (strcmp(Name, "hideEpgImages") == 0) hideEpgImages = atoi(Value);
else if (strcmp(Name, "epgImageWidth") == 0) epgImageWidth = atoi(Value);
else if (strcmp(Name, "epgImageHeight") == 0) epgImageHeight = atoi(Value);
- else if (strcmp(Name, "timeColWidth") == 0) timeColWidth = atoi(Value);
- else if (strcmp(Name, "headerHeight") == 0) headerHeight = atoi(Value);
+ else if (strcmp(Name, "timeLineWidthPercent") == 0) timeLineWidthPercent = atoi(Value);
+ else if (strcmp(Name, "timeLineHeightPercent") == 0) timeLineHeightPercent = atoi(Value);
+ else if (strcmp(Name, "displayChannelName") == 0) displayChannelName = atoi(Value);
+ else if (strcmp(Name, "channelHeaderWidthPercent") == 0) channelHeaderWidthPercent = atoi(Value);
+ else if (strcmp(Name, "channelHeaderHeightPercent") == 0) channelHeaderHeightPercent = atoi(Value);
else if (strcmp(Name, "footerHeight") == 0) footerHeight = atoi(Value);
- else if (strcmp(Name, "fontIndex") == 0) fontIndex = atoi(Value);
- else if (strcmp(Name, "fontHeaderSize") == 0) fontHeaderSize = atoi(Value);
- else if (strcmp(Name, "fontStatusHeaderSize") == 0) fontStatusHeaderSize = atoi(Value);
- else if (strcmp(Name, "fontStatusHeaderLargeSize") == 0) fontStatusHeaderLargeSize = atoi(Value);
- else if (strcmp(Name, "fontGridSize") == 0) fontGridSize = atoi(Value);
- else if (strcmp(Name, "fontGridSmallSize") == 0) fontGridSmallSize = atoi(Value);
- else if (strcmp(Name, "fontTimeLineWeekdaySize") == 0) fontTimeLineWeekdaySize = atoi(Value);
- else if (strcmp(Name, "fontTimeLineDateSize") == 0) fontTimeLineDateSize = atoi(Value);
- else if (strcmp(Name, "fontTimeLineTimeSize") == 0) fontTimeLineTimeSize = atoi(Value);
- else if (strcmp(Name, "fontButtonSize") == 0) fontButtonSize = atoi(Value);
- else if (strcmp(Name, "fontDetailViewSize") == 0) fontDetailViewSize = atoi(Value);
- else if (strcmp(Name, "fontDetailHeaderSize") == 0) fontDetailHeaderSize = atoi(Value);
- else if (strcmp(Name, "fontMessageBoxSize") == 0) fontMessageBoxSize = atoi(Value);
- else if (strcmp(Name, "fontMessageBoxLargeSize") == 0) fontMessageBoxLargeSize = atoi(Value);
- else return false;
+ else if (strcmp(Name, "fontIndex") == 0) fontIndex = atoi(Value);
+ else if (strcmp(Name, "FontButtonDelta") == 0) FontButtonDelta = atoi(Value);
+ else if (strcmp(Name, "FontDetailViewDelta") == 0) FontDetailViewDelta = atoi(Value);
+ else if (strcmp(Name, "FontDetailHeaderDelta") == 0) FontDetailHeaderDelta = atoi(Value);
+ else if (strcmp(Name, "FontMessageBoxDelta") == 0) FontMessageBoxDelta = atoi(Value);
+ else if (strcmp(Name, "FontMessageBoxLargeDelta") == 0) FontMessageBoxLargeDelta = atoi(Value);
+ else if (strcmp(Name, "FontStatusHeaderDelta") == 0) FontStatusHeaderDelta = atoi(Value);
+ else if (strcmp(Name, "FontStatusHeaderLargeDelta") == 0) FontStatusHeaderLargeDelta = atoi(Value);
+ else if (strcmp(Name, "FontChannelHeaderDelta") == 0) FontChannelHeaderDelta = atoi(Value);
+ else if (strcmp(Name, "FontGridDelta") == 0) FontGridDelta = atoi(Value);
+ else if (strcmp(Name, "FontGridSmallDelta") == 0) FontGridSmallDelta = atoi(Value);
+ else if (strcmp(Name, "FontTimeLineWeekdayDelta") == 0) FontTimeLineWeekdayDelta = atoi(Value);
+ else if (strcmp(Name, "FontTimeLineDateDelta") == 0) FontTimeLineDateDelta = atoi(Value);
+ else if (strcmp(Name, "FontTimeLineTimeDelta") == 0) FontTimeLineTimeDelta = atoi(Value);
+ else if (strcmp(Name, "FontChannelHeaderHorizontalDelta") == 0) FontChannelHeaderHorizontalDelta = atoi(Value);
+ else if (strcmp(Name, "FontGridHorizontalDelta") == 0) FontGridHorizontalDelta = atoi(Value);
+ else if (strcmp(Name, "FontGridHorizontalSmallDelta") == 0) FontGridHorizontalSmallDelta = atoi(Value);
+ else if (strcmp(Name, "FontTimeLineDateHorizontalDelta") == 0) FontTimeLineDateHorizontalDelta = atoi(Value);
+ else if (strcmp(Name, "FontTimeLineTimeHorizontalDelta") == 0) FontTimeLineTimeHorizontalDelta = atoi(Value);
+ else return false;
return true;
}
@@ -7,26 +7,40 @@ class cTvguideConfig { ~cTvguideConfig();
void SetLogoPath(cString path);
void SetImagesPath(cString path);
- int osdWidth;
+ void SetGeometry(int width, int height);
+ void SetFonts(void);
+ int osdWidth;
int osdHeight;
+ int displayMode;
int colWidth;
+ int rowHeight;
int channelCols;
+ int channelRows;
+ int numGrids;
int displayTime;
- int minuteHeight;
+ int minutePixel;
int displayStatusHeader;
int statusHeaderPercent;
int statusHeaderHeight;
int scaleVideo;
- int timeColWidth;
- int headerHeight;
+ int decorateVideo;
+ int timeLineWidthPercent;
+ int timeLineHeightPercent;
+ int timeLineWidth;
+ int timeLineHeight;
+ int displayChannelName;
+ int channelHeaderWidthPercent;
+ int channelHeaderHeightPercent;
+ int channelHeaderWidth;
+ int channelHeaderHeight;
int footerHeight;
int stepMinutes;
int bigStepHours;
int hugeStepHours;
int jumpChannels;
int hideChannelLogos;
- int logoWidth;
- int logoHeight;
+ int logoWidthRatio;
+ int logoHeightRatio;
cString logoPath;
int logoExtension;
int hideEpgImages;
@@ -35,29 +49,37 @@ class cTvguideConfig { cString epgImagePath;
int fontIndex;
const char *fontNameDefault;
- int fontHeaderSize;
- int fontStatusHeaderSize;
- int fontStatusHeaderLargeSize;
- int fontGridSize;
- int fontGridSmallSize;
- int fontTimeLineWeekdaySize;
- int fontTimeLineDateSize;
- int fontTimeLineTimeSize;
- int fontTimeLineTimeSizeDef12;
- int fontTimeLineTimeSizeDef24;
- int fontButtonSize;
- int fontDetailViewSize;
- int fontDetailHeaderSize;
- int fontMessageBoxSize;
- int fontMessageBoxLargeSize;
- const cFont *FontHeader;
+ int FontButtonDelta;
+ int FontDetailViewDelta;
+ int FontDetailHeaderDelta;
+ int FontMessageBoxDelta;
+ int FontMessageBoxLargeDelta;
+ int FontStatusHeaderDelta;
+ int FontStatusHeaderLargeDelta;
+ int FontChannelHeaderDelta;
+ int FontGridDelta;
+ int FontGridSmallDelta;
+ int FontTimeLineWeekdayDelta;
+ int FontTimeLineDateDelta;
+ int FontTimeLineTimeDelta;
+ int FontChannelHeaderHorizontalDelta;
+ int FontGridHorizontalDelta;
+ int FontGridHorizontalSmallDelta;
+ int FontTimeLineDateHorizontalDelta;
+ int FontTimeLineTimeHorizontalDelta;
+ const cFont *FontChannelHeader;
+ const cFont *FontChannelHeaderHorizontal;
const cFont *FontStatusHeader;
const cFont *FontStatusHeaderLarge;
const cFont *FontGrid;
const cFont *FontGridSmall;
+ const cFont *FontGridHorizontal;
+ const cFont *FontGridHorizontalSmall;
const cFont *FontTimeLineWeekday;
const cFont *FontTimeLineDate;
+ const cFont *FontTimeLineDateHorizontal;
const cFont *FontTimeLineTime;
+ const cFont *FontTimeLineTimeHorizontal;
const cFont *FontButton;
const cFont *FontDetailView;
const cFont *FontDetailHeader;
diff --git a/detailview.c b/detailview.c index a05bf92..81f50df 100644 --- a/detailview.c +++ b/detailview.c @@ -7,8 +7,8 @@ cDetailView::cDetailView(cGrid *grid) { FrameTime = 40; // ms FadeTime = 500; // ms borderWidth = 100; //px - headerHeight = max (80 + tvguideConfig.logoHeight + 3 * tvguideConfig.FontDetailHeader->Height(), // border + logo + 3 Lines - 80 + tvguideConfig.epgImageHeight); + headerHeight = max (40 + 3 * tvguideConfig.FontDetailHeader->Height(), // border + 3 Lines + 40 + tvguideConfig.epgImageHeight); description.Set(event->Description(), tvguideConfig.FontDetailView, tvguideConfig.osdWidth-2*borderWidth - 50 - 40); contentScrollable = setContentDrawportHeight(); createPixmaps(); @@ -61,19 +61,17 @@ void cDetailView::createPixmaps() { void cDetailView::drawHeader() { header->drawBackground(); header->drawBoldBorder(); - - int lineHeight = tvguideConfig.FontDetailHeader->Height(); - int offset = 30; + int logoHeight = header->Height() / 2; + int logoWidth = logoHeight * tvguideConfig.logoWidthRatio / tvguideConfig.logoHeightRatio; + int lineHeight = tvguideConfig.FontDetailHeader->Height(); cImageLoader imgLoader; - if (tvguideConfig.hideChannelLogos) { - header->DrawText(cPoint(20, offset + 10), grid->column->getChannel()->Name(), theme.Color(clrFont), clrTransparent, tvguideConfig.FontDetailHeader); - offset += lineHeight + 10; - } else { - if (imgLoader.LoadLogo(grid->column->getChannel()->Name())) { + bool logoDrawn = false; + if (!tvguideConfig.hideChannelLogos) { + if (imgLoader.LoadLogo(grid->column->getChannel()->Name(), logoWidth, logoHeight)) { cImage logo = imgLoader.GetImage(); - headerLogo->DrawImage(cPoint(20, 20), logo); + headerLogo->DrawImage(cPoint(10, (header->Height() - logoHeight)/2), logo); + logoDrawn = true; } - offset += tvguideConfig.logoHeight; } if (!tvguideConfig.hideEpgImages) { @@ -85,11 +83,12 @@ void cDetailView::drawHeader() { header->DrawImage(cPoint(epgImageX, epgImageY), epgImage); } } - - header->DrawText(cPoint(20, offset), event->Title(), theme.Color(clrFont), clrTransparent, tvguideConfig.FontDetailHeader); + int textX = logoDrawn?(20 + logoWidth):20; + int textY = (header->Height() - 2*lineHeight)/2; + header->DrawText(cPoint(textX, textY), event->Title(), theme.Color(clrFont), clrTransparent, tvguideConfig.FontDetailHeader); cString datetime = cString::sprintf("%s, %s - %s (%d min)", *event->GetDateString(), *event->GetTimeString(), *event->GetEndTimeString(), event->Duration()/60); - header->DrawText(cPoint(20, offset + lineHeight), *datetime, theme.Color(clrFont), clrTransparent, tvguideConfig.FontDetailView); - header->DrawText(cPoint(20, offset + 2 * lineHeight), event->ShortText(), theme.Color(clrFont), clrTransparent, tvguideConfig.FontDetailView); + header->DrawText(cPoint(textX, textY + lineHeight), *datetime, theme.Color(clrFont), clrTransparent, tvguideConfig.FontDetailView); + header->DrawText(cPoint(textX, textY + 2 * lineHeight), event->ShortText(), theme.Color(clrFont), clrTransparent, tvguideConfig.FontDetailView); } void cDetailView::drawContent() { diff --git a/dummygrid.c b/dummygrid.c index 123bce1..928b0b5 100644 --- a/dummygrid.c +++ b/dummygrid.c @@ -12,39 +12,64 @@ cDummyGrid::~cDummyGrid(void) { void cDummyGrid::SetViewportHeight() { int viewportHeightOld = viewportHeight; - viewportHeight = Duration() / 60 * tvguideConfig.minuteHeight; + viewportHeight = Duration() / 60 * tvguideConfig.minutePixel; if (viewportHeight != viewportHeightOld) dirty = true; } void cDummyGrid::PositionPixmap() { - int x0 = column->getX(); - int y0 = tvguideConfig.statusHeaderHeight + tvguideConfig.headerHeight; - if ( column->Start() < StartTime() ) { - y0 += (StartTime() - column->Start())/60*tvguideConfig.minuteHeight; - } - if (!pixmap) { - pixmap = osdManager.requestPixmap(-1, cRect(x0, y0, tvguideConfig.colWidth, viewportHeight), cRect::Null); - } else if (dirty) { - osdManager.releasePixmap(pixmap); - pixmap = osdManager.requestPixmap(-1, cRect(x0, y0, tvguideConfig.colWidth, viewportHeight), cRect::Null); - } else { - pixmap->SetViewPort(cRect(x0, y0, tvguideConfig.colWidth, viewportHeight)); - } + int x0, y0; + if (tvguideConfig.displayMode == eVertical) { + x0 = column->getX(); + y0 = tvguideConfig.statusHeaderHeight + tvguideConfig.channelHeaderHeight; + if ( column->Start() < StartTime() ) { + y0 += (StartTime() - column->Start())/60*tvguideConfig.minutePixel; + } + if (!pixmap) { + pixmap = osdManager.requestPixmap(-1, cRect(x0, y0, tvguideConfig.colWidth, viewportHeight)); + } else if (dirty) { + osdManager.releasePixmap(pixmap); + pixmap = osdManager.requestPixmap(-1, cRect(x0, y0, tvguideConfig.colWidth, viewportHeight)); + } else { + pixmap->SetViewPort(cRect(x0, y0, tvguideConfig.colWidth, viewportHeight)); + } + } else if (tvguideConfig.displayMode == eHorizontal) { + x0 = tvguideConfig.channelHeaderWidth; + y0 = column->getY(); + if ( column->Start() < StartTime() ) { + x0 += (StartTime() - column->Start())/60*tvguideConfig.minutePixel; + } + if (!pixmap) { + pixmap = osdManager.requestPixmap(-1, cRect(x0, y0, viewportHeight, tvguideConfig.rowHeight)); + } else if (dirty) { + osdManager.releasePixmap(pixmap); + pixmap = osdManager.requestPixmap(-1, cRect(x0, y0, viewportHeight, tvguideConfig.rowHeight)); + } else { + pixmap->SetViewPort(cRect(x0, y0, viewportHeight, tvguideConfig.rowHeight)); + } + } } void cDummyGrid::setText() { - text->Set(*(strText), tvguideConfig.FontGrid, tvguideConfig.colWidth-2*borderWidth); + if (tvguideConfig.displayMode == eVertical) { + text->Set(*strText, tvguideConfig.FontGrid, tvguideConfig.colWidth-2*borderWidth); + } } void cDummyGrid::drawText() { - if (Height()/tvguideConfig.minuteHeight < 6) - return; - int textHeight = tvguideConfig.FontGrid->Height(); - int textLines = text->Lines(); - for (int i=0; i<textLines; i++) { - pixmap->DrawText(cPoint(borderWidth, borderWidth + i*textHeight), text->GetLine(i), theme.Color(clrFont), clrTransparent, tvguideConfig.FontGrid); - } + if (tvguideConfig.displayMode == eVertical) { + if (Height()/tvguideConfig.minutePixel < 6) + return; + int textHeight = tvguideConfig.FontGrid->Height(); + int textLines = text->Lines(); + for (int i=0; i<textLines; i++) { + pixmap->DrawText(cPoint(borderWidth, borderWidth + i*textHeight), text->GetLine(i), theme.Color(clrFont), clrTransparent, tvguideConfig.FontGrid); + + } + } else if (tvguideConfig.displayMode == eHorizontal) { + int titleY = (tvguideConfig.rowHeight - tvguideConfig.FontGridHorizontal->Height())/2; + pixmap->DrawText(cPoint(borderWidth, titleY), *strText, theme.Color(clrFont), clrTransparent, tvguideConfig.FontGridHorizontal); + } } cString cDummyGrid::getText(void) { return strText; @@ -24,50 +24,82 @@ void cEpgGrid::SetViewportHeight() { } else {
viewportHeight = Duration() / 60;
}
- viewportHeight *= tvguideConfig.minuteHeight;
+ viewportHeight *= tvguideConfig.minutePixel;
if (viewportHeight != viewportHeightOld)
dirty = true;
}
void cEpgGrid::PositionPixmap() {
- int x0 = column->getX();
- int y0 = tvguideConfig.statusHeaderHeight + tvguideConfig.headerHeight;
- if ( column->Start() < StartTime() ) {
- y0 += (StartTime() - column->Start())/60*tvguideConfig.minuteHeight;
- }
- if (!pixmap) {
- pixmap = osdManager.requestPixmap(-1, cRect(x0, y0, tvguideConfig.colWidth, viewportHeight),
- cRect(0, 0, tvguideConfig.colWidth, Duration()/60*tvguideConfig.minuteHeight));
- } else {
- pixmap->SetViewPort(cRect(x0, y0, tvguideConfig.colWidth, viewportHeight));
- }
+ int x0, y0;
+ if (tvguideConfig.displayMode == eVertical) {
+ int x0 = column->getX();
+ int y0 = tvguideConfig.statusHeaderHeight + tvguideConfig.channelHeaderHeight;
+ if ( column->Start() < StartTime() ) {
+ y0 += (StartTime() - column->Start())/60*tvguideConfig.minutePixel;
+ }
+ if (!pixmap) {
+ pixmap = osdManager.requestPixmap(-1, cRect(x0, y0, tvguideConfig.colWidth, viewportHeight),
+ cRect(0, 0, tvguideConfig.colWidth, Duration()/60*tvguideConfig.minutePixel));
+ } else {
+ pixmap->SetViewPort(cRect(x0, y0, tvguideConfig.colWidth, viewportHeight));
+ }
+ } else if (tvguideConfig.displayMode == eHorizontal) {
+ int x0 = tvguideConfig.channelHeaderWidth;
+ int y0 = column->getY();
+ if ( column->Start() < StartTime() ) {
+ x0 += (StartTime() - column->Start())/60*tvguideConfig.minutePixel;
+ }
+ if (!pixmap) {
+ pixmap = osdManager.requestPixmap(-1, cRect(x0, y0, viewportHeight, tvguideConfig.rowHeight),
+ cRect(0, 0, Duration()/60*tvguideConfig.minutePixel, tvguideConfig.rowHeight));
+ } else {
+ pixmap->SetViewPort(cRect(x0, y0, viewportHeight, tvguideConfig.rowHeight ));
+ }
+ }
+
}
void cEpgGrid::setText() {
- cString strText;
- strText = cString::sprintf("%s - %s:\n%s", *(event->GetTimeString()), *(event->GetEndTimeString()), event->Title());
- text->Set(*(strText), tvguideConfig.FontGrid, tvguideConfig.colWidth-2*borderWidth);
- extText->Set(event->ShortText(), tvguideConfig.FontGridSmall, tvguideConfig.colWidth-2*borderWidth);
+ if (tvguideConfig.displayMode == eVertical) {
+ cString strText;
+ strText = cString::sprintf("%s - %s:\n%s", *(event->GetTimeString()), *(event->GetEndTimeString()), event->Title());
+ text->Set(*(strText), tvguideConfig.FontGrid, tvguideConfig.colWidth-2*borderWidth);
+ extText->Set(event->ShortText(), tvguideConfig.FontGridSmall, tvguideConfig.colWidth-2*borderWidth);
+ } else if (tvguideConfig.displayMode == eHorizontal) {
+ timeString = cString::sprintf("%s - %s", *(event->GetTimeString()), *(event->GetEndTimeString()));
+ }
}
void cEpgGrid::drawText() {
- if (Height()/tvguideConfig.minuteHeight < 6)
- return;
- int textHeight = tvguideConfig.FontGrid->Height();
- int textLines = text->Lines();
- for (int i=0; i<textLines; i++) {
- pixmap->DrawText(cPoint(borderWidth, borderWidth + i*textHeight), text->GetLine(i), theme.Color(clrFont), clrTransparent, tvguideConfig.FontGrid);
- }
- int extTextLines = extText->Lines();
- int offset = (textLines+1)*textHeight - 0.5*textHeight;
- textHeight = tvguideConfig.FontGridSmall->Height();
- if ((Height()-textHeight-10) > offset) {
- for (int i=0; i<extTextLines; i++) {
- pixmap->DrawText(cPoint(borderWidth, borderWidth + offset + i*textHeight), extText->GetLine(i), theme.Color(clrFont), clrTransparent, tvguideConfig.FontGridSmall);
- }
- }
- if (hasTimer)
- drawRecIcon();
+ if (tvguideConfig.displayMode == eVertical) {
+ if (Height()/tvguideConfig.minutePixel < 6)
+ return;
+ int textHeight = tvguideConfig.FontGrid->Height();
+ int textLines = text->Lines();
+ for (int i=0; i<textLines; i++) {
+ pixmap->DrawText(cPoint(borderWidth, borderWidth + i*textHeight), text->GetLine(i), theme.Color(clrFont), clrTransparent, tvguideConfig.FontGrid);
+ }
+ int extTextLines = extText->Lines();
+ int offset = (textLines+1)*textHeight - 0.5*textHeight;
+ textHeight = tvguideConfig.FontGridSmall->Height();
+ if ((Height()-textHeight-10) > offset) {
+ for (int i=0; i<extTextLines; i++) {
+ pixmap->DrawText(cPoint(borderWidth, borderWidth + offset + i*textHeight), extText->GetLine(i), theme.Color(clrFont), clrTransparent, tvguideConfig.FontGridSmall);
+ }
+ }
+ if (hasTimer)
+ drawRecIcon();
+ } else if (tvguideConfig.displayMode == eHorizontal) {
+ if (Width()/tvguideConfig.minutePixel < 10) {
+ int titleY = (tvguideConfig.rowHeight - tvguideConfig.FontGridHorizontal->Height())/2;
+ pixmap->DrawText(cPoint(borderWidth - 2, titleY), "...", theme.Color(clrFont), clrTransparent, tvguideConfig.FontGridHorizontal);
+ return;
+ }
+ pixmap->DrawText(cPoint(borderWidth, borderWidth), *timeString, theme.Color(clrFont), clrTransparent, tvguideConfig.FontGridHorizontalSmall);
+ cString strTitle = CutText(event->Title(), viewportHeight, tvguideConfig.FontGridHorizontal).c_str();
+ int titleY = tvguideConfig.FontGridHorizontalSmall->Height() + (tvguideConfig.rowHeight - tvguideConfig.FontGridHorizontalSmall->Height() - tvguideConfig.FontGridHorizontal->Height())/2;
+ pixmap->DrawText(cPoint(borderWidth, titleY), *strTitle, theme.Color(clrFont), clrTransparent, tvguideConfig.FontGridHorizontal);
+ }
}
void cEpgGrid::drawRecIcon() {
@@ -7,6 +7,7 @@ class cEpgGrid : public cGrid { private:
const cEvent *event;
cTextWrapper *extText;
+ cString timeString;
bool hasTimer;
void drawText();
void drawRecIcon();
@@ -2,13 +2,13 @@ cFooter::cFooter() {
buttonBorder = 20;
- buttonWidth = (tvguideConfig.osdWidth - tvguideConfig.timeColWidth - 5*buttonBorder)/4;
+ buttonWidth = (tvguideConfig.osdWidth - tvguideConfig.timeLineWidth - 5*buttonBorder)/4;
buttonHeight= tvguideConfig.footerHeight - 2*buttonBorder;
buttonY = (tvguideConfig.footerHeight - buttonHeight)/2;
- footer = osdManager.requestPixmap(2, cRect( tvguideConfig.timeColWidth,
+ footer = osdManager.requestPixmap(2, cRect( tvguideConfig.timeLineWidth,
tvguideConfig.osdHeight - tvguideConfig.footerHeight,
- tvguideConfig.osdWidth - tvguideConfig.timeColWidth,
+ tvguideConfig.osdWidth - tvguideConfig.timeLineWidth,
tvguideConfig.footerHeight),
cRect::Null);
footer->Fill(clrTransparent);
diff --git a/headergrid.c b/headergrid.c index 41a95f4..69d0011 100644 --- a/headergrid.c +++ b/headergrid.c @@ -12,20 +12,21 @@ cHeaderGrid::~cHeaderGrid(void) { void cHeaderGrid::createBackground(int num) {
color = theme.Color(clrHeader);
colorBlending = theme.Color(clrHeaderBlending);
- pixmap = osdManager.requestPixmap(2, cRect( tvguideConfig.timeColWidth + num*tvguideConfig.colWidth,
- tvguideConfig.statusHeaderHeight,
- tvguideConfig.colWidth,
- tvguideConfig.headerHeight)
- , cRect::Null);
- if (!pixmap) {
- return;
- }
- pixmapLogo = osdManager.requestPixmap(3, cRect( tvguideConfig.timeColWidth + num*tvguideConfig.colWidth,
- tvguideConfig.statusHeaderHeight,
- tvguideConfig.colWidth,
- tvguideConfig.headerHeight)
- , cRect::Null);
- if (!pixmapLogo) {
+ int x, y, width, height;
+ if (tvguideConfig.displayMode == eVertical) {
+ x = tvguideConfig.timeLineWidth + num*tvguideConfig.colWidth;
+ y = tvguideConfig.statusHeaderHeight;
+ width = tvguideConfig.colWidth;
+ height = tvguideConfig.channelHeaderHeight;
+ } else if (tvguideConfig.displayMode == eHorizontal) {
+ x = 0;
+ y = tvguideConfig.statusHeaderHeight + tvguideConfig.timeLineHeight + num*tvguideConfig.rowHeight;
+ width = tvguideConfig.channelHeaderWidth;
+ height = tvguideConfig.rowHeight;
+ }
+ pixmap = osdManager.requestPixmap(2, cRect(x, y, width, height));
+ pixmapLogo = osdManager.requestPixmap(3, cRect(x, y, width, height));
+ if ((!pixmap) || (!pixmapLogo)){
return;
}
pixmapLogo->Fill(clrTransparent);
@@ -33,38 +34,93 @@ void cHeaderGrid::createBackground(int num) { }
void cHeaderGrid::drawChannel(const cChannel *channel) {
+ if (tvguideConfig.displayMode == eVertical) {
+ drawChannelVertical(channel);
+ } else if (tvguideConfig.displayMode == eHorizontal) {
+ drawChannelHorizontal(channel);
+ }
+ drawBorder();
+}
+
+void cHeaderGrid::drawChannelHorizontal(const cChannel *channel) {
+ int logoWidth = Height() * tvguideConfig.logoWidthRatio / tvguideConfig.logoHeightRatio;
+ int logoX = tvguideConfig.displayChannelName?2:(Width()-logoWidth)/2;
+ int textX = 5;
+ int textY = (Height() - tvguideConfig.FontChannelHeaderHorizontal->Height())/2;
+ bool logoFound = false;
+ if (!tvguideConfig.hideChannelLogos) {
+ cImageLoader imgLoader;
+ if (imgLoader.LoadLogo(channel->Name(), logoWidth, Height())) {
+ cImage logo = imgLoader.GetImage();
+ pixmapLogo->DrawImage(cPoint(logoX, 0), logo);
+ logoFound = true;
+ }
+ }
+ bool drawText = false;
+ int textWidthMax = Width() - 10;
+ if (!logoFound) {
+ drawText = true;
+ } else if (tvguideConfig.displayChannelName) {
+ drawText = true;
+ textX += logoWidth;
+ textWidthMax -= logoWidth;
+ }
+ if (drawText) {
+ cString strChannel = cString::sprintf("%d %s", channel->Number(), channel->Name());
+ strChannel = CutText(*strChannel, textWidthMax, tvguideConfig.FontChannelHeaderHorizontal).c_str();
+ pixmap->DrawText(cPoint(textX, textY), *strChannel, theme.Color(clrFontHeader), clrTransparent, tvguideConfig.FontChannelHeaderHorizontal);
+ }
+}
+
+void cHeaderGrid::drawChannelVertical(const cChannel *channel) {
+ int logoWidth = Width()/2 - 15;
+ int logoHeight = logoWidth * tvguideConfig.logoHeightRatio / tvguideConfig.logoWidthRatio;
cTextWrapper tw;
cString headerText = cString::sprintf("%d - %s", channel->Number(), channel->Name());
- tw.Set(*headerText, tvguideConfig.FontHeader, tvguideConfig.colWidth - 8);
+ tw.Set(*headerText, tvguideConfig.FontChannelHeader, tvguideConfig.colWidth - 8);
int lines = tw.Lines();
- int lineHeight = tvguideConfig.FontHeader->Height();
- int yStart = (tvguideConfig.headerHeight - lines*lineHeight)/2 + 8;
- if (!tvguideConfig.hideChannelLogos) {
+ int lineHeight = tvguideConfig.FontChannelHeader->Height();
+ int yStart = (tvguideConfig.channelHeaderHeight - lines*lineHeight)/2 + 8;
+ bool logoFound = false;
+ if (!tvguideConfig.hideChannelLogos) {
cImageLoader imgLoader;
- if (imgLoader.LoadLogo(channel->Name())) {
+ if (imgLoader.LoadLogo(channel->Name(), logoWidth, logoHeight)) {
cImage logo = imgLoader.GetImage();
- int logoX = (tvguideConfig.colWidth - tvguideConfig.logoWidth)/2;
- pixmapLogo->DrawImage(cPoint(logoX, 5), logo);
+ pixmapLogo->DrawImage(cPoint((Width() - logoWidth)/2, 4), logo);
+ logoFound = true;
}
- yStart = tvguideConfig.logoHeight + 8;
}
+ bool drawText = false;
+ if (!logoFound) {
+ drawText = true;
+ } else if (tvguideConfig.displayChannelName) {
+ drawText = true;
+ yStart = logoHeight;
+ }
+ if (!drawText)
+ return;
for (int i=0; i<lines; i++) {
- int textWidth = tvguideConfig.FontHeader->Width(tw.GetLine(i));
+ int textWidth = tvguideConfig.FontChannelHeader->Width(tw.GetLine(i));
int xText = (tvguideConfig.colWidth - textWidth) / 2;
if (xText < 0)
xText = 0;
- pixmap->DrawText(cPoint(xText, yStart + i*lineHeight), tw.GetLine(i), theme.Color(clrFontHeader), clrTransparent, tvguideConfig.FontHeader);
+ pixmap->DrawText(cPoint(xText, yStart + i*lineHeight), tw.GetLine(i), theme.Color(clrFontHeader), clrTransparent, tvguideConfig.FontChannelHeader);
}
- drawBorder();
}
void cHeaderGrid::setPosition(int num) {
- pixmap->SetViewPort(cRect( tvguideConfig.timeColWidth + num*tvguideConfig.colWidth,
- tvguideConfig.statusHeaderHeight,
- tvguideConfig.colWidth,
- tvguideConfig.headerHeight));
- pixmapLogo->SetViewPort(cRect( tvguideConfig.timeColWidth + num*tvguideConfig.colWidth,
- tvguideConfig.statusHeaderHeight,
- tvguideConfig.colWidth,
- tvguideConfig.headerHeight));
+ int x, y, width, height;
+ if (tvguideConfig.displayMode == eVertical) {
+ x = tvguideConfig.timeLineWidth + num*tvguideConfig.colWidth;
+ y = tvguideConfig.statusHeaderHeight;
+ width = tvguideConfig.colWidth;
+ height = tvguideConfig.channelHeaderHeight;
+ } else if (tvguideConfig.displayMode == eHorizontal) {
+ x = 0;
+ y = tvguideConfig.statusHeaderHeight + tvguideConfig.timeLineHeight + num*tvguideConfig.rowHeight;
+ width = tvguideConfig.channelHeaderWidth;
+ height = tvguideConfig.rowHeight;
+ }
+ pixmap->SetViewPort(cRect(x, y, width, height));
+ pixmapLogo->SetViewPort(cRect(x, y, width, height));
}
diff --git a/headergrid.h b/headergrid.h index 63ee858..eef308b 100644 --- a/headergrid.h +++ b/headergrid.h @@ -6,6 +6,8 @@ class cHeaderGrid : public cGrid {
private:
cPixmap *pixmapLogo;
+ void drawChannelHorizontal(const cChannel *channel);
+ void drawChannelVertical(const cChannel *channel);
public:
cHeaderGrid(void);
virtual ~cHeaderGrid(void);
diff --git a/imageloader.c b/imageloader.c index 3ff196d..37fffb8 100644 --- a/imageloader.c +++ b/imageloader.c @@ -13,7 +13,8 @@ cImageLoader::cImageLoader() { cImageLoader::~cImageLoader() { } -bool cImageLoader::LoadLogo(const char *logo, int width = tvguideConfig.logoWidth, int height = tvguideConfig.logoHeight) { +bool cImageLoader::LoadLogo(const char *logo, int width, int height) { + if ((width == 0)||(height==0)) return false; std::string logoLower = logo; @@ -26,9 +27,7 @@ bool cImageLoader::LoadLogo(const char *logo, int width = tvguideConfig.logoWidt } if (!LoadImage(logoLower.c_str(), tvguideConfig.logoPath, extension)) return false; - if (height != 0 || width != 0) { - buffer.sample( Geometry(width, height)); - } + buffer.sample( Geometry(width, height)); return true; } @@ -46,7 +45,7 @@ bool cImageLoader::LoadEPGImage(int eventID) { } bool cImageLoader::DrawBackground(tColor back, tColor blend, int width, int height) { - if ((width == 0) || (height == 0)) + if ((width < 1) || (height < 1)) return false; Color Back = Argb2Color(back); Color Blend = Argb2Color(blend); diff --git a/osdmanager.c b/osdmanager.c index bc9662d..5e12305 100644 --- a/osdmanager.c +++ b/osdmanager.c @@ -37,7 +37,8 @@ bool cOsdManager::setOsd() { void cOsdManager::setBackground() {
if (tvguideConfig.displayStatusHeader && tvguideConfig.scaleVideo) {
- osd->DrawRectangle(0, 0, cOsd::OsdWidth() - tvguideConfig.statusHeaderHeight * 16 / 9, tvguideConfig.statusHeaderHeight, theme.Color(clrBackgroundOSD));
+ int widthStatus = cOsd::OsdWidth() - tvguideConfig.statusHeaderHeight * 16 / 9;
+ osd->DrawRectangle(0, 0, widthStatus, tvguideConfig.statusHeaderHeight, theme.Color(clrBackgroundOSD));
osd->DrawRectangle(0, tvguideConfig.statusHeaderHeight, cOsd::OsdWidth(), cOsd::OsdHeight() - tvguideConfig.statusHeaderHeight, theme.Color(clrBackgroundOSD));
}
else
diff --git a/po/de_DE.po b/po/de_DE.po index d0d9ef2..2707246 100755 --- a/po/de_DE.po +++ b/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: 2013-05-20 11:27+0200\n" +"POT-Creation-Date: 2013-05-24 14:53+0200\n" "PO-Revision-Date: 2012-08-25 17:49+0200\n" "Last-Translator: Horst\n" "Language-Team: \n" @@ -36,14 +36,20 @@ msgstr "Anzeigeoptionen" msgid "Fonts and Fontsizes" msgstr "Schriften und Schriftgrößen" -msgid "Number of Channels / Columns" -msgstr "Anzahl der Kanäle bzw. Spalten" +msgid "Theme" +msgstr "Theme" + +msgid "Use color gradients" +msgstr "Farbverläufe verwenden" + +msgid "Rounded Corners" +msgstr "Abgerundete Ecken" msgid "Channels to Jump (Keys Green / Yellow)" msgstr "Kanalsprung (Tasten Grün / Gelb)" -msgid "Time to display vertically in minutes" -msgstr "Vertikal angezeigte Zeit (in Minuten)" +msgid "Time to display in minutes" +msgstr "Angezeigte Zeitspanne in Minuten" msgid "Big Step (Keys 1 / 3) in hours" msgstr "Großer Sprung (Tasten 1 / 3) in Stunden" @@ -54,32 +60,41 @@ msgstr "Sehr großer Sprung (Tasten 4 / 6) in Stunden" msgid "Time Format (12h/24h)" msgstr "Zeitformat (12h/24h)" -msgid "Theme" -msgstr "Theme" +msgid "Display Mode" +msgstr "Anzeigemodus" + +msgid "Height of Channel Header (Perc. of osd height)" +msgstr "Höhe des Kanalheaders (% der OSD Höhe)" + +msgid "Width of Timeline (Perc. of osd width)" +msgstr "Breite der Zeitleiste (% der OSD Breite)" + +msgid "Number of Channels to display" +msgstr "Anzahl der angezeigten Kanäle" + +msgid "Width of Channel Header (Perc. of osd width)" +msgstr "Breite des Kanalheaders (% der OSD Breite)" + +msgid "Height of Timeline (Perc. of osd height)" +msgstr "Höhe der Zeitleiste (% der OSD Höhe)" + +msgid "Height of Footer" +msgstr "Höhe des Footers" msgid "Display status header" msgstr "Status Header anzeigen" -msgid "Scale video to upper right corner" -msgstr "Video in obere rechte Ecke skalieren" - msgid "Height of status header (Perc. of osd height)" msgstr "Höhe des Status Headers (% der OSD Höhe)" -msgid "Use color gradients" -msgstr "Farbverläufe verwenden" - -msgid "Rounded Corners" -msgstr "Abgerundete Ecken" - -msgid "Width of Timeline" -msgstr "Breite der Zeitleiste" +msgid "Scale video to upper right corner" +msgstr "Video in obere rechte Ecke skalieren" -msgid "Height of Header" -msgstr "Höhe des Headers" +msgid "Rounded corners around video frame" +msgstr "Abgerundete Ecken um Videofenster" -msgid "Height of Footer" -msgstr "Höhe des Footers" +msgid "Display Channel Names in Header" +msgstr "Kanalnamen im Header anzeigen" msgid "Show Channel Logos" msgstr "Kanallogos anzeigen" @@ -90,11 +105,11 @@ msgstr "Benutzer Pfad für Kanallogos" msgid "Logo Extension" msgstr "Logo Extension" -msgid "Logo width" -msgstr "Breite der Logos" +msgid "Logo width ratio" +msgstr "Logo Breitenverhältnis" -msgid "Logo height" -msgstr "Höhe der Logos" +msgid "Logo height ratio" +msgstr "Logo Höhenverhältnis" msgid "Show EPG Images" msgstr "EPG Bilder anzeigen" @@ -111,11 +126,26 @@ msgstr "Höhe der EPG Bilder" msgid "Font" msgstr "Schriftart" +msgid "Status Header Font Size" +msgstr "Status Header Schriftgröße" + msgid "Status Header Large Font Size" msgstr "Status Header große Schriftgröße" -msgid "Status Header Font Size" -msgstr "Status Header Schriftgröße" +msgid "Detail EPG View Font Size" +msgstr "Detailierte EPG Ansicht Schriftgröße" + +msgid "Detail EPG View Header Font Size" +msgstr "Detailierte EPG Ansicht Header Schriftgröße" + +msgid "Message Font Size" +msgstr "Nachrichten Schriftgröße" + +msgid "Message Large Font Size" +msgstr "Nachrichten große Schriftgröße" + +msgid "Button Font Size" +msgstr "Button Schriftgröße" msgid "Channel Header Font Size" msgstr "Kanal Header Schriftgröße" @@ -135,21 +165,6 @@ msgstr "Zeitleiste Datum Schriftgröße" msgid "Timeline Time Font Size" msgstr "Zeitleiste Zeit Schriftgröße" -msgid "Button Font Size" -msgstr "Button Schriftgröße" - -msgid "Detail EPG View Font Size" -msgstr "Detailierte EPG Ansicht Schriftgröße" - -msgid "Detail EPG View Header Font Size" -msgstr "Detailierte EPG Ansicht Header Schriftgröße" - -msgid "Message Font Size" -msgstr "Nachrichten Schriftgröße" - -msgid "Message Large Font Size" -msgstr "Nachrichten große Schriftgröße" - msgid "Timer not set! There is already a timer for this item." msgstr "Timer wurde nicht gesetzt! Es existiert bereits ein Timer für diese Sendung" @@ -46,42 +46,53 @@ void cTvguideSetup::Store(void) { tvguideConfig = tmpTvguideConfig; SetupStore("themeIndex", tvguideConfig.themeIndex); + SetupStore("displayMode", tvguideConfig.displayMode); SetupStore("displayStatusHeader", tvguideConfig.displayStatusHeader); SetupStore("statusHeaderPercent", tvguideConfig.statusHeaderPercent); SetupStore("scaleVideo", tvguideConfig.scaleVideo); + SetupStore("decorateVideo", tvguideConfig.decorateVideo); SetupStore("useBlending", tvguideConfig.useBlending); SetupStore("roundedCorners", tvguideConfig.roundedCorners); SetupStore("timeFormat", tvguideConfig.timeFormat); SetupStore("channelCols", tvguideConfig.channelCols); + SetupStore("channelRows", tvguideConfig.channelRows); SetupStore("displayTime", tvguideConfig.displayTime); SetupStore("bigStepHours", tvguideConfig.bigStepHours); SetupStore("hugeStepHours", tvguideConfig.hugeStepHours); SetupStore("jumpChannels", tvguideConfig.jumpChannels); SetupStore("hideChannelLogos", tvguideConfig.hideChannelLogos); SetupStore("logoExtension", tvguideConfig.logoExtension); - SetupStore("logoWidth", tvguideConfig.logoWidth); - SetupStore("logoHeight", tvguideConfig.logoHeight); + SetupStore("logoWidthRatio", tvguideConfig.logoWidthRatio); + SetupStore("logoHeightRatio", tvguideConfig.logoHeightRatio); SetupStore("hideEpgImages", tvguideConfig.hideEpgImages); SetupStore("epgImageWidth", tvguideConfig.epgImageWidth); SetupStore("epgImageHeight", tvguideConfig.epgImageHeight); SetupStore("epgImageHeight", tvguideConfig.epgImageHeight); - SetupStore("timeColWidth", tvguideConfig.timeColWidth); - SetupStore("headerHeight", tvguideConfig.headerHeight); + SetupStore("timeLineWidthPercent", tvguideConfig.timeLineWidthPercent); + SetupStore("timeLineHeightPercent", tvguideConfig.timeLineHeightPercent); + SetupStore("displayChannelName", tvguideConfig.displayChannelName); + SetupStore("channelHeaderWidthPercent", tvguideConfig.channelHeaderWidthPercent); + SetupStore("channelHeaderHeightPercent", tvguideConfig.channelHeaderHeightPercent); SetupStore("footerHeight", tvguideConfig.footerHeight); SetupStore("fontIndex", tvguideConfig.fontIndex); - SetupStore("fontHeaderSize", tvguideConfig.fontHeaderSize); - SetupStore("fontStatusHeaderSize", tvguideConfig.fontStatusHeaderSize); - SetupStore("fontStatusHeaderLargeSize", tvguideConfig.fontStatusHeaderLargeSize); - SetupStore("fontGridSize", tvguideConfig.fontGridSize); - SetupStore("fontGridSmallSize", tvguideConfig.fontGridSmallSize); - SetupStore("fontTimeLineWeekdaySize", tvguideConfig.fontTimeLineWeekdaySize); - SetupStore("fontTimeLineDateSize", tvguideConfig.fontTimeLineDateSize); - SetupStore("fontTimeLineTimeSize", tvguideConfig.fontTimeLineTimeSize); - SetupStore("fontButtonSize", tvguideConfig.fontButtonSize); - SetupStore("fontDetailViewSize", tvguideConfig.fontDetailViewSize); - SetupStore("fontDetailHeaderSize", tvguideConfig.fontDetailHeaderSize); - SetupStore("fontMessageBoxSize", tvguideConfig.fontMessageBoxSize); - SetupStore("fontMessageBoxLargeSize", tvguideConfig.fontMessageBoxLargeSize); + SetupStore("FontButtonDelta", tvguideConfig.FontButtonDelta); + SetupStore("FontDetailViewDelta", tvguideConfig.FontDetailViewDelta); + SetupStore("FontDetailHeaderDelta", tvguideConfig.FontDetailHeaderDelta); + SetupStore("FontMessageBoxDelta", tvguideConfig.FontMessageBoxDelta); + SetupStore("FontMessageBoxLargeDelta", tvguideConfig.FontMessageBoxLargeDelta); + SetupStore("FontStatusHeaderDelta", tvguideConfig.FontStatusHeaderDelta); + SetupStore("FontStatusHeaderLargeDelta", tvguideConfig.FontStatusHeaderLargeDelta); + SetupStore("FontChannelHeaderDelta", tvguideConfig.FontChannelHeaderDelta); + SetupStore("FontGridDelta", tvguideConfig.FontGridDelta); + SetupStore("FontGridSmallDelta", tvguideConfig.FontGridSmallDelta); + SetupStore("FontTimeLineWeekdayDelta", tvguideConfig.FontTimeLineWeekdayDelta); + SetupStore("FontTimeLineDateDelta", tvguideConfig.FontTimeLineDateDelta); + SetupStore("FontTimeLineTimeDelta", tvguideConfig.FontTimeLineTimeDelta); + SetupStore("FontChannelHeaderHorizontalDelta", tvguideConfig.FontChannelHeaderHorizontalDelta); + SetupStore("FontGridHorizontalDelta", tvguideConfig.FontGridHorizontalDelta); + SetupStore("FontGridHorizontalSmallDelta", tvguideConfig.FontGridHorizontalSmallDelta); + SetupStore("FontTimeLineDateHorizontalDelta", tvguideConfig.FontTimeLineDateHorizontalDelta); + SetupStore("FontTimeLineTimeHorizontalDelta", tvguideConfig.FontTimeLineTimeHorizontalDelta); } cMenuSetupSubMenu::cMenuSetupSubMenu(const char* Title, cTvguideConfig* data) : cOsdMenu(Title, 30) { @@ -111,19 +122,25 @@ eOSState cMenuSetupSubMenu::ProcessKey(eKeys Key) { //------------------------------------------------------------------------------------------------------------------ cMenuSetupGeneral::cMenuSetupGeneral(cTvguideConfig* data) : cMenuSetupSubMenu(tr("General Settings"), data) { - timeFormatItems[0] = "12h"; + themes.Load(*cString("tvguide")); + timeFormatItems[0] = "12h"; timeFormatItems[1] = "24h"; - + blendingMethods[0] = "none"; + blendingMethods[1] = "classic"; + blendingMethods[2] = "nOpacity style"; Set(); } void cMenuSetupGeneral::Set(void) { int currentItem = Current(); Clear(); - - Add(new cMenuEditIntItem(tr("Number of Channels / Columns"), &tmpTvguideConfig->channelCols, 3, 8)); + if (themes.NumThemes()) + Add(new cMenuEditStraItem(tr("Theme"), &tmpTvguideConfig->themeIndex, themes.NumThemes(), themes.Descriptions())); + Add(new cMenuEditStraItem(tr("Use color gradients"), &tmpTvguideConfig->useBlending, 3, blendingMethods)); + Add(new cMenuEditBoolItem(tr("Rounded Corners"), &tmpTvguideConfig->roundedCorners)); + Add(new cMenuEditIntItem(tr("Channels to Jump (Keys Green / Yellow)"), &tmpTvguideConfig->jumpChannels, 2, 30)); - Add(new cMenuEditIntItem(tr("Time to display vertically in minutes"), &tmpTvguideConfig->displayTime, 120, 320)); + Add(new cMenuEditIntItem(tr("Time to display in minutes"), &tmpTvguideConfig->displayTime, 120, 320)); Add(new cMenuEditIntItem(tr("Big Step (Keys 1 / 3) in hours"), &tmpTvguideConfig->bigStepHours, 1, 12)); Add(new cMenuEditIntItem(tr("Huge Step (Keys 4 / 6) in hours"), &tmpTvguideConfig->hugeStepHours, 13, 48)); Add(new cMenuEditStraItem(tr("Time Format (12h/24h)"), &tmpTvguideConfig->timeFormat, 2, timeFormatItems)); @@ -135,14 +152,12 @@ void cMenuSetupGeneral::Set(void) { //------------------------------------------------------------------------------------------------------------------ cMenuSetupScreenLayout::cMenuSetupScreenLayout(cTvguideConfig* data) : cMenuSetupSubMenu(tr("Screen Presentation"), data) { - themes.Load(*cString("tvguide")); + displayModeItems[0] = "vertical"; + displayModeItems[1] = "horizontal"; hideChannelLogosItems[0] = trVDR("yes"); hideChannelLogosItems[1] = trVDR("no"); logoExtensionItems[0] = "png"; logoExtensionItems[1] = "jpg"; - blendingMethods[0] = "none"; - blendingMethods[1] = "classic"; - blendingMethods[2] = "nOpacity style"; Set(); } @@ -150,26 +165,33 @@ void cMenuSetupScreenLayout::Set(void) { const char *indent = " "; int currentItem = Current(); Clear(); - if (themes.NumThemes()) - Add(new cMenuEditStraItem(tr("Theme"), &tmpTvguideConfig->themeIndex, themes.NumThemes(), themes.Descriptions())); + Add(new cMenuEditStraItem(tr("Display Mode"), &tmpTvguideConfig->displayMode, 2, displayModeItems)); + if (tmpTvguideConfig->displayMode == eVertical) { + Add(new cMenuEditIntItem(*cString::sprintf("%s%s", indent, tr("Height of Channel Header (Perc. of osd height)")), &tmpTvguideConfig->channelHeaderHeightPercent, 5, 30)); + Add(new cMenuEditIntItem(*cString::sprintf("%s%s", indent, tr("Width of Timeline (Perc. of osd width)")), &tmpTvguideConfig->timeLineWidthPercent, 5, 30)); + Add(new cMenuEditIntItem(*cString::sprintf("%s%s", indent, tr("Number of Channels to display")), &tmpTvguideConfig->channelCols, 3, 12)); + } else if (tmpTvguideConfig->displayMode == eHorizontal) { + Add(new cMenuEditIntItem(*cString::sprintf("%s%s", indent, tr("Width of Channel Header (Perc. of osd width)")), &tmpTvguideConfig->channelHeaderWidthPercent, 5, 30)); + Add(new cMenuEditIntItem(*cString::sprintf("%s%s", indent, tr("Height of Timeline (Perc. of osd height)")), &tmpTvguideConfig->timeLineHeightPercent, 5, 30)); + Add(new cMenuEditIntItem(*cString::sprintf("%s%s", indent, tr("Number of Channels to display")), &tmpTvguideConfig->channelRows, 3, 12)); + } + Add(new cMenuEditIntItem(tr("Height of Footer"), &tmpTvguideConfig->footerHeight, 50, 300)); + Add(new cMenuEditBoolItem(tr("Display status header"), &tmpTvguideConfig->displayStatusHeader)); if (tmpTvguideConfig->displayStatusHeader) { - Add(new cMenuEditBoolItem(*cString::sprintf("%s%s", indent, tr("Scale video to upper right corner")), &tmpTvguideConfig->scaleVideo)); Add(new cMenuEditIntItem(*cString::sprintf("%s%s", indent, tr("Height of status header (Perc. of osd height)")), &tmpTvguideConfig->statusHeaderPercent, 5, 50)); + Add(new cMenuEditBoolItem(*cString::sprintf("%s%s", indent, tr("Scale video to upper right corner")), &tmpTvguideConfig->scaleVideo)); + Add(new cMenuEditBoolItem(*cString::sprintf("%s%s", indent, tr("Rounded corners around video frame")), &tmpTvguideConfig->decorateVideo)); } - Add(new cMenuEditStraItem(tr("Use color gradients"), &tmpTvguideConfig->useBlending, 3, blendingMethods)); - Add(new cMenuEditBoolItem(tr("Rounded Corners"), &tmpTvguideConfig->roundedCorners)); - Add(new cMenuEditIntItem(tr("Width of Timeline"), &tmpTvguideConfig->timeColWidth, 50, 300)); - Add(new cMenuEditIntItem(tr("Height of Header"), &tmpTvguideConfig->headerHeight, 50, 300)); - Add(new cMenuEditIntItem(tr("Height of Footer"), &tmpTvguideConfig->footerHeight, 50, 300)); + Add(new cMenuEditBoolItem(tr("Display Channel Names in Header"), &tmpTvguideConfig->displayChannelName)); Add(new cMenuEditStraItem(tr("Show Channel Logos"), &tmpTvguideConfig->hideChannelLogos, 2, hideChannelLogosItems)); if (!tmpTvguideConfig->hideChannelLogos) { Add(InfoItem(tr("Logo Path used"), *tvguideConfig.logoPath)); Add(new cMenuEditStraItem(*cString::sprintf("%s%s", indent, tr("Logo Extension")), &tmpTvguideConfig->logoExtension, 2, logoExtensionItems)); - Add(new cMenuEditIntItem(*cString::sprintf("%s%s", indent, tr("Logo width")), &tmpTvguideConfig->logoWidth, 0, 350)); - Add(new cMenuEditIntItem(*cString::sprintf("%s%s", indent, tr("Logo height")), &tmpTvguideConfig->logoHeight, 0, 250)); + Add(new cMenuEditIntItem(*cString::sprintf("%s%s", indent, tr("Logo width ratio")), &tmpTvguideConfig->logoWidthRatio, 1, 1000)); + Add(new cMenuEditIntItem(*cString::sprintf("%s%s", indent, tr("Logo height ratio")), &tmpTvguideConfig->logoHeightRatio, 1, 1000)); } Add(new cMenuEditStraItem(tr("Show EPG Images"), &tmpTvguideConfig->hideEpgImages, 2, hideChannelLogosItems)); @@ -204,22 +226,34 @@ cMenuSetupFont::cMenuSetupFont(cTvguideConfig* data) : cMenuSetupSubMenu(tr("Fo void cMenuSetupFont::Set(void) { int currentItem = Current(); Clear(); - - Add(new cMenuEditStraItem(tr("Font"), &tmpTvguideConfig->fontIndex, fontNames.Size(), &fontNames[0])); - Add(new cMenuEditIntItem(tr("Status Header Large Font Size"), &tmpTvguideConfig->fontStatusHeaderLargeSize, 10, 70)); - Add(new cMenuEditIntItem(tr("Status Header Font Size"), &tmpTvguideConfig->fontStatusHeaderSize, 10, 70)); - Add(new cMenuEditIntItem(tr("Channel Header Font Size"), &tmpTvguideConfig->fontHeaderSize, 10, 70)); - Add(new cMenuEditIntItem(tr("Grid Font Size"), &tmpTvguideConfig->fontGridSize, 10, 70)); - Add(new cMenuEditIntItem(tr("Grid Font Small Size"), &tmpTvguideConfig->fontGridSmallSize, 10, 70)); - Add(new cMenuEditIntItem(tr("Timeline Weekday Font Size"), &tmpTvguideConfig->fontTimeLineWeekdaySize, 10, 70)); - Add(new cMenuEditIntItem(tr("Timeline Date Font Size"), &tmpTvguideConfig->fontTimeLineDateSize, 10, 70)); - Add(new cMenuEditIntItem(tr("Timeline Time Font Size"), &tmpTvguideConfig->fontTimeLineTimeSize, 10, 70)); - Add(new cMenuEditIntItem(tr("Button Font Size"), &tmpTvguideConfig->fontButtonSize, 10, 70)); - Add(new cMenuEditIntItem(tr("Detail EPG View Font Size"), &tmpTvguideConfig->fontDetailViewSize, 10, 70)); - Add(new cMenuEditIntItem(tr("Detail EPG View Header Font Size"), &tmpTvguideConfig->fontDetailHeaderSize, 10, 70)); - Add(new cMenuEditIntItem(tr("Message Font Size"), &tmpTvguideConfig->fontMessageBoxSize, 10, 70)); - Add(new cMenuEditIntItem(tr("Message Large Font Size"), &tmpTvguideConfig->fontMessageBoxLargeSize, 10, 70)); - + + Add(new cMenuEditStraItem(tr("Font"), &tmpTvguideConfig->fontIndex, fontNames.Size(), &fontNames[0])); + + Add(new cMenuEditIntItem(tr("Status Header Font Size"), &tmpTvguideConfig->FontStatusHeaderDelta, -30, 30)); + Add(new cMenuEditIntItem(tr("Status Header Large Font Size"), &tmpTvguideConfig->FontStatusHeaderLargeDelta, -30, 30)); + Add(new cMenuEditIntItem(tr("Detail EPG View Font Size"), &tmpTvguideConfig->FontDetailViewDelta, -30, 30)); + Add(new cMenuEditIntItem(tr("Detail EPG View Header Font Size"), &tmpTvguideConfig->FontDetailHeaderDelta, -30, 30)); + Add(new cMenuEditIntItem(tr("Message Font Size"), &tmpTvguideConfig->FontMessageBoxDelta, -30, 30)); + Add(new cMenuEditIntItem(tr("Message Large Font Size"), &tmpTvguideConfig->FontMessageBoxLargeDelta, -30, 30)); + Add(new cMenuEditIntItem(tr("Button Font Size"), &tmpTvguideConfig->FontButtonDelta, -30, 30)); + + + if (tmpTvguideConfig->displayMode == eVertical) { + Add(new cMenuEditIntItem(tr("Channel Header Font Size"), &tmpTvguideConfig->FontChannelHeaderDelta, -30, 30)); + Add(new cMenuEditIntItem(tr("Grid Font Size"), &tmpTvguideConfig->FontGridDelta, -30, 30)); + Add(new cMenuEditIntItem(tr("Grid Font Small Size"), &tmpTvguideConfig->FontGridSmallDelta, -30, 30)); + Add(new cMenuEditIntItem(tr("Timeline Weekday Font Size"), &tmpTvguideConfig->FontTimeLineWeekdayDelta, -30, 30)); + Add(new cMenuEditIntItem(tr("Timeline Date Font Size"), &tmpTvguideConfig->FontTimeLineDateDelta, -30, 30)); + Add(new cMenuEditIntItem(tr("Timeline Time Font Size"), &tmpTvguideConfig->FontTimeLineTimeDelta, -30, 30)); + } else if (tmpTvguideConfig->displayMode == eHorizontal) { + Add(new cMenuEditIntItem(tr("Channel Header Font Size"), &tmpTvguideConfig->FontChannelHeaderHorizontalDelta, -30, 30)); + Add(new cMenuEditIntItem(tr("Grid Font Size"), &tmpTvguideConfig->FontGridHorizontalDelta, -30, 30)); + Add(new cMenuEditIntItem(tr("Grid Font Small Size"), &tmpTvguideConfig->FontGridHorizontalSmallDelta, -30, 30)); + Add(new cMenuEditIntItem(tr("Timeline Date Font Size"), &tmpTvguideConfig->FontTimeLineDateHorizontalDelta, -30, 30)); + Add(new cMenuEditIntItem(tr("Timeline Time Font Size"), &tmpTvguideConfig->FontTimeLineTimeHorizontalDelta, -30, 30)); + } + + SetCurrent(Get(currentItem)); Display(); }
\ No newline at end of file @@ -26,6 +26,8 @@ class cMenuSetupSubMenu : public cOsdMenu { class cMenuSetupGeneral : public cMenuSetupSubMenu { protected: + cThemes themes; + const char * blendingMethods[3]; const char * timeFormatItems[2]; void Set(void); public: @@ -35,10 +37,9 @@ class cMenuSetupGeneral : public cMenuSetupSubMenu { class cMenuSetupScreenLayout : public cMenuSetupSubMenu { protected: virtual eOSState ProcessKey(eKeys Key); - cThemes themes; + const char * displayModeItems[2]; const char * hideChannelLogosItems[2]; const char * logoExtensionItems[2]; - const char * blendingMethods[3]; void Set(void); public: cMenuSetupScreenLayout(cTvguideConfig *data); diff --git a/statusheader.c b/statusheader.c index ecb2363..107cf22 100644 --- a/statusheader.c +++ b/statusheader.c @@ -10,14 +10,27 @@ cStatusHeader::cStatusHeader(void) { } else {
width = tvguideConfig.osdWidth;
}
+ int tvFrameWidth = tvguideConfig.osdWidth - width;
+ int radius = tvguideConfig.statusHeaderHeight / 8;
pixmap = osdManager.requestPixmap(1, cRect(0, 0, width, height));
pixmapText = osdManager.requestPixmap(2, cRect(0, 0, width, height));
pixmapText->Fill(clrTransparent);
+
+ pixmapTVFrame = osdManager.requestPixmap(1, cRect(width, 0, tvFrameWidth, height));
+ pixmapTVFrame->Fill(clrTransparent);
+ if (tvguideConfig.decorateVideo) {
+ pixmapTVFrame->DrawEllipse(cRect(0,0,radius,radius), theme.Color(clrBackground), -2);
+ pixmapTVFrame->DrawEllipse(cRect(tvFrameWidth - radius, 0, radius, radius), theme.Color(clrBackground), -1);
+ pixmapTVFrame->DrawEllipse(cRect(0, height - radius, radius, radius), theme.Color(clrBackground), -3);
+ pixmapTVFrame->DrawEllipse(cRect(tvFrameWidth - radius, height - radius, radius, radius), theme.Color(clrBackground), -4);
+ }
drawBackground();
drawBorder();
}
cStatusHeader::~cStatusHeader(void) {
+ osdManager.releasePixmap(pixmapText);
+ osdManager.releasePixmap(pixmapTVFrame);
if (tvguideConfig.scaleVideo) {
cRect vidWin = cDevice::PrimaryDevice()->CanScaleVideo(cRect::Null);
cDevice::PrimaryDevice()->ScaleVideo(vidWin);
@@ -71,4 +84,4 @@ void cStatusHeader::DrawInfoText(cGrid *grid) { y += (heightText - tvguideConfig.FontStatusHeaderLarge->Height() - 2*border)/2;
pixmapText->DrawText(cPoint(x,y), *grid->getText(), theme.Color(clrFont), clrTransparent, tvguideConfig.FontStatusHeaderLarge);
}
-}
\ No newline at end of file +}
diff --git a/statusheader.h b/statusheader.h index fdd3149..051c0c9 100644 --- a/statusheader.h +++ b/statusheader.h @@ -6,6 +6,7 @@ class cStatusHeader : public cStyledPixmap {
private:
cPixmap *pixmapText;
+ cPixmap *pixmapTVFrame;
public:
cStatusHeader(void);
virtual ~cStatusHeader(void);
diff --git a/themes/tvguide-nOpacitydarkred.theme b/themes/tvguide-nOpacitydarkred.theme new file mode 100644 index 0000000..63d9214 --- /dev/null +++ b/themes/tvguide-nOpacitydarkred.theme @@ -0,0 +1,28 @@ +Description = nOpacity Dark Red +clrBackground = FF000000 +clrBackgroundOSD = FF000000 +clrGrid1 = EE555555 +clrGrid1Blending = 90000000 +clrGrid2 = DD333333 +clrGrid2Blending = 90000000 +clrHighlight = DDBB0000 +clrHighlightBlending = DD000000 +clrFont = FFFFFFFF +clrFontHeader = FFFFFFFF +clrFontButtons = FFFFFFFF +clrHeader = EE888888 +clrHeaderBlending = 90000000 +clrBorder = AABB0000 +clrTimeline1 = BBFFFFFF +clrTimeline1Blending = 90828282 +clrTimeline2 = BB000000 +clrTimeline2Blending = 903F3F3F +clrButtonRed = 99BB0000 +clrButtonRedBorder = FFBB0000 +clrButtonGreen = 9900BB00 +clrButtonGreenBorder = FF00BB00 +clrButtonYellow = 99BBBB00 +clrButtonYellowBorder = FFBBBB00 +clrButtonBlue = 990000BB +clrButtonBlueBorder = FF0000BB +clrButtonBlend = DD000000 @@ -2,57 +2,85 @@ cTimeLine::cTimeLine(cMyTime *myTime) {
this->myTime = myTime;
- dateViewer = new cStyledPixmap(osdManager.requestPixmap(3, cRect(0,
- tvguideConfig.statusHeaderHeight,
- tvguideConfig.timeColWidth,
- tvguideConfig.headerHeight)
- , cRect::Null));
- timeline = osdManager.requestPixmap(2, cRect(0,
- tvguideConfig.statusHeaderHeight + tvguideConfig.headerHeight,
- tvguideConfig.timeColWidth,
- tvguideConfig.osdHeight - tvguideConfig.statusHeaderHeight - tvguideConfig.headerHeight - tvguideConfig.footerHeight)
- , cRect(0,
- 0,
- tvguideConfig.timeColWidth,
- 1440*tvguideConfig.minuteHeight));
- clock = new cStyledPixmap(osdManager.requestPixmap(3, cRect(0,
+ if (tvguideConfig.displayMode == eVertical) {
+ dateViewer = new cStyledPixmap(osdManager.requestPixmap(3, cRect(0,
+ tvguideConfig.statusHeaderHeight,
+ tvguideConfig.timeLineWidth,
+ tvguideConfig.channelHeaderHeight)));
+ timeline = osdManager.requestPixmap(2, cRect(0,
+ tvguideConfig.statusHeaderHeight + tvguideConfig.channelHeaderHeight,
+ tvguideConfig.timeLineWidth,
+ tvguideConfig.osdHeight - tvguideConfig.statusHeaderHeight - tvguideConfig.channelHeaderHeight - tvguideConfig.footerHeight)
+ , cRect(0,
+ 0,
+ tvguideConfig.timeLineWidth,
+ 1440*tvguideConfig.minutePixel));
+ } else if (tvguideConfig.displayMode == eHorizontal) {
+ dateViewer = new cStyledPixmap(osdManager.requestPixmap(3, cRect(0,
+ tvguideConfig.statusHeaderHeight,
+ tvguideConfig.channelHeaderWidth,
+ tvguideConfig.timeLineHeight)));
+ timeline = osdManager.requestPixmap(2, cRect(tvguideConfig.channelHeaderWidth,
+ tvguideConfig.statusHeaderHeight,
+ tvguideConfig.osdWidth - tvguideConfig.channelHeaderWidth,
+ tvguideConfig.timeLineHeight)
+ , cRect(0,
+ 0,
+ 1440*tvguideConfig.minutePixel,
+ tvguideConfig.timeLineWidth));
+ }
+ clock = new cStyledPixmap(osdManager.requestPixmap(3, cRect(0,
tvguideConfig.osdHeight- tvguideConfig.footerHeight,
- tvguideConfig.timeColWidth,
- tvguideConfig.footerHeight-9)
- , cRect::Null));
+ tvguideConfig.timeLineWidth,
+ tvguideConfig.footerHeight-9)));
}
cTimeLine::~cTimeLine(void) {
delete dateViewer;
osdManager.releasePixmap(timeline);
- delete clock;
+ if (clock)
+ delete clock;
}
void cTimeLine::drawDateViewer() {
cString weekDay = myTime->GetWeekday();
cString date = myTime->GetDate();
-
- int textHeight = tvguideConfig.FontTimeLineWeekday->Height();
- int weekdayWidth = tvguideConfig.FontTimeLineWeekday->Width(*weekDay);
- int dateWidth = tvguideConfig.FontTimeLineDate->Width(*date);
-
dateViewer->setColor(theme.Color(clrHeader), theme.Color(clrHeaderBlending));
dateViewer->drawBackground();
dateViewer->drawBorder();
- dateViewer->DrawText(cPoint((tvguideConfig.timeColWidth-weekdayWidth)/2, (tvguideConfig.headerHeight-2*textHeight)/2), *weekDay, theme.Color(clrFontHeader), clrTransparent, tvguideConfig.FontTimeLineWeekday);
- dateViewer->DrawText(cPoint((tvguideConfig.timeColWidth-dateWidth)/2, (tvguideConfig.headerHeight-2*textHeight)/2 + textHeight + 5), *date, theme.Color(clrFontHeader), clrTransparent, tvguideConfig.FontTimeLineDate);
+
+ if (tvguideConfig.displayMode == eVertical) {
+ int textHeight = tvguideConfig.FontTimeLineWeekday->Height();
+ int weekdayWidth = tvguideConfig.FontTimeLineWeekday->Width(*weekDay);
+ int dateWidth = tvguideConfig.FontTimeLineDate->Width(*date);
+ dateViewer->DrawText(cPoint((tvguideConfig.timeLineWidth-weekdayWidth)/2, (tvguideConfig.channelHeaderHeight-2*textHeight)/2), *weekDay, theme.Color(clrFontHeader), clrTransparent, tvguideConfig.FontTimeLineWeekday);
+ dateViewer->DrawText(cPoint((tvguideConfig.timeLineWidth-dateWidth)/2, (tvguideConfig.channelHeaderHeight-2*textHeight)/2 + textHeight + 5), *date, theme.Color(clrFontHeader), clrTransparent, tvguideConfig.FontTimeLineDate);
+ } else if (tvguideConfig.displayMode == eHorizontal) {
+ cString strDate = cString::sprintf("%s %s", *weekDay, *date);
+ int x = (dateViewer->Width() - tvguideConfig.FontTimeLineDateHorizontal->Width(*strDate))/2;
+ int y = (dateViewer->Height() - tvguideConfig.FontTimeLineDateHorizontal->Height())/2;
+ dateViewer->DrawText(cPoint(x, y), *strDate, theme.Color(clrFontHeader), clrTransparent, tvguideConfig.FontTimeLineDateHorizontal);
+ }
}
void cTimeLine::drawTimeline() {
timeline->SetTile(true);
timeline->Fill(theme.Color(clrBackground));
- tColor colorFont;
+ tColor colorFont;
- const cImage *img1 = createBackgroundImage(tvguideConfig.timeColWidth-4, tvguideConfig.minuteHeight*30, theme.Color(clrTimeline1), theme.Color(clrTimeline1Blending));
- const cImage *img2 = createBackgroundImage(tvguideConfig.timeColWidth-4, tvguideConfig.minuteHeight*30, theme.Color(clrTimeline2), theme.Color(clrTimeline2Blending));
+ int imgWidth, imgHeight;
+ if (tvguideConfig.displayMode == eVertical) {
+ imgWidth = tvguideConfig.timeLineWidth-4;
+ imgHeight = tvguideConfig.minutePixel*30;
+ } else if (tvguideConfig.displayMode == eHorizontal) {
+ imgWidth = tvguideConfig.minutePixel*30;
+ imgHeight = tvguideConfig.timeLineHeight-4;
+ }
+ const cImage *img1 = createBackgroundImage(imgWidth, imgHeight, theme.Color(clrTimeline1), theme.Color(clrTimeline1Blending));
+ const cImage *img2 = createBackgroundImage(imgWidth, imgHeight, theme.Color(clrTimeline2), theme.Color(clrTimeline2Blending));
const cImage *img = NULL;
- int textWidth, posY;
+ int textWidth, posX, posY;
char timetext[10];
for (int i=0; i<48; i++) {
@@ -83,10 +111,16 @@ void cTimeLine::drawTimeline() { sprintf(timetext, "%d:30", i/2);
}
}
- posY = i*tvguideConfig.minuteHeight*30;
- timeline->DrawImage(cPoint(2, posY), *img);
- textWidth = tvguideConfig.FontTimeLineTime->Width(timetext);
- timeline->DrawText(cPoint((tvguideConfig.timeColWidth-textWidth)/2, posY + 5), timetext, colorFont, clrTransparent, tvguideConfig.FontTimeLineTime);
+ if (tvguideConfig.displayMode == eVertical) {
+ posY = i*tvguideConfig.minutePixel*30;
+ timeline->DrawImage(cPoint(2, posY), *img);
+ textWidth = tvguideConfig.FontTimeLineTime->Width(timetext);
+ timeline->DrawText(cPoint((tvguideConfig.timeLineWidth-textWidth)/2, posY + 5), timetext, colorFont, clrTransparent, tvguideConfig.FontTimeLineTime);
+ } else if (tvguideConfig.displayMode == eHorizontal) {
+ posX = i*tvguideConfig.minutePixel*30;
+ timeline->DrawImage(cPoint(posX, 2), *img);
+ timeline->DrawText(cPoint(posX + 2, (dateViewer->Height() - tvguideConfig.FontTimeLineTimeHorizontal->Height())/2), timetext, colorFont, clrTransparent, tvguideConfig.FontTimeLineTimeHorizontal);
+ }
}
setTimeline();
delete img1;
@@ -124,15 +158,23 @@ cImage *cTimeLine::createBackgroundImage(int width, int height, tColor clrBgr, t void cTimeLine::setTimeline() {
int offset = myTime->GetTimelineOffset();
- timeline->SetDrawPortPoint(cPoint(0, -offset*tvguideConfig.minuteHeight));
+ int xNew, yNew;
+ if (tvguideConfig.displayMode == eVertical) {
+ xNew = 0;
+ yNew = -offset*tvguideConfig.minutePixel;
+ } else if (tvguideConfig.displayMode == eHorizontal) {
+ xNew = -offset*tvguideConfig.minutePixel;
+ yNew = 0;
+ }
+ timeline->SetDrawPortPoint(cPoint(xNew, yNew));
}
void cTimeLine::drawClock() {
- cString currentTime = myTime->GetCurrentTime();
+ cString currentTime = myTime->GetCurrentTime();
int textHeight = tvguideConfig.FontTimeLineTime->Height();
int clockWidth = tvguideConfig.FontTimeLineTime->Width(*currentTime);
clock->setColor(theme.Color(clrHeader), theme.Color(clrHeaderBlending));
clock->drawBackground();
clock->drawBorder();
- clock->DrawText(cPoint((tvguideConfig.timeColWidth-clockWidth)/2, (tvguideConfig.footerHeight-textHeight)/2), *currentTime, theme.Color(clrFontHeader), clrTransparent, tvguideConfig.FontTimeLineTime);
+ clock->DrawText(cPoint((tvguideConfig.timeLineWidth-clockWidth)/2, (tvguideConfig.footerHeight-textHeight)/2), *currentTime, theme.Color(clrFontHeader), clrTransparent, tvguideConfig.FontTimeLineTime);
}
\ No newline at end of file @@ -15,7 +15,11 @@ void cMyTime::Now() { t = time(0);
tStart = t;
tStart = GetRounded();
- tEnd = tStart + (tvguideConfig.osdHeight - tvguideConfig.statusHeaderHeight - tvguideConfig.headerHeight - tvguideConfig.footerHeight)/tvguideConfig.minuteHeight*60;
+ if (tvguideConfig.displayMode == eVertical) {
+ tEnd = tStart + (tvguideConfig.osdHeight - tvguideConfig.statusHeaderHeight - tvguideConfig.channelHeaderHeight - tvguideConfig.footerHeight)/tvguideConfig.minutePixel*60;
+ } else if (tvguideConfig.displayMode == eHorizontal) {
+ tEnd = tStart + (tvguideConfig.osdWidth - tvguideConfig.channelHeaderWidth)/tvguideConfig.minutePixel*60;
+ }
}
void cMyTime::AddStep(int step) {
@@ -34,7 +38,11 @@ bool cMyTime::DelStep(int step) { void cMyTime::SetTime(time_t newTime) {
tStart = newTime;
- tEnd = tStart + (tvguideConfig.osdHeight - tvguideConfig.statusHeaderHeight - tvguideConfig.headerHeight - tvguideConfig.footerHeight)/tvguideConfig.minuteHeight*60;
+ if (tvguideConfig.displayMode == eVertical) {
+ tEnd = tStart + (tvguideConfig.osdHeight - tvguideConfig.statusHeaderHeight - tvguideConfig.channelHeaderHeight - tvguideConfig.footerHeight)/tvguideConfig.minutePixel*60;
+ } else if (tvguideConfig.displayMode == eHorizontal) {
+ tEnd = tStart + (tvguideConfig.osdWidth - tvguideConfig.channelHeaderWidth)/tvguideConfig.minutePixel*60;
+ }
}
time_t cMyTime::getPrevPrimetime(time_t current) {
@@ -14,13 +14,13 @@ #include "tvguideosd.c" -#if defined(APIVERSNUM) && APIVERSNUM < 10717 -#error "VDR-1.7.17 API version or greater is required!" +#if defined(APIVERSNUM) && APIVERSNUM < 20000 +#error "VDR-2.0.0 API version or greater is required!" #endif -static const char *VERSION = "0.0.3"; +static const char *VERSION = "0.0.4"; static const char *DESCRIPTION = "A fancy 2d EPG Viewer"; static const char *MAINMENUENTRY = "Tvguide"; diff --git a/tvguideosd.c b/tvguideosd.c index e5214bd..44f64c2 100644 --- a/tvguideosd.c +++ b/tvguideosd.c @@ -129,7 +129,7 @@ void cTvGuideOsd::readChannels(const cChannel *channelStart) { delete column;
}
}
- if (i == tvguideConfig.channelCols)
+ if (i == tvguideConfig.numGrids)
break;
}
}
@@ -187,91 +187,46 @@ void cTvGuideOsd::setNextActiveGrid(cGrid *next) { }
}
-void cTvGuideOsd::processKeyUp() {
- if (!activeGrid) {
- return;
- }
- if (detailViewActive) {
- detailView->scrollUp();
- } else {
- bool actionDone = false;
- if ( (activeGrid->StartTime() - myTime->GetStart())/60 < 30 ) {
- ScrollBack();
- actionDone = true;
- }
- cGrid *prev = activeGrid->column->getPrev(activeGrid);
- if (prev) {
- if ( (prev->StartTime() > myTime->GetStart())
- || ( (prev->EndTime() - myTime->GetStart())/60 > 30 )
- || ( prev->isFirst()) ) {
- setNextActiveGrid(prev);
- actionDone = true;
- }
- }
- if (!actionDone) {
- ScrollBack();
- }
+void cTvGuideOsd::channelForward() {
+ cChannelColumn *colRight = columns.Next(activeGrid->column);
+ if (!colRight) {
+ const cChannel *channelRight = activeGrid->column->getChannel();
+ while (channelRight = Channels.Next(channelRight)) {
+ if (!channelRight->GroupSep()) {
+ colRight = new cChannelColumn(tvguideConfig.numGrids - 1, channelRight, myTime);
+ if (colRight->readGrids()) {
+ break;
+ } else {
+ delete colRight;
+ colRight = NULL;
+ }
+ }
+ }
+ if (colRight) {
+ if (columns.Count() == tvguideConfig.numGrids) {
+ cChannelColumn *cFirst = columns.First();
+ columns.Del(cFirst);
+ }
+ for (cChannelColumn *column = columns.First(); column; column = columns.Next(column)) {
+ column->SetNum(column->GetNum() - 1);
+ column->drawHeader();
+ column->drawGrids();
+ }
+ columns.Add(colRight);
+ colRight->createHeader();
+ colRight->drawGrids();
+ }
}
- osdManager.flush();
-}
-void cTvGuideOsd::ScrollBack() {
- bool tooFarInPast = myTime->DelStep(tvguideConfig.stepMinutes);
- if (tooFarInPast)
- return;
- timeLine->drawDateViewer();
- timeLine->drawClock();
- timeLine->setTimeline();
- for (cChannelColumn *column = columns.First(); column; column = columns.Next(column)) {
- column->AddNewGridsAtStart();
- column->ClearOutdatedEnd();
- column->drawGrids();
- }
-}
-
-void cTvGuideOsd::processKeyDown() {
- if (!activeGrid) {
- return;
- }
- if (detailViewActive) {
- detailView->scrollDown();
- } else {
- bool actionDone = false;
- if ( (myTime->GetEnd() - activeGrid->EndTime())/60 < 30 ) {
- ScrollForward();
- actionDone = true;
- }
- cGrid *next = activeGrid->column->getNext(activeGrid);
- if (next) {
- if ( (next->EndTime() < myTime->GetEnd())
- || ( (myTime->GetEnd() - next->StartTime())/60 > 30 ) ) {
- setNextActiveGrid(next);
- actionDone = true;
- }
- }
- if (!actionDone) {
- ScrollForward();
- }
+ if (colRight) {
+ cGrid *right = colRight->getNeighbor(activeGrid);
+ if (right) {
+ setNextActiveGrid(right);
+ }
}
osdManager.flush();
}
-void cTvGuideOsd::ScrollForward() {
- myTime->AddStep(tvguideConfig.stepMinutes);
- timeLine->drawDateViewer();
- timeLine->drawClock();
- timeLine->setTimeline();
- for (cChannelColumn *column = columns.First(); column; column = columns.Next(column)) {
- column->AddNewGridsAtEnd();
- column->ClearOutdatedStart();
- column->drawGrids();
- }
-}
-
-void cTvGuideOsd::processKeyLeft() {
- if (detailViewActive)
- return;
- if (activeGrid == NULL)
- return;
+void cTvGuideOsd::channelBack() {
cChannelColumn *colLeft = columns.Prev(activeGrid->column);
if (!colLeft) {
const cChannel *channelLeft = activeGrid->column->getChannel();
@@ -287,7 +242,7 @@ void cTvGuideOsd::processKeyLeft() { }
}
if (colLeft) {
- if (columns.Count() == tvguideConfig.channelCols) {
+ if (columns.Count() == tvguideConfig.numGrids) {
cChannelColumn *cLast = columns.Last();
columns.Del(cLast);
}
@@ -311,47 +266,127 @@ void cTvGuideOsd::processKeyLeft() { osdManager.flush();
}
+void cTvGuideOsd::timeForward() {
+ bool actionDone = false;
+ if ( (myTime->GetEnd() - activeGrid->EndTime())/60 < 30 ) {
+ ScrollForward();
+ actionDone = true;
+ }
+ cGrid *next = activeGrid->column->getNext(activeGrid);
+ if (next) {
+ if ( (next->EndTime() < myTime->GetEnd())
+ || ( (myTime->GetEnd() - next->StartTime())/60 > 30 ) ) {
+ setNextActiveGrid(next);
+ actionDone = true;
+ }
+ }
+ if (!actionDone) {
+ ScrollForward();
+ }
+ osdManager.flush();
+}
+
+void cTvGuideOsd::ScrollForward() {
+ myTime->AddStep(tvguideConfig.stepMinutes);
+ timeLine->drawDateViewer();
+ timeLine->drawClock();
+ timeLine->setTimeline();
+ for (cChannelColumn *column = columns.First(); column; column = columns.Next(column)) {
+ column->AddNewGridsAtEnd();
+ column->ClearOutdatedStart();
+ column->drawGrids();
+ }
+}
+
+void cTvGuideOsd::timeBack() {
+ bool actionDone = false;
+ if ( (activeGrid->StartTime() - myTime->GetStart())/60 < 30 ) {
+ ScrollBack();
+ actionDone = true;
+ }
+ cGrid *prev = activeGrid->column->getPrev(activeGrid);
+ if (prev) {
+ if ( (prev->StartTime() > myTime->GetStart())
+ || ( (prev->EndTime() - myTime->GetStart())/60 > 30 )
+ || ( prev->isFirst()) ) {
+ setNextActiveGrid(prev);
+ actionDone = true;
+ }
+ }
+ if (!actionDone) {
+ ScrollBack();
+ }
+ osdManager.flush();
+}
+
+void cTvGuideOsd::ScrollBack() {
+ bool tooFarInPast = myTime->DelStep(tvguideConfig.stepMinutes);
+ if (tooFarInPast)
+ return;
+ timeLine->drawDateViewer();
+ timeLine->drawClock();
+ timeLine->setTimeline();
+ for (cChannelColumn *column = columns.First(); column; column = columns.Next(column)) {
+ column->AddNewGridsAtStart();
+ column->ClearOutdatedEnd();
+ column->drawGrids();
+ }
+}
+
+void cTvGuideOsd::processKeyUp() {
+ if (!activeGrid) {
+ return;
+ }
+ if (detailViewActive) {
+ detailView->scrollUp();
+ osdManager.flush();
+ } else {
+ if (tvguideConfig.displayMode == eVertical) {
+ timeBack();
+ } else if (tvguideConfig.displayMode == eHorizontal) {
+ channelBack();
+ }
+ }
+}
+
+void cTvGuideOsd::processKeyDown() {
+ if (!activeGrid) {
+ return;
+ }
+ if (detailViewActive) {
+ detailView->scrollDown();
+ osdManager.flush();
+ } else {
+ if (tvguideConfig.displayMode == eVertical) {
+ timeForward();
+ } else if (tvguideConfig.displayMode == eHorizontal) {
+ channelForward();
+ }
+ }
+}
+
+void cTvGuideOsd::processKeyLeft() {
+ if (detailViewActive)
+ return;
+ if (activeGrid == NULL)
+ return;
+ if (tvguideConfig.displayMode == eVertical) {
+ channelBack();
+ } else if (tvguideConfig.displayMode == eHorizontal) {
+ timeBack();
+ }
+}
+
void cTvGuideOsd::processKeyRight() {
if (detailViewActive)
return;
if (activeGrid == NULL)
return;
- cChannelColumn *colRight = columns.Next(activeGrid->column);
- if (!colRight) {
- const cChannel *channelRight = activeGrid->column->getChannel();
- while (channelRight = Channels.Next(channelRight)) {
- if (!channelRight->GroupSep()) {
- colRight = new cChannelColumn(tvguideConfig.channelCols - 1, channelRight, myTime);
- if (colRight->readGrids()) {
- break;
- } else {
- delete colRight;
- colRight = NULL;
- }
- }
- }
- if (colRight) {
- if (columns.Count() == tvguideConfig.channelCols) {
- cChannelColumn *cFirst = columns.First();
- columns.Del(cFirst);
- }
- for (cChannelColumn *column = columns.First(); column; column = columns.Next(column)) {
- column->SetNum(column->GetNum() - 1);
- column->drawHeader();
- column->drawGrids();
- }
- columns.Add(colRight);
- colRight->createHeader();
- colRight->drawGrids();
- }
- }
- if (colRight) {
- cGrid *right = colRight->getNeighbor(activeGrid);
- if (right) {
- setNextActiveGrid(right);
- }
- }
- osdManager.flush();
+ if (tvguideConfig.displayMode == eVertical) {
+ channelForward();
+ } else if (tvguideConfig.displayMode == eHorizontal) {
+ timeForward();
+ }
}
void cTvGuideOsd::processKeyOk() {
@@ -370,7 +405,7 @@ void cTvGuideOsd::processKeyOk() { }
void cTvGuideOsd::processKeyRed() {
- if (activeGrid == NULL)
+ if ((activeGrid == NULL) || activeGrid->isDummy())
return;
cTimer *timer = new cTimer(activeGrid->GetEvent());
cTimer *t = Timers.GetTimer(timer);
diff --git a/tvguideosd.h b/tvguideosd.h index 4027db2..433c48c 100644 --- a/tvguideosd.h +++ b/tvguideosd.h @@ -33,6 +33,10 @@ private: void processKey7();
void processKey9();
void setNextActiveGrid(cGrid *next);
+ void channelForward();
+ void channelBack();
+ void timeForward();
+ void timeBack();
void ScrollForward();
void ScrollBack();
void dump();
|