diff --git a/HISTORY b/HISTORY index 0a4da2c..adaf768 100644 --- a/HISTORY +++ b/HISTORY @@ -103,3 +103,5 @@ Version 1.1.0 - Added possibility to manage EPG Search Timers in red button recording menu - completely refactored recording menu +- restructured detailöed EPG View that tv frame and status buttons + are displayed diff --git a/config.c b/config.c index b3a95f7..885693e 100644 --- a/config.c +++ b/config.c @@ -12,9 +12,8 @@ cTvguideConfig::cTvguideConfig() { displayTime = 160; displayStatusHeader = 1; displayChannelGroups = 1; - statusHeaderPercent = 20; + headerHeightPercent = 20; channelGroupsPercent = 5; - epgViewHeaderPercent = 25; epgViewBorder = 50; scaleVideo = 1; decorateVideo = 1; @@ -217,9 +216,8 @@ bool cTvguideConfig::SetupParse(const char *Name, const char *Value) { else if (strcmp(Name, "showTimeInGrid") == 0) showTimeInGrid = atoi(Value); else if (strcmp(Name, "displayStatusHeader") == 0) displayStatusHeader = atoi(Value); else if (strcmp(Name, "displayChannelGroups") == 0) displayChannelGroups = atoi(Value); - else if (strcmp(Name, "statusHeaderPercent") == 0) statusHeaderPercent = atoi(Value); + else if (strcmp(Name, "headerHeightPercent") == 0) headerHeightPercent = atoi(Value); else if (strcmp(Name, "channelGroupsPercent") == 0) channelGroupsPercent = atoi(Value); - else if (strcmp(Name, "epgViewHeaderPercent") == 0) epgViewHeaderPercent = atoi(Value); else if (strcmp(Name, "epgViewBorder") == 0) epgViewBorder = atoi(Value); else if (strcmp(Name, "scaleVideo") == 0) scaleVideo = atoi(Value); else if (strcmp(Name, "decorateVideo") == 0) decorateVideo = atoi(Value); diff --git a/config.h b/config.h index 689384a..07427d6 100644 --- a/config.h +++ b/config.h @@ -46,9 +46,8 @@ class cTvguideConfig { int displayTime; int displayStatusHeader; int displayChannelGroups; - int statusHeaderPercent; + int headerHeightPercent; int channelGroupsPercent; - int epgViewHeaderPercent; int epgViewBorder; int scaleVideo; int decorateVideo; diff --git a/detailview.c b/detailview.c index dc726f0..a497e6a 100644 --- a/detailview.c +++ b/detailview.c @@ -8,17 +8,19 @@ #include "tools.h" #include "detailview.h" -cDetailView::cDetailView(const cEvent *event) { +cDetailView::cDetailView(const cEvent *event, cFooter *footer) { this->event = event; + this->footer = footer; imgScrollBar = NULL; border = tvguideConfig.epgViewBorder; //px, border in view window scrollBarWidth = 40; + headerWidth = geoManager.headerContentWidth; headerHeight = geoManager.epgViewHeaderHeight; pixmapPoster = NULL; width = geoManager.osdWidth; contentWidth = width - scrollBarWidth; contentX = 0; - contentHeight = geoManager.osdHeight - headerHeight; + contentHeight = geoManager.osdHeight - headerHeight - geoManager.footerHeight; widthPoster = 30 * contentWidth / 100; } @@ -31,8 +33,6 @@ cDetailView::~cDetailView(void){ header = NULL; osdManager.releasePixmap(headerLogo); headerLogo = NULL; - osdManager.releasePixmap(headerBack); - headerBack = NULL; osdManager.releasePixmap(content); content = NULL; if (pixmapPoster) @@ -40,9 +40,8 @@ cDetailView::~cDetailView(void){ pixmapPoster = NULL; osdManager.releasePixmap(scrollBar); scrollBar = NULL; - osdManager.releasePixmap(footer); - footer = NULL; delete imgScrollBar; + footer->LeaveDetailedViewMode(Channels.GetByChannelID(event->ChannelID())); } void cDetailView::setContent() { @@ -120,13 +119,11 @@ bool cDetailView::setContentDrawportHeight() { } void cDetailView::createPixmaps() { - back = osdManager.requestPixmap(3, cRect(0, 0, geoManager.osdWidth, geoManager.osdHeight), cRect::Null); + back = osdManager.requestPixmap(3, cRect(0, 0, width, headerHeight + contentHeight), cRect::Null); back->Fill(clrBlack); - header = new cStyledPixmap(osdManager.requestPixmap(5, cRect(0, 0, width, headerHeight), cRect::Null)); + header = new cStyledPixmap(osdManager.requestPixmap(5, cRect(0, 0, headerWidth, headerHeight), cRect::Null)); headerLogo = osdManager.requestPixmap(6, cRect(0, 0, width, headerHeight), cRect::Null); headerLogo->Fill(clrTransparent); - headerBack = osdManager.requestPixmap(4, cRect(0, 0, width, headerHeight), cRect::Null); - headerBack->Fill(clrBlack); header->setColor(theme.Color(clrHeader), theme.Color(clrHeaderBlending)); content = osdManager.requestPixmap(5, cRect(contentX, headerHeight, contentWidth, contentHeight), cRect(0,0, contentWidth, max(heightContent, contentHeight))); @@ -136,18 +133,23 @@ void cDetailView::createPixmaps() { pixmapPoster->DrawRectangle(cRect(2, 0, widthPoster - 2, content->DrawPort().Height()), theme.Color(clrBackground)); } scrollBar = osdManager.requestPixmap(5, cRect(geoManager.osdWidth - scrollBarWidth, headerHeight, scrollBarWidth, contentHeight)); - - footer = osdManager.requestPixmap(5, cRect(0, headerHeight + content->ViewPort().Height(), width, 3)); - footer->Fill(theme.Color(clrBorder)); } void cDetailView::drawHeader() { + header->Fill(clrTransparent); if (tvguideConfig.style == eStyleGraphical) { - header->drawBackgroundGraphical(bgEpgHeader); + if (tvguideConfig.scaleVideo) { + header->drawBackgroundGraphical(bgStatusHeaderWindowed); + } else { + header->drawBackgroundGraphical(bgStatusHeaderFull); + } } else { header->drawBackground(); header->drawBoldBorder(); } + if (tvguideConfig.scaleVideo) { + back->DrawRectangle(cRect(headerWidth, 0, geoManager.tvFrameWidth, headerHeight), clrTransparent); + } tColor colorTextBack = (tvguideConfig.style == eStyleFlat)?theme.Color(clrHeader):clrTransparent; int logoHeight = 2 * header->Height() / 3; int logoWidth = logoHeight * tvguideConfig.logoWidthRatio / tvguideConfig.logoHeightRatio; @@ -171,16 +173,16 @@ void cDetailView::drawHeader() { epgImageWidth = epgImageHeight * tvguideConfig.epgImageWidth / tvguideConfig.epgImageHeight; if (imgLoader.LoadEPGImage(event->EventID(), epgImageWidth, epgImageHeight)) { cImage epgImage = imgLoader.GetImage(); - int epgImageX = header->Width() - border - epgImageWidth; - int epgImageY = (header->Height() - epgImageHeight) / 2; + int epgImageX = headerWidth - border - epgImageWidth; + int epgImageY = (headerHeight - epgImageHeight) / 2; header->DrawRectangle(cRect(epgImageX-2, epgImageY-2, epgImageWidth + 4, epgImageHeight + 4), theme.Color(clrBorder)); header->DrawImage(cPoint(epgImageX, epgImageY), epgImage); epgImageDrawn = true; } } int textX = logoDrawn?(border + logoWidth + 5):border; - int textY = (header->Height() - 7*lineHeight/2)/2; - int maxTextWidth = header->Width() - 2 * border; + int textY = (headerHeight - 7*lineHeight/2)/2; + int maxTextWidth = headerWidth - 2 * border; if (logoDrawn) maxTextWidth -= logoWidth; if (epgImageDrawn) @@ -211,9 +213,8 @@ void cDetailView::drawHeader() { } } -void cDetailView::drawRecIcon() { +void cDetailView::drawRecIcon(void) { cString recIconText(" REC "); - int headerWidth = width; int widthIcon = fontManager.FontDetailHeader->Width(*recIconText); int height = fontManager.FontDetailHeader->Height()+10; int posX = headerWidth - widthIcon - 20; diff --git a/detailview.h b/detailview.h index 0693cca..c7a6c50 100644 --- a/detailview.h +++ b/detailview.h @@ -6,6 +6,7 @@ #include #include "services/tvscraper.h" #include "styledpixmap.h" +#include "footer.h" // --- cDetailView ------------------------------------------------------------- @@ -16,11 +17,10 @@ private: cPixmap *back; cStyledPixmap *header; cPixmap *headerLogo; - cPixmap *headerBack; cPixmap *content; cPixmap *pixmapPoster; cPixmap *scrollBar; - cPixmap *footer; + cFooter *footer; const cEvent *event; cImage *imgScrollBar; cTextWrapper description; @@ -28,6 +28,7 @@ private: TVScraperGetFullInformation mediaInfo; bool hasAdditionalMedia; int border; + int headerWidth; int headerHeight; int width; int contentWidth; @@ -65,7 +66,7 @@ private: void pageDown(); void Action(void); public: - cDetailView(const cEvent *event); + cDetailView(const cEvent *event, cFooter *footer); virtual ~cDetailView(void); void setContent(); void createPixmaps(); diff --git a/footer.c b/footer.c index 348da30..aa4b12e 100644 --- a/footer.c +++ b/footer.c @@ -54,15 +54,31 @@ void cFooter::drawBlueButton() { DrawButton(*text, theme.Color(clrButtonBlue), theme.Color(clrButtonBlueBorder), oeButtonBlue, positionButtons[3]); } -void cFooter::UpdateGroupButtons(const cChannel *channel) { +void cFooter::UpdateGroupButtons(const cChannel *channel, bool force) { + if (!channel) + return; int group = channelGroups->GetGroup(channel); - if (group != currentGroup) { + if ((group != currentGroup) || force) { currentGroup = group; drawGreenButton(channelGroups->GetPrev(group)); drawYellowButton(channelGroups->GetNext(group)); } } +void cFooter::SetDetailedViewMode(void) { + ClearButton(positionButtons[1]); + ClearButton(positionButtons[2]); +} + +void cFooter::LeaveDetailedViewMode(const cChannel *channel) { + if (tvguideConfig.channelJumpMode == eNumJump) { + drawGreenButton(); + drawYellowButton(); + } else { + UpdateGroupButtons(channel, true); + } +} + void cFooter::SetButtonPositions(void) { for (int i=0; i < 4; i++) { positionButtons[i] = -1; @@ -125,4 +141,9 @@ void cFooter::DrawButton(const char *text, tColor color, tColor borderColor, eOs int textWidth = fontManager.FontButton->Width(text); int textHeight = fontManager.FontButton->Height(); footer->DrawText(cPoint(left + (geoManager.buttonWidth-textWidth)/2, buttonY + (geoManager.buttonHeight-textHeight)/2), text, theme.Color(clrFontButtons), colorTextBack, fontManager.FontButton); +} + +void cFooter::ClearButton(int num) { + int left = num * geoManager.buttonWidth + (2 * num + 1) * geoManager.buttonBorder; + footer->DrawRectangle(cRect(left, buttonY, geoManager.buttonWidth, geoManager.buttonHeight), clrTransparent); } \ No newline at end of file diff --git a/footer.h b/footer.h index 51fc096..56aef7f 100644 --- a/footer.h +++ b/footer.h @@ -15,16 +15,19 @@ private: int currentGroup; void SetButtonPositions(void); void DrawButton(const char *text, tColor color, tColor borderColor, eOsdElementType buttonType, int num); + void ClearButton(int num); public: cFooter(cChannelGroups *channelGroups); virtual ~cFooter(void); void drawRedButton(); void drawGreenButton(); - void drawYellowButton(); void drawGreenButton(const char *text); + void drawYellowButton(); void drawYellowButton(const char *text); void drawBlueButton(); - void UpdateGroupButtons(const cChannel *channel); + void UpdateGroupButtons(const cChannel *channel, bool force = false); + void SetDetailedViewMode(void); + void LeaveDetailedViewMode(const cChannel *channel); }; #endif //__TVGUIDE_FOOTER_H \ No newline at end of file diff --git a/geometrymanager.c b/geometrymanager.c index 9c9e2b8..94d47b7 100644 --- a/geometrymanager.c +++ b/geometrymanager.c @@ -20,9 +20,9 @@ bool cGeometryManager::SetGeometry(int osdWidth, int osdHeight, bool force) { this->osdHeight = osdHeight; esyslog("tvguide: Set OSD to %d x %d px", osdWidth, osdHeight); - statusHeaderHeight = (tvguideConfig.displayStatusHeader)?(tvguideConfig.statusHeaderPercent * osdHeight / 100):0; + statusHeaderHeight = (tvguideConfig.displayStatusHeader)?(tvguideConfig.headerHeightPercent * osdHeight / 100):0; tvFrameWidth = statusHeaderHeight * 16 / 9; - statusHeaderContentWidth = (tvguideConfig.scaleVideo)?(osdWidth - tvFrameWidth):osdWidth; + headerContentWidth = (tvguideConfig.scaleVideo)?(osdWidth - tvFrameWidth):osdWidth; channelGroupsWidth = (tvguideConfig.displayChannelGroups)?(tvguideConfig.channelGroupsPercent * osdWidth / 100):0; channelGroupsHeight = (tvguideConfig.displayChannelGroups)?(tvguideConfig.channelGroupsPercent * osdHeight / 100):0; channelHeaderWidth = tvguideConfig.channelHeaderWidthPercent * osdWidth / 100; @@ -63,7 +63,7 @@ bool cGeometryManager::SetGeometry(int osdWidth, int osdHeight, bool force) { buttonWidth = osdWidth / 4 - 2 * buttonBorder; buttonHeight = footerHeight - 3 * buttonBorder; - epgViewHeaderHeight = tvguideConfig.epgViewHeaderPercent * osdHeight / 100; + epgViewHeaderHeight = tvguideConfig.headerHeightPercent * osdHeight / 100; borderRecMenus = 10; diff --git a/geometrymanager.h b/geometrymanager.h index a5738c0..ecd31b9 100644 --- a/geometrymanager.h +++ b/geometrymanager.h @@ -12,7 +12,7 @@ public: int osdHeight; int statusHeaderHeight; int tvFrameWidth; - int statusHeaderContentWidth; + int headerContentWidth; //ChannelGroups int channelGroupsWidth; int channelGroupsHeight; diff --git a/icons/darkredNG/osdElements/epgview_header.png b/icons/darkredNG/osdElements/epgview_header.png deleted file mode 100644 index c42dad8..0000000 Binary files a/icons/darkredNG/osdElements/epgview_header.png and /dev/null differ diff --git a/icons/default/osdElements/epgview_header.png b/icons/default/osdElements/epgview_header.png deleted file mode 100644 index b754eb0..0000000 Binary files a/icons/default/osdElements/epgview_header.png and /dev/null differ diff --git a/imagecache.c b/imagecache.c index 90af108..93baa9d 100644 --- a/imagecache.c +++ b/imagecache.c @@ -57,10 +57,10 @@ void cImageCache::CreateOsdIconCache(void) { std::string imgStatusHeaderTVFrame = "osdElements/statusheader_tvframe"; success = LoadIcon(imgStatusHeaderContentFull); if (success) - InsertIntoOsdElementCache(oeStatusHeaderContentFull, geoManager.statusHeaderContentWidth, geoManager.statusHeaderHeight); + InsertIntoOsdElementCache(oeStatusHeaderContentFull, geoManager.headerContentWidth, geoManager.statusHeaderHeight); success = LoadIcon(imgStatusHeaderContentWindowed); if (success) - InsertIntoOsdElementCache(oeStatusHeaderContentWindowed, geoManager.statusHeaderContentWidth, geoManager.statusHeaderHeight); + InsertIntoOsdElementCache(oeStatusHeaderContentWindowed, geoManager.headerContentWidth, geoManager.statusHeaderHeight); success = LoadIcon(imgStatusHeaderTVFrame); if (success) InsertIntoOsdElementCache(oeStatusHeaderTVFrame, geoManager.tvFrameWidth, geoManager.statusHeaderHeight); @@ -118,11 +118,6 @@ void cImageCache::CreateOsdIconCache(void) { if (success) InsertIntoOsdElementCache(oeClock, geoManager.clockWidth, geoManager.clockHeight); - //Detailed EPG View - success = LoadIcon("osdElements/epgview_header"); - if (success) - InsertIntoOsdElementCache(oeEpgHeader, geoManager.osdWidth, geoManager.epgViewHeaderHeight); - //Channel Jump success = LoadIcon("osdElements/channel_jump"); if (success) diff --git a/imagecache.h b/imagecache.h index f8aeac5..365e910 100644 --- a/imagecache.h +++ b/imagecache.h @@ -29,7 +29,6 @@ enum eOsdElementType { oeTimeline2, oeDateViewer, oeClock, - oeEpgHeader, oeChannelJump, }; diff --git a/po/ca_ES.po b/po/ca_ES.po index 0d195dd..cc466cc 100644 --- a/po/ca_ES.po +++ b/po/ca_ES.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: vdr-tvguide 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-01-10 11:54+0100\n" +"POT-Creation-Date: 2014-01-11 16:02+0100\n" "PO-Revision-Date: 2013-09-21 17:49+0200\n" "Last-Translator: My friend Thanks David \n" "Language-Team: \n" @@ -603,15 +603,15 @@ msgstr "Alçada cronologia (% alçada OSD)" msgid "Display time in EPG Grids" msgstr "Mostra el temps a l'EPG" +msgid "Height of Headers (Status Header and EPG View, Perc. of osd height)" +msgstr "" + msgid "Height of Footer (Perc. of osd height)" msgstr "" msgid "Display status header" msgstr "Mostra capçalera d'estat" -msgid "Height of status header (Perc. of osd height)" -msgstr "Alçada capçalera d'estat (% alçada OSD)" - msgid "Scale video to upper right corner" msgstr "Escala de vídeo a cantonada superior dreta" @@ -645,9 +645,6 @@ msgstr "Proporció amplada logotip" msgid "Logo height ratio" msgstr "Proporció alçada logotip" -msgid "Height of Header in Detailed View (Perc. of osd height)" -msgstr "" - msgid "Text Border in Detailed View (pixel)" msgstr "" @@ -756,5 +753,8 @@ msgstr "" msgid "Recording Menus Icon Cache" msgstr "" +#~ msgid "Height of status header (Perc. of osd height)" +#~ msgstr "Alçada capçalera d'estat (% alçada OSD)" + #~ msgid "Configure Search Timer Options for Search String" #~ msgstr "Configura opcions de cerca de temporitzadors amb text" diff --git a/po/de_DE.po b/po/de_DE.po index 574a111..053f965 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: \n" -"POT-Creation-Date: 2014-01-10 11:54+0100\n" +"POT-Creation-Date: 2014-01-11 16:02+0100\n" "PO-Revision-Date: 2012-08-25 17:49+0200\n" "Last-Translator: Horst\n" "Language-Team: \n" @@ -28,7 +28,7 @@ msgid "No EPG Information available" msgstr "Keine EPG Daten verfügbar" msgid "Search & Rec" -msgstr "Search & Rec" +msgstr "Suchen & Aufn." msgid "Channels back" msgstr "Kanäle zurück" @@ -600,15 +600,15 @@ msgstr "Höhe der Zeitleiste (% der OSD Höhe)" msgid "Display time in EPG Grids" msgstr "Zeit in EPG Grids anzeigen" +msgid "Height of Headers (Status Header and EPG View, Perc. of osd height)" +msgstr "Höhe der Header (Status Header und EPG View, % der OSD Höhe)" + msgid "Height of Footer (Perc. of osd height)" msgstr "Höhe des Footers (% der OSD Höhe)" msgid "Display status header" msgstr "Status Header anzeigen" -msgid "Height of status header (Perc. of osd height)" -msgstr "Höhe des Status Headers (% der OSD Höhe)" - msgid "Scale video to upper right corner" msgstr "Video in obere rechte Ecke skalieren" @@ -642,9 +642,6 @@ msgstr "Logo Breitenverhältnis" msgid "Logo height ratio" msgstr "Logo Höhenverhältnis" -msgid "Height of Header in Detailed View (Perc. of osd height)" -msgstr "Höhe des Headers im detailierten EPG View (% der OSD Höhe)" - msgid "Text Border in Detailed View (pixel)" msgstr "Rand im detailierten EPG View" diff --git a/po/ru_RU.po b/po/ru_RU.po index 3c3ce31..a03543b 100644 --- a/po/ru_RU.po +++ b/po/ru_RU.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: vdr-tvguide 1.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-01-10 11:54+0100\n" +"POT-Creation-Date: 2014-01-11 16:02+0100\n" "PO-Revision-Date: 2013-09-25 17:49+0400\n" "Last-Translator: AmiD, ilya\n" "Language-Team: Russia-Cherepovets(wm.amid@gmail.com)\n" @@ -600,15 +600,15 @@ msgstr "Высота таймлинии (% от высоты OSD)" msgid "Display time in EPG Grids" msgstr "Показывать время в сетке EPG" +msgid "Height of Headers (Status Header and EPG View, Perc. of osd height)" +msgstr "" + msgid "Height of Footer (Perc. of osd height)" msgstr "" msgid "Display status header" msgstr "Показывать верхнюю панель" -msgid "Height of status header (Perc. of osd height)" -msgstr "Высота верхней панели (% от высоты OSD)" - msgid "Scale video to upper right corner" msgstr "Показывать видео в правом верхнем углу" @@ -642,9 +642,6 @@ msgstr "Ширина логотипов" msgid "Logo height ratio" msgstr "Высота логотипов" -msgid "Height of Header in Detailed View (Perc. of osd height)" -msgstr "" - msgid "Text Border in Detailed View (pixel)" msgstr "" @@ -753,5 +750,8 @@ msgstr "" msgid "Recording Menus Icon Cache" msgstr "" +#~ msgid "Height of status header (Perc. of osd height)" +#~ msgstr "Высота верхней панели (% от высоты OSD)" + #~ msgid "Configure Search Timer Options for Search String" #~ msgstr "Настроить параметры таймера" diff --git a/po/sk_SK.po b/po/sk_SK.po index 8b0d56d..95a3015 100644 --- a/po/sk_SK.po +++ b/po/sk_SK.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: vdr-tvguide 1.1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-01-10 11:54+0100\n" +"POT-Creation-Date: 2014-01-11 16:02+0100\n" "PO-Revision-Date: 2013-09-15 00:12+0100\n" "Last-Translator: Milan Hrala \n" "Language-Team: \n" @@ -600,15 +600,15 @@ msgstr "V msgid "Display time in EPG Grids" msgstr "Zobrazi as v EPG mrieke" +msgid "Height of Headers (Status Header and EPG View, Perc. of osd height)" +msgstr "" + msgid "Height of Footer (Perc. of osd height)" msgstr "" msgid "Display status header" msgstr "Zobrazi stavov hlaviku" -msgid "Height of status header (Perc. of osd height)" -msgstr "Vka stavovej hlaviky (% z OSD vky)" - msgid "Scale video to upper right corner" msgstr "klovateln video v pravom hornom rohu" @@ -642,9 +642,6 @@ msgstr " msgid "Logo height ratio" msgstr "Vka loga" -msgid "Height of Header in Detailed View (Perc. of osd height)" -msgstr "" - msgid "Text Border in Detailed View (pixel)" msgstr "" @@ -753,5 +750,8 @@ msgstr "" msgid "Recording Menus Icon Cache" msgstr "" +#~ msgid "Height of status header (Perc. of osd height)" +#~ msgstr "Vka stavovej hlaviky (% z OSD vky)" + #~ msgid "Configure Search Timer Options for Search String" #~ msgstr "Konfigurova monosti plnov pre vyhadvanie kovch slov" diff --git a/recmenumanager.c b/recmenumanager.c index 8206164..c702184 100644 --- a/recmenumanager.c +++ b/recmenumanager.c @@ -5,6 +5,7 @@ #include "recmenumanager.h" cRecMenuManager::cRecMenuManager(void) { + footer = NULL; active = false; activeMenu = NULL; activeMenuBuffer = NULL; @@ -114,17 +115,10 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) { if (t) { const cEvent *ev = t->Event(); if (ev) { - activeMenu->Hide(); - detailView = new cDetailView(ev); - detailView->setContent(); - detailView->drawHeader(); - detailView->drawContent(); - detailView->drawScrollbar(); - detailView->Start(); - detailViewActive = true; + DisplayDetailedView(ev); } } - break;} + break; } case rmsDeleteTimerConflictMenu: { //caller: cRecMenuTimerConflict //delete timer out of current timer conflict @@ -506,14 +500,7 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) { ev = menu->GetEvent(); } else break; if (ev) { - activeMenu->Hide(); - detailView = new cDetailView(ev); - detailView->setContent(); - detailView->drawHeader(); - detailView->drawContent(); - detailView->drawScrollbar(); - detailView->Start(); - detailViewActive = true; + DisplayDetailedView(ev); } break;} case rmsSearchRecord: { @@ -745,6 +732,18 @@ bool cRecMenuManager::DisplayTimerConflict(int timerID) { return false; } +void cRecMenuManager::DisplayDetailedView(const cEvent *ev) { + activeMenu->Hide(); + detailView = new cDetailView(ev, footer); + footer->SetDetailedViewMode(); + detailView->setContent(); + detailView->drawHeader(); + detailView->drawContent(); + detailView->drawScrollbar(); + detailView->Start(); + detailViewActive = true; +} + eOSState cRecMenuManager::ProcessKey(eKeys Key) { eOSState state = osContinue; eRecMenuState nextState = rmsContinue; diff --git a/recmenumanager.h b/recmenumanager.h index cc000d1..d40a0fe 100644 --- a/recmenumanager.h +++ b/recmenumanager.h @@ -4,10 +4,12 @@ #include "recmenu.h" #include "recmanager.h" #include "services/epgsearch.h" +#include "footer.h" // --- cRecMenuManager ------------------------------------------------------------- class cRecMenuManager { private: + cFooter *footer; bool active; cRecMenu *activeMenu; cRecMenu *activeMenuBuffer; @@ -22,9 +24,11 @@ private: void DisplaySearchTimerList(void); bool DisplayTimerConflict(cTimer *timer); bool DisplayTimerConflict(int timerID); + void DisplayDetailedView(const cEvent *ev); public: cRecMenuManager(void); virtual ~cRecMenuManager(void); + void SetFooter(cFooter *footer) { this->footer = footer; }; bool isActive(void) { return active; }; void Start(const cEvent *event); void Close(void); diff --git a/recmenus.c b/recmenus.c index f5b1041..71e70ce 100644 --- a/recmenus.c +++ b/recmenus.c @@ -785,7 +785,7 @@ void cRecMenuSearchTimerEdit::InitMenuItems(void) { if (advancedOptions) { useDayOfWeekSubMenu.push_back(new cRecMenuItemDayChooser(tr("Select Days"), dayOfWeek, false, &dayOfWeek)); - avoidRepeatSubMenu.push_back(new cRecMenuItemInt(tr("Number of allowed repeats"), allowedRepeats, 1, 30, false, &allowedRepeats, rmsSearchTimerSave)); + avoidRepeatSubMenu.push_back(new cRecMenuItemInt(tr("Number of allowed repeats"), allowedRepeats, 0, 30, false, &allowedRepeats, rmsSearchTimerSave)); avoidRepeatSubMenu.push_back(new cRecMenuItemBool(tr("Compare Title"), compareTitle, false, false, &compareTitle, rmsSearchTimerSave)); avoidRepeatSubMenu.push_back(new cRecMenuItemBool(tr("Compare Subtitle"), compareSubtitle, false, false, &compareSubtitle, rmsSearchTimerSave)); avoidRepeatSubMenu.push_back(new cRecMenuItemBool(tr("Compare Description"), compareSummary, false, false, &compareSummary, rmsSearchTimerSave)); diff --git a/setup.c b/setup.c index 77320c7..c31c849 100644 --- a/setup.c +++ b/setup.c @@ -63,9 +63,8 @@ void cTvguideSetup::Store(void) { SetupStore("showTimeInGrid", tvguideConfig.showTimeInGrid); SetupStore("displayStatusHeader", tvguideConfig.displayStatusHeader); SetupStore("displayChannelGroups", tvguideConfig.displayChannelGroups); - SetupStore("statusHeaderPercent", tvguideConfig.statusHeaderPercent); + SetupStore("headerHeightPercent", tvguideConfig.headerHeightPercent); SetupStore("channelGroupsPercent", tvguideConfig.channelGroupsPercent); - SetupStore("epgViewHeaderPercent", tvguideConfig.epgViewHeaderPercent); SetupStore("epgViewBorder", tvguideConfig.epgViewBorder); SetupStore("scaleVideo", tvguideConfig.scaleVideo); SetupStore("decorateVideo", tvguideConfig.decorateVideo); @@ -244,11 +243,11 @@ void cMenuSetupScreenLayout::Set(void) { Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Number of Channels to display")), &tmpTvguideConfig->channelRows, 3, 12)); Add(new cMenuEditBoolItem(*cString::sprintf("%s%s", *indent, tr("Display time in EPG Grids")), &tmpTvguideConfig->showTimeInGrid)); } + Add(new cMenuEditIntItem(tr("Height of Headers (Status Header and EPG View, Perc. of osd height)"), &tmpTvguideConfig->headerHeightPercent, 10, 50)); Add(new cMenuEditIntItem(tr("Height of Footer (Perc. of osd height)"), &tmpTvguideConfig->footerHeightPercent, 3, 20)); Add(new cMenuEditBoolItem(tr("Display status header"), &tmpTvguideConfig->displayStatusHeader)); if (tmpTvguideConfig->displayStatusHeader) { - 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)); } @@ -271,7 +270,6 @@ void cMenuSetupScreenLayout::Set(void) { Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Logo height ratio")), &tmpTvguideConfig->logoHeightRatio, 1, 1000)); } - Add(new cMenuEditIntItem(tr("Height of Header in Detailed View (Perc. of osd height)"), &tmpTvguideConfig->epgViewHeaderPercent, 10, 50)); Add(new cMenuEditIntItem(tr("Text Border in Detailed View (pixel)"), &tmpTvguideConfig->epgViewBorder, 0, 300)); Add(new cMenuEditStraItem(tr("Show EPG Images"), &tmpTvguideConfig->hideEpgImages, 2, hideChannelLogosItems)); diff --git a/statusheader.c b/statusheader.c index 7632d79..3b04919 100644 --- a/statusheader.c +++ b/statusheader.c @@ -7,7 +7,7 @@ cStatusHeader::cStatusHeader(void) { color = theme.Color(clrStatusHeader); colorBlending = theme.Color(clrStatusHeaderBlending); height = geoManager.statusHeaderHeight; - width = geoManager.statusHeaderContentWidth; + width = geoManager.headerContentWidth; tvFrameWidth = geoManager.tvFrameWidth; pixmap = osdManager.requestPixmap(1, cRect(0, 0, width, height)); pixmapText = osdManager.requestPixmap(2, cRect(0, 0, width, height)); @@ -35,7 +35,6 @@ void cStatusHeader::Draw(void) { } else { drawBackgroundGraphical(bgStatusHeaderFull); } - } else { if (tvguideConfig.decorateVideo) { DecorateVideoFrame(); diff --git a/styledpixmap.c b/styledpixmap.c index 20945f1..73c9256 100644 --- a/styledpixmap.c +++ b/styledpixmap.c @@ -45,8 +45,6 @@ void cStyledPixmap::drawBackgroundGraphical(eBackgroundType type, bool active) { back = imgCache.GetOsdElement(oeStatusHeaderContentFull); } else if (type == bgClock) { back = imgCache.GetOsdElement(oeClock); - } else if (type == bgEpgHeader) { - back = imgCache.GetOsdElement(oeEpgHeader); } else if (type == bgButton) { drawBackgroundButton(active); return; diff --git a/styledpixmap.h b/styledpixmap.h index dbcc293..82af25c 100644 --- a/styledpixmap.h +++ b/styledpixmap.h @@ -13,7 +13,6 @@ enum eBackgroundType { bgChannelHeader, bgChannelGroup, bgClock, - bgEpgHeader, bgButton, bgRecMenuBack, bgChannelJump, diff --git a/tvguideosd.c b/tvguideosd.c index f1ab5b0..77d2477 100644 --- a/tvguideosd.c +++ b/tvguideosd.c @@ -101,8 +101,8 @@ void cTvGuideOsd::drawOsd() { timeLine->drawClock(); channelGroups = new cChannelGroups(); channelGroups->ReadChannelGroups(); - //channelGroups->DumpGroups(); footer = new cFooter(channelGroups); + recMenuManager->SetFooter(footer); footer->drawRedButton(); if (tvguideConfig.channelJumpMode == eNumJump) { footer->drawGreenButton(); @@ -538,7 +538,9 @@ eOSState cTvGuideOsd::ChannelSwitch() { void cTvGuideOsd::DetailedEPG() { if (!activeGrid->isDummy()) { detailViewActive = true; - detailView = new cDetailView(activeGrid->GetEvent()); + detailView = new cDetailView(activeGrid->GetEvent(), footer); + footer->SetDetailedViewMode(); + osdManager.flush(); detailView->setContent(); detailView->drawHeader(); detailView->drawContent();