mirror of
https://projects.vdr-developer.org/git/vdr-plugin-tvguide.git
synced 2023-10-05 15:01:48 +02:00
268 lines
12 KiB
C
268 lines
12 KiB
C
#include "config.h"
|
|
|
|
enum {
|
|
e12Hours,
|
|
e24Hours
|
|
};
|
|
|
|
enum {
|
|
eVertical,
|
|
eHorizontal
|
|
};
|
|
|
|
|
|
cTvguideConfig::cTvguideConfig() {
|
|
osdWidth = 0;
|
|
osdHeight = 0;
|
|
displayMode = eHorizontal;
|
|
colWidth = 0;
|
|
rowHeight = 0;
|
|
channelCols = 5;
|
|
channelRows = 10;
|
|
displayTime = 160;
|
|
minutePixel = 0;
|
|
displayStatusHeader = 1;
|
|
statusHeaderPercent = 20;
|
|
statusHeaderHeight = 0;
|
|
scaleVideo = 1;
|
|
decorateVideo = 1;
|
|
timeLineWidthPercent = 8;
|
|
timeLineHeightPercent = 4;
|
|
displayChannelName = 1;
|
|
channelHeaderWidthPercent = 20;
|
|
channelHeaderHeightPercent = 15;
|
|
footerHeight = 80;
|
|
stepMinutes = 30;
|
|
bigStepHours = 3;
|
|
hugeStepHours = 24;
|
|
jumpChannels = 10;
|
|
hideChannelLogos = 0;
|
|
logoWidthRatio = 13;
|
|
logoHeightRatio = 10;
|
|
logoExtension = 0;
|
|
hideEpgImages = 0;
|
|
epgImageWidth = 315;
|
|
epgImageHeight = 240;
|
|
fontIndex = 0;
|
|
fontNameDefault = "VDRSymbols Sans:Book";
|
|
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 = 4;
|
|
useBlending = 2;
|
|
roundedCorners = 0;
|
|
displayRerunsDetailEPGView = 1;
|
|
numReruns = 5;
|
|
useSubtitleRerun = 1;
|
|
}
|
|
|
|
cTvguideConfig::~cTvguideConfig() {
|
|
delete FontButton;
|
|
delete FontDetailView;
|
|
delete FontDetailHeader;
|
|
delete FontMessageBox;
|
|
delete FontMessageBoxLarge;
|
|
delete FontStatusHeader;
|
|
delete FontStatusHeaderLarge;
|
|
delete FontChannelHeader;
|
|
delete FontGrid;
|
|
delete FontGridSmall;
|
|
delete FontTimeLineWeekday;
|
|
delete FontTimeLineDate;
|
|
delete FontTimeLineTime;
|
|
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;
|
|
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;
|
|
} else {
|
|
cStringList availableFonts;
|
|
cFont::GetAvailableFontNames(&availableFonts);
|
|
if (availableFonts[fontIndex-1]) {
|
|
fontname = availableFonts[fontIndex-1];
|
|
} else
|
|
fontname = fontNameDefault;
|
|
}
|
|
cFont *test = NULL;
|
|
test = cFont::CreateFont(*fontname, 30);
|
|
if (!test) {
|
|
fontname = DefaultFontSml;
|
|
}
|
|
delete test;
|
|
|
|
//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::SetBlending(void) {
|
|
if (theme.Color(clrDoBlending) == CLR_BLENDING_OFF) {
|
|
useBlending = 0;
|
|
} else if (theme.Color(clrDoBlending) == CLR_BLENDING_DEFAULT)
|
|
useBlending = 1;
|
|
else {
|
|
useBlending = 2;
|
|
}
|
|
}
|
|
|
|
void cTvguideConfig::SetLogoPath(cString path) {
|
|
logoPath = path;
|
|
}
|
|
|
|
void cTvguideConfig::SetImagesPath(cString path) {
|
|
epgImagePath = path;
|
|
}
|
|
|
|
void cTvguideConfig::loadTheme() {
|
|
cThemes themes;
|
|
themes.Load(*cString("tvguide"));
|
|
const char *FileName = themes.FileName(themeIndex);
|
|
if (access(FileName, F_OK) == 0) {
|
|
::theme.Load(FileName);
|
|
}
|
|
}
|
|
|
|
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, "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, "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, "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, "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 if (strcmp(Name, "displayRerunsDetailEPGView") == 0) displayRerunsDetailEPGView = atoi(Value);
|
|
else if (strcmp(Name, "numReruns") == 0) numReruns = atoi(Value);
|
|
else if (strcmp(Name, "useSubtitleRerun") == 0) useSubtitleRerun = atoi(Value);
|
|
else return false;
|
|
return true;
|
|
}
|