diff --git a/data/locale/deutsch.locale b/data/locale/deutsch.locale index 4173a2956..f909059aa 100644 --- a/data/locale/deutsch.locale +++ b/data/locale/deutsch.locale @@ -1432,6 +1432,8 @@ miscsettings.infobar_disp_4 Logo+Kanalname/Kanalnummer miscsettings.infobar_disp_5 Logo/Signalbalken miscsettings.infobar_disp_6 Logo+Kanalnummer/Signalbalken miscsettings.infobar_disp_log Logo +miscsettings.infobar_gradient_bottom Farbverlauf unten +miscsettings.infobar_gradient_top Farbverlauf oben miscsettings.infobar_logo_hdd_dir Logo-Verz. miscsettings.infobar_sat_display Kabel-/Satellitenanbieter miscsettings.infobar_show Info bei EPG Änderungen diff --git a/data/locale/english.locale b/data/locale/english.locale index 43c7a2c7e..40800bf9d 100644 --- a/data/locale/english.locale +++ b/data/locale/english.locale @@ -1432,6 +1432,8 @@ miscsettings.infobar_disp_4 Logo+channel name/number miscsettings.infobar_disp_5 Logo+signal miscsettings.infobar_disp_6 Logo+channel number+signal miscsettings.infobar_disp_log Logo +miscsettings.infobar_gradient_bottom Gradient bottom +miscsettings.infobar_gradient_top Gradient top miscsettings.infobar_logo_hdd_dir Logo dir miscsettings.infobar_sat_display Satellite display on infobar miscsettings.infobar_show show Info on EPG change diff --git a/src/gui/infoviewer.cpp b/src/gui/infoviewer.cpp index 1d1afb53e..df3d87be8 100644 --- a/src/gui/infoviewer.cpp +++ b/src/gui/infoviewer.cpp @@ -246,9 +246,24 @@ void CInfoViewer::changePB() void CInfoViewer::initClock() { + + static int gradient_top = g_settings.theme.infobar_gradient_top; + + if (gradient_top != g_settings.theme.infobar_gradient_top && clock != NULL) { + gradient_top = g_settings.theme.infobar_gradient_top; + clock->clearSavedScreen(); + delete clock; + clock = NULL; + } + if (clock == NULL){ clock = new CComponentsFrmClock(); - clock->doPaintBg(true); + clock->setClockBlink("%H.%M"); + clock->setClockIntervall(1); + clock->doPaintBg(!gradient_top); + clock->enableTboxSaveScreen(gradient_top); + if (time_width) + clock->setWidth(time_width); } clock->setColorBody(COL_INFOBAR_PLUS_0); @@ -385,10 +400,12 @@ void CInfoViewer::paintBackground(int col_NumBox) BoxEndX - c_shadow_width, BoxEndInfoY + SHADOW_OFFSET, COL_INFOBAR_SHADOW_PLUS_0, c_rad_large, CORNER_BOTTOM_LEFT); - // background for channel name, epg data - frameBuffer->paintBox(ChanInfoX, ChanNameY, BoxEndX, BoxEndY, - COL_INFOBAR_PLUS_0, c_rad_large, - CORNER_TOP_RIGHT | (showButtonBar ? 0 : CORNER_BOTTOM)); + // background for channel name/logo and clock + paintHead(); + + // background for epg data + frameBuffer->paintBox(ChanInfoX, ChanNameY + time_height, BoxEndX, BoxEndY, + COL_INFOBAR_PLUS_0, c_rad_large, (showButtonBar ? CORNER_NONE : CORNER_BOTTOM)); // number box frameBuffer->paintBoxRel(BoxStartX + SHADOW_OFFSET, BoxStartY + SHADOW_OFFSET, @@ -399,6 +416,19 @@ void CInfoViewer::paintBackground(int col_NumBox) col_NumBox, c_rad_mid); } +void CInfoViewer::paintHead() +{ + CComponentsShapeSquare header(ChanInfoX, ChanNameY, BoxEndX-ChanInfoX, time_height); + + header.setColorBody(g_settings.theme.infobar_gradient_top ? COL_MENUHEAD_PLUS_0 : COL_INFOBAR_PLUS_0); + header.enableColBodyGradient(g_settings.theme.infobar_gradient_top); + header.set2ndColor(COL_INFOBAR_PLUS_0); + header.setCorner(RADIUS_LARGE, CORNER_TOP_RIGHT); + clock->setColorBody(header.getColorBody()); + + header.paint(CC_SAVE_SCREEN_NO); +} + void CInfoViewer::show_current_next(bool new_chan, int epgpos) { CEitManager::getInstance()->getCurrentNextServiceKey(channel_id, info_CurrentNext); @@ -481,7 +511,6 @@ void CInfoViewer::showMovieTitle(const int playState, const t_channel_id &Channe last_curr_id = last_next_id = 0; showButtonBar = true; - fileplay = true; reset_allScala(); if (!gotTime) diff --git a/src/gui/infoviewer.h b/src/gui/infoviewer.h index b4683ff79..e53dc6aa8 100644 --- a/src/gui/infoviewer.h +++ b/src/gui/infoviewer.h @@ -62,8 +62,6 @@ class CInfoViewer int InfoHeightY; bool fileplay; - int BoxStartX; - int BoxStartY; int ButtonWidth; // dimensions of radiotext window @@ -108,6 +106,7 @@ class CInfoViewer uint32_t lcdUpdateTimer; void paintBackground(int col_Numbox); + void paintHead(); void show_Data( bool calledFromEvent = false ); void display_Info(const char *current, const char *next, bool UTF8 = true, bool starttimes = true, const int pb_pos = -1, @@ -145,6 +144,8 @@ class CInfoViewer char aspectRatio; uint32_t sec_timer_id; + int BoxStartX; + int BoxStartY; int BoxEndX; int BoxEndY; int ChanInfoX; diff --git a/src/gui/infoviewer_bb.cpp b/src/gui/infoviewer_bb.cpp index ef4bee3f2..290b81377 100644 --- a/src/gui/infoviewer_bb.cpp +++ b/src/gui/infoviewer_bb.cpp @@ -88,8 +88,6 @@ CInfoViewerBB::CInfoViewerBB() bbIconInfo[0].h = 0; BBarY = 0; BBarFontY = 0; - hddscale = NULL; - sysscale = NULL; Init(); } @@ -374,8 +372,8 @@ void CInfoViewerBB::showBBButtons(const int modus) } if (paint) { + paintFoot(minX - g_InfoViewer->ChanInfoX); int last_x = minX; - frameBuffer->paintBoxRel(g_InfoViewer->ChanInfoX, BBarY, minX - g_InfoViewer->ChanInfoX, InfoHeightY_Info, COL_INFOBAR_BUTTONS_BACKGROUND, RADIUS_LARGE, CORNER_BOTTOM); //round for (i = BUTTON_MAX; i > 0;) { --i; if ((bbButtonInfo[i].x <= g_InfoViewer->ChanInfoX) || (bbButtonInfo[i].x >= g_InfoViewer->BoxEndX) || (!bbButtonInfo[i].paint)) @@ -415,7 +413,7 @@ void CInfoViewerBB::showBBIcons(const int modus, const std::string & icon) return; if ((modus >= CInfoViewerBB::ICON_SUBT) && (modus < CInfoViewerBB::ICON_MAX) && (bbIconInfo[modus].x != -1) && (is_visible)) { frameBuffer->paintIcon(icon, bbIconInfo[modus].x, BBarY, - InfoHeightY_Info, 1, true, true, COL_INFOBAR_BUTTONS_BACKGROUND); + InfoHeightY_Info, 1, true, !g_settings.theme.infobar_gradient_bottom, COL_INFOBAR_BUTTONS_BACKGROUND); } } @@ -432,7 +430,7 @@ void CInfoViewerBB::paintshowButtonBar() if (g_settings.casystem_display < 2) paintCA_bar(0,0); - frameBuffer->paintBoxRel(g_InfoViewer->ChanInfoX, BBarY, g_InfoViewer->BoxEndX - g_InfoViewer->ChanInfoX, InfoHeightY_Info, COL_INFOBAR_BUTTONS_BACKGROUND, RADIUS_LARGE, CORNER_BOTTOM); //round + paintFoot(); g_InfoViewer->showSNR(); @@ -453,6 +451,21 @@ void CInfoViewerBB::paintshowButtonBar() showSysfsHdd(); } +void CInfoViewerBB::paintFoot(int w) +{ + int width = (w == 0) ? g_InfoViewer->BoxEndX - g_InfoViewer->ChanInfoX : w; + + CComponentsShapeSquare foot(g_InfoViewer->ChanInfoX, BBarY, width, InfoHeightY_Info); + + foot.setColorBody(COL_INFOBAR_BUTTONS_BACKGROUND); + foot.enableColBodyGradient(g_settings.theme.infobar_gradient_bottom); + foot.setColBodyGradient(CColorGradient::gradientDark2Light, CFrameBuffer::gradientVertical); + foot.setCorner(RADIUS_LARGE, CORNER_BOTTOM); + foot.set2ndColor(COL_INFOBAR_PLUS_0); + + foot.paint(CC_SAVE_SCREEN_NO); +} + void CInfoViewerBB::showIcon_SubT() { if (!is_visible) diff --git a/src/gui/infoviewer_bb.h b/src/gui/infoviewer_bb.h index 8dd800134..513775256 100644 --- a/src/gui/infoviewer_bb.h +++ b/src/gui/infoviewer_bb.h @@ -109,6 +109,7 @@ class CInfoViewerBB CProgressBar *hddscale, *sysscale; + void paintFoot(int w = 0); void showBBIcons(const int modus, const std::string & icon); void getBBIconInfo(void); bool checkBBIcon(const char * const icon, int *w, int *h); diff --git a/src/gui/osd_setup.cpp b/src/gui/osd_setup.cpp index b5de2ee23..3f3a4ecd6 100644 --- a/src/gui/osd_setup.cpp +++ b/src/gui/osd_setup.cpp @@ -723,6 +723,7 @@ void COsdSetup::showOsdMenueColorSetup(CMenuWidget *menu_colors) oj->setHint("", LOCALE_MENU_HINT_COLOR_GRADIENT); menu_colors->addItem(oj); + // infoviewer color CColorChooser* chInfobarcolor = new CColorChooser(LOCALE_COLORMENU_BACKGROUND, &t.infobar_red, &t.infobar_green, &t.infobar_blue, &t.infobar_alpha, colorSetupNotifier); CColorChooser* chInfobarTextcolor = new CColorChooser(LOCALE_COLORMENU_TEXTCOLOR, &t.infobar_Text_red, @@ -737,6 +738,17 @@ void COsdSetup::showOsdMenueColorSetup(CMenuWidget *menu_colors) mf->setHint("", LOCALE_MENU_HINT_INFOBAR_TEXTCOLOR); menu_colors->addItem(mf); + // infoviewer gradient top + oj = new CMenuOptionChooser(LOCALE_MISCSETTINGS_INFOBAR_GRADIENT_TOP, &t.infobar_gradient_top, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true); + oj->setHint("", LOCALE_MENU_HINT_COLOR_GRADIENT); + menu_colors->addItem(oj); + + // infoviewer gradient bottom + oj = new CMenuOptionChooser(LOCALE_MISCSETTINGS_INFOBAR_GRADIENT_BOTTOM, &t.infobar_gradient_bottom, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true); + oj->setHint("", LOCALE_MENU_HINT_COLOR_GRADIENT); + menu_colors->addItem(oj); + + // colored events CColorChooser* chColored_Events = new CColorChooser(LOCALE_COLORMENU_TEXTCOLOR, &t.colored_events_red, &t.colored_events_green, &t.colored_events_blue, NULL, colorSetupNotifier); diff --git a/src/gui/themes.cpp b/src/gui/themes.cpp index 269b248ea..e4b69a4b5 100644 --- a/src/gui/themes.cpp +++ b/src/gui/themes.cpp @@ -275,6 +275,8 @@ void CThemes::setTheme(CConfigFile &configfile) configfile.setInt32( "infobar_red", t.infobar_red ); configfile.setInt32( "infobar_green", t.infobar_green ); configfile.setInt32( "infobar_blue", t.infobar_blue ); + configfile.setInt32( "infobar_gradient_top", t.infobar_gradient_top ); + configfile.setInt32( "infobar_gradient_bottom", t.infobar_gradient_bottom ); configfile.setInt32( "infobar_Text_alpha", t.infobar_Text_alpha ); configfile.setInt32( "infobar_Text_red", t.infobar_Text_red ); configfile.setInt32( "infobar_Text_green", t.infobar_Text_green ); @@ -330,6 +332,8 @@ void CThemes::getTheme(CConfigFile &configfile) t.infobar_red = configfile.getInt32( "infobar_red", 0x00 ); t.infobar_green = configfile.getInt32( "infobar_green", 0x0e ); t.infobar_blue = configfile.getInt32( "infobar_blue", 0x23 ); + t.infobar_gradient_top = configfile.getInt32( "infobar_gradient_top", 0 ); + t.infobar_gradient_bottom = configfile.getInt32( "infobar_gradient_bottom", 0 ); t.infobar_Text_alpha = configfile.getInt32( "infobar_Text_alpha", 0x00 ); t.infobar_Text_red = configfile.getInt32( "infobar_Text_red", 0x64 ); t.infobar_Text_green = configfile.getInt32( "infobar_Text_green", 0x64 ); diff --git a/src/system/locals.h b/src/system/locals.h index 0d5177d46..e7e05560e 100644 --- a/src/system/locals.h +++ b/src/system/locals.h @@ -1459,6 +1459,8 @@ typedef enum LOCALE_MISCSETTINGS_INFOBAR_DISP_5, LOCALE_MISCSETTINGS_INFOBAR_DISP_6, LOCALE_MISCSETTINGS_INFOBAR_DISP_LOG, + LOCALE_MISCSETTINGS_INFOBAR_GRADIENT_BOTTOM, + LOCALE_MISCSETTINGS_INFOBAR_GRADIENT_TOP, LOCALE_MISCSETTINGS_INFOBAR_LOGO_HDD_DIR, LOCALE_MISCSETTINGS_INFOBAR_SAT_DISPLAY, LOCALE_MISCSETTINGS_INFOBAR_SHOW, diff --git a/src/system/locals_intern.h b/src/system/locals_intern.h index a3ed6ffea..695c00ca9 100644 --- a/src/system/locals_intern.h +++ b/src/system/locals_intern.h @@ -1459,6 +1459,8 @@ const char * locale_real_names[] = "miscsettings.infobar_disp_5", "miscsettings.infobar_disp_6", "miscsettings.infobar_disp_log", + "miscsettings.infobar_gradient_bottom", + "miscsettings.infobar_gradient_top", "miscsettings.infobar_logo_hdd_dir", "miscsettings.infobar_sat_display", "miscsettings.infobar_show", diff --git a/src/system/settings.h b/src/system/settings.h index 37c27d6ca..82c13a731 100644 --- a/src/system/settings.h +++ b/src/system/settings.h @@ -104,6 +104,9 @@ struct SNeutrinoTheme unsigned char infobar_Text_green; unsigned char infobar_Text_blue; + int infobar_gradient_top; + int infobar_gradient_bottom; + unsigned char colored_events_alpha; unsigned char colored_events_red; unsigned char colored_events_green; @@ -370,6 +373,8 @@ struct SNeutrinoSettings int colored_events_channellist; int colored_events_infobar; int contrast_fonts; + int infobar_gradient_top; + int infobar_gradient_bottom; //network #define NETWORK_NFS_NR_OF_ENTRIES 8