diff options
Diffstat (limited to 'setup.c')
-rw-r--r-- | setup.c | 209 |
1 files changed, 209 insertions, 0 deletions
@@ -0,0 +1,209 @@ +#include "setup.h" + +cTvguideSetup::cTvguideSetup() { + tmpTvguideConfig = tvguideConfig; + Setup(); +} + +cTvguideSetup::~cTvguideSetup() { +} + + +void cTvguideSetup::Setup(void) { + int currentItem = Current(); + Clear(); + + Add(new cOsdItem(tr("General Settings"))); + Add(new cOsdItem(tr("Screen Presentation"))); + Add(new cOsdItem(tr("Fonts and Fontsizes"))); + + SetCurrent(Get(currentItem)); + Display(); +} + +eOSState cTvguideSetup::ProcessKey(eKeys Key) { + bool hadSubMenu = HasSubMenu(); + eOSState state = cMenuSetupPage::ProcessKey(Key); + if (hadSubMenu && Key == kOk) + Store(); + + if (!hadSubMenu && (state == osUnknown || Key == kOk)) { + if ((Key == kOk && !hadSubMenu)) { + const char* ItemText = Get(Current())->Text(); + if (strcmp(ItemText, tr("General Settings")) == 0) + state = AddSubMenu(new cMenuSetupGeneral(&tmpTvguideConfig)); + if (strcmp(ItemText, tr("Screen Presentation")) == 0) + state = AddSubMenu(new cMenuSetupScreenLayout(&tmpTvguideConfig)); + if (strcmp(ItemText, tr("Fonts and Fontsizes")) == 0) + state = AddSubMenu(new cMenuSetupFont(&tmpTvguideConfig)); + } + } + return state; +} + +void cTvguideSetup::Store(void) { + + tvguideConfig = tmpTvguideConfig; + + SetupStore("themeIndex", tvguideConfig.themeIndex); + SetupStore("useBlending", tvguideConfig.useBlending); + SetupStore("roundedCorners", tvguideConfig.roundedCorners); + SetupStore("timeFormat", tvguideConfig.timeFormat); + SetupStore("channelCols", tvguideConfig.channelCols); + 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("hideEpgImages", tvguideConfig.hideEpgImages); + SetupStore("epgImageWidth", tvguideConfig.epgImageWidth); + SetupStore("epgImageHeight", tvguideConfig.epgImageHeight); + SetupStore("epgImageHeight", tvguideConfig.epgImageHeight); + SetupStore("timeColWidth", tvguideConfig.timeColWidth); + SetupStore("headerHeight", tvguideConfig.headerHeight); + SetupStore("footerHeight", tvguideConfig.footerHeight); + SetupStore("fontIndex", tvguideConfig.fontIndex); + SetupStore("fontHeaderSize", tvguideConfig.fontHeaderSize); + 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); +} + +cMenuSetupSubMenu::cMenuSetupSubMenu(const char* Title, cTvguideConfig* data) : cOsdMenu(Title, 30) { + tmpTvguideConfig = data; +} + +cOsdItem *cMenuSetupSubMenu::InfoItem(const char *label, const char *value) { + cOsdItem *item; + item = new cOsdItem(cString::sprintf("%s: %s", label, value)); + item->SetSelectable(false); + return item; +} + +eOSState cMenuSetupSubMenu::ProcessKey(eKeys Key) { + eOSState state = cOsdMenu::ProcessKey(Key); + if (state == osUnknown) { + switch (Key) { + case kOk: + return osBack; + default: + break; + } + } + return state; +} + +//------------------------------------------------------------------------------------------------------------------ + +cMenuSetupGeneral::cMenuSetupGeneral(cTvguideConfig* data) : cMenuSetupSubMenu(tr("General Settings"), data) { + timeFormatItems[0] = "12h"; + timeFormatItems[1] = "24h"; + + Set(); +} + +void cMenuSetupGeneral::Set(void) { + int currentItem = Current(); + Clear(); + + Add(new cMenuEditIntItem(tr("Number of Channels / Columns"), &tmpTvguideConfig->channelCols, 3, 8)); + 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("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)); + + SetCurrent(Get(currentItem)); + Display(); +} + +//------------------------------------------------------------------------------------------------------------------ + +cMenuSetupScreenLayout::cMenuSetupScreenLayout(cTvguideConfig* data) : cMenuSetupSubMenu(tr("Screen Presentation"), data) { + themes.Load(*cString("tvguide")); + hideChannelLogosItems[0] = trVDR("yes"); + hideChannelLogosItems[1] = trVDR("no"); + logoExtensionItems[0] = "png"; + logoExtensionItems[1] = "jpg"; + Set(); +} + +void cMenuSetupScreenLayout::Set(void) { + int currentItem = Current(); + Clear(); + if (themes.NumThemes()) + Add(new cMenuEditStraItem(tr("Theme"), &tmpTvguideConfig->themeIndex, themes.NumThemes(), themes.Descriptions())); + Add(new cMenuEditBoolItem(tr("Use color gradients"), &tmpTvguideConfig->useBlending)); + 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)); + + const char *indent = " "; + 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 cMenuEditStraItem(tr("Show EPG Images"), &tmpTvguideConfig->hideEpgImages, 2, hideChannelLogosItems)); + if (!tmpTvguideConfig->hideEpgImages) { + Add(InfoItem(tr("EPG Images Path used"), *tvguideConfig.epgImagePath)); + Add(new cMenuEditIntItem(*cString::sprintf("%s%s", indent, tr("EPG Image width")), &tmpTvguideConfig->epgImageWidth, 0, 800)); + Add(new cMenuEditIntItem(*cString::sprintf("%s%s", indent, tr("EPG Image height")), &tmpTvguideConfig->epgImageHeight, 0, 800)); + } + + SetCurrent(Get(currentItem)); + Display(); +} + +eOSState cMenuSetupScreenLayout::ProcessKey(eKeys Key) { + eOSState state = cOsdMenu::ProcessKey(Key); + if (Key == kOk) { + state = osBack; + } else if (Key != kNone) { + Set(); + } + return state; +} + +//------------------------------------------------------------------------------------------------------------------ + +cMenuSetupFont::cMenuSetupFont(cTvguideConfig* data) : cMenuSetupSubMenu(tr("Fonts and Fontsizes"), data) { + cFont::GetAvailableFontNames(&fontNames); + fontNames.Insert(strdup(tvguideConfig.fontNameDefault)); + Set(); +} + +void cMenuSetupFont::Set(void) { + int currentItem = Current(); + Clear(); + + Add(new cMenuEditStraItem(tr("Font"), &tmpTvguideConfig->fontIndex, fontNames.Size(), &fontNames[0])); + 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)); + + SetCurrent(Get(currentItem)); + Display(); +}
\ No newline at end of file |