diff -Nru vdr-plugin-skinflatplus-0.2.1/baserender.c vdr-plugin-skinflatplus-0.3.0/baserender.c --- vdr-plugin-skinflatplus-0.2.1/baserender.c 2014-03-25 19:21:56.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/baserender.c 2014-05-11 11:16:37.000000000 +0000 @@ -2,6 +2,7 @@ #include "flat.h" #include #include "services/epgsearch.h" +#include "services/tvscraper.h" cFlatBaseRender::cFlatBaseRender(void) { font = cFont::CreateFont(Setup.FontOsd, Setup.FontOsdSize ); @@ -11,10 +12,10 @@ fontHeight = font->Height(); fontSmlHeight = fontSml->Height(); fontFixedHeight = fontFixed->Height(); - + topBarTitle = ""; - tobBarTitleExtra1 = ""; - tobBarTitleExtra2 = ""; + tobBarTitleExtra1 = ""; + tobBarTitleExtra2 = ""; topBarLastDate = ""; topBarUpdateTitle = false; topBarHeight = 0; @@ -26,19 +27,20 @@ marginItem = 5; scrollBarWidth = 10; - + buttonsHeight = 0; buttonsDrawn = false; - + osd = NULL; topBarPixmap = NULL; buttonsPixmap = NULL; messagePixmap = NULL; contentPixmap = NULL; + contentEpgImagePixmap = NULL; progressBarPixmap = NULL; progressBarPixmapBg = NULL; decorPixmap = NULL; - + Config.ThemeCheckAndInit(); Config.DecorCheckAndInit(); } @@ -48,8 +50,7 @@ delete fontSml; delete fontFixed; - if( osd ) - { + if( osd ) { if( topBarPixmap ) osd->DestroyPixmap(topBarPixmap); if( buttonsPixmap ) @@ -68,7 +69,9 @@ osd->DestroyPixmap(topBarIconPixmap); if( topBarIconBGPixmap ) osd->DestroyPixmap(topBarIconBGPixmap); - + if( contentEpgImagePixmap ) + osd->DestroyPixmap(contentEpgImagePixmap); + delete osd; } } @@ -86,7 +89,7 @@ osd = cOsdProvider::NewOsd(left, top); if (osd) { tArea Area = { 0, 0, width, height, 32 }; - if (osd->SetAreas(&Area, 1) == oeOk) { + if (osd->SetAreas(&Area, 1) == oeOk) { //dsyslog("skinflatplus: create osd SUCCESS left: %d top: %d width: %d height: %d", left, top, width, height); return; } @@ -113,6 +116,9 @@ topBarPixmap->Fill(clrTransparent); topBarIconBGPixmap->Fill(clrTransparent); topBarIconPixmap->Fill(clrTransparent); + + if( Config.DiskUsageShow == 3) + TopBarEnableDiskUsage(); } void cFlatBaseRender::TopBarSetTitle(cString title) { @@ -126,6 +132,8 @@ topBarMenuIconSet = false; topBarMenuLogo = ""; topBarMenuLogoSet = false; + if( Config.DiskUsageShow == 3) + TopBarEnableDiskUsage(); } void cFlatBaseRender::TopBarSetTitleExtra(cString extra1, cString extra2) { @@ -158,47 +166,73 @@ topBarUpdateTitle = true; } +void cFlatBaseRender::TopBarEnableDiskUsage(void) { + cVideoDiskUsage::HasChanged(VideoDiskUsageState); + int DiskUsage = cVideoDiskUsage::UsedPercent(); + double FreeGB = cVideoDiskUsage::FreeMB() / 1024.0; + int FreeMinutes = cVideoDiskUsage::FreeMinutes(); + cString extra1 = cString::sprintf("%s: %d%%", tr("disk usage"), DiskUsage); + cString extra2 = cString::sprintf("%s: %.1f GB ~ %02d:%02d", tr("free"), FreeGB, FreeMinutes / 60, FreeMinutes % 60); + + cString iconName("chart1"); + if( DiskUsage > 14 ) + iconName = "chart2"; + if( DiskUsage > 28 ) + iconName = "chart3"; + if( DiskUsage > 42 ) + iconName = "chart4"; + if( DiskUsage > 56 ) + iconName = "chart5"; + if( DiskUsage > 70 ) + iconName = "chart6"; + if( DiskUsage > 84 ) + iconName = "chart7"; + + TopBarSetTitleExtra(extra1, extra2); + TopBarSetExtraIcon(iconName); +} // sollte bei jedum "Flush" aufgerufen werden! void cFlatBaseRender::TopBarUpdate(void) { cString curDate = DayDateTime(); int TopBarWidth = osdWidth - Config.decorBorderTopBarSize*2; int MenuIconWidth = 0; - + if ( strcmp(curDate, topBarLastDate) || topBarUpdateTitle ) { topBarUpdateTitle = false; topBarLastDate = curDate; int TitleWidthLeft = TopBarWidth; - + int fontTop = (topBarHeight - topBarFontHeight) / 2; int fontSmlTop = (topBarHeight - topBarFontSmlHeight*2) / 2; int RecLeft = TopBarWidth / 2; - - topBarPixmap->Fill(Theme.Color(clrTopBarBg)); - int extra1Width = topBarFontSml->Width(tobBarTitleExtra1); - int extra2Width = topBarFontSml->Width(tobBarTitleExtra2); - int extraMaxWidth = max(extra1Width, extra2Width); - - int extraLeft = TopBarWidth/2 - extraMaxWidth/2; - topBarPixmap->DrawText(cPoint(extraLeft, fontSmlTop), tobBarTitleExtra1, Theme.Color(clrTopBarDateFont), Theme.Color(clrTopBarBg), topBarFontSml, extraMaxWidth, 0, taRight); - topBarPixmap->DrawText(cPoint(extraLeft, fontSmlTop + topBarFontSmlHeight), tobBarTitleExtra2, Theme.Color(clrTopBarDateFont), Theme.Color(clrTopBarBg), topBarFontSml, extraMaxWidth, 0, taRight); - - RecLeft = extraLeft + extraMaxWidth + marginItem; - + topBarPixmap->Fill(Theme.Color(clrTopBarBg)); topBarIconPixmap->Fill(clrTransparent); topBarIconBGPixmap->Fill(clrTransparent); - if( topBarExtraIconSet ) { - int extraIconLeft = extraLeft + extraMaxWidth + marginItem; - cImage *img = imgLoader.LoadIcon(*topBarExtraIcon, 999, topBarHeight); - if( img ) { - int iconTop = 0; - topBarIconPixmap->DrawImage(cPoint(extraIconLeft, iconTop), *img); - - RecLeft += topBarHeight + marginItem; - } - } + + int TitleWidth = topBarFont->Width(topBarTitle); + time_t t; + time(&t); + + cString time = TimeString(t); + cString time2 = cString::sprintf("%s %s", *time, tr("clock")); + + int timeWidth = topBarFont->Width(*time2) + marginItem*2; + topBarPixmap->DrawText(cPoint(TopBarWidth - timeWidth, fontTop), time2, Theme.Color(clrTopBarTimeFont), Theme.Color(clrTopBarBg), topBarFont); + + TitleWidthLeft -= timeWidth; + + cString weekday = WeekDayNameFull(t); + int weekdayWidth = topBarFontSml->Width(*weekday); + + cString date = ShortDateString(t); + int dateWidth = topBarFontSml->Width(*date); + + int fullWidth = max(weekdayWidth, dateWidth); + TitleWidthLeft -= fullWidth; + int DateRight = TopBarWidth - timeWidth - fullWidth - marginItem*2; if( topBarMenuIconSet && Config.TopBarMenuIconShow ) { int IconLeft = marginItem; @@ -210,55 +244,60 @@ TitleWidthLeft -= MenuIconWidth + marginItem*3; } } - + if( topBarMenuLogoSet && Config.TopBarMenuIconShow ) { topBarIconPixmap->Fill(clrTransparent); int IconLeft = marginItem; - int imageBGWidth = 999; int imageBGHeight = topBarHeight - marginItem*2; + int imageBGWidth = imageBGHeight*1.34; int iconTop = 0; cImage *imgBG = imgLoader.LoadIcon("logo_background", imageBGWidth, imageBGHeight); if( imgBG ) { - iconTop = (topBarHeight / 2 - imgBG->Height()/2); imageBGHeight = imgBG->Height(); imageBGWidth = imgBG->Width(); + iconTop = (topBarHeight / 2 - imgBG->Height()/2); topBarIconBGPixmap->DrawImage( cPoint(IconLeft, iconTop), *imgBG ); } - - cImage *img = imgLoader.LoadLogo(*topBarMenuLogo, imageBGWidth, imageBGHeight); + + cImage *img = imgLoader.LoadLogo(*topBarMenuLogo, imageBGWidth - 4, imageBGHeight - 4); if( img ) { iconTop += (imageBGHeight - img->Height())/2; + IconLeft += (imageBGWidth - img->Width())/2; topBarIconPixmap->DrawImage(cPoint(IconLeft, iconTop), *img); - MenuIconWidth = img->Width()+marginItem*2; - TitleWidthLeft -= MenuIconWidth + marginItem*3; } + MenuIconWidth = imageBGWidth+marginItem*2; + TitleWidthLeft -= MenuIconWidth + marginItem*3; } - - time_t t; - time(&t); - cString time = TimeString(t); - cString time2 = cString::sprintf("%s %s", *time, tr("clock")); + int extra1Width = topBarFontSml->Width(tobBarTitleExtra1); + int extra2Width = topBarFontSml->Width(tobBarTitleExtra2); + int extraMaxWidth = max(extra1Width, extra2Width); - int timeWidth = topBarFont->Width(*time2) + marginItem*2; - topBarPixmap->DrawText(cPoint(TopBarWidth - timeWidth, fontTop), time2, Theme.Color(clrTopBarTimeFont), Theme.Color(clrTopBarBg), topBarFont); - - TitleWidthLeft -= timeWidth; - - cString weekday = WeekDayNameFull(t); - int weekdayWidth = topBarFontSml->Width(*weekday); + int extraLeft = TopBarWidth/2 - extraMaxWidth/2; + extraLeft = max(MenuIconWidth + marginItem*4 + TitleWidth, extraLeft); - cString date = ShortDateString(t); - int dateWidth = topBarFontSml->Width(*date); + topBarPixmap->DrawText(cPoint(extraLeft, fontSmlTop), tobBarTitleExtra1, Theme.Color(clrTopBarDateFont), Theme.Color(clrTopBarBg), topBarFontSml, extraMaxWidth, 0, taRight); + topBarPixmap->DrawText(cPoint(extraLeft, fontSmlTop + topBarFontSmlHeight), tobBarTitleExtra2, Theme.Color(clrTopBarDateFont), Theme.Color(clrTopBarBg), topBarFontSml, extraMaxWidth, 0, taRight); - int fullWidth = max(weekdayWidth, dateWidth); - TitleWidthLeft -= fullWidth; + RecLeft = extraLeft + extraMaxWidth + marginItem; + + if( topBarExtraIconSet ) { + int extraIconLeft = extraLeft + extraMaxWidth + marginItem; + cImage *img = imgLoader.LoadIcon(*topBarExtraIcon, 999, topBarHeight); + if( img ) { + if( (extraIconLeft + img->Width() + marginItem) < DateRight ) { + int iconTop = 0; + topBarIconPixmap->DrawImage(cPoint(extraIconLeft, iconTop), *img); + + RecLeft += topBarHeight + marginItem; + } + } + } topBarPixmap->DrawText(cPoint(TopBarWidth - timeWidth - fullWidth - marginItem*2, fontSmlTop), weekday, Theme.Color(clrTopBarDateFont), Theme.Color(clrTopBarBg), topBarFontSml, fullWidth, 0, taRight); topBarPixmap->DrawText(cPoint(TopBarWidth - timeWidth - fullWidth - marginItem*2, fontSmlTop + topBarFontSmlHeight), date, Theme.Color(clrTopBarDateFont), Theme.Color(clrTopBarBg), topBarFontSml, fullWidth, 0, taRight); - int DateRight = TopBarWidth - timeWidth - fullWidth - marginItem*2; - + DecorBorderDraw(Config.decorBorderTopBarSize, Config.decorBorderTopBarSize, osdWidth - Config.decorBorderTopBarSize*2, topBarHeight, Config.decorBorderTopBarSize, Config.decorBorderTopBarType, Config.decorBorderTopBarFg, Config.decorBorderTopBarBg); int RecW = 0; @@ -302,7 +341,7 @@ imgCon = imgLoader.LoadIcon("topbar_timerconflict_low", topBarFontHeight - marginItem*2, topBarFontHeight - marginItem*2); else imgCon = imgLoader.LoadIcon("topbar_timerconflict_high", topBarFontHeight - marginItem*2, topBarFontHeight - marginItem*2); - + if( imgCon ) ConW = imgCon->Width(); if( numConflicts ) { @@ -311,7 +350,6 @@ TitleWidthLeft -= ConW + marginItem*2; } - int TitleWidth = topBarFont->Width(topBarTitle); if( TitleWidth > TitleWidthLeft ) { int dotsWidth = topBarFont->Width("... "); cTextWrapper TitleWrapper(topBarTitle, topBarFont, TitleWidthLeft - dotsWidth); @@ -319,7 +357,7 @@ topBarTitle = cString::sprintf("%s...", *topBarTitle); TitleWidth = topBarFont->Width(topBarTitle); } - + topBarPixmap->DrawText(cPoint(MenuIconWidth + marginItem*2, fontTop), topBarTitle, Theme.Color(clrTopBarFont), Theme.Color(clrTopBarBg), topBarFont); if( TitleWidth > RecLeft ) @@ -342,14 +380,14 @@ topBarIconPixmap->DrawImage( cPoint(RecLeft, iconTop), *imgCon ); ConW = imgCon->Width(); } - + cString ConNum = cString::sprintf("%d", numConflicts); if( numConflicts < Config.TopBarRecConflictsHigh ) topBarPixmap->DrawText(cPoint(ConLeft + ConW + marginItem, fontSmlTop), ConNum, Theme.Color(clrTopBarConflictLowFg), Theme.Color(clrTopBarConflictLowBg), topBarFontSml); else topBarPixmap->DrawText(cPoint(ConLeft + ConW + marginItem, fontSmlTop), ConNum, Theme.Color(clrTopBarConflictHighFg), Theme.Color(clrTopBarConflictHighBg), topBarFontSml); } - + } } @@ -371,9 +409,9 @@ buttonsPixmap->Fill(clrTransparent); DecorBorderClearByFrom(BorderButton); - + buttonsDrawn = false; - + int x = 0; if( !(!Config.ButtonsShowEmpty && !Red) ) { buttonsPixmap->DrawText(cPoint(x, 0), Red, Theme.Color(clrButtonFont), Theme.Color(clrButtonBg), font, buttonWidth, fontHeight + marginButtonColor, taCenter); @@ -391,7 +429,7 @@ Config.decorBorderButtonFg, Config.decorBorderButtonBg, BorderButton); buttonsDrawn = true; } - + x += buttonWidth + marginItem + Config.decorBorderButtonSize*2; if( !(!Config.ButtonsShowEmpty && !Yellow) ) { buttonsPixmap->DrawText(cPoint(x, 0), Yellow, Theme.Color(clrButtonFont), Theme.Color(clrButtonBg), font, buttonWidth, fontHeight + marginButtonColor, taCenter); @@ -400,7 +438,7 @@ Config.decorBorderButtonFg, Config.decorBorderButtonBg, BorderButton); buttonsDrawn = true; } - + x += buttonWidth + marginItem + Config.decorBorderButtonSize*2; if( x + buttonWidth + Config.decorBorderButtonSize*2 < buttonsWidth ) buttonWidth += buttonsWidth - (x + buttonWidth + Config.decorBorderButtonSize*2); @@ -427,7 +465,7 @@ void cFlatBaseRender::MessageSet(eMessageType Type, const char *Text) { tColor col = Theme.Color(clrMessageStatus); switch (Type) { - case mtStatus: + case mtStatus: col = Theme.Color(clrMessageStatus); break; case mtInfo: @@ -470,7 +508,7 @@ messagePixmap->DrawText(cPoint((osdWidth - textWidth) / 2, marginItem), Text, Theme.Color(clrMessageFont), Theme.Color(clrMessageBg), font); } else messagePixmap->DrawText(cPoint((osdWidth - textWidth) / 2, marginItem), Text, Theme.Color(clrMessageFont), Theme.Color(clrMessageBg), font); - + int top = osdHeight - Config.MessageOffset - messageHeight - Config.decorBorderMessageSize; DecorBorderDraw(Config.decorBorderMessageSize, top, osdWidth - Config.decorBorderMessageSize*2, messageHeight, Config.decorBorderMessageSize, Config.decorBorderMessageType, Config.decorBorderMessageFg, Config.decorBorderMessageBg, BorderMessage); @@ -482,221 +520,6 @@ DecorBorderRedrawAll(); } -void cFlatBaseRender::ContentCreate(int Left, int Top, int Width, int Height, int FontType) { - contentHasScrollbar = false; - contentShown = false; - contentFontType = FontType; - - contentLeft = Left; - contentTop = Top; - contentWidth = Width; - contentHeight = Height; - int lines = ContentVisibleLines(); - - if( contentFontType == 0 ) - contentHeight = lines * fontHeight; - else if( contentFontType == 1 ) - contentHeight = lines * fontFixedHeight; - else if( contentFontType == 2 ) - contentHeight = lines * fontSmlHeight; - -} - -void cFlatBaseRender::ContentSet(const char *Text, tColor ColorFg, tColor ColorBg) { - if( contentFontType == 0 ) - contentWrapper.Set(Text, font, contentWidth - marginItem*2); - else if( contentFontType == 1 ) - contentWrapper.Set(Text, fontFixed, contentWidth - marginItem*2); - else if( contentFontType == 2 ) - contentWrapper.Set(Text, fontSml, contentWidth - marginItem*2); - - contentColorFg = ColorFg; - contentColorBg = ColorBg; - - int contentWrapperHeight = 0; - if( contentFontType == 0 ) { - contentWrapperHeight = (contentWrapper.Lines()+1) * fontHeight; - contentTextHeight = (contentWrapper.Lines()) * fontHeight + marginItem; - } else if( contentFontType == 1 ) { - contentWrapperHeight = (contentWrapper.Lines()+1) * fontFixedHeight; - contentTextHeight = (contentWrapper.Lines()) * fontFixedHeight + marginItem; - } else if( contentFontType == 2 ) { - contentWrapperHeight = (contentWrapper.Lines()+1) * fontSmlHeight; - contentTextHeight = (contentWrapper.Lines()) * fontSmlHeight + marginItem; - } - - if( contentWrapperHeight > contentHeight ) { - contentDrawPortHeight = contentWrapperHeight; - contentHasScrollbar = true; - } else { - contentDrawPortHeight = contentHeight; - contentHasScrollbar = false; - } - - if( contentPixmap ) - osd->DestroyPixmap(contentPixmap); - - contentPixmap = osd->CreatePixmap(2, cRect(contentLeft, contentTop, contentWidth, contentHeight), - cRect(0, 0, contentWidth, contentDrawPortHeight)); - - if( Config.MenuContentFullSize || contentHasScrollbar ) { - contentPixmap->Fill(contentColorBg); - } else { - contentPixmap->Fill(clrTransparent); - contentPixmap->DrawRectangle(cRect(0, 0, contentWidth, contentTextHeight), contentColorBg); - } - - contentDraw(); - contentShown = true; -} - -bool cFlatBaseRender::ContentWillItBeScrollable(int Width, int Height, const char *Text, int FontType) { - cTextWrapper wrapper; - if( FontType == 0 ) - wrapper.Set(Text, font, Width - marginItem*2); - else if( FontType == 1 ) - wrapper.Set(Text, fontFixed, Width - marginItem*2); - else if( FontType == 2 ) - wrapper.Set(Text, fontSml, Width - marginItem*2); - - int VisibleLines = 0; - if( FontType == 0 ) - VisibleLines = Height / fontHeight; - else if( FontType == 1 ) - VisibleLines = Height / fontFixedHeight; - else if( FontType == 2 ) - VisibleLines = Height / fontSmlHeight; - - if( wrapper.Lines() > 0 && wrapper.Lines() > VisibleLines ) - return true; - - return false; -} - -bool cFlatBaseRender::ContentScrollable(void) { - return contentHasScrollbar; -} - -int cFlatBaseRender::ContentGetHeight(void) { - return contentHeight; -} - -int cFlatBaseRender::ContentGetTextHeight(void) { - return contentTextHeight; -} - -double cFlatBaseRender::ScrollbarSize(void) { - return (double)contentHeight / (double)contentDrawPortHeight; -} - -int cFlatBaseRender::ContentScrollTotal(void) { - return contentWrapper.Lines(); -} - -int cFlatBaseRender::ContentScrollOffset(void) { - double offset; - int h = 0; - if( contentFontType == 0 ) - h = fontHeight; - else if( contentFontType == 1 ) - h = fontFixedHeight; - else if( contentFontType == 2 ) - h = fontSmlHeight; - - if ( ((-1)*contentPixmap->DrawPort().Point().Y() + contentHeight + h) > contentDrawPortHeight) { - offset = (double)1 - ScrollbarSize(); - //dsyslog("1 offset %f h %d return %d", offset, h, (int)(ContentScrollTotal() * offset)); - } else { - offset = (double)((-1)*contentPixmap->DrawPort().Point().Y()) / (double)((-1)*contentPixmap->DrawPort().Point().Y() + contentHeight); - //dsyslog("2 offset %f h %d return %d", offset, h, (int)(ContentScrollTotal() * offset)); - //dsyslog("contentHeight %d Y %d", contentHeight, contentPixmap->DrawPort().Point().Y()); - //dsyslog("contentDrawPortHeight %d Y %d", contentDrawPortHeight, contentPixmap->DrawPort().Point().Y()); - } - - return ContentScrollTotal() * offset; -} - -int cFlatBaseRender::ContentVisibleLines(void) { - if( contentFontType == 0 ) - return contentHeight / fontHeight; - else if( contentFontType == 1 ) - return contentHeight / fontFixedHeight; - else if( contentFontType == 2 ) - return contentHeight / fontSmlHeight; - return 0; -} - -bool cFlatBaseRender::ContentScroll(bool Up, bool Page) { - int aktHeight = contentPixmap->DrawPort().Point().Y(); - int totalHeight = contentPixmap->DrawPort().Height(); - int screenHeight = contentPixmap->ViewPort().Height(); - int lineHeight = 0; - - if( contentFontType == 0 ) - lineHeight = fontHeight; - else if( contentFontType == 1 ) - lineHeight = fontFixedHeight; - else if( contentFontType == 2 ) - lineHeight = fontSmlHeight; - - bool scrolled = false; - if( Up ) { - if( Page ) { - int newY = aktHeight + screenHeight; - if( newY > 0 ) - newY = 0; - contentPixmap->SetDrawPortPoint(cPoint(0, newY)); - scrolled = true; - } else { - if( aktHeight < 0 ) { - contentPixmap->SetDrawPortPoint(cPoint(0, aktHeight + lineHeight)); - scrolled = true; - } - } - } else { - if( Page ) { - int newY = aktHeight - screenHeight; - if( (-1)*newY > totalHeight - screenHeight ) - newY = (-1)*(totalHeight - screenHeight); - contentPixmap->SetDrawPortPoint(cPoint(0, newY)); - scrolled = true; - } else { - if( totalHeight - ((-1)*aktHeight + lineHeight) > screenHeight ) { - contentPixmap->SetDrawPortPoint(cPoint(0, aktHeight - lineHeight)); - scrolled = true; - } - } - } - return scrolled; -} - -bool cFlatBaseRender::ContentIsShown(void) { - return contentShown; -} - -void cFlatBaseRender::ContentClear(void) { - if( contentPixmap ) - contentPixmap->Fill(clrTransparent); - contentShown = false; -} - -void cFlatBaseRender::contentDraw(void) { - int linesText = contentWrapper.Lines(); - int currentHeight = 0; - for (int i=0; i < linesText; i++) { - if( contentFontType == 0 ) { - currentHeight = (i)*fontHeight; - contentPixmap->DrawText(cPoint(marginItem, currentHeight), contentWrapper.GetLine(i), contentColorFg, contentColorBg, font, contentWidth - marginItem*2); - } else if( contentFontType == 1 ) { - currentHeight = (i)*fontFixedHeight; - contentPixmap->DrawText(cPoint(marginItem, currentHeight), contentWrapper.GetLine(i), contentColorFg, contentColorBg, fontFixed, contentWidth - marginItem*2); - } else if( contentFontType == 2 ) { - currentHeight = (i)*fontSmlHeight; - contentPixmap->DrawText(cPoint(marginItem, currentHeight), contentWrapper.GetLine(i), contentColorFg, contentColorBg, fontSml, contentWidth - marginItem*2); - } - } -} - void cFlatBaseRender::ProgressBarCreate(int Left, int Top, int Width, int Height, int MarginHor, int MarginVer, tColor ColorFg, tColor ColorBarFg, tColor ColorBg, int Type, bool SetBackground, bool isSignal) { progressBarTop = Top; progressBarWidth = Width; @@ -704,16 +527,16 @@ ProgressType = Type; progressBarMarginHor = MarginHor; progressBarMarginVer = MarginVer; - + progressBarColorFg = ColorFg; progressBarColorBarFg = ColorBarFg; progressBarColorBg = ColorBg; - + progressBarSetBackground = SetBackground; progressBarIsSignal = isSignal; - + progressBarColorBarCurFg = Theme.Color(clrReplayProgressBarCurFg); - + progressBarPixmap = osd->CreatePixmap(3, cRect(Left, Top, Width, progressBarHeight)); progressBarPixmapBg = osd->CreatePixmap(2, cRect(Left - progressBarMarginVer, Top - progressBarMarginHor, Width + progressBarMarginVer*2, progressBarHeight + progressBarMarginHor*2)); progressBarPixmap->Fill(clrTransparent); @@ -732,19 +555,19 @@ void cFlatBaseRender::ProgressBarDrawRaw(cPixmap *Pixmap, cPixmap *PixmapBg, cRect rect, cRect rectBg, int Current, int Total, tColor ColorFg, tColor ColorBarFg, tColor ColorBg, int Type, bool SetBackground, bool isSignal) { int Middle = rect.Height()/2; - + double percentLeft = ((double)Current) / (double)Total; if( PixmapBg && SetBackground ) PixmapBg->DrawRectangle(cRect( rectBg.Left(), rectBg.Top(), rectBg.Width(), rectBg.Height()), ColorBg); - + if( SetBackground ) { if( PixmapBg == Pixmap ) Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top(), rect.Width(), rect.Height()), ColorBg); else Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top(), rect.Width(), rect.Height()), clrTransparent); } - + switch( Type ) { case 0: // small line + big line { @@ -760,7 +583,7 @@ break; } case 1: // big line - { + { int big = rect.Height(); if (Current > 0) @@ -768,7 +591,7 @@ break; } case 2: // big line + outline - { + { int big = rect.Height(); int out = 1; if( rect.Height() > 10 ) @@ -776,10 +599,10 @@ // outline Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top(), rect.Width(), out), ColorFg); Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top() + rect.Height() - out, rect.Width(), out), ColorFg); - + Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top(), out, rect.Height()), ColorFg); Pixmap->DrawRectangle(cRect( rect.Left() + rect.Width() - out, rect.Top(), out, rect.Height()), ColorFg); - + if (Current > 0) { if( isSignal ) { double perc = 100.0 / (double) Total * (double) Current / 100.0; @@ -792,7 +615,7 @@ Pixmap->DrawRectangle(cRect( rect.Left() + out, rect.Top() + Middle - (big/2) + out, (rect.Width() * 0.333) - out*2, big - out*2), Theme.Color(clrButtonRed)); } else Pixmap->DrawRectangle(cRect( rect.Left() + out, rect.Top() + Middle - (big/2) + out, (rect.Width() * percentLeft) - out*2, big - out*2), Theme.Color(clrButtonRed)); - + } else Pixmap->DrawRectangle(cRect( rect.Left() + out, rect.Top() + Middle - (big/2) + out, (rect.Width() * percentLeft) - out*2, big - out*2), ColorBarFg); } @@ -826,7 +649,7 @@ break; } case 5: // big line + outline + dot - { + { int big = rect.Height(); int out = 1; if( rect.Height() > 10 ) @@ -836,7 +659,7 @@ Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top() + rect.Height() - out, rect.Width(), out), ColorFg); Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top(), out, rect.Height()), ColorFg); Pixmap->DrawRectangle(cRect( rect.Left() + rect.Width() - out, rect.Top(), out, rect.Height()), ColorFg); - + if (Current > 0) { Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top() + Middle - (big/2), (rect.Width() * percentLeft), big), ColorBarFg); // dot @@ -860,7 +683,7 @@ break; } case 7: // outline + dot - { + { int big = rect.Height(); int out = 1; if( rect.Height() > 10 ) @@ -870,7 +693,7 @@ Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top() + rect.Height() - out, rect.Width(), out), ColorFg); Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top(), out, rect.Height()), ColorFg); Pixmap->DrawRectangle(cRect( rect.Left() + rect.Width() - out, rect.Top(), out, rect.Height()), ColorFg); - + if (Current > 0) { // dot Pixmap->DrawEllipse(cRect( rect.Left() + (rect.Width() * percentLeft) - (big/2), rect.Top() + Middle - (big/2), big, big), ColorBarFg, 0); @@ -909,18 +732,18 @@ progressBarColorMark = Color; progressBarColorMarkCurrent = ColorCurrent; int posMark = 0, posMarkLast = 0, posCurrent = 0; - + int top = progressBarHeight / 2; if( progressBarPixmapBg ) progressBarPixmapBg->DrawRectangle(cRect( 0, progressBarMarginHor + progressBarHeight, progressBarWidth, progressBarMarginHor), progressBarColorBg); - + progressBarPixmap->Fill( progressBarColorBg ); int sml = Config.decorProgressReplaySize / 10 * 2; if( sml <= 4 ) sml = 4; int big = Config.decorProgressReplaySize - sml*2 - 2; - + if( !Marks ) { progressBarColorFg = progressBarColorBarCurFg; progressBarColorBarFg = progressBarColorBarCurFg; @@ -940,7 +763,7 @@ progressBarPixmap->DrawRectangle(cRect( 0, top - sml/2, progressBarWidth, sml), progressBarColorFg); bool Start = true; - + for( const cMark *m = Marks->First(); m; m = Marks->Next(m) ) { posMark = ProgressBarMarkPos( m->Position(), Total ); posCurrent = ProgressBarMarkPos( Current, Total ); @@ -949,13 +772,13 @@ posMarkLast = posMark; Start = !Start; } - + // draw last marker vertical line if( posCurrent == posMark ) progressBarPixmap->DrawRectangle(cRect( posMark - sml, 0, sml*2, progressBarHeight), progressBarColorMarkCurrent); else progressBarPixmap->DrawRectangle(cRect( posMark - sml/2, 0, sml, progressBarHeight), progressBarColorMark); - + if( !Start ) { //progressBarPixmap->DrawRectangle(cRect( posMarkLast + sml/2, top - big/2, progressBarWidth - posMarkLast, big), progressBarColorBarFg); if( posCurrent > posMarkLast ) @@ -981,7 +804,7 @@ if( sml <= 4 ) sml = 4; int big = Config.decorProgressReplaySize - sml*2 - 2; - + int mbig = Config.decorProgressReplaySize*2; if( Config.decorProgressReplaySize > 15 ) mbig = Config.decorProgressReplaySize; @@ -1031,7 +854,7 @@ progressBarPixmap->DrawRectangle(cRect( posMarkLast - sml, 0, sml*2, progressBarHeight), progressBarColorMarkCurrent); else if( posMarkLast != 0 ) progressBarPixmap->DrawRectangle(cRect( posMarkLast - sml/2, 0, sml, progressBarHeight), progressBarColorMark); - + } void cFlatBaseRender::ScrollbarDraw(cPixmap *Pixmap, int Left, int Top, int Height, int Total, int Offset, int Shown, bool CanScrollUp, bool CanScrollDown) { @@ -1104,7 +927,7 @@ void cFlatBaseRender::DecorBorderDraw(int Left, int Top, int Width, int Height, int Size, int Type, tColor ColorFg, tColor ColorBg, int From, bool Store) { if( Size == 0 || Type <= 0 ) return; - + if( Store ) { sDecorBorder f; f.Left = Left; @@ -1116,10 +939,10 @@ f.ColorFg = ColorFg; f.ColorBg = ColorBg; f.From = From; - + Borders.push_back(f); } - + int LeftDecor = Left - Size; int TopDecor = Top - Size; int WidthDecor = Width + Size*2; @@ -1130,7 +953,7 @@ decorPixmap = osd->CreatePixmap(4, cRect(0, 0, cOsd::OsdWidth(), cOsd::OsdHeight())); decorPixmap->Fill(clrTransparent); } - + switch( Type ) { case 1: // rect // top @@ -1189,7 +1012,7 @@ DecorDrawGlowRectVer(decorPixmap, LeftDecor, TopDecor + Size, Size, HeightDecor - Size*2, ColorBg); // right DecorDrawGlowRectVer(decorPixmap, LeftDecor + Size + Width, TopDecor + Size, -1*Size, HeightDecor - Size*2, ColorBg); - + DecorDrawGlowRectTL(decorPixmap, LeftDecor, TopDecor, Size, Size, ColorBg); DecorDrawGlowRectTR(decorPixmap, LeftDecor + Size + Width, TopDecor, Size, Size, ColorBg); DecorDrawGlowRectBL(decorPixmap, LeftDecor, TopDecor + Size + Height, Size, Size, ColorBg); @@ -1204,7 +1027,7 @@ DecorDrawGlowRectVer(decorPixmap, LeftDecor, TopDecor + Size, Size, HeightDecor - Size*2, ColorBg); // right DecorDrawGlowRectVer(decorPixmap, LeftDecor + Size + Width, TopDecor + Size, -1*Size, HeightDecor - Size*2, ColorBg); - + DecorDrawGlowEllipseTL(decorPixmap, LeftDecor, TopDecor, Size, Size, ColorBg, 2); DecorDrawGlowEllipseTR(decorPixmap, LeftDecor + Size + Width, TopDecor, Size, Size, ColorBg, 1); DecorDrawGlowEllipseBL(decorPixmap, LeftDecor, TopDecor + Size + Height, Size, Size, ColorBg, 3); @@ -1219,7 +1042,7 @@ DecorDrawGlowRectVer(decorPixmap, LeftDecor, TopDecor + Size, Size, HeightDecor - Size*2, ColorBg); // right DecorDrawGlowRectVer(decorPixmap, LeftDecor + Size + Width, TopDecor + Size, -1*Size, HeightDecor - Size*2, ColorBg); - + DecorDrawGlowEllipseTL(decorPixmap, LeftDecor, TopDecor, Size, Size, ColorBg, -4); DecorDrawGlowEllipseTR(decorPixmap, LeftDecor + Size + Width, TopDecor, Size, Size, ColorBg, -3); DecorDrawGlowEllipseBL(decorPixmap, LeftDecor, TopDecor + Size + Height, Size, Size, ColorBg, -1); @@ -1245,7 +1068,7 @@ uint8_t R = (Color & 0x00FF0000) >> 16; uint8_t G = (Color & 0x0000FF00) >> 8; uint8_t B = (Color & 0x000000FF); - + A = A * am; return ArgbToColor(A, R, G, B); } @@ -1329,7 +1152,7 @@ void cFlatBaseRender::DecorDrawGlowEllipseTL(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg, int type) { double Alpha; - + for(int i = 0, j = Width; i < Width; i++, j--) { if( VDRVERSNUM < 20002 && j == 1 ) // in VDR Version < 2.0.2 osd breaks if width & height == 1 continue; @@ -1365,7 +1188,7 @@ void cFlatBaseRender::DecorDrawGlowEllipseBR(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg, int type) { double Alpha; - + for(int i = 0, j = Width; i < Width; i++, j--) { if( VDRVERSNUM < 20002 && j == 1 ) // in VDR Version < 2.0.2 osd breaks if width & height == 1 continue; diff -Nru vdr-plugin-skinflatplus-0.2.1/baserender.h vdr-plugin-skinflatplus-0.3.0/baserender.h --- vdr-plugin-skinflatplus-0.2.1/baserender.h 2014-03-25 19:21:56.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/baserender.h 2014-05-11 11:16:37.000000000 +0000 @@ -10,7 +10,9 @@ BorderMenuRecord, BorderMessage, BorderButton, - BorderContent + BorderContent, + BorderTVSPoster, + BorderSetRecording }; struct sDecorBorder { @@ -26,7 +28,7 @@ int osdLeft, osdTop, osdWidth, osdHeight; int marginItem; - + // Standard fonts cFont *font; cFont *fontSml; @@ -41,7 +43,7 @@ cPixmap *topBarIconBGPixmap; cFont *topBarFont, *topBarFontSml; int topBarFontHeight, topBarFontSmlHeight; - + cString topBarTitle; cString tobBarTitleExtra1, tobBarTitleExtra2; cString topBarExtraIcon; @@ -50,10 +52,11 @@ bool topBarMenuIconSet; cString topBarMenuLogo; bool topBarMenuLogoSet; - + bool topBarUpdateTitle; cString topBarLastDate; int topBarHeight; + int VideoDiskUsageState; // Progressbar cPixmap *progressBarPixmap; @@ -64,36 +67,43 @@ bool progressBarIsSignal; tColor progressBarColorFg, progressBarColorBarFg, progressBarColorBarCurFg, progressBarColorBg; tColor progressBarColorMark, progressBarColorMarkCurrent; - + // Scrollbar int scrollBarWidth; - + // Buttons rot, grün, gelb, blau cPixmap *buttonsPixmap; int buttonsWidth, buttonsHeight, buttonsTop; int marginButtonColor, buttonColorHeight; bool buttonsDrawn; - + // Nachricht cPixmap *messagePixmap; int messageWidth, messageHeight; // Mehrzeiliger Content mit Scrollbalken cPixmap *contentPixmap; + cPixmap *contentEpgImagePixmap; int contentLeft, contentTop, contentHeight, contentWidth; int contentDrawPortHeight; // gesamthöhe des Textes int contentTextHeight; bool contentHasScrollbar; bool contentShown; int contentFontType; - + int contentEventType; + int contentEventHeight; + int contentEventPosterWidth, contentEventPosterHeight; + tColor contentColorFg, contentColorBg; cTextWrapper contentWrapper; + cTextWrapper contentWrapperPoster; + const cEvent *contentEvent; cPixmap *decorPixmap; std::list Borders; // for clear specific Borders (clear only MenuItems and not TopBar) void contentDraw(void); + void contentEventDraw(void); double ScrollbarSize(void); void ProgressBarDrawMark(int posMark, int posMarkLast, int posCurrent, bool Start, bool isCurrent); @@ -101,17 +111,18 @@ void DecorDrawGlowRectHor(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg); void DecorDrawGlowRectVer(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg); - + void DecorDrawGlowRectTL(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg); void DecorDrawGlowRectTR(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg); void DecorDrawGlowRectBL(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg); void DecorDrawGlowRectBR(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg); - + void DecorDrawGlowEllipseTL(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg, int type); void DecorDrawGlowEllipseTR(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg, int type); void DecorDrawGlowEllipseBL(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg, int type); void DecorDrawGlowEllipseBR(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg, int type); + void TopBarEnableDiskUsage(void); //tColor Multiply(tColor Color, uint8_t Alpha); tColor SetAlpha(tColor Color, double am); public: @@ -134,7 +145,7 @@ void ButtonsCreate(void); void ButtonsSet(const char *Red, const char *Green = NULL, const char *Yellow = NULL, const char *Blue = NULL); bool ButtonsDrawn(void); - + void MessageCreate(void); void MessageSet(eMessageType Type, const char *Text); void MessageClear(void); @@ -147,26 +158,7 @@ void ScrollbarDraw(cPixmap *Pixmap, int Left, int Top, int Height, int Total, int Offset, int Shown, bool CanScrollUp, bool CanScrollDown); int ScrollBarWidth(void); - - /* int FontType - * 0 = NormalFont - * 1 = FixedFont - * 2 = SmallFont - */ - - void ContentCreate(int Left, int Top, int Width, int Height, int FontType); - void ContentSet(const char *Text, tColor ColorFg, tColor ColorBg); - bool ContentIsShown(void); - bool ContentScrollable(void); - bool ContentWillItBeScrollable(int Width, int Height, const char *Text, int FontType); - int ContentScrollTotal(void); - int ContentScrollOffset(void); - int ContentVisibleLines(void); - int ContentGetHeight(void); - int ContentGetTextHeight(void); - bool ContentScroll(bool Up, bool Page); - void ContentClear(void); - + void DecorBorderDraw(int Left, int Top, int Width, int Height, int Size, int Type, tColor ColorFg, tColor ColorBg, int From = 0, bool Store = true); void DecorBorderClear(int Left, int Top, int Width, int Height, int Size); void DecorBorderClearAll(void); diff -Nru vdr-plugin-skinflatplus-0.2.1/complexcontent.c vdr-plugin-skinflatplus-0.3.0/complexcontent.c --- vdr-plugin-skinflatplus-0.2.1/complexcontent.c 1970-01-01 00:00:00.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/complexcontent.c 2014-05-11 11:16:37.000000000 +0000 @@ -0,0 +1,297 @@ +#include "complexcontent.h" + +cComplexContent::cComplexContent() { + Osd = NULL; + Pixmap = NULL; + PixmapImage = NULL; + isShown = false; + isScrollingActive = true; +} + +cComplexContent::cComplexContent(cOsd *osd, int scrollSize) { + Osd = osd; + ScrollSize = scrollSize; + + Pixmap = NULL; + PixmapImage = NULL; + isShown = false; + isScrollingActive = true; +} + +cComplexContent::~cComplexContent() { +} + +void cComplexContent::Clear(void) { + isShown = false; + Contents.clear(); + if( Osd ) { + if( Pixmap != NULL ) { + Osd->DestroyPixmap(Pixmap); + Pixmap = NULL; + } + if( PixmapImage != NULL ) { + Osd->DestroyPixmap(PixmapImage); + PixmapImage = NULL; + } + } +} + +void cComplexContent::CreatePixmaps(bool fullFillBackground) { + CalculateDrawPortHeight(); + FullFillBackground = fullFillBackground; + + if( !Osd ) + return; + if( Pixmap != NULL ) { + Osd->DestroyPixmap(Pixmap); + Pixmap = NULL; + } + if( PixmapImage != NULL ) { + Osd->DestroyPixmap(PixmapImage); + PixmapImage = NULL; + } + + cRect PositionDraw; + PositionDraw.SetLeft(0); + PositionDraw.SetTop(0); + PositionDraw.SetWidth(Position.Width()); + if( FullFillBackground && DrawPortHeight < Position.Height() ) + PositionDraw.SetHeight(Position.Height()); + else + PositionDraw.SetHeight(DrawPortHeight); + + Pixmap = Osd->CreatePixmap(1, Position, PositionDraw); + PixmapImage = Osd->CreatePixmap(2, Position, PositionDraw); + + if( FullFillBackground ) { + Pixmap->Fill(ColorBg); + } else { + Pixmap->DrawRectangle(cRect(0, 0, Position.Width(), ContentHeight(false)), ColorBg); + } + + PixmapImage->Fill(clrTransparent); +} + +void cComplexContent::CalculateDrawPortHeight(void) { + DrawPortHeight = 0; + std::vector::iterator it; + for( it = Contents.begin(); it != Contents.end(); it++) { + if( (*it).GetBottom() > DrawPortHeight ) + DrawPortHeight = (*it).GetBottom(); + } + DrawPortHeight = ScrollTotal() * ScrollSize; +} + +int cComplexContent::BottomContent(void) { + int bottom = 0; + std::vector::iterator it; + for( it = Contents.begin(); it != Contents.end(); it++) { + if( (*it).GetBottom() > bottom ) + bottom = (*it).GetBottom(); + } + return bottom; +} + +int cComplexContent::ContentHeight( bool Full ) { + if( Full ) + return Height(); + if( DrawPortHeight > Height() ) + return Height(); + + return DrawPortHeight; +} + +bool cComplexContent::Scrollable(int height) { + CalculateDrawPortHeight(); + + int total, shown; + total = ScrollTotal(); + if( height == 0 ) + height = Position.Height(); + shown = ceil( (double)height / (double)ScrollSize); + if( total > shown ) + return true; + + return false; +} + +void cComplexContent::AddText(const char *text, bool multiline, cRect position, tColor colorFg, tColor colorBg, cFont *font, int textWidth, int textHeight, int textAlignment ) { + Contents.push_back( cSimpleContent() ); + Contents.back().SetText(text, multiline, position, colorFg, colorBg, font, textWidth, textHeight, textAlignment); +} + +void cComplexContent::AddImage(cImage *image, cRect position) { + Contents.push_back( cSimpleContent() ); + Contents.back().SetImage(image, position); +} + +void cComplexContent::AddImageWithFloatedText(cImage *image, int imageAlignment, const char *text, cRect textPos, tColor colorFg, tColor colorBg, cFont *font, int textWidth, int textHeight, int textAlignment) { + int TextWidthLeft = Position.Width() - image->Width() - 10 - textPos.Left(); + + cTextWrapper WrapperFloat; + WrapperFloat.Set(text, font, TextWidthLeft); + int FloatLines = ceil((double)image->Height() / (double)ScrollSize); + int Lines = WrapperFloat.Lines(); + + if( Lines < FloatLines ) { + cRect FloatedTextPos; + FloatedTextPos.SetLeft(textPos.Left()); + FloatedTextPos.SetTop(textPos.Top()); + FloatedTextPos.SetWidth( TextWidthLeft ); + FloatedTextPos.SetHeight(textPos.Height()); + + AddText(text, true, FloatedTextPos, colorFg, colorBg, font, textWidth, textHeight, textAlignment); + + cRect ImagePos; + ImagePos.SetLeft(textPos.Left() + TextWidthLeft + 5); + ImagePos.SetTop(textPos.Top()); + ImagePos.SetWidth( image->Width() ); + ImagePos.SetHeight( image->Height() ); + + AddImage(image, ImagePos); + } else { + int NumChars = 0; + for( int i = 0; i < Lines && i < FloatLines; i++) { + NumChars += strlen(WrapperFloat.GetLine(i)); + } + // detect end of last word + for(; text[NumChars] != ' ' && text[NumChars] != '\0' && text[NumChars] != '\r' && text[NumChars] != '\n'; NumChars++) + ; + char *FloatedText; + FloatedText = new char[NumChars+1]; + memset(FloatedText, '\0', NumChars+1); + strncpy(FloatedText, text, NumChars); + + NumChars++; + char *SecondText; + SecondText = new char[strlen(text) - NumChars + 2]; + memset(SecondText, '\0', strlen(text) - NumChars + 2); + strncpy(SecondText, text+NumChars, strlen(text) - NumChars); + + cRect FloatedTextPos; + FloatedTextPos.SetLeft(textPos.Left()); + FloatedTextPos.SetTop(textPos.Top()); + FloatedTextPos.SetWidth( TextWidthLeft ); + FloatedTextPos.SetHeight(textPos.Height()); + + cRect SecondTextPos; + SecondTextPos.SetLeft(textPos.Left()); + SecondTextPos.SetTop(textPos.Top() + FloatLines * ScrollSize ); + SecondTextPos.SetWidth( textPos.Width() ); + SecondTextPos.SetHeight( textPos.Height() ); + + AddText(FloatedText, true, FloatedTextPos, colorFg, colorBg, font, textWidth, textHeight, textAlignment); + AddText(SecondText, true, SecondTextPos, colorFg, colorBg, font, textWidth, textHeight, textAlignment); + + cRect ImagePos; + ImagePos.SetLeft(textPos.Left() + TextWidthLeft + 5); + ImagePos.SetTop(textPos.Top()); + ImagePos.SetWidth( image->Width() ); + ImagePos.SetHeight( image->Height() ); + + AddImage(image, ImagePos); + + delete[] FloatedText; + delete[] SecondText; + } +} + +void cComplexContent::AddRect(cRect position, tColor colorBg) { + Contents.push_back( cSimpleContent() ); + Contents.back().SetRect(position, colorBg); +} + +void cComplexContent::Draw() { + isShown = true; + std::vector::iterator it; + for( it = Contents.begin(); it != Contents.end(); it++) { + if( (*it).GetContentType() == CT_Image ) + (*it).Draw(PixmapImage); + else + (*it).Draw(Pixmap); + } +} + +double cComplexContent::ScrollbarSize(void) { + double barSize = (double)Position.Height() / (double)DrawPortHeight; + return barSize; +} + +int cComplexContent::ScrollTotal(void) { + int total = ceil( (double)DrawPortHeight / (double)ScrollSize); + return total; +} + +int cComplexContent::ScrollShown(void) { + //int shown = ceil( (double)Position.Height() / (double)ScrollSize); + int shown = Position.Height() / ScrollSize; + return shown; +} + +int cComplexContent::ScrollOffset(void) { + double offset; + + int y = Pixmap->DrawPort().Point().Y()*-1; + if( y + Position.Height() + ScrollSize > DrawPortHeight ) { + if( y == DrawPortHeight - Position.Height() ) { + y += ScrollSize; + } else { + y = DrawPortHeight - Position.Height() - 1; + } + } + offset = (double)y / (double)DrawPortHeight; + return ScrollTotal() * offset; +} + +bool cComplexContent::Scroll(bool Up, bool Page) { + int aktHeight = Pixmap->DrawPort().Point().Y(); + int totalHeight = Pixmap->DrawPort().Height(); + int screenHeight = Pixmap->ViewPort().Height(); + int lineHeight = ScrollSize; + + bool scrolled = false; + if (Up) { + if (Page) { + int newY = aktHeight + screenHeight; + if (newY > 0) + newY = 0; + Pixmap->SetDrawPortPoint(cPoint(0, newY)); + PixmapImage->SetDrawPortPoint(cPoint(0, newY)); + scrolled = true; + } else { + if (aktHeight < 0) { + if( aktHeight + lineHeight < 0 ) { + Pixmap->SetDrawPortPoint(cPoint(0, aktHeight + lineHeight)); + PixmapImage->SetDrawPortPoint(cPoint(0, aktHeight + lineHeight)); + } else { + Pixmap->SetDrawPortPoint(cPoint(0, 0)); + PixmapImage->SetDrawPortPoint(cPoint(0, 0)); + } + scrolled = true; + } + } + } else { + if (Page) { + int newY = aktHeight - screenHeight; + if ((-1)*newY > totalHeight - screenHeight) + newY = (-1)*(totalHeight - screenHeight); + Pixmap->SetDrawPortPoint(cPoint(0, newY)); + PixmapImage->SetDrawPortPoint(cPoint(0, newY)); + scrolled = true; + } else { + if (totalHeight - ((-1)*aktHeight + lineHeight) > screenHeight) { + Pixmap->SetDrawPortPoint(cPoint(0, aktHeight - lineHeight)); + PixmapImage->SetDrawPortPoint(cPoint(0, aktHeight - lineHeight)); + } else { + int newY = aktHeight - screenHeight; + if ((-1)*newY > totalHeight - screenHeight) + newY = (-1)*(totalHeight - screenHeight); + Pixmap->SetDrawPortPoint(cPoint(0, newY)); + PixmapImage->SetDrawPortPoint(cPoint(0, newY)); + } + scrolled = true; + } + } + + return scrolled; +} diff -Nru vdr-plugin-skinflatplus-0.2.1/complexcontent.h vdr-plugin-skinflatplus-0.3.0/complexcontent.h --- vdr-plugin-skinflatplus-0.2.1/complexcontent.h 1970-01-01 00:00:00.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/complexcontent.h 2014-05-11 11:16:37.000000000 +0000 @@ -0,0 +1,172 @@ +#pragma once + +#include "imageloader.h" +#include +#include "flat.h" +#include + +enum eContentType { + CT_Text, + CT_TextMultiline, + CT_Image, + CT_Rect +}; + +enum eContentImageAlignment { + CIP_Right +}; + +class cSimpleContent +{ +private: + int ContentType; + cRect Position; + + int TextWidth, TextHeight, TextAlignment; + tColor ColorFg, ColorBg; + std::string Text; + cImage *Image; + cFont *Font; + +public: + cSimpleContent(void) { + Image = NULL; + Font = NULL; + } + + ~cSimpleContent() { + } + + cSimpleContent& operator=(const cSimpleContent& other) { + if( this != &other ) { + this->ContentType = other.ContentType; + this->Position = other.Position; + this->Text = other.Text; + this->TextWidth = other.TextWidth; + this->TextHeight = other.TextHeight; + this->TextAlignment = other.TextAlignment; + this->ColorFg = other.ColorFg; + this->ColorBg = other.ColorBg; + this->Image = other.Image; + this->Font = other.Font; + } + return *this; + } + + void SetText(const char *text, bool Multiline, cRect position, tColor colorFg, tColor colorBg, cFont *font, int textWidth = 0, int textHeight = 0, int textAlignment = taDefault) { + ContentType = CT_Text; + Text = text; + + Font = font; + Position = position; + + if( Multiline ) { + ContentType = CT_TextMultiline; + } + ColorFg = colorFg; ColorBg = colorBg; + TextWidth = textWidth; TextHeight = textHeight; TextAlignment = textAlignment; + } + + void SetImage(cImage *image, cRect position) { + ContentType = CT_Image; + Image = image; + Position = position; + } + + void SetRect(cRect position, tColor colorBg) { + ContentType = CT_Rect; + Position = position; + ColorBg = colorBg; + } + + int GetContentType(void) { return ContentType; } + int GetBottom(void) { + if( ContentType == CT_Text ) + return Position.Top() + Font->Height(); + else if( ContentType == CT_TextMultiline ) { + cTextWrapper Wrapper; + Wrapper.Set(Text.c_str(), Font, Position.Width()); + return Position.Top() + (Wrapper.Lines() * Font->Height()); + } else if( ContentType == CT_Image ) { + return Position.Top() + Image->Height(); + } else if( ContentType == CT_Rect ) + return Position.Top() + Position.Height(); + + return 0; + } + + void Draw(cPixmap *Pixmap) { + if( !Pixmap ) + return; + if( ContentType == CT_Text ) { + Pixmap->DrawText(cPoint(Position.Left(), Position.Top()), Text.c_str(), ColorFg, ColorBg, Font, TextWidth, TextHeight, TextAlignment); + } else if( ContentType == CT_TextMultiline ) { + cTextWrapper Wrapper; + Wrapper.Set(Text.c_str(), Font, Position.Width()); + int Lines = Wrapper.Lines(); + for( int i = 0; i < Lines; i++) { + Pixmap->DrawText(cPoint(Position.Left(), Position.Top() + (i * Font->Height())), Wrapper.GetLine(i), ColorFg, ColorBg, Font, TextWidth, TextHeight, TextAlignment); + } + } else if( ContentType == CT_Rect ) { + Pixmap->DrawRectangle(Position, ColorBg); + } else if( ContentType == CT_Image ) { + Pixmap->DrawImage(cPoint(Position.Left(), Position.Top()), *Image); + } + } +}; + +class cComplexContent +{ +private: + std::vector Contents; + + cPixmap *Pixmap, *PixmapImage; + cRect Position; + + tColor ColorBg; + + bool FullFillBackground; + int DrawPortHeight; + int ScrollSize; + bool isShown; + bool isScrollingActive; + + cOsd *Osd; + + void CalculateDrawPortHeight(void); + +public: + cComplexContent(void); + cComplexContent(cOsd *osd, int scrollSize); + ~cComplexContent(); + + void SetOsd(cOsd *osd) { Osd = osd; } + void SetPosition(cRect position) { Position = position; } + void SetScrollSize(int scrollSize) { ScrollSize = scrollSize; } + void SetBGColor(tColor colorBg) { ColorBg = colorBg; } + void CreatePixmaps(bool fullFillBackground); + + void Clear(void); + + void AddText(const char *text, bool multiline, cRect position, tColor colorFg, tColor colorBg, cFont *font, int textWidth = 0, int textHeight = 0, int textAlignment = taDefault ); + void AddImage(cImage *image, cRect position); + void AddImageWithFloatedText(cImage *image, int imageAlignment, const char *text, cRect textPos, tColor colorFg, tColor colorBg, cFont *font, int textWidth = 0, int textHeight = 0, int textAlignment = taDefault); + void AddRect(cRect position, tColor colorBg); + bool Scrollable(int height = 0); + int ScrollTotal(void); + int ScrollOffset(void); + int ScrollShown(void); + bool Scroll(bool Up, bool Page); + double ScrollbarSize(void); + void SetScrollingActive(bool active) { isScrollingActive = active; } + + int Height(void){ return Position.Height(); } + int ContentHeight( bool Full ); + + int BottomContent(void); + + int Top(void) { return Position.Top(); } + void Draw(); + bool IsShown(void) { return isShown; } + bool IsScrollingActive(void) { return isScrollingActive; } +}; diff -Nru vdr-plugin-skinflatplus-0.2.1/config.c vdr-plugin-skinflatplus-0.3.0/config.c --- vdr-plugin-skinflatplus-0.2.1/config.c 2014-03-25 19:21:56.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/config.c 2014-05-11 11:16:37.000000000 +0000 @@ -5,55 +5,65 @@ cFlatConfig::cFlatConfig(void) { logoPath = ""; iconPath = ""; - + DecorCurrent = -1; DecorIndex = 0; - + ButtonsShowEmpty = true; ChannelIconsShow = true; SignalQualityShow = true; SignalQualityUseColors = false; - + DiskUsageShow = true; - + MenuContentFullSize = true; - + ChannelFormatShow = true; ChannelResolutionAspectShow = true; ChannelSimpleAspectFormat = true; - + RecordingResolutionAspectShow = true; RecordingFormatShow = true; RecordingSimpleAspectFormat = true; - + RecordingAdditionalInfoShow = true; EpgAdditionalInfoShow = true; - + EpgRerunsShow = true; + TopBarRecordingShow = true; TopBarRecConflictsShow = true; TopBarRecConflictsHigh = 2; - + MenuItemIconsShow = true; TopBarMenuIconShow = true; - + MenuItemPadding = 3; marginOsdVer = 5; marginOsdHor = 5; TopBarFontSize = 0.05; MessageOffset = 50; - + MainMenuItemScale = 1.0; - + MenuChannelView = 1; MenuTimerView = 1; MenuEventView = 1; MenuRecordingView = 1; - + MenuItemRecordingClearPercent = 1; MenuItemRecordingShowFolderDate = 1; MenuItemParseTilde = 1; - + + TVScraperChanInfoShowPoster = 1; + TVScraperChanInfoPosterSize = 0.01; + + TVScraperEPGInfoShowPoster = 1; + TVScraperRecInfoShowPoster = 1; + + TVScraperEPGInfoShowActors = 1; + TVScraperRecInfoShowActors = 1; + decorBorderChannelByTheme = 1; decorBorderChannelTypeUser = 0; decorBorderChannelSizeUser = 0; @@ -93,7 +103,7 @@ decorBorderButtonByTheme = 1; decorBorderButtonTypeUser = 0; decorBorderButtonSizeUser = 0; - + decorProgressChannelByTheme = 1; decorProgressChannelTypeUser = 0; decorProgressChannelSizeUser = 20; @@ -199,9 +209,16 @@ else if (strcmp(Name, "TopBarRecConflictsShow") == 0) TopBarRecConflictsShow = atoi(Value); else if (strcmp(Name, "TopBarRecConflictsHigh") == 0) TopBarRecConflictsHigh = atoi(Value); else if (strcmp(Name, "SignalQualityUseColors") == 0) SignalQualityUseColors = atoi(Value); + else if (strcmp(Name, "TVScraperChanInfoShowPoster") == 0) TVScraperChanInfoShowPoster = atoi(Value); + else if (strcmp(Name, "TVScraperChanInfoPosterSize") == 0) TVScraperChanInfoPosterSize = atod(Value); + else if (strcmp(Name, "TVScraperEPGInfoShowPoster") == 0) TVScraperEPGInfoShowPoster = atoi(Value); + else if (strcmp(Name, "TVScraperRecInfoShowPoster") == 0) TVScraperRecInfoShowPoster = atoi(Value); + else if (strcmp(Name, "EpgRerunsShow") == 0) EpgRerunsShow = atoi(Value); + else if (strcmp(Name, "TVScraperEPGInfoShowActors") == 0) TVScraperEPGInfoShowActors = atoi(Value); + else if (strcmp(Name, "TVScraperRecInfoShowActors") == 0) TVScraperRecInfoShowActors = atoi(Value); else return false; - + return true; } @@ -225,7 +242,7 @@ decorBorderChannelType = decorBorderChannelTypeUser; decorBorderChannelSize = decorBorderChannelSizeUser; } - + if( decorBorderTopBarByTheme ) { decorBorderTopBarType = decorBorderTopBarTypeTheme; decorBorderTopBarSize = decorBorderTopBarSizeTheme; @@ -241,7 +258,7 @@ decorBorderMessageType = decorBorderMessageTypeUser; decorBorderMessageSize = decorBorderMessageSizeUser; } - + if( decorBorderVolumeByTheme ) { decorBorderVolumeType = decorBorderVolumeTypeTheme; decorBorderVolumeSize = decorBorderVolumeSizeTheme; @@ -249,7 +266,7 @@ decorBorderVolumeType = decorBorderVolumeTypeUser; decorBorderVolumeSize = decorBorderVolumeSizeUser; } - + if( decorBorderTrackByTheme ) { decorBorderTrackType = decorBorderTrackTypeTheme; decorBorderTrackSize = decorBorderTrackSizeTheme; @@ -257,7 +274,7 @@ decorBorderTrackType = decorBorderTrackTypeUser; decorBorderTrackSize = decorBorderTrackSizeUser; } - + if( decorBorderReplayByTheme ) { decorBorderReplayType = decorBorderReplayTypeTheme; decorBorderReplaySize = decorBorderReplaySizeTheme; @@ -273,7 +290,7 @@ decorBorderMenuItemType = decorBorderMenuItemTypeUser; decorBorderMenuItemSize = decorBorderMenuItemSizeUser; } - + if( decorBorderMenuContentHeadByTheme ) { decorBorderMenuContentHeadType = decorBorderMenuContentHeadTypeTheme; decorBorderMenuContentHeadSize = decorBorderMenuContentHeadSizeTheme; @@ -281,7 +298,7 @@ decorBorderMenuContentHeadType = decorBorderMenuContentHeadTypeUser; decorBorderMenuContentHeadSize = decorBorderMenuContentHeadSizeUser; } - + if( decorBorderMenuContentByTheme ) { decorBorderMenuContentType = decorBorderMenuContentTypeTheme; decorBorderMenuContentSize = decorBorderMenuContentSizeTheme; @@ -289,7 +306,7 @@ decorBorderMenuContentType = decorBorderMenuContentTypeUser; decorBorderMenuContentSize = decorBorderMenuContentSizeUser; } - + if( decorBorderButtonByTheme ) { decorBorderButtonType = decorBorderButtonTypeTheme; decorBorderButtonSize = decorBorderButtonSizeTheme; @@ -297,7 +314,7 @@ decorBorderButtonType = decorBorderButtonTypeUser; decorBorderButtonSize = decorBorderButtonSizeUser; } - + if( decorProgressChannelByTheme ) { decorProgressChannelType = decorProgressChannelTypeTheme; decorProgressChannelSize = decorProgressChannelSizeTheme; @@ -305,7 +322,7 @@ decorProgressChannelType = decorProgressChannelTypeUser; decorProgressChannelSize = decorProgressChannelSizeUser; } - + if( decorProgressVolumeByTheme ) { decorProgressVolumeType = decorProgressVolumeTypeTheme; decorProgressVolumeSize = decorProgressVolumeSizeTheme; @@ -313,7 +330,7 @@ decorProgressVolumeType = decorProgressVolumeTypeUser; decorProgressVolumeSize = decorProgressVolumeSizeUser; } - + if( decorProgressMenuItemByTheme ) { decorProgressMenuItemType = decorProgressMenuItemTypeTheme; decorProgressMenuItemSize = decorProgressMenuItemSizeTheme; @@ -321,7 +338,7 @@ decorProgressMenuItemType = decorProgressMenuItemTypeUser; decorProgressMenuItemSize = decorProgressMenuItemSizeUser; } - + if( decorProgressReplayByTheme ) { decorProgressReplayType = decorProgressReplayTypeTheme; decorProgressReplaySize = decorProgressReplaySizeTheme; @@ -329,7 +346,7 @@ decorProgressReplayType = decorProgressReplayTypeUser; decorProgressReplaySize = decorProgressReplaySizeUser; } - + if( decorProgressSignalByTheme ) { decorProgressSignalType = decorProgressSignalTypeTheme; decorProgressSignalSize = decorProgressSignalSizeTheme; @@ -337,7 +354,7 @@ decorProgressSignalType = decorProgressSignalTypeUser; decorProgressSignalSize = decorProgressSignalSizeUser; } - + if( decorBorderChannelType == 0 ) decorBorderChannelSize = 0; if( decorBorderTopBarType == 0 ) @@ -379,7 +396,7 @@ decorBorderTrackCurBg = Theme.Color(clrTrackItemCurrentBorderBg); decorBorderTrackSelFg = Theme.Color(clrTrackItemSelableBorderFg); decorBorderTrackSelBg = Theme.Color(clrTrackItemSelableBorderBg); - + decorBorderReplayFg = Theme.Color(clrReplayBorderFg); decorBorderReplayBg = Theme.Color(clrReplayBorderBg); @@ -398,7 +415,7 @@ decorBorderButtonFg = Theme.Color(clrButtonBorderFg); decorBorderButtonBg = Theme.Color(clrButtonBorderBg); - + decorProgressChannelFg = Theme.Color(clrChannelProgressFg); decorProgressChannelBarFg = Theme.Color(clrChannelProgressBarFg); decorProgressChannelBg = Theme.Color(clrChannelProgressBg); @@ -452,14 +469,14 @@ cString decorPath = cString::sprintf("%s/decors", PLUGINRESOURCEPATH); std::vector files; Decors.Clear(); - + cReadDir d(decorPath); struct dirent *e; while ((e = d.Next()) != NULL) { cString FileName = AddDirectory(decorPath, e->d_name); files.push_back(*FileName); } - + std::sort(files.begin(), files.end(), stringCompare); for (unsigned i = 0; i < files.size(); i++) { std::string FileName = files.at(i); @@ -502,14 +519,14 @@ void cFlatConfig::DecorLoadCurrent(void) { cString decorPath = cString::sprintf("%s/decors", PLUGINRESOURCEPATH); std::vector files; - + cReadDir d(decorPath); struct dirent *e; while ((e = d.Next()) != NULL) { cString FileName = AddDirectory(decorPath, e->d_name); files.push_back(*FileName); } - + std::sort(files.begin(), files.end(), stringCompare); if( DecorIndex >= 0 && DecorIndex < (int)files.size() ) { std::string FileName = files.at(DecorIndex); diff -Nru vdr-plugin-skinflatplus-0.2.1/config.h vdr-plugin-skinflatplus-0.3.0/config.h --- vdr-plugin-skinflatplus-0.2.1/config.h 2014-03-25 19:21:56.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/config.h 2014-05-11 11:16:37.000000000 +0000 @@ -22,7 +22,7 @@ void Init(void); void SetLogoPath(cString path); bool SetupParse(const char *Name, const char *Value); - + void ThemeCheckAndInit(void); void ThemeInit(void); void DecorDescriptions(cStringList &Decors); @@ -35,7 +35,7 @@ cString ThemeCurrent; cString logoPath; cString iconPath; - + // BORDER TYPES // 0 = none // 1 = rect @@ -157,14 +157,14 @@ int SignalQualityShow; int SignalQualityUseColors; int DiskUsageShow; - + int MenuItemPadding; int marginOsdVer, marginOsdHor; int MessageOffset; - + int MenuContentFullSize; double TopBarFontSize; - + int ChannelResolutionAspectShow; int ChannelFormatShow; int ChannelSimpleAspectFormat; @@ -172,24 +172,36 @@ int RecordingFormatShow; int RecordingSimpleAspectFormat; int RecordingAdditionalInfoShow; + int EpgRerunsShow; int EpgAdditionalInfoShow; int TopBarRecordingShow; int TopBarRecConflictsShow; int TopBarRecConflictsHigh; int MenuItemIconsShow; int TopBarMenuIconShow; - + double MainMenuItemScale; - + int MenuChannelView; int MenuTimerView; int MenuEventView; int MenuRecordingView; - + + /* hidden configs (only in setup.conf, no osd menu) */ int MenuItemRecordingClearPercent; int MenuItemRecordingShowFolderDate; // 0 = disable, 1 = newest recording date, 2 = oldest recording date - int MenuItemParseTilde; - + /* hidden configs (only in setup.conf, no osd menu) */ + + // TVScraper + int TVScraperChanInfoShowPoster; + double TVScraperChanInfoPosterSize; + + int TVScraperEPGInfoShowPoster; + int TVScraperRecInfoShowPoster; + + int TVScraperEPGInfoShowActors; + int TVScraperRecInfoShowActors; + int DecorIndex; }; diff -Nru vdr-plugin-skinflatplus-0.2.1/contrib/eventsview-flatplus.sql vdr-plugin-skinflatplus-0.3.0/contrib/eventsview-flatplus.sql --- vdr-plugin-skinflatplus-0.2.1/contrib/eventsview-flatplus.sql 1970-01-01 00:00:00.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/contrib/eventsview-flatplus.sql 2014-05-11 11:16:37.000000000 +0000 @@ -0,0 +1,11 @@ +CREATE VIEW eventsview as select sub.masterid as useid, cnt.eventid, cnt.channelid, cnt.source, GREATEST(cnt.updsp,sub.updsp,IFNULL(epi.updsp,0)) updsp, cnt.updflg, cnt.delflg, cnt.fileref, cnt.tableid, cnt.version, sub.title, +case + when sub.shorttext is null then + case when sub.genre is null then '' else concat(sub.genre,' (', sub.country, ' ',sub.year, ')') end + else sub.shorttext +end shorttext, +cnt.starttime, cnt.duration, cnt.parentalrating, cnt.vps, sub.longdescription as description +from + events cnt + inner join events sub on (case when cnt.useid = 0 then cnt.masterid else cnt.useid end = sub.masterid) + left outer join episodes epi on (sub.episode = epi.compname and sub.episodepart = epi.comppartname and sub.episodelang = epi.lang); diff -Nru vdr-plugin-skinflatplus-0.2.1/debian/changelog vdr-plugin-skinflatplus-0.3.0/debian/changelog --- vdr-plugin-skinflatplus-0.2.1/debian/changelog 2014-04-02 20:13:35.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/debian/changelog 2014-05-11 11:23:29.000000000 +0000 @@ -1,3 +1,9 @@ +vdr-plugin-skinflatplus (0.3.0-0yavdr0~precise) precise; urgency=medium + + * new upstream version + + -- Alexander Grothe Sun, 11 May 2014 13:23:14 +0200 + vdr-plugin-skinflatplus (0.2.1-1yavdr2~precise) precise; urgency=medium * automatic rebuild diff -Nru vdr-plugin-skinflatplus-0.2.1/displaychannel.c vdr-plugin-skinflatplus-0.3.0/displaychannel.c --- vdr-plugin-skinflatplus-0.2.1/displaychannel.c 2014-03-25 19:21:56.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/displaychannel.c 2014-05-11 11:16:37.000000000 +0000 @@ -7,7 +7,7 @@ doOutput = false; return; } else - doOutput = true; + doOutput = true; present = NULL; channelName = ""; @@ -16,6 +16,7 @@ chanLogoPixmap = NULL; chanLogoBGPixmap = NULL; chanIconsPixmap = NULL; + chanEpgImagesPixmap = NULL; isGroup = false; isRecording = false, @@ -24,7 +25,7 @@ screenWidth = lastScreenWidth = -1; LastSignalStrength = -1; LastSignalQuality = -1; - + CreateFullOsd(); if ( !osd ) return; @@ -41,7 +42,7 @@ heightBottom += max(fontSmlHeight, (Config.decorProgressSignalSize*2) + marginItem) + marginItem; else if( Config.ChannelIconsShow ) heightBottom += fontSmlHeight + marginItem; - + int heightTop = fontHeight; int height = heightBottom; @@ -53,12 +54,20 @@ Config.decorBorderChannelSize+channelHeight - height, channelWidth, heightBottom)); chanIconsPixmap->Fill( clrTransparent ); + TVSLeft = 20 + Config.decorBorderChannelSize; + TVSTop = topBarHeight + 20 + Config.decorBorderChannelSize; + TVSWidth = osdWidth - 40 - Config.decorBorderChannelSize*2; + TVSHeight = osdHeight - topBarHeight - heightBottom - 40 - Config.decorBorderChannelSize*2; + + chanEpgImagesPixmap = osd->CreatePixmap(2, cRect(TVSLeft, TVSTop, TVSWidth, TVSHeight)); + chanEpgImagesPixmap->Fill( clrTransparent ); + chanLogoBGPixmap = osd->CreatePixmap(2, cRect(Config.decorBorderChannelSize, - Config.decorBorderChannelSize+channelHeight - height, heightBottom, heightBottom)); + Config.decorBorderChannelSize+channelHeight - height, heightBottom*2, heightBottom*2)); chanLogoBGPixmap->Fill( clrTransparent ); chanLogoPixmap = osd->CreatePixmap(3, cRect(Config.decorBorderChannelSize, - Config.decorBorderChannelSize+channelHeight - height, heightBottom, heightBottom)); + Config.decorBorderChannelSize+channelHeight - height, heightBottom*2, heightBottom*2)); chanLogoPixmap->Fill( clrTransparent ); height += Config.decorProgressChannelSize + marginItem*2; @@ -67,12 +76,12 @@ Config.decorProgressChannelFg, Config.decorProgressChannelBarFg, Config.decorProgressChannelBg, Config.decorProgressChannelType, true); ProgressBarDrawBgColor(); - + height += heightTop; chanInfoTopPixmap = osd->CreatePixmap(1, cRect(Config.decorBorderChannelSize, Config.decorBorderChannelSize+channelHeight - height, channelWidth, heightTop)); chanInfoTopPixmap->Fill( clrTransparent ); - + DecorBorderDraw(Config.decorBorderChannelSize, Config.decorBorderChannelSize+channelHeight - height, channelWidth, heightTop + heightBottom + Config.decorProgressChannelSize+marginItem*2, Config.decorBorderChannelSize, Config.decorBorderChannelType, Config.decorBorderChannelFg, Config.decorBorderChannelBg); @@ -92,6 +101,8 @@ osd->DestroyPixmap(chanLogoBGPixmap); if( chanIconsPixmap ) osd->DestroyPixmap(chanIconsPixmap); + if( chanEpgImagesPixmap ) + osd->DestroyPixmap(chanEpgImagesPixmap); } } @@ -102,17 +113,17 @@ isRecording = false; chanIconsPixmap->Fill( clrTransparent ); lastScreenWidth = -1; - + if (Channel) { isRadioChannel = ((!Channel->Vpid())&&(Channel->Apid(0))) ? true : false; isGroup = Channel->GroupSep(); - + channelName = Channel->Name(); if (!Channel->GroupSep()) channelNumber = cString::sprintf("%d%s", Channel->Number(), Number ? "-" : ""); else if (Number) channelNumber = cString::sprintf("%d-", Number); - + CurChannel = Channel; } else channelName = ChannelString(NULL, 0); @@ -126,29 +137,34 @@ chanLogoBGPixmap->Fill(clrTransparent); int imageHeight = heightImageLogo - marginItem*2; int imageBGHeight = imageHeight; + int imageBGWidth = imageHeight; int imageLeft = marginItem*2; int imageTop = marginItem; - cImage *imgBG = imgLoader.LoadIcon("logo_background", imageHeight, imageHeight); + cImage *imgBG = imgLoader.LoadIcon("logo_background", imageHeight*1.34, imageHeight); if( imgBG ) { imageBGHeight = imgBG->Height(); + imageBGWidth = imgBG->Width(); chanLogoBGPixmap->DrawImage( cPoint(imageLeft, imageTop), *imgBG ); } - - cImage *img = imgLoader.LoadLogo(*channelName, imageHeight, imageHeight); + + cImage *img = imgLoader.LoadLogo(*channelName, imageBGWidth - 4, imageBGHeight - 4); if( img ) { imageTop = marginItem + (imageBGHeight - img->Height()) / 2; + imageLeft = marginItem*2 + (imageBGWidth - img->Width()) / 2; chanLogoPixmap->DrawImage( cPoint(imageLeft, imageTop), *img ); } else if( !isGroup ) { // draw default logo if( isRadioChannel ) { - img = imgLoader.LoadIcon("radio", imageHeight, imageHeight); + img = imgLoader.LoadIcon("radio", imageBGWidth - 10, imageBGHeight - 10); if( img ) { imageTop = marginItem + (imageHeight - img->Height()) / 2; + imageLeft = marginItem*2 + (imageBGWidth - img->Width()) / 2; chanLogoPixmap->DrawImage( cPoint(imageLeft, imageTop), *img ); } } else { - img = imgLoader.LoadIcon("tv", imageHeight, imageHeight); + img = imgLoader.LoadIcon("tv", imageBGWidth - 10, imageBGHeight - 10); if( img ) { imageTop = marginItem + (imageHeight - img->Height()) / 2; + imageLeft = marginItem*2 + (imageBGWidth - img->Width()) / 2; chanLogoPixmap->DrawImage( cPoint(imageLeft, imageTop), *img ); } } @@ -165,7 +181,7 @@ int top = heightBottom - height - marginItem; int imageTop = 0; cImage *img = NULL; - + int left = channelWidth - width - marginItem*2; if( Channel ) { @@ -296,8 +312,8 @@ bool isRec = false; int RecWidth = fontSml->Width("REC"); - - int left = heightBottom + marginItem; + + int left = heightBottom * 1.34 + marginItem; if( Present ) { cString startTime = Present->GetTimeString(); @@ -306,21 +322,21 @@ cString timeString = cString::sprintf("%s - %s", *startTime, *endTime); int timeStringWidth = fontSml->Width(*timeString); - int epgWidth = font->Width(Present->Title()); - int epgShortWidth = fontSml->Width(Present->ShortText()); + int epgWidth = font->Width(Present->Title()) + marginItem+2; + int epgShortWidth = fontSml->Width(Present->ShortText()) + marginItem+2; if( Present->HasTimer() ) { isRec = true; epgWidth += marginItem + RecWidth; } - + int s = (int)(time(NULL) - Present->StartTime()) / 60; int sleft = (Present->Duration() / 60) - s; cString seen = cString::sprintf("%d-/%d+ %d min", s, sleft, Present->Duration() / 60); int seenWidth = fontSml->Width(*seen); - if( epgWidth > channelWidth - left - timeStringWidth ) { + if( epgWidth > channelWidth - left - timeStringWidth) { int dotsWidth = font->Width("... "); cTextWrapper epgInfoWrapper(Present->Title(), font, channelWidth - left - timeStringWidth - dotsWidth); epg = epgInfoWrapper.GetLine(0); @@ -334,7 +350,7 @@ epg = Present->Title(); } - if( epgShortWidth > channelWidth - left - timeStringWidth ) { + if( epgShortWidth > channelWidth - left - timeStringWidth) { int dotsWidth = fontSml->Width("... "); cTextWrapper epgInfoWrapper(Present->ShortText(), fontSml, channelWidth - left - timeStringWidth - dotsWidth); epgShort = epgInfoWrapper.GetLine(0); @@ -342,12 +358,12 @@ } else { epgShort = Present->ShortText(); } - + chanInfoBottomPixmap->DrawText(cPoint(channelWidth - timeStringWidth - marginItem * 2, 0), *timeString, Theme.Color(clrChannelFontEpg), Theme.Color(clrChannelBg), fontSml); chanInfoBottomPixmap->DrawText(cPoint(channelWidth - seenWidth - marginItem * 2, fontSmlHeight), *seen, Theme.Color(clrChannelFontEpg), Theme.Color(clrChannelBg), fontSml); - + chanInfoBottomPixmap->DrawText(cPoint(left, 0), *epg, Theme.Color(clrChannelFontEpg), Theme.Color(clrChannelBg), font); chanInfoBottomPixmap->DrawText(cPoint(left, fontHeight), *epgShort, Theme.Color(clrChannelFontEpg), Theme.Color(clrChannelBg), fontSml); @@ -356,7 +372,7 @@ Theme.Color(clrChannelRecordingPresentFg), Theme.Color(clrChannelRecordingPresentBg), fontSml); } } - + if( Following ) { isRec = false; cString startTime = Following->GetTimeString(); @@ -365,14 +381,14 @@ cString timeString = cString::sprintf("%s - %s", *startTime, *endTime); int timeStringWidth = fontSml->Width(*timeString); - int epgWidth = font->Width(Following->Title()); - int epgShortWidth = fontSml->Width(Following->ShortText()); + int epgWidth = font->Width(Following->Title()) + marginItem+2; + int epgShortWidth = fontSml->Width(Following->ShortText()) + marginItem+2; if( Following->HasTimer() ) { epgWidth += marginItem + RecWidth; isRec = true; } - + cString dur = cString::sprintf("%d min", Following->Duration() / 60); int durWidth = fontSml->Width(*dur); @@ -413,9 +429,58 @@ Theme.Color(clrChannelRecordingFollowFg), Theme.Color(clrChannelRecordingFollowBg), fontSml); } } + if( Config.ChannelIconsShow && CurChannel ) { ChannelIconsDraw(CurChannel, false); } + + std::string mediaPath; + int mediaWidth = 0; + int mediaHeight = 0; + + // TVScraper + static cPlugin *pTVScraper = cPluginManager::GetPlugin("tvscraper"); + static cPlugin *pScraper2Vdr = cPluginManager::GetPlugin("scraper2vdr"); + if( Config.TVScraperChanInfoShowPoster && pScraper2Vdr ) { + ScraperGetPosterBanner call; + call.event = Present; + if (pScraper2Vdr->Service("GetPosterBanner", &call)) { + if ((call.type == tSeries) && call.banner.path.size() > 0) { + mediaWidth = call.banner.width * Config.TVScraperChanInfoPosterSize*100; + mediaHeight = call.banner.height * Config.TVScraperChanInfoPosterSize*100; + mediaPath = call.banner.path; + } else if (call.type == tMovie && call.poster.path.size() > 0) { + mediaWidth = call.poster.width * 0.5 * Config.TVScraperChanInfoPosterSize*100; + mediaHeight = call.poster.height * 0.5 * Config.TVScraperChanInfoPosterSize*100; + mediaPath = call.poster.path; + } + } + } else if( Config.TVScraperChanInfoShowPoster && pTVScraper ) { + TVScraperGetPosterOrBanner call; + call.event = Present; + if (pTVScraper->Service("TVScraperGetPosterOrBanner", &call)) { + if (call.type == typeSeries) { + mediaWidth = call.media.width * Config.TVScraperChanInfoPosterSize*100; + mediaHeight = call.media.height * Config.TVScraperChanInfoPosterSize*100; + } else if (call.type == typeMovie) { + mediaWidth = call.media.width * 0.5 * Config.TVScraperChanInfoPosterSize*100; + mediaHeight = call.media.height * 0.5 * Config.TVScraperChanInfoPosterSize*100; + } + mediaPath = call.media.path; + } + } + + chanEpgImagesPixmap->Fill(clrTransparent); + DecorBorderClearByFrom(BorderTVSPoster); + if( mediaPath.length() > 0 ) { + cImage *img = imgLoader.LoadFile(mediaPath.c_str(), mediaWidth, mediaHeight); + if( img ) { + chanEpgImagesPixmap->DrawImage(cPoint(0, 0), *img); + + DecorBorderDraw(20 + Config.decorBorderChannelSize, topBarHeight + 20 + Config.decorBorderChannelSize, img->Width(), img->Height(), + Config.decorBorderChannelSize, Config.decorBorderChannelType, Config.decorBorderChannelFg, Config.decorBorderChannelBg, BorderTVSPoster); + } + } } void cFlatDisplayChannel::SetMessage(eMessageType Type, const char *Text) { @@ -438,17 +503,17 @@ return; LastSignalStrength = SignalStrength; LastSignalQuality = SignalQuality; - + cFont *SignalFont = cFont::CreateFont(Setup.FontOsd, Config.decorProgressSignalSize); - + int top = fontHeight*2 + fontSmlHeight*2 + marginItem; top += max(fontSmlHeight, Config.decorProgressSignalSize) / 2 - fontSmlHeight / 2; int left = marginItem * 2; int progressTop = fontHeight*2 + fontSmlHeight*2 + marginItem; progressTop += max(fontSmlHeight, Config.decorProgressSignalSize) / 2 - Config.decorProgressSignalSize / 2; - + progressTop = top; - + chanInfoBottomPixmap->DrawText(cPoint(left, top), "STR", Theme.Color(clrChannelSignalFont), Theme.Color(clrChannelBg), SignalFont); int progressLeft = left + SignalFont->Width("STR") + SignalFont->Width(" ") + marginItem; @@ -460,12 +525,12 @@ //left = signalWidth / 2 + marginItem; top += Config.decorProgressSignalSize + marginItem; progressTop = top; - + chanInfoBottomPixmap->DrawText(cPoint(left, top), "SNR", Theme.Color(clrChannelSignalFont), Theme.Color(clrChannelBg), SignalFont); progressLeft = left + SignalFont->Width("STR") + SignalFont->Width(" ") + marginItem; //progressWidth = signalWidth - progressLeft - marginItem; - + ProgressBarDrawRaw(chanInfoBottomPixmap, chanInfoBottomPixmap, cRect(progressLeft, progressTop, progressWidth, Config.decorProgressSignalSize), cRect(progressLeft, progressTop, progressWidth, Config.decorProgressSignalSize), SignalQuality, 100, Config.decorProgressSignalFg, Config.decorProgressSignalBarFg, Config.decorProgressSignalBg, Config.decorProgressSignalType, false, Config.SignalQualityUseColors); @@ -487,7 +552,7 @@ } if( Config.SignalQualityShow ) SignalQualityDraw(); - + if( Config.ChannelIconsShow ) { cDevice::PrimaryDevice()->GetVideoSize(screenWidth, screenHeight, screenAspect); if (screenWidth != lastScreenWidth) { @@ -502,19 +567,27 @@ void cFlatDisplayChannel::PreLoadImages(void) { int height = (fontHeight*2) + (fontSmlHeight*2) + marginItem - marginItem*2; imgLoader.LoadIcon("logo_background", height, height); - imgLoader.LoadIcon("radio", height, height); - imgLoader.LoadIcon("tv", height, height); + int imageBGHeight, imageBGWidth; + imageBGHeight = imageBGWidth = height; + + cImage *imgBG = imgLoader.LoadIcon("logo_background", height*1.34, height); + if( imgBG ) { + imageBGHeight = imgBG->Height(); + imageBGWidth = imgBG->Width(); + } + imgLoader.LoadIcon("radio", imageBGWidth - 10, imageBGHeight - 10); + imgLoader.LoadIcon("tv", imageBGWidth - 10, imageBGHeight - 10); int index = 0; height = ((fontHeight*2) + (fontSmlHeight*2) + marginItem) - marginItem*2; cImage *img = NULL; for(cChannel *Channel = Channels.First(); Channel && index < LOGO_PRE_CACHE; Channel = Channels.Next(Channel) ) { - img = imgLoader.LoadLogo(Channel->Name(), height, height); + img = imgLoader.LoadLogo(Channel->Name(), imageBGWidth - 4, imageBGHeight - 4); if( img ) index++; } - + height = max(fontSmlHeight, Config.decorProgressSignalSize); imgLoader.LoadIcon("crypted", 999, height); imgLoader.LoadIcon("uncrypted", 999, height); diff -Nru vdr-plugin-skinflatplus-0.2.1/displaychannel.h vdr-plugin-skinflatplus-0.3.0/displaychannel.h --- vdr-plugin-skinflatplus-0.2.1/displaychannel.h 2014-03-25 19:21:56.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/displaychannel.h 2014-05-11 11:16:37.000000000 +0000 @@ -2,6 +2,8 @@ #include "baserender.h" #include "flat.h" +#include "services/tvscraper.h" +#include "services/scraper2vdr.h" class cFlatDisplayChannel : public cFlatBaseRender, public cSkinDisplayChannel { private: @@ -12,24 +14,28 @@ cString channelName; const cChannel *CurChannel; - + cPixmap *chanInfoTopPixmap; cPixmap *chanInfoBottomPixmap; cPixmap *chanLogoPixmap; cPixmap *chanLogoBGPixmap; cPixmap *chanIconsPixmap; - + cPixmap *chanEpgImagesPixmap; + int screenWidth, lastScreenWidth; int screenHeight; double screenAspect; int heightBottom, heightImageLogo; - + int LastSignalStrength, LastSignalQuality; - + + // TVScraper + int TVSLeft, TVSTop, TVSWidth, TVSHeight; + bool isRecording; bool isRadioChannel; bool isGroup; - + void SignalQualityDraw(void); void ChannelIconsDraw(const cChannel *Channel, bool Resolution); diff -Nru vdr-plugin-skinflatplus-0.2.1/displaymenu.c vdr-plugin-skinflatplus-0.3.0/displaymenu.c --- vdr-plugin-skinflatplus-0.2.1/displaymenu.c 2014-03-25 19:21:56.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/displaymenu.c 2014-05-11 11:16:37.000000000 +0000 @@ -1,4 +1,7 @@ #include "displaymenu.h" +#include "services/tvscraper.h" +#include "services/scraper2vdr.h" +#include "services/epgsearch.h" #ifndef VDRLOGO #define VDRLOGO "vdrlogo_default" @@ -11,6 +14,7 @@ #include "symbols/1080/Cclocksml.xpm" #include "symbols/1080/Cvpssml.xpm" #include "flat.h" +#include "locale" cBitmap cFlatDisplayMenu::bmCNew(Cnew_xpm); cBitmap cFlatDisplayMenu::bmCArrowTurn(Carrowturn_xpm); @@ -38,11 +42,11 @@ MessageCreate(); VideoDiskUsageState = -1; - + itemHeight = fontHeight + Config.MenuItemPadding + Config.decorBorderMenuItemSize*2; itemChannelHeight = fontHeight + Config.MenuItemPadding + Config.decorBorderMenuItemSize*2; itemTimerHeight = fontHeight + Config.MenuItemPadding + Config.decorBorderMenuItemSize*2; - + scrollBarWidth = ScrollBarWidth() + marginItem; scrollBarHeight = osdHeight - (topBarHeight + Config.decorBorderTopBarSize*2 + marginItem*3 + buttonsHeight + Config.decorBorderButtonSize*2); @@ -51,29 +55,29 @@ ShowEvent = false; ShowRecording = false; ShowText = false; - + ItemEventLastChannelName = ""; - + menuWidth = osdWidth; menuTop = topBarHeight + marginItem + Config.decorBorderTopBarSize*2 + Config.decorBorderMenuItemSize; menuPixmap = osd->CreatePixmap(1, cRect(0, menuTop, menuWidth, scrollBarHeight )); menuIconsBGPixmap = osd->CreatePixmap(2, cRect(0, menuTop, menuWidth, scrollBarHeight )); menuIconsPixmap = osd->CreatePixmap(3, cRect(0, menuTop, menuWidth, scrollBarHeight )); - + chLeft = Config.decorBorderMenuContentHeadSize; chTop = topBarHeight + marginItem + Config.decorBorderTopBarSize*2 + Config.decorBorderMenuContentHeadSize; chWidth = menuWidth - Config.decorBorderMenuContentHeadSize*2; chHeight = fontHeight + fontSmlHeight*2 + marginItem*2; contentHeadPixmap = osd->CreatePixmap(1, cRect(chLeft, chTop, chWidth, chHeight)); - + scrollbarPixmap = osd->CreatePixmap(2, cRect(0, scrollBarTop, menuWidth, scrollBarHeight + buttonsHeight + Config.decorBorderButtonSize*2)); menuPixmap->Fill(clrTransparent); menuIconsPixmap->Fill(clrTransparent); menuIconsBGPixmap->Fill(clrTransparent); scrollbarPixmap->Fill(clrTransparent); - + menuCategory = mcUndefined; bmNew = &bmCNew; @@ -96,9 +100,9 @@ ItemBorderClear(); isScrolling = false; ShowRecording = ShowEvent = ShowText = false; - + menuCategory = MenuCategory; - + if( menuCategory == mcChannel ) { if( Config.MenuChannelView == 0 || Config.MenuChannelView == 1 || Config.MenuChannelView == 2 ) itemChannelHeight = fontHeight + Config.MenuItemPadding + Config.decorBorderMenuItemSize*2; @@ -120,10 +124,16 @@ else if( Config.MenuRecordingView == 2 || Config.MenuRecordingView == 3 ) itemRecordingHeight = fontHeight + fontSmlHeight + marginItem + Config.MenuItemPadding + Config.decorBorderMenuItemSize*2; } - + +} + +void cFlatDisplayMenu::SetScrollbar(int Total, int Offset) { + DrawScrollbar(Total, Offset, MaxItems(), 0, ItemsHeight(), Offset > 0, Offset + MaxItems() < Total); } void cFlatDisplayMenu::DrawScrollbar(int Total, int Offset, int Shown, int Top, int Height, bool CanScrollUp, bool CanScrollDown, bool isContent) { + //dsyslog("Total: %d Offset: %d Shown: %d Top: %d Height: %d", Total, Offset, Shown, Top, Height); + if( Total > 0 && Total > Shown ) { if( isScrolling == false && ShowEvent == false && ShowRecording == false && ShowText == false ) { isScrolling = true; @@ -134,7 +144,6 @@ menuPixmap->DrawRectangle(cRect(menuItemWidth - scrollBarWidth + Config.decorBorderMenuContentSize, 0, scrollBarWidth + marginItem, scrollBarHeight), clrTransparent); else menuPixmap->DrawRectangle(cRect(menuItemWidth - scrollBarWidth + Config.decorBorderMenuItemSize, 0, scrollBarWidth + marginItem, scrollBarHeight), clrTransparent); - } } else if( ShowEvent == false && ShowRecording == false && ShowText == false ) { isScrolling = false; @@ -144,19 +153,16 @@ ScrollbarDraw(scrollbarPixmap, menuItemWidth - scrollBarWidth + Config.decorBorderMenuContentSize*2 + marginItem, Top, Height, Total, Offset, Shown, CanScrollUp, CanScrollDown); else ScrollbarDraw(scrollbarPixmap, menuItemWidth - scrollBarWidth + Config.decorBorderMenuItemSize*2 + marginItem, Top, Height, Total, Offset, Shown, CanScrollUp, CanScrollDown); - -} -void cFlatDisplayMenu::SetScrollbar(int Total, int Offset) { - DrawScrollbar(Total, Offset, MaxItems(), 0, ItemsHeight(), Offset > 0, Offset + MaxItems() < Total); } void cFlatDisplayMenu::Scroll(bool Up, bool Page) { // Wird das Menü gescrollt oder Content? - if( ContentIsShown() ) { - bool scrolled = ContentScroll(Up, Page); - if( scrolled ) - DrawScrollbar(ContentScrollTotal(), ContentScrollOffset(), ContentVisibleLines(), contentTop - scrollBarTop, ContentGetHeight(), ContentScrollOffset() > 0, ContentScrollOffset() + ContentVisibleLines() < ContentScrollTotal(), true); + if( ComplexContent.IsShown() && ComplexContent.IsScrollingActive() && ComplexContent.Scrollable() ) { + bool scrolled = ComplexContent.Scroll(Up, Page); + if( scrolled ) { + DrawScrollbar(ComplexContent.ScrollTotal(), ComplexContent.ScrollOffset(), ComplexContent.ScrollShown(), ComplexContent.Top() - scrollBarTop, ComplexContent.Height(), ComplexContent.ScrollOffset() > 0, ComplexContent.ScrollOffset() + ComplexContent.ScrollShown() < ComplexContent.ScrollTotal(), true); + } } else { cSkinDisplayMenu::Scroll(Up, Page); } @@ -195,44 +201,17 @@ menuIconsBGPixmap->Fill(clrTransparent); scrollbarPixmap->Fill(clrTransparent); contentHeadPixmap->Fill(clrTransparent); - ContentClear(); DecorBorderClearByFrom(BorderMenuItem); DecorBorderClearAll(); isScrolling = false; + ComplexContent.Clear(); ShowRecording = ShowEvent = ShowText = false; } void cFlatDisplayMenu::SetTitle(const char *Title) { - if( (menuCategory == mcRecording || menuCategory == mcTimer) && Config.DiskUsageShow ) { - cVideoDiskUsage::HasChanged(VideoDiskUsageState); - int DiskUsage = cVideoDiskUsage::UsedPercent(); - double FreeGB = cVideoDiskUsage::FreeMB() / 1024.0; - int FreeMinutes = cVideoDiskUsage::FreeMinutes(); - cString extra1 = cString::sprintf("%s: %d%%", tr("disk usage"), DiskUsage); - cString extra2 = cString::sprintf("%s: %.1f GB ~ %02d:%02d", tr("free"), FreeGB, FreeMinutes / 60, FreeMinutes % 60); - - cString iconName("chart1"); - if( DiskUsage > 14 ) - iconName = "chart2"; - if( DiskUsage > 28 ) - iconName = "chart3"; - if( DiskUsage > 42 ) - iconName = "chart4"; - if( DiskUsage > 56 ) - iconName = "chart5"; - if( DiskUsage > 70 ) - iconName = "chart6"; - if( DiskUsage > 84 ) - iconName = "chart7"; - - TopBarSetTitle(Title); - TopBarSetTitleExtra(extra1, extra2); - TopBarSetExtraIcon(iconName); - } else { - TopBarSetTitle(Title); - } - + TopBarSetTitle(Title); + if( Config.TopBarMenuIconShow ) { cString icon; switch( menuCategory ) { @@ -270,6 +249,10 @@ icon = ""; } TopBarSetMenuIcon(icon); + + if( (menuCategory == mcRecording || menuCategory == mcTimer) && Config.DiskUsageShow == 1 || Config.DiskUsageShow == 2 | Config.DiskUsageShow == 3) { + TopBarEnableDiskUsage(); + } } } @@ -288,13 +271,13 @@ ShowEvent = false; ShowRecording = false; ShowText = false; - + int y = Index * itemHeight; menuItemWidth = menuWidth - Config.decorBorderMenuItemSize*2; if( menuCategory == mcMain ) menuItemWidth *= Config.MainMenuItemScale; - + int AvailableTextWidth = menuItemWidth - scrollBarWidth; if( isScrolling ) menuItemWidth -= scrollBarWidth; @@ -331,9 +314,9 @@ bool isRecording = false; bool hasVPS = false; bool isRunning = false; - + int xt = Tab(i); - + if( xt >= menuItemWidth ) continue; if( true ) { @@ -348,7 +331,7 @@ && isdigit(*s) && isdigit(*(s + 1)) && isdigit(*(s + 3)) && isdigit(*(s + 4)) && isdigit(*(s + 6)) && isdigit(*(s + 7)))) { // check if new recording: "10:10*", "1:10*", "01.01.06*" - + isnewrecording = true; // update status strncpy(buffer, s, strlen(s)); // make a copy buffer[strlen(s) - 1] = '\0'; // remove the '*' character @@ -367,7 +350,7 @@ } } xOff = x1 + Tab(i) + Config.decorBorderMenuItemSize; - + if( istimer ) { // timer menu switch( s[0] ) { @@ -402,11 +385,11 @@ if( isRunning ) menuPixmap->DrawText(cPoint(xOff, y), "*", ColorFg, ColorBg, font, AvailableTextWidth - xOff); - + } else if( isnewrecording ) { // recordings menu menuPixmap->DrawText(cPoint(xOff, y), buffer, ColorFg, ColorBg, font, AvailableTextWidth - xOff); - + // draw symbol "new" centered int gap = std::max(0, (Tab(i+1)-Tab(i)- font->Width(buffer) - bmNew->Width()) / 2); menuPixmap->DrawBitmap(cPoint(xOff + font->Width(buffer) + gap, y + (lh - bmNew->Height()) / 2), *bmNew, ColorFg, ColorBg); @@ -477,14 +460,14 @@ sDecorBorder ib; ib.Left = Config.decorBorderMenuItemSize; ib.Top = topBarHeight + marginItem + Config.decorBorderTopBarSize*2 + Config.decorBorderMenuItemSize + y; - + ib.Width = menuWidth - Config.decorBorderMenuItemSize*2; if( isScrolling ) { ib.Width -= scrollBarWidth; } - + ib.Width = menuItemWidth; - + ib.Height = fontHeight; ib.Size = Config.decorBorderMenuItemSize; ib.Type = Config.decorBorderMenuItemType; @@ -504,11 +487,11 @@ DecorBorderDraw(ib.Left, ib.Top, ib.Width, ib.Height, ib.Size, ib.Type, ib.ColorFg, ib.ColorBg, BorderMenuItem); - + if( !isScrolling ) { ItemBorderInsertUnique(ib); } - + SetEditableWidth(menuWidth - Tab(1)); } @@ -533,7 +516,7 @@ if (found) { if (!(s >= '0' && s <= '9')) { doBreak = true; - } + } } if (s >= '0' && s <= '9') { found = true; @@ -548,7 +531,7 @@ menuEntry = skipspace(text.substr(i).c_str()); } else { menuNumber = ""; - menuEntry = text.c_str(); + menuEntry = text.c_str(); } return menuEntry; } @@ -583,7 +566,7 @@ return cString::sprintf("pluginIcons/%s", p->Name()); } } catch (...) {} - } + } } else break; } @@ -591,10 +574,10 @@ } bool cFlatDisplayMenu::CheckProgressBar(const char *text) { - if (strlen(text) > 5 + if (strlen(text) > 5 && text[0] == '[' - && ((text[1] == '|')||(text[1] == ' ')) - && ((text[2] == '|')||(text[2] == ' ')) + && ((text[1] == '|')||(text[1] == ' ')) + && ((text[2] == '|')||(text[2] == ' ')) && text[strlen(text) - 1] == ']') return true; return false; @@ -629,7 +612,7 @@ cSchedulesLock schedulesLock; const cSchedules *schedules = cSchedules::Schedules(schedulesLock); const cEvent *Event = NULL; - + bool DrawProgress = true; cString buffer; int y = Index * itemChannelHeight; @@ -661,17 +644,17 @@ } menuPixmap->DrawRectangle(cRect(Config.decorBorderMenuItemSize, y, menuItemWidth, Height), ColorBg); - + int Left, Top, Width; int LeftName; Left = Config.decorBorderMenuItemSize + marginItem; Top = y; - + if( Channel->GroupSep() ) DrawProgress = false; float progress = 0.0; cString EventTitle = ""; - + cString ws = cString::sprintf("%d", Channels.MaxNumber()); int w = font->Width(ws); if( !Channel->GroupSep() ) @@ -683,52 +666,61 @@ Width = w; menuPixmap->DrawText(cPoint(Left, Top), buffer, ColorFg, ColorBg, font, Width, fontHeight, taRight); Left += Width + marginItem; - + int imageHeight = fontHeight; int imageLeft = Left; int imageTop = Top; - + int imageBGHeight = imageHeight; + int imageBGWidth = imageHeight*1.34; + if( !Channel->GroupSep() ) { - cImage *imgBG = imgLoader.LoadIcon("logo_background", imageHeight, imageHeight); + cImage *imgBG = imgLoader.LoadIcon("logo_background", imageHeight*1.34, imageHeight); if( imgBG ) { + imageBGHeight = imgBG->Height(); + imageBGWidth = imgBG->Width(); imageTop = Top + (fontHeight - imgBG->Height()) / 2; menuIconsBGPixmap->DrawImage( cPoint(imageLeft, imageTop), *imgBG ); } } - cImage *img = imgLoader.LoadLogo(Channel->Name(), imageHeight, imageHeight); + cImage *img = imgLoader.LoadLogo(Channel->Name(), imageBGWidth - 4, imageBGHeight - 4); if( img ) { - imageTop = Top + (fontHeight - img->Height()) / 2; + imageTop = Top + (imageBGHeight - img->Height()) / 2; + imageLeft = Left + (imageBGWidth - img->Width()) / 2; + menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img ); - Left += imageHeight + marginItem * 2; + Left += imageBGWidth + marginItem * 2; } else { bool isRadioChannel = ((!Channel->Vpid())&&(Channel->Apid(0))) ? true : false; if( isRadioChannel ) { - img = imgLoader.LoadIcon("radio", imageHeight, imageHeight); + img = imgLoader.LoadIcon("radio", imageBGWidth - 10, imageBGHeight - 10); if( img ) { - imageTop = Top + (fontHeight - img->Height()) / 2; + imageTop = Top + (imageBGHeight - img->Height()) / 2; + imageLeft = Left + (imageBGWidth - img->Width()) / 2; menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img ); - Left += imageHeight + marginItem * 2; + Left += imageBGWidth + marginItem * 2; } } else if( Channel->GroupSep() ) { - img = imgLoader.LoadIcon("changroup", imageHeight, imageHeight); + img = imgLoader.LoadIcon("changroup", imageBGWidth - 10, imageBGHeight - 10); if( img ) { - imageTop = Top + (fontHeight - img->Height()) / 2; + imageTop = Top + (imageBGHeight - img->Height()) / 2; + imageLeft = Left + (imageBGWidth - img->Width()) / 2; menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img ); - Left += imageHeight + marginItem * 2; + Left += imageBGWidth + marginItem * 2; } } else { - img = imgLoader.LoadIcon("tv", imageHeight, imageHeight); + img = imgLoader.LoadIcon("tv", imageBGWidth - 10, imageBGHeight - 10); if( img ) { - imageTop = Top + (fontHeight - img->Height()) / 2; + imageTop = Top + (imageBGHeight - img->Height()) / 2; + imageLeft = Left + (imageBGWidth - img->Width()) / 2; menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img ); - Left += imageHeight + marginItem * 2; + Left += imageBGWidth + marginItem * 2; } } } LeftName = Left; - + // event from channel const cSchedule *Schedule = schedules->GetSchedule( Channel->GetChannelID() ); if( Schedule ) { @@ -744,74 +736,87 @@ EventTitle = Event->Title(); } } - + if( WithProvider ) buffer = cString::sprintf("%s - %s", Channel->Provider(), Channel->Name()); else buffer = cString::sprintf("%s", Channel->Name()); - + if( Config.MenuChannelView == 1 ) { Width = menuItemWidth - LeftName; - menuPixmap->DrawText(cPoint(LeftName, Top), buffer, ColorFg, ColorBg, font, Width); + if( Channel->GroupSep() ) { + int lineTop = Top + (fontHeight - 3) / 2; + menuPixmap->DrawRectangle(cRect( Left, lineTop, menuItemWidth - Left, 3), ColorFg); + cString groupname = cString::sprintf(" %s ", *buffer); + menuPixmap->DrawText(cPoint(Left + (menuItemWidth / 10 * 2), Top), groupname, ColorFg, ColorBg, font, 0, 0, taCenter); + } else + menuPixmap->DrawText(cPoint(LeftName, Top), buffer, ColorFg, ColorBg, font, Width); } else { Width = menuItemWidth / 10*2; if( isScrolling ) Width = (menuItemWidth + scrollBarWidth) / 10*2; - + if( Config.MenuChannelView == 3 || Config.MenuChannelView == 4 ) Width = menuItemWidth - LeftName; - - menuPixmap->DrawText(cPoint(LeftName, Top), buffer, ColorFg, ColorBg, font, Width); - - Left += Width + marginItem; - - if( DrawProgress ) { - int PBTop = y + (itemChannelHeight-Config.MenuItemPadding)/2 - Config.decorProgressMenuItemSize/2 - Config.decorBorderMenuItemSize; - int PBLeft = Left; - int PBWidth = menuItemWidth/10; - if( Config.MenuChannelView == 3 || Config.MenuChannelView == 4 ) { - PBTop = Top + fontHeight + fontSmlHeight; - PBLeft = Left - Width - marginItem; - PBWidth = menuItemWidth - LeftName - marginItem*2 - Config.decorBorderMenuItemSize - scrollBarWidth; - + + if( Channel->GroupSep() ) { + int lineTop = Top + (fontHeight - 3) / 2; + menuPixmap->DrawRectangle(cRect( Left, lineTop, menuItemWidth - Left, 3), ColorFg); + cString groupname = cString::sprintf(" %s ", *buffer); + menuPixmap->DrawText(cPoint(Left + (menuItemWidth / 10 * 2), Top), groupname, ColorFg, ColorBg, font, 0, 0, taCenter); + } else { + menuPixmap->DrawText(cPoint(LeftName, Top), buffer, ColorFg, ColorBg, font, Width); + + Left += Width + marginItem; + + if( DrawProgress ) { + int PBTop = y + (itemChannelHeight-Config.MenuItemPadding)/2 - Config.decorProgressMenuItemSize/2 - Config.decorBorderMenuItemSize; + int PBLeft = Left; + int PBWidth = menuItemWidth/10; + if( Config.MenuChannelView == 3 || Config.MenuChannelView == 4 ) { + PBTop = Top + fontHeight + fontSmlHeight; + PBLeft = Left - Width - marginItem; + PBWidth = menuItemWidth - LeftName - marginItem*2 - Config.decorBorderMenuItemSize - scrollBarWidth; + + if( isScrolling ) + PBWidth += scrollBarWidth; + } + + Width = menuItemWidth/10; if( isScrolling ) - PBWidth += scrollBarWidth; + Width = (menuItemWidth + scrollBarWidth) / 10; + if( Current ) + ProgressBarDrawRaw(menuPixmap, menuPixmap, cRect( PBLeft, PBTop, PBWidth, Config.decorProgressMenuItemSize), + cRect( PBLeft, PBTop, PBWidth, Config.decorProgressMenuItemSize), progress, 100, + Config.decorProgressMenuItemCurFg, Config.decorProgressMenuItemCurBarFg, Config.decorProgressMenuItemCurBg, Config.decorProgressMenuItemType, false); + else + ProgressBarDrawRaw(menuPixmap, menuPixmap, cRect( PBLeft, PBTop, PBWidth, Config.decorProgressMenuItemSize), + cRect( PBLeft, PBTop, PBWidth, Config.decorProgressMenuItemSize), progress, 100, + Config.decorProgressMenuItemFg, Config.decorProgressMenuItemBarFg, Config.decorProgressMenuItemBg, Config.decorProgressMenuItemType, false); + Left += Width + marginItem; } - - Width = menuItemWidth/10; - if( isScrolling ) - Width = (menuItemWidth + scrollBarWidth) / 10; - if( Current ) - ProgressBarDrawRaw(menuPixmap, menuPixmap, cRect( PBLeft, PBTop, PBWidth, Config.decorProgressMenuItemSize), - cRect( PBLeft, PBTop, PBWidth, Config.decorProgressMenuItemSize), progress, 100, - Config.decorProgressMenuItemCurFg, Config.decorProgressMenuItemCurBarFg, Config.decorProgressMenuItemCurBg, Config.decorProgressMenuItemType, false); - else - ProgressBarDrawRaw(menuPixmap, menuPixmap, cRect( PBLeft, PBTop, PBWidth, Config.decorProgressMenuItemSize), - cRect( PBLeft, PBTop, PBWidth, Config.decorProgressMenuItemSize), progress, 100, - Config.decorProgressMenuItemFg, Config.decorProgressMenuItemBarFg, Config.decorProgressMenuItemBg, Config.decorProgressMenuItemType, false); - Left += Width + marginItem; - } - if( Config.MenuChannelView == 3 || Config.MenuChannelView == 4 ) { - Left = LeftName; - Top += fontHeight; - menuPixmap->DrawText(cPoint(Left, Top), EventTitle, ColorFg, ColorBg, fontSml, menuItemWidth - Left - marginItem ); - } else - menuPixmap->DrawText(cPoint(Left, Top), EventTitle, ColorFg, ColorBg, font, menuItemWidth - Left - marginItem ); + if( Config.MenuChannelView == 3 || Config.MenuChannelView == 4 ) { + Left = LeftName; + Top += fontHeight; + menuPixmap->DrawText(cPoint(Left, Top), EventTitle, ColorFg, ColorBg, fontSml, menuItemWidth - Left - marginItem ); + } else + menuPixmap->DrawText(cPoint(Left, Top), EventTitle, ColorFg, ColorBg, font, menuItemWidth - Left - marginItem ); + } } - + sDecorBorder ib; ib.Left = Config.decorBorderMenuItemSize; ib.Top = topBarHeight + marginItem + Config.decorBorderTopBarSize*2 + Config.decorBorderMenuItemSize + y; - + ib.Width = menuItemWidth - Config.decorBorderMenuItemSize*2; - + if( isScrolling ) { ib.Width -= scrollBarWidth; } - + ib.Width = menuItemWidth; - + ib.Height = Height; ib.Size = Config.decorBorderMenuItemSize; ib.Type = Config.decorBorderMenuItemType; @@ -831,20 +836,19 @@ DecorBorderDraw(ib.Left, ib.Top, ib.Width, ib.Height, ib.Size, ib.Type, ib.ColorFg, ib.ColorBg, BorderMenuItem); - + if( !isScrolling ) { ItemBorderInsertUnique(ib); } - if( Config.MenuChannelView == 4 && Event && Current ) { + if( Config.MenuChannelView == 4 && Current ) { DrawItemExtraEvent(Event, ""); } - + return true; } void cFlatDisplayMenu::DrawItemExtraEvent(const cEvent *Event, cString EmptyText) { - cLeft = menuItemWidth + Config.decorBorderMenuItemSize*2 + Config.decorBorderMenuContentSize + marginItem; if( isScrolling ) cLeft += scrollBarWidth; @@ -859,7 +863,7 @@ if( !isempty(Event->Description()) ) { text << Event->Description(); } - + if( Config.EpgAdditionalInfoShow ) { text << endl; const cComponents *Components = Event->Components(); @@ -930,16 +934,82 @@ } } else text << *EmptyText; - ContentCreate(cLeft, cTop, cWidth, cHeight, 2); - - ContentSet( text.str().c_str(), Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg) ); + + ComplexContent.Clear(); + ComplexContent.SetScrollSize(fontSmlHeight); + ComplexContent.SetScrollingActive(false); + ComplexContent.SetOsd(osd); + ComplexContent.SetPosition(cRect(cLeft, cTop, cWidth, cHeight)); + ComplexContent.SetBGColor(Theme.Color(clrMenuEventBg)); + + std::string mediaPath; + int mediaWidth = 0; + int mediaHeight = 0; + int mediaType = 0; + // TVScraper + static cPlugin *pTVScraper = cPluginManager::GetPlugin("tvscraper"); + static cPlugin *pScraper2Vdr = cPluginManager::GetPlugin("scraper2vdr"); + if( Config.TVScraperEPGInfoShowPoster && pScraper2Vdr ) { + ScraperGetPosterBanner call; + call.event = Event; + if (pScraper2Vdr->Service("GetPosterBanner", &call)) { + if ((call.type == tSeries) && call.banner.path.size() > 0) { + mediaWidth = cWidth - marginItem*2; + mediaHeight = 999; + mediaPath = call.banner.path; + mediaType = 1; + } else if (call.type == tMovie && call.poster.path.size() > 0) { + mediaWidth = cWidth/2 - marginItem*3; + mediaHeight = 999; + mediaPath = call.poster.path; + mediaType = 2; + } + } + } else if( Config.TVScraperEPGInfoShowPoster && pTVScraper ) { + TVScraperGetPosterOrBanner call; + call.event = Event; + if (pTVScraper->Service("TVScraperGetPosterOrBanner", &call)) { + if (call.type == typeSeries) { + mediaWidth = cWidth - marginItem*2; + mediaHeight = 999; + mediaType = 1; + } else if (call.type == typeMovie) { + mediaWidth = cWidth/2 - marginItem*3; + mediaHeight = 999; + mediaType = 2; + } + mediaPath = call.media.path; + } + } + + if( mediaPath.length() > 0 ) { + cImage *img = imgLoader.LoadFile(mediaPath.c_str(), mediaWidth, mediaHeight); + if( img && mediaType == 2 ) { + ComplexContent.AddImageWithFloatedText(img, CIP_Right, text.str().c_str(), cRect(marginItem, marginItem, cWidth - marginItem*2, cHeight - marginItem*2), + Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml); + } else if( img && mediaType == 1 ) { + ComplexContent.AddImage(img, cRect(marginItem, marginItem, img->Width(), img->Height()) ); + ComplexContent.AddText(text.str().c_str(), true, cRect(marginItem, marginItem + img->Height(), cWidth - marginItem*2, cHeight - marginItem*2), + Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml); + } else { + ComplexContent.AddText(text.str().c_str(), true, cRect(marginItem, marginItem, cWidth - marginItem*2, cHeight - marginItem*2), + Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml); + } + } else { + ComplexContent.AddText(text.str().c_str(), true, cRect(marginItem, marginItem, cWidth - marginItem*2, cHeight - marginItem*2), + Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml); + } + + ComplexContent.CreatePixmaps(Config.MenuContentFullSize); + + ComplexContent.Draw(); DecorBorderClearByFrom(BorderContent); if( Config.MenuContentFullSize ) - DecorBorderDraw(cLeft, cTop, cWidth, ContentGetHeight(), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType, + DecorBorderDraw(cLeft, cTop, cWidth, ComplexContent.ContentHeight(true), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType, Config.decorBorderMenuContentFg, Config.decorBorderMenuContentBg, BorderContent); else - DecorBorderDraw(cLeft, cTop, cWidth, ContentGetTextHeight(), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType, + DecorBorderDraw(cLeft, cTop, cWidth, ComplexContent.ContentHeight(false), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType, Config.decorBorderMenuContentFg, Config.decorBorderMenuContentBg, BorderContent); } @@ -948,7 +1018,7 @@ return false; const cChannel *Channel = Timer->Channel(); const cEvent *Event = Timer->Event(); - + cString buffer; int y = Index * itemTimerHeight; @@ -963,10 +1033,12 @@ if( isScrolling ) menuItemWidth -= scrollBarWidth; - tColor ColorFg, ColorBg; + tColor ColorFg, ColorBg, ColorExtraTextFg; + ColorExtraTextFg = Theme.Color(clrMenuItemExtraTextFont); if (Current) { ColorFg = Theme.Color(clrItemCurrentFont); ColorBg = Theme.Color(clrItemCurrentBg); + ColorExtraTextFg = Theme.Color(clrMenuItemExtraTextCurrentFont); } else { if( Selectable ) { @@ -987,7 +1059,7 @@ int imageHeight = fontHeight; int imageLeft = Left; int imageTop = Top; - + cString TimerIconName(""); if (!(Timer->HasFlags(tfActive))) { TimerIconName = "timerInactive"; @@ -997,7 +1069,7 @@ ColorFg = Theme.Color( clrMenuTimerItemRecordingFont ); } else TimerIconName = "timerActive"; - + img = imgLoader.LoadIcon(TimerIconName, imageHeight, imageHeight); if( img ) { imageTop = Top + (fontHeight - img->Height()) / 2; @@ -1016,41 +1088,50 @@ imageLeft = Left; - cImage *imgBG = imgLoader.LoadIcon("logo_background", imageHeight, imageHeight); + int imageBGHeight = imageHeight; + int imageBGWidth = imageHeight*1.34; + + cImage *imgBG = imgLoader.LoadIcon("logo_background", imageBGWidth, imageBGHeight); if( imgBG ) { + imageBGHeight = imgBG->Height(); + imageBGWidth = imgBG->Width(); imageTop = Top + (fontHeight - imgBG->Height()) / 2; menuIconsBGPixmap->DrawImage( cPoint(imageLeft, imageTop), *imgBG ); } - - img = imgLoader.LoadLogo(Channel->Name(), imageHeight, imageHeight); + + img = imgLoader.LoadLogo(Channel->Name(), imageBGWidth - 4, imageBGHeight - 4); if( img ) { - imageTop = Top + (fontHeight - img->Height()) / 2; + imageTop = Top + (imageBGHeight - img->Height()) / 2; + imageLeft = Left + (imageBGWidth - img->Width()) / 2; menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img ); } else { bool isRadioChannel = ((!Channel->Vpid())&&(Channel->Apid(0))) ? true : false; if( isRadioChannel ) { - img = imgLoader.LoadIcon("radio", imageHeight, imageHeight); + img = imgLoader.LoadIcon("radio", imageBGWidth - 10, imageBGHeight - 10); if( img ) { - imageTop = Top + (fontHeight - img->Height()) / 2; + imageTop = Top + (imageBGHeight - img->Height()) / 2; + imageLeft = Left + (imageBGWidth - img->Width()) / 2; menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img ); } } else if( Channel->GroupSep() ) { - img = imgLoader.LoadIcon("changroup", imageHeight, imageHeight); + img = imgLoader.LoadIcon("changroup", imageBGWidth - 10, imageBGHeight - 10); if( img ) { - imageTop = Top + (fontHeight - img->Height()) / 2; + imageTop = Top + (imageBGHeight - img->Height()) / 2; + imageLeft = Left + (imageBGWidth - img->Width()) / 2; menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img ); } } else { - img = imgLoader.LoadIcon("tv", imageHeight, imageHeight); + img = imgLoader.LoadIcon("tv", imageBGWidth - 10, imageBGHeight - 10); if( img ) { - imageTop = Top + (fontHeight - img->Height()) / 2; + imageTop = Top + (imageBGHeight - img->Height()) / 2; + imageLeft = Left + (imageBGWidth - img->Width()) / 2; menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img ); } } } - Left += imageHeight + marginItem * 2; - + Left += imageBGWidth + marginItem * 2; + cString day, name(""); if (Timer->WeekDays()) day = Timer->PrintDay(0, Timer->WeekDays(), false); @@ -1064,41 +1145,89 @@ char buffer[16]; strftime(buffer, sizeof(buffer), "%Y%m%d", &tm_r); day = buffer; - } + } const char *File = Setup.FoldersInTimerMenu ? NULL : strrchr(Timer->File(), FOLDERDELIMCHAR); if (File && strcmp(File + 1, TIMERMACRO_TITLE) && strcmp(File + 1, TIMERMACRO_EPISODE)) File++; - else + else File = Timer->File(); if( Config.MenuTimerView == 1 ) { - buffer = cString::sprintf("%s%s%s. %02d:%02d - %02d:%02d %s", - *name, *name && **name ? " " : "", *day, - Timer->Start() / 100, Timer->Start() % 100, - Timer->Stop() / 100, Timer->Stop() % 100, - File); + buffer = cString::sprintf("%s%s%s.", *name, *name && **name ? " " : "", *day); menuPixmap->DrawText(cPoint(Left, Top), buffer, ColorFg, ColorBg, font, menuItemWidth - Left - marginItem); + Left += font->Width("XXX 99. "); + buffer = cString::sprintf("%02d:%02d - %02d:%02d",Timer->Start() / 100, Timer->Start() % 100, Timer->Stop() / 100, Timer->Stop() % 100); + menuPixmap->DrawText(cPoint(Left, Top), buffer, ColorFg, ColorBg, font, menuItemWidth - Left - marginItem); + Left += font->Width("99:99 - 99:99 "); + if( Config.MenuItemParseTilde ) { + std::string tilde = File; + size_t found = tilde.find(" ~ "); + size_t found2 = tilde.find("~"); + if( found != string::npos ) { + std::string first = tilde.substr(0, found); + std::string second = tilde.substr(found +2, tilde.length() ); + + menuPixmap->DrawText(cPoint(Left, Top), first.c_str(), ColorFg, ColorBg, font, menuItemWidth - Left - marginItem); + int l = font->Width( first.c_str() ); + menuPixmap->DrawText(cPoint(Left + l, Top), second.c_str(), ColorExtraTextFg, ColorBg, font, menuItemWidth - Left - l - marginItem); + } else if ( found2 != string::npos ) { + std::string first = tilde.substr(0, found2); + std::string second = tilde.substr(found2 +1, tilde.length() ); + + menuPixmap->DrawText(cPoint(Left, Top), first.c_str(), ColorFg, ColorBg, font, menuItemWidth - Left - marginItem); + int l = font->Width( first.c_str() ); + l += font->Width("X"); + menuPixmap->DrawText(cPoint(Left + l, Top), second.c_str(), ColorExtraTextFg, ColorBg, font, menuItemWidth - Left - l - marginItem); + } else + menuPixmap->DrawText(cPoint(Left, Top), File, ColorFg, ColorBg, font, menuItemWidth - Left - marginItem); + } else { + menuPixmap->DrawText(cPoint(Left, Top), File, ColorFg, ColorBg, font, menuItemWidth - Left - marginItem); + } } else if( Config.MenuTimerView == 2 || Config.MenuTimerView == 3 ) { buffer = cString::sprintf("%s%s%s. %02d:%02d - %02d:%02d", *name, *name && **name ? " " : "", *day, Timer->Start() / 100, Timer->Start() % 100, Timer->Stop() / 100, Timer->Stop() % 100); menuPixmap->DrawText(cPoint(Left, Top), buffer, ColorFg, ColorBg, font, menuItemWidth - Left - marginItem); - menuPixmap->DrawText(cPoint(Left, Top + fontHeight), File, ColorFg, ColorBg, fontSml, menuItemWidth - Left - marginItem); + + if( Config.MenuItemParseTilde ) { + std::string tilde = File; + size_t found = tilde.find(" ~ "); + size_t found2 = tilde.find("~"); + if( found != string::npos ) { + std::string first = tilde.substr(0, found); + std::string second = tilde.substr(found +2, tilde.length() ); + + menuPixmap->DrawText(cPoint(Left, Top + fontHeight), first.c_str(), ColorFg, ColorBg, fontSml, menuItemWidth - Left - marginItem); + int l = fontSml->Width( first.c_str() ); + menuPixmap->DrawText(cPoint(Left + l, Top + fontHeight), second.c_str(), ColorExtraTextFg, ColorBg, fontSml, menuItemWidth - Left - l - marginItem); + } else if ( found2 != string::npos ) { + std::string first = tilde.substr(0, found2); + std::string second = tilde.substr(found2 +1, tilde.length() ); + + menuPixmap->DrawText(cPoint(Left, Top + fontHeight), first.c_str(), ColorFg, ColorBg, fontSml, menuItemWidth - Left - marginItem); + int l = fontSml->Width( first.c_str() ); + l += fontSml->Width("X"); + menuPixmap->DrawText(cPoint(Left + l, Top + fontHeight), second.c_str(), ColorExtraTextFg, ColorBg, fontSml, menuItemWidth - Left - l - marginItem); + } else + menuPixmap->DrawText(cPoint(Left, Top + fontHeight), File, ColorFg, ColorBg, fontSml, menuItemWidth - Left - marginItem); + } else { + menuPixmap->DrawText(cPoint(Left, Top + fontHeight), File, ColorFg, ColorBg, fontSml, menuItemWidth - Left - marginItem); + } } - + sDecorBorder ib; ib.Left = Config.decorBorderMenuItemSize; ib.Top = topBarHeight + marginItem + Config.decorBorderTopBarSize*2 + Config.decorBorderMenuItemSize + y; - + ib.Width = menuItemWidth - Config.decorBorderMenuItemSize*2; - + if( isScrolling ) { ib.Width -= scrollBarWidth; } - + ib.Width = menuItemWidth; - + ib.Height = Height; ib.Size = Config.decorBorderMenuItemSize; ib.Type = Config.decorBorderMenuItemType; @@ -1118,22 +1247,22 @@ DecorBorderDraw(ib.Left, ib.Top, ib.Width, ib.Height, ib.Size, ib.Type, ib.ColorFg, ib.ColorBg, BorderMenuItem); - + if( !isScrolling ) { ItemBorderInsertUnique(ib); } - + if( Config.MenuTimerView == 3 && Current ) { DrawItemExtraEvent(Event, tr("timer not enabled")); } - + return true; } bool cFlatDisplayMenu::SetItemEvent(const cEvent *Event, int Index, bool Current, bool Selectable, const cChannel *Channel, bool WithDate, eTimerMatch TimerMatch) { if( Config.MenuEventView == 0 ) return false; - + cImage *img = NULL; cString buffer; int y = Index * itemEventHeight; @@ -1167,7 +1296,7 @@ } menuPixmap->DrawRectangle(cRect(Config.decorBorderMenuItemSize, y, menuItemWidth, Height), ColorBg); - + int Left = 0, Top = 0, LeftSecond = 0; LeftSecond = Left = Config.decorBorderMenuItemSize + marginItem; Top = y; @@ -1191,52 +1320,73 @@ } Left += w + marginItem; - if( !Channel->GroupSep() ) { - cImage *imgBG = imgLoader.LoadIcon("logo_background", fontHeight, fontHeight); - if( imgBG ) { - imageTop = Top + (fontHeight - imgBG->Height()) / 2; - menuIconsBGPixmap->DrawImage( cPoint(Left, imageTop), *imgBG ); - } + int imageLeft = Left; + int imageBGHeight = fontHeight; + int imageBGWidth = fontHeight*1.34; + cImage *imgBG = imgLoader.LoadIcon("logo_background", imageBGWidth, imageBGHeight); + if( imgBG && !Channel->GroupSep() ) { + imageBGHeight = imgBG->Height(); + imageBGWidth = imgBG->Width(); + imageTop = Top + (fontHeight - imgBG->Height()) / 2; + menuIconsBGPixmap->DrawImage( cPoint(imageLeft, imageTop), *imgBG ); } - img = imgLoader.LoadLogo(Channel->Name(), fontHeight, fontHeight); + img = imgLoader.LoadLogo(Channel->Name(), imageBGWidth - 4, imageBGHeight - 4); if( img ) { - imageTop = Top + (fontHeight - img->Height()) / 2; - menuIconsPixmap->DrawImage( cPoint(Left, imageTop), *img ); + imageTop = Top + (imageBGHeight - img->Height()) / 2; + imageLeft = Left + (imageBGWidth - img->Width()) / 2; + menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img ); } else { bool isRadioChannel = ((!Channel->Vpid())&&(Channel->Apid(0))) ? true : false; if( isRadioChannel ) { - img = imgLoader.LoadIcon("radio", fontHeight, fontHeight); + img = imgLoader.LoadIcon("radio", imageBGWidth - 10, imageBGHeight - 10); if( img ) { - imageTop = Top + (fontHeight - img->Height()) / 2; - menuIconsPixmap->DrawImage( cPoint(Left, imageTop), *img ); + imageTop = Top + (imageBGHeight - img->Height()) / 2; + imageLeft = Left + (imageBGWidth - img->Width()) / 2; + menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img ); } } else if( Channel->GroupSep() ) { - img = imgLoader.LoadIcon("changroup", fontHeight, fontHeight); + img = imgLoader.LoadIcon("changroup", imageBGWidth - 10, imageBGHeight - 10); if( img ) { - imageTop = Top + (fontHeight - img->Height()) / 2; - menuIconsPixmap->DrawImage( cPoint(Left, imageTop), *img ); + imageTop = Top + (imageBGHeight - img->Height()) / 2; + imageLeft = Left + (imageBGWidth - img->Width()) / 2; + menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img ); } } else { - img = imgLoader.LoadIcon("tv", fontHeight, fontHeight); + img = imgLoader.LoadIcon("tv", imageBGWidth - 10, imageBGHeight - 10); if( img ) { - imageTop = Top + (fontHeight - img->Height()) / 2; - menuIconsPixmap->DrawImage( cPoint(Left, imageTop), *img ); + imageTop = Top + (imageBGHeight - img->Height()) / 2; + imageLeft = Left + (imageBGWidth - img->Width()) / 2; + menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img ); } } } - - Left += fontHeight + marginItem * 2; + Left += imageBGWidth + marginItem * 2; LeftSecond = Left; - - w = menuWidth / 10 * 2; - menuPixmap->DrawText(cPoint(Left, Top), Channel->ShortName(true), ColorFg, ColorBg, font, w); + + cString channame; + w = menuItemWidth / 10 * 2; + if( Config.MenuEventView == 2 || Config.MenuEventView == 3 ) { + channame = Channel->Name(); + w = font->Width(channame); + } else + channame = Channel->ShortName(true); + + if( Channel->GroupSep() ) { + int lineTop = Top + (fontHeight - 3) / 2; + menuPixmap->DrawRectangle(cRect( Left, lineTop, menuItemWidth - Left, 3), ColorFg); + Left += w / 2; + cString groupname = cString::sprintf(" %s ", *channame); + menuPixmap->DrawText(cPoint(Left, Top), groupname, ColorFg, ColorBg, font, 0, 0, taCenter); + } else + menuPixmap->DrawText(cPoint(Left, Top), channame, ColorFg, ColorBg, font, w); + Left += w + marginItem * 2; - + if( Event ) { int PBWidth = menuItemWidth/20; time_t now = time(NULL); - + if( (now >= (Event->StartTime() - 2*60) ) ) { int total = Event->EndTime() - Event->StartTime(); if( total >= 0 ) { @@ -1249,8 +1399,8 @@ int PBTop = y + (itemEventHeight - Config.MenuItemPadding)/2 - Config.decorProgressMenuItemSize/2 - Config.decorBorderMenuItemSize; int PBLeft = Left; int PBHeight = Config.decorProgressMenuItemSize; - - + + if( (Config.MenuEventView == 2 || Config.MenuEventView == 3) ) { PBTop = y + fontHeight + fontSmlHeight + marginItem; PBWidth = menuItemWidth - LeftSecond - scrollBarWidth - marginItem * 2; @@ -1260,7 +1410,7 @@ PBLeft = LeftSecond; PBHeight = Config.decorProgressMenuItemSize / 2; } - + if( Current ) ProgressBarDrawRaw(menuPixmap, menuPixmap, cRect( PBLeft, PBTop, PBWidth, PBHeight), cRect( PBLeft, PBTop, PBWidth, PBHeight), progress, 100, @@ -1280,23 +1430,23 @@ w = fontSml->Width("XXX 99. ") + marginItem; else w = font->Width("XXX 99. ") + marginItem; - + struct tm tm_r; time_t Day = Event->StartTime(); localtime_r(&Day, &tm_r); char buf[8]; strftime(buf, sizeof(buf), "%2d", &tm_r); - + cString DateString = cString::sprintf("%s %s. ", *WeekDayName( (time_t)Event->StartTime()), buf ); if( (Config.MenuEventView == 2 || Config.MenuEventView == 3) && Channel ) { menuPixmap->DrawText(cPoint(LeftSecond, Top + fontHeight), DateString, ColorFg, ColorBg, fontSml, w); LeftSecond += w + marginItem; } else menuPixmap->DrawText(cPoint(Left, Top), DateString, ColorFg, ColorBg, font, w, fontHeight, taRight); - + Left += w + marginItem; } - + int imageHeight = fontHeight; if( (Config.MenuEventView == 2 || Config.MenuEventView == 3) && Channel && Event && Selectable ) { Top += fontHeight; @@ -1312,7 +1462,7 @@ menuPixmap->DrawText(cPoint(Left, Top), Event->GetTimeString(), ColorFg, ColorBg, font); Left += font->Width( Event->GetTimeString() ) + marginItem; } - + if( TimerMatch == tmFull ) { img = imgLoader.LoadIcon("timer_full", imageHeight, imageHeight); if( img ) { @@ -1334,7 +1484,7 @@ imageTop = Top; menuIconsPixmap->DrawImage( cPoint(Left, imageTop), *img ); } - } + } Left += imageHeight + marginItem; if( (Config.MenuEventView == 2 || Config.MenuEventView == 3) && Channel ) { @@ -1366,7 +1516,10 @@ std::size_t found = sep.find(" -"); if( found >= 10 ) { std::string date = sep.substr(found - 10, 10); - menuPixmap->DrawText(cPoint(Left, Top), date.c_str(), ColorFg, ColorBg, font, menuItemWidth - Left - marginItem); + int lineTop = Top + (fontHeight - 3) / 2; + menuPixmap->DrawRectangle(cRect( 0, lineTop, menuItemWidth, 3), ColorFg); + cString datespace = cString::sprintf(" %s ", date.c_str()); + menuPixmap->DrawText(cPoint(LeftSecond + menuWidth / 10 * 2, Top), datespace, ColorFg, ColorBg, font, 0, 0, taCenter); } else menuPixmap->DrawText(cPoint(Left, Top), Event->Title(), ColorFg, ColorBg, font, menuItemWidth - Left - marginItem); } else @@ -1380,15 +1533,15 @@ sDecorBorder ib; ib.Left = Config.decorBorderMenuItemSize; ib.Top = topBarHeight + marginItem + Config.decorBorderTopBarSize*2 + Config.decorBorderMenuItemSize + y; - + ib.Width = menuItemWidth - Config.decorBorderMenuItemSize*2; - + if( isScrolling ) { ib.Width -= scrollBarWidth; } - + ib.Width = menuItemWidth; - + ib.Height = Height; ib.Size = Config.decorBorderMenuItemSize; ib.Type = Config.decorBorderMenuItemType; @@ -1408,15 +1561,15 @@ DecorBorderDraw(ib.Left, ib.Top, ib.Width, ib.Height, ib.Size, ib.Type, ib.ColorFg, ib.ColorBg, BorderMenuItem); - + if( !isScrolling ) { ItemBorderInsertUnique(ib); } - if( Config.MenuEventView == 3 ) { + if( Config.MenuEventView == 3 && Current ) { DrawItemExtraEvent(Event, ""); } - + return true; } @@ -1426,6 +1579,7 @@ cString buffer; cString RecName = GetRecordingName(Recording, Level, Total == 0); + int y = Index * itemRecordingHeight; int Height = fontHeight; @@ -1455,7 +1609,7 @@ ColorBg = Theme.Color(clrItemBg); } } - + menuPixmap->DrawRectangle(cRect(Config.decorBorderMenuItemSize, y, menuItemWidth, Height), ColorBg); cImage *img = NULL; cImage *imgRecNew = imgLoader.LoadIcon("recording_new", fontHeight, fontHeight); @@ -1467,7 +1621,7 @@ Top = y; if( Config.MenuRecordingView == 1 ) { - int LeftWidth = Left + fontHeight + imgRecNew->Width() + imgRecCut->Width() + + int LeftWidth = Left + fontHeight + imgRecNew->Width() + imgRecCut->Width() + marginItem * 3 + font->Width("99.99.99 99:99 99:99 "); if( Total == 0 ) { @@ -1476,14 +1630,14 @@ menuIconsPixmap->DrawImage( cPoint(Left, Top), *img ); Left += fontHeight + marginItem; } - + //int Minutes = max(0, (Recording->LengthInSeconds() + 30) / 60); - int Minutes = (Recording->LengthInSeconds() + 30) / 60; + int Minutes = (Recording->LengthInSeconds() + 30) / 60; cString Length = cString::sprintf("%02d:%02d", Minutes / 60, Minutes % 60); buffer = cString::sprintf("%s %s %s ", *ShortDateString(Recording->Start()), *TimeString(Recording->Start()), *Length); menuPixmap->DrawText(cPoint(Left, Top), buffer, ColorFg, ColorBg, font, menuItemWidth - Left - marginItem); - + Left += font->Width( buffer ); if( Recording->IsNew() ) { if( imgRecNew ) { @@ -1520,7 +1674,7 @@ buffer = cString::sprintf(" (%s)", *ShortDateString(GetLastRecTimeFromFolder(Recording, Level))); menuPixmap->DrawText(cPoint(Left, Top), buffer, ColorExtraTextFg, ColorBg, font, menuItemWidth - Left - marginItem); } - + menuPixmap->DrawText(cPoint(LeftWidth, Top), RecName, ColorFg, ColorBg, font, menuItemWidth - LeftWidth - marginItem); LeftWidth += font->Width(RecName) + marginItem*2; } else if( Total == -1 ) { @@ -1545,13 +1699,13 @@ menuPixmap->DrawText(cPoint(Left, Top), RecName, ColorFg, ColorBg, font, menuItemWidth - Left - marginItem - ImagesWidth); Top += fontHeight; - - int Minutes = (Recording->LengthInSeconds() + 30) / 60; + + int Minutes = (Recording->LengthInSeconds() + 30) / 60; cString Length = cString::sprintf("%02d:%02d", Minutes / 60, Minutes % 60); buffer = cString::sprintf("%s %s %s ", *ShortDateString(Recording->Start()), *TimeString(Recording->Start()), *Length); menuPixmap->DrawText(cPoint(Left, Top), buffer, ColorFg, ColorBg, fontSml, menuItemWidth - Left - marginItem); - + Top -= fontHeight; Left = menuItemWidth - ImagesWidth; if( Recording->IsNew() ) { @@ -1604,15 +1758,15 @@ sDecorBorder ib; ib.Left = Config.decorBorderMenuItemSize; ib.Top = topBarHeight + marginItem + Config.decorBorderTopBarSize*2 + Config.decorBorderMenuItemSize + y; - + ib.Width = menuItemWidth - Config.decorBorderMenuItemSize*2; - + if( isScrolling ) { ib.Width -= scrollBarWidth; } - + ib.Width = menuItemWidth; - + ib.Height = Height; ib.Size = Config.decorBorderMenuItemSize; ib.Type = Config.decorBorderMenuItemType; @@ -1632,15 +1786,15 @@ DecorBorderDraw(ib.Left, ib.Top, ib.Width, ib.Height, ib.Size, ib.Type, ib.ColorFg, ib.ColorBg, BorderMenuItem); - + if( !isScrolling ) { ItemBorderInsertUnique(ib); } - + if( Config.MenuRecordingView == 3 && Current ) { DrawItemExtraRecording(Recording, tr("no recording info")); } - + return true; } @@ -1648,6 +1802,10 @@ if( !Event ) return; + #ifdef DEBUGEPGTIME + uint32_t tick0 = GetMsTicks(); + #endif + ShowEvent = true; ShowRecording = false; ShowText = false; @@ -1658,7 +1816,7 @@ Config.decorBorderMenuContentSize + Config.decorBorderMenuContentHeadSize; cWidth = menuWidth - Config.decorBorderMenuContentSize*2; cHeight = osdHeight - (topBarHeight + Config.decorBorderTopBarSize*2 + - buttonsHeight + Config.decorBorderButtonSize*2 + marginItem*3 + + buttonsHeight + Config.decorBorderButtonSize*2 + marginItem*3 + chHeight + Config.decorBorderMenuContentHeadSize*2 + Config.decorBorderMenuContentSize*2); if( !ButtonsDrawn() ) @@ -1684,15 +1842,14 @@ DecorBorderDraw(chLeft, chTop, chWidth, chHeight, Config.decorBorderMenuContentHeadSize, Config.decorBorderMenuContentHeadType, Config.decorBorderMenuContentHeadFg, Config.decorBorderMenuContentHeadBg); - + // Description - ostringstream text; + ostringstream text, textAdditional; if( !isempty(Event->Description()) ) { text << Event->Description(); } - + if( Config.EpgAdditionalInfoShow ) { - text << endl; const cComponents *Components = Event->Components(); if (Components) { ostringstream audio; @@ -1705,15 +1862,15 @@ switch (p->stream) { case sc_video_MPEG2: if (p->description) - text << endl << tr("Video") << ": " << p->description << " (MPEG2)"; + textAdditional << tr("Video") << ": " << p->description << " (MPEG2)"; else - text << endl << tr("Video") << ": MPEG2"; + textAdditional << tr("Video") << ": MPEG2"; break; case sc_video_H264_AVC: if (p->description) - text << endl << tr("Video") << ": " << p->description << " (H.264)"; + textAdditional << tr("Video") << ": " << p->description << " (H.264)"; else - text << endl << tr("Video") << ": H.264"; + textAdditional << tr("Video") << ": H.264"; break; case sc_audio_MP2: @@ -1753,31 +1910,352 @@ break; } } - if (audio.str().length() > 0) - text << endl << tr("Audio") << ": "<< audio.str(); - if (subtitle.str().length() > 0) - text << endl << tr("Subtitle") << ": "<< subtitle.str(); + if (audio.str().length() > 0) { + if( textAdditional.str().length() > 0 ) + textAdditional << endl; + textAdditional << tr("Audio") << ": "<< audio.str(); + } if (subtitle.str().length() > 0) { + if( textAdditional.str().length() > 0 ) + textAdditional << endl; + textAdditional << endl << tr("Subtitle") << ": "<< subtitle.str(); + } } } - - bool contentScrollable = ContentWillItBeScrollable(cWidth, cHeight, text.str().c_str(), 0); - if( contentScrollable ) { - cWidth -= scrollBarWidth; - } - ContentCreate(cLeft, cTop, cWidth, cHeight, 0); - - ContentSet( text.str().c_str(), Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg) ); - if( ContentScrollable() ) { - DrawScrollbar(ContentScrollTotal(), ContentScrollOffset(), ContentVisibleLines(), contentTop - scrollBarTop, ContentGetHeight(), ContentScrollOffset() > 0, ContentScrollOffset() + ContentVisibleLines() < ContentScrollTotal(), true); + #ifdef DEBUGEPGTIME + uint32_t tick1 = GetMsTicks(); + dsyslog("SetEvent info-text time: %d ms", tick1 - tick0); + #endif + + std::ostringstream sstrReruns; + if( Config.EpgRerunsShow ) { + // lent from nopacity + cPlugin *epgSearchPlugin = cPluginManager::GetPlugin("epgsearch"); + if (epgSearchPlugin && !isempty(Event->Title())) { + Epgsearch_searchresults_v1_0 data; + std::string strQuery = Event->Title(); + data.useSubTitle = false; + + data.query = (char *)strQuery.c_str(); + data.mode = 0; + data.channelNr = 0; + data.useTitle = true; + data.useDescription = false; + + if (epgSearchPlugin->Service("Epgsearch-searchresults-v1.0", &data)) { + cList* list = data.pResultList; + if (list && (list->Count() > 1)) { + int i = 0; + for (Epgsearch_searchresults_v1_0::cServiceSearchResult *r = list->First(); r && i < 5; r = list->Next(r)) { + if ((Event->ChannelID() == r->event->ChannelID()) && (Event->StartTime() == r->event->StartTime())) + continue; + i++; + sstrReruns << *DayDateTime(r->event->StartTime()); + cChannel *channel = Channels.GetByChannelID(r->event->ChannelID(), true, true); + if (channel) { + sstrReruns << ", " << channel->Number() << " -"; + sstrReruns << " " << channel->ShortName(true); + } + sstrReruns << ": " << r->event->Title(); + //if (!isempty(r->event->ShortText())) + // sstrReruns << "~" << r->event->ShortText(); + sstrReruns << std::endl; + } + delete list; + } + } + } } + #ifdef DEBUGEPGTIME + uint32_t tick2 = GetMsTicks(); + dsyslog("SetEvent reruns time: %d ms", tick2 - tick1); + #endif + + bool Scrollable = false; + bool FirstRun = true; + + do { + if( Scrollable ) { + FirstRun = false; + cWidth -= scrollBarWidth; + } + + ComplexContent.Clear(); + ComplexContent.SetOsd(osd); + ComplexContent.SetPosition(cRect(cLeft, cTop, cWidth, cHeight)); + ComplexContent.SetBGColor(Theme.Color(clrMenuRecBg)); + ComplexContent.SetScrollSize(fontHeight); + ComplexContent.SetScrollingActive(true); + + int ContentTop = marginItem; + + ostringstream series_info, movie_info; + + std::vector actors_path; + std::vector actors_name; + std::vector actors_role; + + std::string mediaPath; + int mediaWidth = 0; + int mediaHeight = 0; + + #ifdef DEBUGEPGTIME + uint32_t tick3 = GetMsTicks(); + #endif + + // TVScraper + static cPlugin *pTVScraper = cPluginManager::GetPlugin("tvscraper"); + static cPlugin *pScraper2Vdr = cPluginManager::GetPlugin("scraper2vdr"); + if( (Config.TVScraperEPGInfoShowPoster || Config.TVScraperEPGInfoShowActors) && pScraper2Vdr ) { + ScraperGetEventType call; + call.event = Event; + int seriesId = 0; + int episodeId = 0; + int movieId = 0; + + if (pScraper2Vdr->Service("GetEventType", &call)) { + seriesId = call.seriesId; + episodeId = call.episodeId; + movieId = call.movieId; + } + if( seriesId > 0 ) { + cSeries series; + series.seriesId = seriesId; + series.episodeId = episodeId; + if (pScraper2Vdr->Service("GetSeries", &series)) { + if( series.banners.size() > 0 ) + mediaPath = series.banners[0].path; + mediaWidth = cWidth/2 - marginItem*2; + mediaHeight = cHeight - marginItem*2 - fontHeight - 6; + if( Config.TVScraperEPGInfoShowActors ) { + for( unsigned int i = 0; i < series.actors.size(); i++ ) { + if( imgLoader.FileExits(series.actors[i].actorThumb.path) ) { + actors_path.push_back(series.actors[i].actorThumb.path); + actors_name.push_back(series.actors[i].name); + actors_role.push_back(series.actors[i].role); + } + } + } + if( series.name.length() > 0 ) + series_info << tr("name: ") << series.name << endl; + if( series.firstAired.length() > 0 ) + series_info << tr("first aired: ") << series.firstAired << endl; + if( series.network.length() > 0 ) + series_info << tr("network: ") << series.network << endl; + if( series.genre.length() > 0 ) + series_info << tr("genre: ") << series.genre << endl; + if( series.rating > 0 ) + series_info << tr("rating: ") << series.rating << endl; + if( series.status.length() > 0 ) + series_info << tr("status: ") << series.status << endl; + if( series.episode.season > 0 ) + series_info << tr("season number: ") << series.episode.season << endl; + if( series.episode.number > 0 ) + series_info << tr("episode number: ") << series.episode.number << endl; + } + } else if (movieId > 0) { + cMovie movie; + movie.movieId = movieId; + if (pScraper2Vdr->Service("GetMovie", &movie)) { + mediaPath = movie.poster.path; + mediaWidth = cWidth/2 - marginItem*3; + mediaHeight = cHeight - marginItem*2 - fontHeight - 6; + if( Config.TVScraperEPGInfoShowActors ) { + for( unsigned int i = 0; i < movie.actors.size(); i++ ) { + if( imgLoader.FileExits(movie.actors[i].actorThumb.path) ) { + actors_path.push_back(movie.actors[i].actorThumb.path); + actors_name.push_back(movie.actors[i].name); + actors_role.push_back(movie.actors[i].role); + } + } + } + if( movie.title.length() > 0 ) + movie_info << tr("title: ") << movie.title << endl; + if( movie.originalTitle.length() > 0 ) + movie_info << tr("original title: ") << movie.originalTitle << endl; + if( movie.collectionName.length() > 0 ) + movie_info << tr("collection name: ") << movie.collectionName << endl; + if( movie.genres.length() > 0 ) + movie_info << tr("genre: ") << movie.genres << endl; + if( movie.releaseDate.length() > 0 ) + movie_info << tr("release date: ") << movie.releaseDate << endl; + if( movie.popularity > 0 ) + movie_info << tr("popularity: ") << movie.popularity << endl; + if( movie.voteAverage > 0 ) + movie_info << tr("vote average: ") << movie.voteAverage << endl; + } + } + } else if( (Config.TVScraperEPGInfoShowPoster || Config.TVScraperEPGInfoShowActors) && pTVScraper ) { + TVScraperGetFullInformation call; + call.event = Event; + call.isRecording = false; + if (pTVScraper->Service("TVScraperGetFullInformation", &call)) { + if (call.type == typeSeries) { + mediaWidth = cWidth/2 - marginItem*2; + mediaHeight = cHeight - marginItem*2 - fontHeight - 6; + mediaPath = call.banner.path; + } else if (call.type == typeMovie) { + mediaWidth = cWidth/2 - marginItem*3; + mediaHeight = cHeight - marginItem*2 - fontHeight - 6; + if( call.posters.size() > 0 ) + mediaPath = call.posters[0].path; + } + if( Config.TVScraperEPGInfoShowActors ) { + for( unsigned int i = 0; i < call.actors.size(); i++ ) { + if( imgLoader.FileExits(call.actors[i].thumb.path) ) { + actors_path.push_back(call.actors[i].thumb.path); + actors_name.push_back(call.actors[i].name); + actors_role.push_back(call.actors[i].role); + } + } + } + } + } + #ifdef DEBUGEPGTIME + uint32_t tick4 = GetMsTicks(); + dsyslog("SetEvent tvscraper time: %d ms", tick4 - tick3); + #endif - if( Config.MenuContentFullSize || ContentScrollable() ) - DecorBorderDraw(cLeft, cTop, cWidth, ContentGetHeight(), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType, + if( mediaPath.length() > 0 ) { + cImage *img = imgLoader.LoadFile(mediaPath.c_str(), mediaWidth, mediaHeight); + if( img ) { + ComplexContent.AddText(tr("Description"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font); + ContentTop += fontHeight; + ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuEventFontTitle)); + ContentTop += 6; + ComplexContent.AddImageWithFloatedText(img, CIP_Right, text.str().c_str(), cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2), + Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), font); + } else if( text.str().length() > 0 ) { + ComplexContent.AddText(tr("Description"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font); + ContentTop += fontHeight; + ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuEventFontTitle)); + ContentTop += 6; + ComplexContent.AddText(text.str().c_str(), true, cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2), + Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), font); + } + } else if( text.str().length() > 0 ) { + ComplexContent.AddText(tr("Description"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font); + ContentTop += fontHeight; + ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuEventFontTitle)); + ContentTop += 6; + ComplexContent.AddText(text.str().c_str(), true, cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2), + Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), font); + } + + if( movie_info.str().length() > 0 ) { + ContentTop = ComplexContent.BottomContent() + fontHeight; + ComplexContent.AddText(tr("Movie information"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font); + ContentTop += fontHeight; + ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuEventFontTitle)); + ContentTop += 6; + ComplexContent.AddText(movie_info.str().c_str(), true, cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2), + Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), font); + } + + if( series_info.str().length() > 0 ) { + ContentTop = ComplexContent.BottomContent() + fontHeight; + ComplexContent.AddText(tr("Series information"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font); + ContentTop += fontHeight; + ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuEventFontTitle)); + ContentTop += 6; + ComplexContent.AddText(series_info.str().c_str(), true, cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2), + Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), font); + } + #ifdef DEBUGEPGTIME + uint32_t tick5 = GetMsTicks(); + dsyslog("SetEvent epg-text time: %d ms", tick5 - tick4); + #endif + + if( Config.TVScraperEPGInfoShowActors && actors_path.size() > 0 ) { + ContentTop = ComplexContent.BottomContent() + fontHeight; + ComplexContent.AddText(tr("Actors"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font); + ContentTop += fontHeight; + ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuEventFontTitle)); + ContentTop += 6; + + int actorsPerLine = 6; + int numActors = actors_path.size(); + int actorWidth = cWidth / actorsPerLine - marginItem*4; + int picsPerLine = (cWidth - marginItem*2) / actorWidth; + int picLines = numActors / picsPerLine; + if( numActors%picsPerLine != 0 ) + picLines++; + int actorMargin = ((cWidth - marginItem*2) - actorWidth*actorsPerLine) / (actorsPerLine-1); + int x = marginItem; + int y = ContentTop; + int actor = 0; + for (int row = 0; row < picLines; row++) { + for (int col = 0; col < picsPerLine; col++) { + if (actor == numActors) + break; + std::string path = actors_path[actor]; + cImage *img = imgLoader.LoadFile(path.c_str(), actorWidth, 999); + if( img ) { + ComplexContent.AddImage(img, cRect(x, y, 0, 0)); + std::string name = actors_name[actor]; + std::stringstream sstrRole; + if( actors_role[actor].length() > 0 ) + sstrRole << "\"" << actors_role[actor] << "\""; + std::string role = sstrRole.str(); + ComplexContent.AddText(name.c_str(), false, cRect(x, y + img->Height() + marginItem, actorWidth, 0), Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, actorWidth, fontSmlHeight, taCenter); + ComplexContent.AddText(role.c_str(), false, cRect(x, y + img->Height() + marginItem + fontSmlHeight, actorWidth, 0), Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, actorWidth, fontSmlHeight, taCenter); + } + x += actorWidth + actorMargin; + actor++; + } + x = marginItem; + y = ComplexContent.BottomContent() + fontHeight; + } + } + #ifdef DEBUGEPGTIME + uint32_t tick6 = GetMsTicks(); + dsyslog("SetEvent actor time: %d ms", tick6 - tick5); + #endif + + if( sstrReruns.str().length() > 0 ) { + ContentTop = ComplexContent.BottomContent() + fontHeight; + ComplexContent.AddText(tr("Reruns"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font); + ContentTop += fontHeight; + ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuEventFontTitle)); + ContentTop += 6; + ComplexContent.AddText(sstrReruns.str().c_str(), true, cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2), + Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), font); + } + + if( textAdditional.str().length() > 0 ) { + ContentTop = ComplexContent.BottomContent() + fontHeight; + ComplexContent.AddText(tr("Video information"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font); + ContentTop += fontHeight; + ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuEventFontTitle)); + ContentTop += 6; + ComplexContent.AddText(textAdditional.str().c_str(), true, cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2), + Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), font); + } + Scrollable = ComplexContent.Scrollable(cHeight - marginItem*2); + } while( Scrollable && FirstRun ); + + if( Config.MenuContentFullSize || Scrollable ) { + ComplexContent.CreatePixmaps(true); + } else + ComplexContent.CreatePixmaps(false); + + ComplexContent.Draw(); + + if( Scrollable ) + DrawScrollbar(ComplexContent.ScrollTotal(), ComplexContent.ScrollOffset(), ComplexContent.ScrollShown(), ComplexContent.Top() - scrollBarTop, ComplexContent.Height(), ComplexContent.ScrollOffset() > 0, ComplexContent.ScrollOffset() + ComplexContent.ScrollShown() < ComplexContent.ScrollTotal(), true); + + if( Config.MenuContentFullSize || Scrollable ) + DecorBorderDraw(cLeft, cTop, cWidth, ComplexContent.ContentHeight(true), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType, Config.decorBorderMenuContentFg, Config.decorBorderMenuContentBg); else - DecorBorderDraw(cLeft, cTop, cWidth, ContentGetTextHeight(), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType, + DecorBorderDraw(cLeft, cTop, cWidth, ComplexContent.ContentHeight(false), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType, Config.decorBorderMenuContentFg, Config.decorBorderMenuContentBg); + + #ifdef DEBUGEPGTIME + uint32_t tick7 = GetMsTicks(); + dsyslog("SetEvent total time: %d ms", tick7 - tick0); + //dsyslog("SetEvent time: %d", tick7); + #endif } void cFlatDisplayMenu::DrawItemExtraRecording(const cRecording *Recording, cString EmptyText) { @@ -1790,13 +2268,15 @@ buttonsHeight + Config.decorBorderButtonSize*2 + marginItem*3 + Config.decorBorderMenuContentSize*2); ostringstream text; + const cEvent *Event = NULL; if( Recording ) { const cRecordingInfo *recInfo = Recording->Info(); + Event = recInfo->GetEvent(); text.imbue(std::locale("")); if (!isempty(recInfo->Description())) text << recInfo->Description() << endl << endl; - + // lent from skinelchi if( Config.RecordingAdditionalInfoShow ) { cChannel *channel = Channels.GetByChannelID(((cRecordingInfo *)recInfo)->ChannelID()); @@ -1982,16 +2462,100 @@ } else text << *EmptyText; - ContentCreate(cLeft, cTop, cWidth, cHeight, 2); - - ContentSet( text.str().c_str(), Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg) ); + ComplexContent.Clear(); + ComplexContent.SetScrollSize(fontSmlHeight); + ComplexContent.SetScrollingActive(false); + ComplexContent.SetOsd(osd); + ComplexContent.SetPosition(cRect(cLeft, cTop, cWidth, cHeight)); + ComplexContent.SetBGColor(Theme.Color(clrMenuRecBg)); + + std::string mediaPath; + int mediaWidth = 0; + int mediaHeight = 0; + int mediaType = 0; + + // TVScraper + static cPlugin *pTVScraper = cPluginManager::GetPlugin("tvscraper"); + static cPlugin *pScraper2Vdr = cPluginManager::GetPlugin("scraper2vdr"); + if( Config.TVScraperRecInfoShowPoster && pScraper2Vdr ) { + ScraperGetEventType call; + call.recording = Recording; + int seriesId = 0; + int episodeId = 0; + int movieId = 0; + + if (pScraper2Vdr->Service("GetEventType", &call)) { + seriesId = call.seriesId; + episodeId = call.episodeId; + movieId = call.movieId; + } + if( seriesId > 0 ) { + cSeries series; + series.seriesId = seriesId; + series.episodeId = episodeId; + if (pScraper2Vdr->Service("GetSeries", &series)) { + if( series.banners.size() > 0 ) + mediaPath = series.banners[0].path; + mediaWidth = cWidth - marginItem*2; + mediaHeight = 999; + mediaType = 1; + } + } else if (movieId > 0) { + cMovie movie; + movie.movieId = movieId; + if (pScraper2Vdr->Service("GetMovie", &movie)) { + mediaPath = movie.poster.path; + mediaWidth = cWidth/2 - marginItem*3; + mediaHeight = 999; + mediaType = 2; + } + } + } else if( Config.TVScraperRecInfoShowPoster && pTVScraper ) { + TVScraperGetFullInformation call; + call.event = Event; + call.isRecording = true; + if (pTVScraper->Service("TVScraperGetFullInformation", &call)) { + if (call.type == typeSeries) { + mediaWidth = cWidth - marginItem*2; + mediaHeight = 999; + mediaType = 1; + mediaPath = call.banner.path; + } else if (call.type == typeMovie) { + mediaWidth = cWidth/2 - marginItem*3; + mediaHeight = 999; + mediaType = 2; + if( call.posters.size() > 0 ) + mediaPath = call.posters[0].path; + } + } + } + if( mediaPath.length() > 0 ) { + cImage *img = imgLoader.LoadFile(mediaPath.c_str(), mediaWidth, mediaHeight); + if( img && mediaType == 2 ) { + ComplexContent.AddImageWithFloatedText(img, CIP_Right, text.str().c_str(), cRect(marginItem, marginItem, cWidth - marginItem*2, cHeight - marginItem*2), + Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), fontSml); + } else if( img && mediaType == 1 ) { + ComplexContent.AddImage(img, cRect(marginItem, marginItem, img->Width(), img->Height()) ); + ComplexContent.AddText(text.str().c_str(), true, cRect(marginItem, marginItem + img->Height(), cWidth - marginItem*2, cHeight - marginItem*2), + Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), fontSml); + } else { + ComplexContent.AddText(text.str().c_str(), true, cRect(marginItem, marginItem, cWidth - marginItem*2, cHeight - marginItem*2), + Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), fontSml); + } + } else { + ComplexContent.AddText(text.str().c_str(), true, cRect(marginItem, marginItem, cWidth - marginItem*2, cHeight - marginItem*2), + Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), fontSml); + } + + ComplexContent.CreatePixmaps(Config.MenuContentFullSize); + ComplexContent.Draw(); DecorBorderClearByFrom(BorderContent); if( Config.MenuContentFullSize ) - DecorBorderDraw(cLeft, cTop, cWidth, ContentGetHeight(), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType, + DecorBorderDraw(cLeft, cTop, cWidth, ComplexContent.ContentHeight(true), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType, Config.decorBorderMenuContentFg, Config.decorBorderMenuContentBg, BorderContent); else - DecorBorderDraw(cLeft, cTop, cWidth, ContentGetTextHeight(), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType, + DecorBorderDraw(cLeft, cTop, cWidth, ComplexContent.ContentHeight(false), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType, Config.decorBorderMenuContentFg, Config.decorBorderMenuContentBg, BorderContent); } @@ -1999,12 +2563,17 @@ if( !Recording ) return; + #ifdef DEBUGEPGTIME + uint32_t tick0 = GetMsTicks(); + #endif + ShowEvent = false; ShowRecording = true; ShowText = false; ItemBorderClear(); const cRecordingInfo *recInfo = Recording->Info(); + const cEvent *Event = recInfo->GetEvent(); chLeft = Config.decorBorderMenuContentHeadSize; chTop = topBarHeight + marginItem + Config.decorBorderTopBarSize*2 + Config.decorBorderMenuContentHeadSize; @@ -2017,7 +2586,7 @@ Config.decorBorderMenuContentSize + Config.decorBorderMenuContentHeadSize; cWidth = menuWidth - Config.decorBorderMenuContentSize*2; cHeight = osdHeight - (topBarHeight + Config.decorBorderTopBarSize*2 + - buttonsHeight + Config.decorBorderButtonSize*2 + marginItem*3 + + buttonsHeight + Config.decorBorderButtonSize*2 + marginItem*3 + chHeight + Config.decorBorderMenuContentHeadSize*2 + Config.decorBorderMenuContentSize*2); if( !ButtonsDrawn() ) @@ -2025,17 +2594,19 @@ menuItemWidth = cWidth; - ostringstream text; + ostringstream text, textAdditional, recAdditional; text.imbue(std::locale("")); + textAdditional.imbue(std::locale("")); + recAdditional.imbue(std::locale("")); if (!isempty(recInfo->Description())) text << recInfo->Description() << endl << endl; - + // lent from skinelchi if( Config.RecordingAdditionalInfoShow ) { cChannel *channel = Channels.GetByChannelID(((cRecordingInfo *)recInfo)->ChannelID()); if (channel) - text << trVDR("Channel") << ": " << channel->Number() << " - " << channel->Name() << endl; + recAdditional << trVDR("Channel") << ": " << channel->Number() << " - " << channel->Name() << endl; cMarks marks; bool hasMarks = marks.Load(Recording->FileName(), Recording->FramesPerSecond(), Recording->IsPesRecording()) && marks.Count(); @@ -2105,27 +2676,27 @@ } if (index) { lastIndex = index->Last(); - text << tr("Length") << ": " << *IndexToHMSF(lastIndex, false, Recording->FramesPerSecond()); + recAdditional << tr("Length") << ": " << *IndexToHMSF(lastIndex, false, Recording->FramesPerSecond()); if (hasMarks) - text << " (" << tr("cutted") << ": " << *IndexToHMSF(cuttedLength, false, Recording->FramesPerSecond()) << ")"; - text << endl; + recAdditional << " (" << tr("cutted") << ": " << *IndexToHMSF(cuttedLength, false, Recording->FramesPerSecond()) << ")"; + recAdditional << endl; } delete index; if (recsize > MEGABYTE(1023)) - text << tr("Size") << ": " << fixed << setprecision(2) << (float)recsize / MEGABYTE(1024) << " GB"; + recAdditional << tr("Size") << ": " << fixed << setprecision(2) << (float)recsize / MEGABYTE(1024) << " GB"; else - text << tr("Size") << ": " << recsize / MEGABYTE(1) << " MB"; + recAdditional << tr("Size") << ": " << recsize / MEGABYTE(1) << " MB"; if( hasMarks ) if (recsize > MEGABYTE(1023)) - text << " (" << tr("cutted") << ": " << fixed << setprecision(2) << (float)recsizecutted/MEGABYTE(1024) << " GB)"; + recAdditional << " (" << tr("cutted") << ": " << fixed << setprecision(2) << (float)recsizecutted/MEGABYTE(1024) << " GB)"; else - text << " (" << tr("cutted") << ": " << recsizecutted/MEGABYTE(1) << " MB)"; + recAdditional << " (" << tr("cutted") << ": " << recsizecutted/MEGABYTE(1) << " MB)"; - text << endl << trVDR("Priority") << ": " << Recording->Priority() << ", " << trVDR("Lifetime") << ": " << Recording->Lifetime() << endl; + recAdditional << endl << trVDR("Priority") << ": " << Recording->Priority() << ", " << trVDR("Lifetime") << ": " << Recording->Lifetime() << endl; if( lastIndex ) { - text << tr("format") << ": " << (Recording->IsPesRecording() ? "PES" : "TS") << ", " << tr("bit rate") << ": ~ " << fixed << setprecision (2) << (float)recsize/lastIndex*Recording->FramesPerSecond()*8/MEGABYTE(1) << " MBit/s (Video + Audio)"; + recAdditional << tr("format") << ": " << (Recording->IsPesRecording() ? "PES" : "TS") << ", " << tr("bit rate") << ": ~ " << fixed << setprecision (2) << (float)recsize/lastIndex*Recording->FramesPerSecond()*8/MEGABYTE(1) << " MBit/s (Video + Audio)"; } const cComponents *Components = recInfo->Components(); if( Components ) { @@ -2139,10 +2710,10 @@ switch (p->stream) { case sc_video_MPEG2: - text << endl << tr("Video") << ": " << p->description << " (MPEG2)"; + textAdditional << tr("Video") << ": " << p->description << " (MPEG2)"; break; case sc_video_H264_AVC: - text << endl << tr("Video") << ": " << p->description << " (H.264)"; + textAdditional << tr("Video") << ": " << p->description << " (H.264)"; break; case sc_audio_MP2: case sc_audio_AC3: @@ -2181,10 +2752,15 @@ break; } } - if (audio.str().length() > 0) - text << endl << tr("Audio") << ": "<< audio.str(); - if (subtitle.str().length() > 0) - text << endl << tr("Subtitle") << ": "<< subtitle.str(); + if (audio.str().length() > 0) { + if( textAdditional.str().length() > 0 ) + textAdditional << endl; + textAdditional << tr("Audio") << ": "<< audio.str(); + } if (subtitle.str().length() > 0) { + if( textAdditional.str().length() > 0 ) + textAdditional << endl; + textAdditional << tr("Subtitle") << ": "<< subtitle.str(); + } } if (recInfo->Aux()) { string str_epgsearch = xml_substring(recInfo->Aux(), "", ""); @@ -2203,24 +2779,292 @@ } if ((!channel.empty() && !searchtimer.empty()) || !pattern.empty()) { - text << endl << endl << tr("additional information") << ":" << endl; + recAdditional << endl; if (!channel.empty() && !searchtimer.empty()) { - text << "EPGsearch: " << tr("channel") << ": " << channel << ", " << tr("search pattern") << ": " << searchtimer; + recAdditional << "EPGsearch: " << tr("channel") << ": " << channel << ", " << tr("search pattern") << ": " << searchtimer; } if (!pattern.empty()) { - text << "VDRadmin-AM: " << tr("search pattern") << ": " << pattern; + recAdditional << "VDRadmin-AM: " << tr("search pattern") << ": " << pattern; } } } } - bool contentScrollable = ContentWillItBeScrollable(cWidth, cHeight, text.str().c_str(), 0); - if( contentScrollable ) { - cWidth -= scrollBarWidth; - } + #ifdef DEBUGEPGTIME + uint32_t tick1 = GetMsTicks(); + dsyslog("SetRecording info-text time: %d ms", tick1 - tick0); + #endif + + bool Scrollable = false; + bool FirstRun = true; + + do { + if( Scrollable ) { + FirstRun = false; + cWidth -= scrollBarWidth; + } + + ComplexContent.Clear(); + ComplexContent.SetOsd(osd); + ComplexContent.SetPosition(cRect(cLeft, cTop, cWidth, cHeight)); + ComplexContent.SetBGColor(Theme.Color(clrMenuRecBg)); + ComplexContent.SetScrollSize(fontHeight); + ComplexContent.SetScrollingActive(true); + + int ContentTop = marginItem; + + ostringstream series_info, movie_info; + + std::vector actors_path; + std::vector actors_name; + std::vector actors_role; + + std::string mediaPath; + int mediaWidth = 0; + int mediaHeight = 0; + + #ifdef DEBUGEPGTIME + uint32_t tick2 = GetMsTicks(); + #endif + + // TVScraper + static cPlugin *pTVScraper = cPluginManager::GetPlugin("tvscraper"); + static cPlugin *pScraper2Vdr = cPluginManager::GetPlugin("scraper2vdr"); + if( (Config.TVScraperRecInfoShowPoster || Config.TVScraperRecInfoShowActors) && pScraper2Vdr ) { + ScraperGetEventType call; + call.recording = Recording; + int seriesId = 0; + int episodeId = 0; + int movieId = 0; + + if (pScraper2Vdr->Service("GetEventType", &call)) { + seriesId = call.seriesId; + episodeId = call.episodeId; + movieId = call.movieId; + } + if( seriesId > 0 ) { + cSeries series; + series.seriesId = seriesId; + series.episodeId = episodeId; + if (pScraper2Vdr->Service("GetSeries", &series)) { + if( series.banners.size() > 0 ) + mediaPath = series.banners[0].path; + mediaWidth = cWidth/2 - marginItem*2; + mediaHeight = cHeight - marginItem*2 - fontHeight - 6; + if( Config.TVScraperRecInfoShowActors ) { + for( unsigned int i = 0; i < series.actors.size(); i++ ) { + if( imgLoader.FileExits( series.actors[i].actorThumb.path ) ) { + actors_path.push_back(series.actors[i].actorThumb.path); + actors_name.push_back(series.actors[i].name); + actors_role.push_back(series.actors[i].role); + } + } + } + if( series.name.length() > 0 ) + series_info << tr("name: ") << series.name << endl; + if( series.firstAired.length() > 0 ) + series_info << tr("first aired: ") << series.firstAired << endl; + if( series.network.length() > 0 ) + series_info << tr("network: ") << series.network << endl; + if( series.genre.length() > 0 ) + series_info << tr("genre: ") << series.genre << endl; + if( series.rating > 0 ) + series_info << tr("rating: ") << series.rating << endl; + if( series.status.length() > 0 ) + series_info << tr("status: ") << series.status << endl; + if( series.episode.season > 0 ) + series_info << tr("season number: ") << series.episode.season << endl; + if( series.episode.number > 0 ) + series_info << tr("episode number: ") << series.episode.number << endl; + } + } else if (movieId > 0) { + cMovie movie; + movie.movieId = movieId; + if (pScraper2Vdr->Service("GetMovie", &movie)) { + mediaPath = movie.poster.path; + mediaWidth = cWidth/2 - marginItem*3; + mediaHeight = cHeight - marginItem*2 - fontHeight - 6; + if( Config.TVScraperRecInfoShowActors ) { + for( unsigned int i = 0; i < movie.actors.size(); i++ ) { + if( imgLoader.FileExits( movie.actors[i].actorThumb.path ) ) { + actors_path.push_back(movie.actors[i].actorThumb.path); + actors_name.push_back(movie.actors[i].name); + actors_role.push_back(movie.actors[i].role); + } + } + } + if( movie.title.length() > 0 ) + movie_info << tr("title: ") << movie.title << endl; + if( movie.originalTitle.length() > 0 ) + movie_info << tr("original title: ") << movie.originalTitle << endl; + if( movie.collectionName.length() > 0 ) + movie_info << tr("collection name: ") << movie.collectionName << endl; + if( movie.genres.length() > 0 ) + movie_info << tr("genre: ") << movie.genres << endl; + if( movie.releaseDate.length() > 0 ) + movie_info << tr("release date: ") << movie.releaseDate << endl; + if( movie.popularity > 0 ) + movie_info << tr("popularity: ") << movie.popularity << endl; + if( movie.voteAverage > 0 ) + movie_info << tr("vote average: ") << movie.voteAverage << endl; + } + } + } else if( (Config.TVScraperRecInfoShowPoster || Config.TVScraperRecInfoShowActors) && pTVScraper ) { + TVScraperGetFullInformation call; + call.event = Event; + call.isRecording = true; + if (pTVScraper->Service("TVScraperGetFullInformation", &call)) { + if (call.type == typeSeries) { + mediaWidth = cWidth/2 - marginItem*2; + mediaHeight = cHeight - marginItem*2 - fontHeight - 6; + mediaPath = call.banner.path; + } else if (call.type == typeMovie) { + mediaWidth = cWidth/2 - marginItem*3; + mediaHeight = cHeight - marginItem*2 - fontHeight - 6; + if( call.posters.size() > 0 ) + mediaPath = call.posters[0].path; + } + if( Config.TVScraperRecInfoShowActors ) { + for( unsigned int i = 0; i < call.actors.size(); i++ ) { + if( imgLoader.FileExits( call.actors[i].thumb.path )) { + actors_path.push_back(call.actors[i].thumb.path); + actors_name.push_back(call.actors[i].name); + actors_role.push_back(call.actors[i].role); + } + } + } + } + } + #ifdef DEBUGEPGTIME + uint32_t tick3 = GetMsTicks(); + dsyslog("SetRecording tvscraper time: %d ms", tick3 - tick2); + #endif + + if( mediaPath.length() > 0 ) { + cImage *img = imgLoader.LoadFile(mediaPath.c_str(), mediaWidth, mediaHeight); + if( img ) { + ComplexContent.AddText(tr("Description"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuRecFontTitle), Theme.Color(clrMenuRecBg), font); + ContentTop += fontHeight; + ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuRecFontTitle)); + ContentTop += 6; + ComplexContent.AddImageWithFloatedText(img, CIP_Right, text.str().c_str(), cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2), + Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), font); + } else if( text.str().length() > 0 ) { + ComplexContent.AddText(tr("Description"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuRecFontTitle), Theme.Color(clrMenuRecBg), font); + ContentTop += fontHeight; + ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuRecFontTitle)); + ContentTop += 6; + ComplexContent.AddText(text.str().c_str(), true, cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2), + Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), font); + } + } else if( text.str().length() > 0 ) { + ComplexContent.AddText(tr("Description"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuRecFontTitle), Theme.Color(clrMenuRecBg), font); + ContentTop += fontHeight; + ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuRecFontTitle)); + ContentTop += 6; + ComplexContent.AddText(text.str().c_str(), true, cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2), + Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), font); + } + + if( movie_info.str().length() > 0 ) { + ContentTop = ComplexContent.BottomContent() + fontHeight; + ComplexContent.AddText(tr("Movie information"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuRecFontTitle), Theme.Color(clrMenuRecBg), font); + ContentTop += fontHeight; + ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuRecFontTitle)); + ContentTop += 6; + ComplexContent.AddText(movie_info.str().c_str(), true, cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2), + Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), font); + } + + if( series_info.str().length() > 0 ) { + ContentTop = ComplexContent.BottomContent() + fontHeight; + ComplexContent.AddText(tr("Series information"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuRecFontTitle), Theme.Color(clrMenuRecBg), font); + ContentTop += fontHeight; + ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuRecFontTitle)); + ContentTop += 6; + ComplexContent.AddText(series_info.str().c_str(), true, cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2), + Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), font); + } + #ifdef DEBUGEPGTIME + uint32_t tick4 = GetMsTicks(); + dsyslog("SetRecording epg-text time: %d ms", tick4 - tick3); + #endif + + if( Config.TVScraperRecInfoShowActors && actors_path.size() > 0 ) { + ContentTop = ComplexContent.BottomContent() + fontHeight; + ComplexContent.AddText(tr("Actors"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuRecFontTitle), Theme.Color(clrMenuRecBg), font); + ContentTop += fontHeight; + ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuRecFontTitle)); + ContentTop += 6; + + int actorsPerLine = 6; + int numActors = actors_path.size(); + int actorWidth = cWidth / actorsPerLine - marginItem*4; + int picsPerLine = (cWidth - marginItem*2) / actorWidth; + int picLines = numActors / picsPerLine; + if( numActors%picsPerLine != 0 ) + picLines++; + int actorMargin = ((cWidth - marginItem*2) - actorWidth*actorsPerLine) / (actorsPerLine-1); + int x = marginItem; + int y = ContentTop; + int actor = 0; + for (int row = 0; row < picLines; row++) { + for (int col = 0; col < picsPerLine; col++) { + if (actor == numActors) + break; + std::string path = actors_path[actor]; + cImage *img = imgLoader.LoadFile(path.c_str(), actorWidth, 999); + if( img ) { + ComplexContent.AddImage(img, cRect(x, y, 0, 0)); + std::string name = actors_name[actor]; + std::stringstream sstrRole; + sstrRole << "\"" << actors_role[actor] << "\""; + std::string role = sstrRole.str(); + ComplexContent.AddText(name.c_str(), false, cRect(x, y + img->Height() + marginItem, actorWidth, 0), Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), fontSml, actorWidth, fontSmlHeight, taCenter); + ComplexContent.AddText(role.c_str(), false, cRect(x, y + img->Height() + marginItem + fontSmlHeight, actorWidth, 0), Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), fontSml, actorWidth, fontSmlHeight, taCenter); + } + x += actorWidth + actorMargin; + actor++; + } + x = marginItem; + y = ComplexContent.BottomContent() + fontHeight; + } + } + #ifdef DEBUGEPGTIME + uint32_t tick5 = GetMsTicks(); + dsyslog("SetRecording actor time: %d ms", tick5 - tick4); + #endif + + if( recAdditional.str().length() > 0 ) { + ContentTop = ComplexContent.BottomContent() + fontHeight; + ComplexContent.AddText(tr("Recording information"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuRecFontTitle), Theme.Color(clrMenuRecBg), font); + ContentTop += fontHeight; + ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuRecFontTitle)); + ContentTop += 6; + ComplexContent.AddText(recAdditional.str().c_str(), true, cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2), + Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), font); + } + + if( textAdditional.str().length() > 0 ) { + ContentTop = ComplexContent.BottomContent() + fontHeight; + ComplexContent.AddText(tr("Video information"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuRecFontTitle), Theme.Color(clrMenuRecBg), font); + ContentTop += fontHeight; + ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuRecFontTitle)); + ContentTop += 6; + ComplexContent.AddText(textAdditional.str().c_str(), true, cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2), + Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), font); + } + + Scrollable = ComplexContent.Scrollable(cHeight - marginItem*2); + } while( Scrollable && FirstRun ); + + if( Config.MenuContentFullSize || Scrollable ) { + ComplexContent.CreatePixmaps(true); + } else + ComplexContent.CreatePixmaps(false); + + ComplexContent.Draw(); - ContentCreate(cLeft, cTop, cWidth, cHeight, 0); - contentHeadPixmap->Fill(clrTransparent); contentHeadPixmap->DrawRectangle(cRect(0, 0, menuWidth, fontHeight + fontSmlHeight*2 + marginItem*2), Theme.Color(clrScrollbarBg)); @@ -2236,31 +3080,34 @@ contentHeadPixmap->DrawText(cPoint(marginItem, marginItem + fontSmlHeight + fontHeight), shortText, Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), fontSml, menuWidth - marginItem*2); DecorBorderDraw(chLeft, chTop, chWidth, chHeight, Config.decorBorderMenuContentHeadSize, Config.decorBorderMenuContentHeadType, - Config.decorBorderMenuContentHeadFg, Config.decorBorderMenuContentHeadBg); - - ContentSet( text.str().c_str(), Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg) ); - if( ContentScrollable() ) { - DrawScrollbar(ContentScrollTotal(), ContentScrollOffset(), ContentVisibleLines(), contentTop - scrollBarTop, ContentGetHeight(), ContentScrollOffset() > 0, ContentScrollOffset() + ContentVisibleLines() < ContentScrollTotal(), true); - } + Config.decorBorderMenuContentHeadFg, Config.decorBorderMenuContentHeadBg, BorderSetRecording, false); + + if( Scrollable ) + DrawScrollbar(ComplexContent.ScrollTotal(), ComplexContent.ScrollOffset(), ComplexContent.ScrollShown(), ComplexContent.Top() - scrollBarTop, ComplexContent.Height(), ComplexContent.ScrollOffset() > 0, ComplexContent.ScrollOffset() + ComplexContent.ScrollShown() < ComplexContent.ScrollTotal(), true); RecordingBorder.Left = cLeft; RecordingBorder.Top = cTop; RecordingBorder.Width = cWidth; - RecordingBorder.Height = ContentGetHeight(); + RecordingBorder.Height = ComplexContent.Height(); RecordingBorder.Size = Config.decorBorderMenuContentSize; RecordingBorder.Type = Config.decorBorderMenuContentType; RecordingBorder.ColorFg = Config.decorBorderMenuContentFg; RecordingBorder.ColorBg = Config.decorBorderMenuContentBg; RecordingBorder.From = BorderMenuRecord; - - if( Config.MenuContentFullSize || ContentScrollable() ) - DecorBorderDraw(RecordingBorder.Left, RecordingBorder.Top, RecordingBorder.Width, RecordingBorder.Height, + + if( Config.MenuContentFullSize || Scrollable ) + DecorBorderDraw(RecordingBorder.Left, RecordingBorder.Top, RecordingBorder.Width, ComplexContent.ContentHeight(true), RecordingBorder.Size, RecordingBorder.Type, - RecordingBorder.ColorFg, RecordingBorder.ColorBg, RecordingBorder.From); + RecordingBorder.ColorFg, RecordingBorder.ColorBg, RecordingBorder.From, false); else - DecorBorderDraw(RecordingBorder.Left, RecordingBorder.Top, RecordingBorder.Width, ContentGetTextHeight(), + DecorBorderDraw(RecordingBorder.Left, RecordingBorder.Top, RecordingBorder.Width, ComplexContent.ContentHeight(false), RecordingBorder.Size, RecordingBorder.Type, - RecordingBorder.ColorFg, RecordingBorder.ColorBg, RecordingBorder.From); + RecordingBorder.ColorFg, RecordingBorder.ColorBg, RecordingBorder.From, false); + + #ifdef DEBUGEPGTIME + uint32_t tick6 = GetMsTicks(); + dsyslog("SetRecording total time: %d ms", tick6 - tick0); + #endif } void cFlatDisplayMenu::SetText(const char *Text, bool FixedFont) { @@ -2283,30 +3130,55 @@ if( !ButtonsDrawn() ) Height += buttonsHeight + Config.decorBorderButtonSize*2; + ComplexContent.Clear(); + menuItemWidth = Width; + bool Scrollable = false; + if( FixedFont ) { + ComplexContent.AddText(Text, true, cRect(marginItem, marginItem, Width - marginItem*2, Height - marginItem*2), + Theme.Color(clrMenuTextFixedFont), Theme.Color(clrMenuTextBg), fontFixed); + ComplexContent.SetScrollSize(fontFixedHeight); + } else { + ComplexContent.AddText(Text, true, cRect(marginItem, marginItem, Width - marginItem*2, Height - marginItem*2), + Theme.Color(clrMenuTextFixedFont), Theme.Color(clrMenuTextBg), font); + ComplexContent.SetScrollSize(fontHeight); + } - bool contentScrollable = ContentWillItBeScrollable(Width, Height, Text, FixedFont); - if( contentScrollable ) { + Scrollable = ComplexContent.Scrollable(Height - marginItem*2); + if( Scrollable ) { Width -= scrollBarWidth; + ComplexContent.Clear(); + if( FixedFont ) { + ComplexContent.AddText(Text, true, cRect(marginItem, marginItem, Width - marginItem*2, Height - marginItem*2), + Theme.Color(clrMenuTextFixedFont), Theme.Color(clrMenuTextBg), fontFixed); + ComplexContent.SetScrollSize(fontFixedHeight); + } else { + ComplexContent.AddText(Text, true, cRect(marginItem, marginItem, Width - marginItem*2, Height - marginItem*2), + Theme.Color(clrMenuTextFixedFont), Theme.Color(clrMenuTextBg), font); + ComplexContent.SetScrollSize(fontHeight); + } } - if( FixedFont ) { - ContentCreate(Left, Top, Width, Height, 1); - ContentSet( Text, Theme.Color(clrMenuTextFixedFont), Theme.Color(clrMenuTextBg) ); - } else { - ContentCreate(Left, Top, Width, Height, 1); - ContentSet( Text, Theme.Color(clrMenuTextFont), Theme.Color(clrMenuTextBg) ); - } + ComplexContent.SetOsd(osd); + ComplexContent.SetPosition(cRect(Left, Top, Width, Height)); + ComplexContent.SetBGColor(Theme.Color(clrMenuTextBg)); + ComplexContent.SetScrollingActive(true); - - if( ContentScrollable() ) - DrawScrollbar(ContentScrollTotal(), ContentScrollOffset(), ContentVisibleLines(), contentTop - scrollBarTop, ContentGetHeight(), ContentScrollOffset() > 0, ContentScrollOffset() + ContentVisibleLines() < ContentScrollTotal(), true); + if( Config.MenuContentFullSize || Scrollable ) { + ComplexContent.CreatePixmaps(true); + } else + ComplexContent.CreatePixmaps(false); + + ComplexContent.Draw(); - if( Config.MenuContentFullSize || ContentScrollable() ) - DecorBorderDraw(Left, Top, Width, ContentGetHeight(), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType, + if( Scrollable ) + DrawScrollbar(ComplexContent.ScrollTotal(), ComplexContent.ScrollOffset(), ComplexContent.ScrollShown(), ComplexContent.Top() - scrollBarTop, ComplexContent.Height(), ComplexContent.ScrollOffset() > 0, ComplexContent.ScrollOffset() + ComplexContent.ScrollShown() < ComplexContent.ScrollTotal(), true); + + if( Config.MenuContentFullSize || Scrollable ) + DecorBorderDraw(Left, Top, Width, ComplexContent.ContentHeight(true), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType, Config.decorBorderMenuContentFg, Config.decorBorderMenuContentBg); else - DecorBorderDraw(Left, Top, Width, ContentGetTextHeight(), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType, + DecorBorderDraw(Left, Top, Width, ComplexContent.ContentHeight(false), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType, Config.decorBorderMenuContentFg, Config.decorBorderMenuContentBg); } @@ -2340,7 +3212,7 @@ return; } } - + ItemsBorder.push_back(ib); } @@ -2367,7 +3239,7 @@ time_t cFlatDisplayMenu::GetLastRecTimeFromFolder(const cRecording *Recording, int Level) { std::string RecFolder = GetRecordingName(Recording, Level, true); time_t RecStart = Recording->Start(); - + for(cRecording *rec = Recordings.First(); rec; rec = Recordings.Next(rec)) { std::string RecFolder2 = GetRecordingName(rec, Level, true); if( RecFolder == RecFolder2 ) { // recordings must be in the same folder @@ -2380,7 +3252,7 @@ RecStart = RecStart2; } } - + return RecStart; } @@ -2409,19 +3281,15 @@ tokens.push_back(s); } recNamePart = tokens.at(Level); - if(!isFolder && Recording->IsEdited() ) { - recNamePart = recNamePart.substr(1); - } } catch (...) { recNamePart = recName.c_str(); } - + if( Config.MenuItemRecordingClearPercent && isFolder ) { if( recNamePart[0] == '%' ) { recNamePart.erase(0, 1); } } - return recNamePart.c_str(); } @@ -2434,23 +3302,30 @@ cString FileName = cString::sprintf("menuIcons/%s", GetFilenameWithoutext(e->d_name)); imgLoader.LoadIcon(*FileName, fontHeight - marginItem*2, fontHeight - marginItem*2); } - + imgLoader.LoadIcon("menuIcons/blank", fontHeight - marginItem*2, fontHeight - marginItem*2); - + int imageHeight = fontHeight; - imgLoader.LoadIcon("logo_background", imageHeight, imageHeight); - imgLoader.LoadIcon("radio", imageHeight, imageHeight); - imgLoader.LoadIcon("changroup", imageHeight, imageHeight); - imgLoader.LoadIcon("tv", imageHeight, imageHeight); + int imageBGHeight = imageHeight; + int imageBGWidth = imageHeight*1.34; + cImage *imgBG = imgLoader.LoadIcon("logo_background", imageBGWidth, imageBGHeight); + if( imgBG ) { + imageBGHeight = imgBG->Height(); + imageBGWidth = imgBG->Width(); + } + + imgLoader.LoadIcon("radio", imageBGWidth - 10, imageBGHeight - 10); + imgLoader.LoadIcon("changroup", imageBGWidth - 10, imageBGHeight - 10); + imgLoader.LoadIcon("tv", imageBGWidth - 10, imageBGHeight - 10); imgLoader.LoadIcon("timerInactive", imageHeight, imageHeight); imgLoader.LoadIcon("timerRecording", imageHeight, imageHeight); imgLoader.LoadIcon("timerActive", imageHeight, imageHeight); - + int index = 0; cImage *img = NULL; for(cChannel *Channel = Channels.First(); Channel && index < LOGO_PRE_CACHE; Channel = Channels.Next(Channel)) { - img = imgLoader.LoadLogo(Channel->Name(), fontHeight - marginItem*2, fontHeight - marginItem*2); + img = imgLoader.LoadLogo(Channel->Name(), imageBGWidth - 4, imageBGHeight - 4); if( img ) index++; } @@ -2458,11 +3333,11 @@ imgLoader.LoadIcon("radio", 999, topBarHeight - marginItem*2); imgLoader.LoadIcon("changroup", 999, topBarHeight - marginItem*2); imgLoader.LoadIcon("tv", 999, topBarHeight - marginItem*2); - + imgLoader.LoadIcon("timer_full", imageHeight, imageHeight); imgLoader.LoadIcon("timer_partial", imageHeight, imageHeight); imgLoader.LoadIcon("vps", imageHeight, imageHeight); - + imgLoader.LoadIcon("recording_new", fontHeight, fontHeight); imgLoader.LoadIcon("recording_new", fontSmlHeight, fontSmlHeight); imgLoader.LoadIcon("recording_cutted", fontHeight, fontHeight); diff -Nru vdr-plugin-skinflatplus-0.2.1/displaymenu.h vdr-plugin-skinflatplus-0.3.0/displaymenu.h --- vdr-plugin-skinflatplus-0.2.1/displaymenu.h 2014-03-25 19:21:56.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/displaymenu.h 2014-05-11 11:16:37.000000000 +0000 @@ -1,6 +1,7 @@ #pragma once #include "baserender.h" +#include "complexcontent.h" #include #include #include @@ -13,18 +14,18 @@ cPixmap *menuPixmap; cPixmap *menuIconsPixmap; cPixmap *menuIconsBGPixmap; - + int menuTop, menuWidth; int menuItemWidth; - + eMenuCategory menuCategory; int VideoDiskUsageState; - + int chLeft, chTop, chWidth, chHeight; cPixmap *contentHeadPixmap; - + int cLeft, cTop, cWidth, cHeight; - + cPixmap *scrollbarPixmap; int scrollBarTop, scrollBarWidth, scrollBarHeight; @@ -32,12 +33,14 @@ std::list ItemsBorder; sDecorBorder EventBorder, RecordingBorder, TextBorder; - + bool isScrolling; bool ShowEvent, ShowRecording, ShowText; - + + cComplexContent ComplexContent; + cString ItemEventLastChannelName; - + void ItemBorderInsertUnique(sDecorBorder ib); void ItemBorderDrawAllWithScrollbar(void); void ItemBorderDrawAllWithoutScrollbar(void); @@ -67,15 +70,15 @@ virtual void Scroll(bool Up, bool Page); virtual int MaxItems(void); virtual void Clear(void); - + virtual void SetMenuCategory(eMenuCategory MenuCategory); //virtual void SetTabs(int Tab1, int Tab2 = 0, int Tab3 = 0, int Tab4 = 0, int Tab5 = 0); - + virtual void SetTitle(const char *Title); virtual void SetButtons(const char *Red, const char *Green = NULL, const char *Yellow = NULL, const char *Blue = NULL); virtual void SetMessage(eMessageType Type, const char *Text); virtual void SetItem(const char *Text, int Index, bool Current, bool Selectable); - + virtual bool SetItemEvent(const cEvent *Event, int Index, bool Current, bool Selectable, const cChannel *Channel, bool WithDate, eTimerMatch TimerMatch); virtual bool SetItemTimer(const cTimer *Timer, int Index, bool Current, bool Selectable); virtual bool SetItemChannel(const cChannel *Channel, int Index, bool Current, bool Selectable, bool WithProvider); diff -Nru vdr-plugin-skinflatplus-0.2.1/fnu_anthra_themes.HISTORY vdr-plugin-skinflatplus-0.3.0/fnu_anthra_themes.HISTORY --- vdr-plugin-skinflatplus-0.2.1/fnu_anthra_themes.HISTORY 1970-01-01 00:00:00.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/fnu_anthra_themes.HISTORY 2014-05-11 11:16:37.000000000 +0000 @@ -0,0 +1,7 @@ +flat anthra style themes for skin-flatplus by fnu + +HISTORY + 12.04.2014 first version + 25.04.2014 polishing themes, add green accent + +(C) 2014 Frank Neumann diff -Nru vdr-plugin-skinflatplus-0.2.1/fnu_anthra_themes.INFO vdr-plugin-skinflatplus-0.3.0/fnu_anthra_themes.INFO --- vdr-plugin-skinflatplus-0.2.1/fnu_anthra_themes.INFO 1970-01-01 00:00:00.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/fnu_anthra_themes.INFO 2014-05-11 11:16:37.000000000 +0000 @@ -0,0 +1,22 @@ +flatPlus-fnuanthra*.themes created on 12.04.2014 + +base theme: flatPlus-fnuanthrared.theme, base icons: fnuanthrared + +theme: red, highlights: #BC0000, background: #000000, foreground: #404040 +theme: amber, highlights: #FFBF00, background: #000000, foreground: #404040 +theme: green, highlights: #00CD00, background: #000000, foreground: #404040 +theme: yablue, highlights: #4E78B1, background: #000000, foreground: #404040 + +These are flat anthra style themes following good old anthra packages from Tomas Saxer +for vdr-plugin-text2skin. As with the originals base theme is red highlighted, authors +favorit is amber highlighted, one for yaVDR family is yablue highlighted and a green one. + +Themes are black, anthrazit, grey style with some accents in given colors and like the +original themes with a white logo base. All kept flat to fit into strenght of skinflatplus. + +Author does recommend to use "round big" decor and nopacity-default logos from Copperhead, +because of the white logo base: + +- http://creimer.net/channellogos/ + +(C) 2014 Frank Neumann diff -Nru vdr-plugin-skinflatplus-0.2.1/HISTORY vdr-plugin-skinflatplus-0.3.0/HISTORY --- vdr-plugin-skinflatplus-0.2.1/HISTORY 2014-03-25 19:21:56.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/HISTORY 2014-05-11 11:16:37.000000000 +0000 @@ -1,6 +1,30 @@ VDR Plugin 'skinflatplus' Revision History --------------------------------------- +2014-11-05: Version 0.3.0 +- [fix] use only current Event in extraevent display in displaychannel +- [fix] SetRecording border with deleteresume.patch +- [fix] recording menu with cutted recordings an % +- [fix] all around some small fixes +- [update] channel logo in wide format (like 3PO or Copperhead logos) +- [update] complete rewrite multiline content +- [update] draw timer menu with a straight table +- [update] README, teile vom Wiki in README-Datei übernommen +- [add] show reruns in epg info (lent code from nopacity, thanks!) +- [add] TVScraper support + - show poster images of movies and series + - show actor images +- [add] scraper2vdr support + - show poster images of movies and series + - show actor images + - show movies and series information +- [add] plugin settings for TVScraper/scraper2vdr +- [add] more options to show disk usage (not show; timer & recording menu; always on the menu; always show) +- [add] horizontal line and group icon in SetItemEvent for group channels +- [add] new fnu_anthra_themes (thank You fnu/Frank) +- [add] eventsview-flatplus.sql for epgd to prevent double information in epg-text, please see wiki for more information +- [add] parse tilde in timer menu and draw text after tilde with clrMenuItemExtraTextFont + 2014-25-03: Version 0.2.1 - [fix] epgsearch progessbar in SetItemEvent, if epg start time is after now (2 minutes tolerance) - [fix] channel logo in topbar in program menu @@ -17,7 +41,7 @@ - [add] show cutted length of recording in replay info - [add] update script to update MV-Themes (contrib/flatPlus_MV_Update.sh) - [add] timer conflicts in TopBar, active epgsearch is needed, configurable via menu settings - you can configure a min value at which it will shown in red (otherwise yellow) + you can configure a min value at which it will shown in red (otherwise yellow) - [add] display audio channel icons in audio tracks menu 2014-02-22: Version 0.2.0 Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/default/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/default/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/fnuanthraamber/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/fnuanthraamber/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/fnuanthraamber/recording_new_amber.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/fnuanthraamber/recording_new_amber.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/fnuanthraamber/recording_new.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/fnuanthraamber/recording_new.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/fnuanthragreen/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/fnuanthragreen/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/fnuanthragreen/recording_new_green.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/fnuanthragreen/recording_new_green.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/fnuanthragreen/recording_new.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/fnuanthragreen/recording_new.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/fnuanthrared/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/fnuanthrared/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/fnuanthrared/logo_background_white.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/fnuanthrared/logo_background_white.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/fnuanthrared/recording_new.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/fnuanthrared/recording_new.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/fnuanthrared/recording_new_red.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/fnuanthrared/recording_new_red.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/fnuanthrayablue/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/fnuanthrayablue/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/fnuanthrayablue/recording_new.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/fnuanthrayablue/recording_new.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/fnuanthrayablue/recording_new_yablue.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/fnuanthrayablue/recording_new_yablue.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBerry/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBerry/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBerry/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBerry/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBerry/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBerry/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBerry/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBerry/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBerry/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBerry/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBerry/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBerry/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBerry/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBerry/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBerry/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBerry/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBerry/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBerry/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBerry/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBerry/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBerry/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBerry/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBerry/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBerry/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBerry/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBerry/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBerry/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBerry/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBerry/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBerry/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBerry/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBerry/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBerry/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBerry/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBerry/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBerry/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBerry/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBerry/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBerry/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBerry/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBerry/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBerry/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBerry/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBerry/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBerry/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBerry/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBerry/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBerry/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlood/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlood/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlood/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlood/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlood/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlood/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlood/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlood/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlood/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlood/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlood/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlood/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlood/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlood/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlood/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlood/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlood/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlood/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlood/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlood/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlood/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlood/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlood/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlood/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlood/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlood/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlood/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlood/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlood/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlood/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlood/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlood/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlood/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlood/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlood/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlood/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlood/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlood/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlood/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlood/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlood/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlood/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlood/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlood/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlood/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlood/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlood/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlood/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlue/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlue/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlue/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlue/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlue/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlue/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlue/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlue/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlue/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlue/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlue/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlue/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlue/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlue/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlue/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlue/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlue/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlue/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlue/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlue/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlue/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlue/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlue/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlue/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlue/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlue/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlue/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlue/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlue/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlue/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlue/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlue/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlue/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlue/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlue/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlue/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlue/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlue/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlue/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlue/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlue/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlue/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlue/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlue/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlue/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlue/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVBlue/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVBlue/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCappuchino/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCappuchino/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCappuchino/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCappuchino/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCappuchino/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCappuchino/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCappuchino/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCappuchino/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCappuchino/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCappuchino/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCappuchino/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCappuchino/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCappuchino/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCappuchino/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCappuchino/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCappuchino/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCappuchino/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCappuchino/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCappuchino/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCappuchino/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCappuchino/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCappuchino/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCappuchino/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCappuchino/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCappuchino/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCappuchino/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCappuchino/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCappuchino/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCappuchino/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCappuchino/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCappuchino/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCappuchino/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCappuchino/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCappuchino/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCappuchino/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCappuchino/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCappuchino/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCappuchino/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCappuchino/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCappuchino/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCappuchino/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCappuchino/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCappuchino/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCappuchino/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCappuchino/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCappuchino/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCappuchino/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCappuchino/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVChocolate/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVChocolate/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVChocolate/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVChocolate/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVChocolate/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVChocolate/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVChocolate/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVChocolate/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVChocolate/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVChocolate/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVChocolate/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVChocolate/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVChocolate/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVChocolate/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVChocolate/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVChocolate/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVChocolate/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVChocolate/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVChocolate/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVChocolate/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVChocolate/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVChocolate/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVChocolate/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVChocolate/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVChocolate/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVChocolate/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVChocolate/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVChocolate/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVChocolate/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVChocolate/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVChocolate/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVChocolate/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVChocolate/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVChocolate/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVChocolate/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVChocolate/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVChocolate/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVChocolate/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVChocolate/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVChocolate/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVChocolate/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVChocolate/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVChocolate/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVChocolate/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVChocolate/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVChocolate/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVChocolate/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVChocolate/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCyan/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCyan/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCyan/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCyan/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCyan/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCyan/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCyan/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCyan/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCyan/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCyan/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCyan/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCyan/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCyan/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCyan/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCyan/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCyan/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCyan/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCyan/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCyan/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCyan/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCyan/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCyan/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCyan/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCyan/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCyan/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCyan/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCyan/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCyan/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCyan/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCyan/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCyan/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCyan/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCyan/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCyan/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCyan/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCyan/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCyan/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCyan/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCyan/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCyan/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCyan/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCyan/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCyan/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCyan/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCyan/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCyan/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVCyan/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVCyan/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVDeepBlue/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVDeepBlue/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVDeepBlue/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVDeepBlue/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVDeepBlue/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVDeepBlue/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVDeepBlue/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVDeepBlue/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVDeepBlue/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVDeepBlue/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVDeepBlue/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVDeepBlue/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVDeepBlue/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVDeepBlue/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVDeepBlue/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVDeepBlue/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVDeepBlue/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVDeepBlue/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVDeepBlue/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVDeepBlue/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVDeepBlue/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVDeepBlue/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVDeepBlue/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVDeepBlue/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVDeepBlue/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVDeepBlue/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVDeepBlue/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVDeepBlue/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVDeepBlue/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVDeepBlue/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVDeepBlue/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVDeepBlue/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVDeepBlue/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVDeepBlue/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVDeepBlue/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVDeepBlue/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVDeepBlue/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVDeepBlue/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVDeepBlue/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVDeepBlue/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVDeepBlue/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVDeepBlue/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVDeepBlue/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVDeepBlue/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVDeepBlue/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVDeepBlue/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVDeepBlue/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVDeepBlue/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVdefault/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVdefault/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVdefault/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVdefault/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVdefault/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVdefault/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVdefault/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVdefault/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVdefault/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVdefault/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVdefault/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVdefault/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVdefault/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVdefault/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVdefault/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVdefault/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVdefault/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVdefault/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVdefault/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVdefault/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVdefault/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVdefault/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVdefault/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVdefault/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVdefault/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVdefault/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVdefault/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVdefault/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVdefault/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVdefault/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVdefault/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVdefault/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVFog/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVFog/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVFog/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVFog/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVFog/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVFog/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVFog/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVFog/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVFog/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVFog/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVFog/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVFog/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVFog/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVFog/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVFog/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVFog/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVFog/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVFog/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVFog/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVFog/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVFog/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVFog/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVFog/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVFog/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVFog/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVFog/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVFog/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVFog/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVFog/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVFog/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVFog/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVFog/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVFog/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVFog/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVFog/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVFog/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVFog/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVFog/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVFog/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVFog/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVFog/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVFog/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVFog/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVFog/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVFog/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVFog/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVFog/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVFog/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrapefruit/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrapefruit/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrapefruit/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrapefruit/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrapefruit/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrapefruit/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrapefruit/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrapefruit/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrapefruit/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrapefruit/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrapefruit/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrapefruit/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrapefruit/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrapefruit/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrapefruit/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrapefruit/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrapefruit/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrapefruit/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrapefruit/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrapefruit/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrapefruit/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrapefruit/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrapefruit/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrapefruit/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrapefruit/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrapefruit/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrapefruit/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrapefruit/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrapefruit/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrapefruit/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrapefruit/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrapefruit/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrapefruit/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrapefruit/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrapefruit/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrapefruit/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrapefruit/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrapefruit/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrapefruit/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrapefruit/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrapefruit/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrapefruit/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrapefruit/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrapefruit/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrapefruit/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrapefruit/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrapefruit/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrapefruit/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen2/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen2/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen2/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen2/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen2/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen2/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen2/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen2/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen2/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen2/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen2/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen2/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen2/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen2/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen2/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen2/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen2/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen2/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen2/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen2/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen2/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen2/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen2/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen2/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen2/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen2/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen2/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen2/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen2/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen2/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen2/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen2/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen2/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen2/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen2/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen2/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen2/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen2/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen2/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen2/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen2/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen2/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen2/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen2/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen2/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen2/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGreen2/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGreen2/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrey/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrey/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrey/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrey/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrey/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrey/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrey/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrey/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrey/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrey/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrey/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrey/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrey/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrey/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrey/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrey/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrey/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrey/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrey/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrey/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrey/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrey/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrey/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrey/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrey/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrey/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrey/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrey/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrey/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrey/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrey/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrey/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrey/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrey/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrey/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrey/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrey/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrey/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrey/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrey/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrey/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrey/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrey/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrey/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrey/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrey/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVGrey/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVGrey/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty2/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty2/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty2/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty2/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty2/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty2/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty2/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty2/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty2/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty2/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty2/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty2/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty2/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty2/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty2/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty2/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty2/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty2/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty2/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty2/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty2/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty2/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty2/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty2/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty2/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty2/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty2/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty2/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty2/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty2/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty2/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty2/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty2/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty2/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty2/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty2/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty2/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty2/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty2/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty2/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty2/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty2/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty2/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty2/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty2/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty2/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVHelloKitty2/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVHelloKitty2/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightBlue/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightBlue/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightBlue/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightBlue/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightBlue/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightBlue/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightBlue/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightBlue/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightBlue/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightBlue/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightBlue/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightBlue/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightBlue/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightBlue/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightBlue/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightBlue/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightBlue/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightBlue/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightBlue/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightBlue/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightBlue/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightBlue/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightBlue/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightBlue/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightBlue/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightBlue/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightBlue/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightBlue/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightBlue/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightBlue/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightBlue/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightBlue/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightBlue/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightBlue/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightBlue/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightBlue/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightBlue/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightBlue/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightBlue/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightBlue/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightBlue/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightBlue/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightBlue/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightBlue/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightBlue/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightBlue/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightBlue/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightBlue/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightGreen/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightGreen/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightGreen/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightGreen/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightGreen/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightGreen/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightGreen/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightGreen/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightGreen/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightGreen/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightGreen/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightGreen/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightGreen/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightGreen/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightGreen/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightGreen/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightGreen/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightGreen/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightGreen/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightGreen/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightGreen/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightGreen/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightGreen/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightGreen/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightGreen/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightGreen/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightGreen/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightGreen/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightGreen/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightGreen/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightGreen/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightGreen/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightGreen/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightGreen/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightGreen/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightGreen/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightGreen/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightGreen/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightGreen/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightGreen/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightGreen/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightGreen/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightGreen/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightGreen/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightGreen/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightGreen/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVLightGreen/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVLightGreen/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVMint/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVMint/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVMint/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVMint/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVMint/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVMint/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVMint/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVMint/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVMint/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVMint/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVMint/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVMint/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVMint/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVMint/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVMint/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVMint/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVMint/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVMint/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVMint/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVMint/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVMint/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVMint/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVMint/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVMint/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVMint/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVMint/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVMint/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVMint/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVMint/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVMint/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVMint/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVMint/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVMint/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVMint/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVMint/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVMint/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVMint/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVMint/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVMint/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVMint/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVMint/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVMint/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVMint/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVMint/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVMint/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVMint/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVMint/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVMint/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVNuts/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVNuts/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVNuts/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVNuts/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVNuts/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVNuts/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVNuts/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVNuts/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVNuts/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVNuts/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVNuts/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVNuts/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVNuts/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVNuts/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVNuts/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVNuts/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVNuts/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVNuts/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVNuts/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVNuts/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVNuts/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVNuts/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVNuts/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVNuts/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVNuts/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVNuts/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVNuts/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVNuts/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVNuts/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVNuts/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVNuts/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVNuts/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVNuts/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVNuts/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVNuts/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVNuts/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVNuts/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVNuts/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVNuts/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVNuts/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVNuts/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVNuts/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVNuts/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVNuts/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVNuts/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVNuts/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVNuts/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVNuts/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVOlive/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVOlive/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVOlive/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVOlive/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVOlive/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVOlive/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVOlive/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVOlive/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVOlive/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVOlive/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVOlive/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVOlive/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVOlive/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVOlive/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVOlive/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVOlive/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVOlive/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVOlive/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVOlive/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVOlive/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVOlive/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVOlive/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVOlive/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVOlive/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVOlive/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVOlive/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVOlive/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVOlive/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVOlive/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVOlive/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVOlive/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVOlive/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVOlive/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVOlive/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVOlive/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVOlive/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVOlive/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVOlive/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVOlive/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVOlive/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVOlive/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVOlive/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVOlive/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVOlive/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVOlive/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVOlive/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVOlive/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVOlive/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPflaume/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPflaume/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPflaume/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPflaume/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPflaume/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPflaume/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPflaume/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPflaume/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPflaume/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPflaume/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPflaume/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPflaume/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPflaume/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPflaume/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPflaume/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPflaume/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPflaume/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPflaume/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPflaume/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPflaume/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPflaume/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPflaume/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPflaume/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPflaume/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPflaume/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPflaume/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPflaume/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPflaume/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPflaume/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPflaume/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPflaume/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPflaume/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPflaume/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPflaume/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPflaume/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPflaume/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPflaume/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPflaume/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPflaume/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPflaume/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPflaume/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPflaume/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPflaume/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPflaume/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPflaume/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPflaume/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPflaume/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPflaume/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPumpkin/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPumpkin/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPumpkin/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPumpkin/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPumpkin/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPumpkin/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPumpkin/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPumpkin/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPumpkin/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPumpkin/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPumpkin/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPumpkin/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPumpkin/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPumpkin/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPumpkin/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPumpkin/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPumpkin/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPumpkin/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPumpkin/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPumpkin/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPumpkin/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPumpkin/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPumpkin/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPumpkin/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPumpkin/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPumpkin/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPumpkin/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPumpkin/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPumpkin/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPumpkin/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPumpkin/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPumpkin/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPumpkin/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPumpkin/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPumpkin/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPumpkin/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPumpkin/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPumpkin/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPumpkin/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPumpkin/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPumpkin/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPumpkin/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPumpkin/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPumpkin/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPumpkin/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPumpkin/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPumpkin/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPumpkin/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurple/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurple/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurple/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurple/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurple/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurple/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurple/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurple/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurple/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurple/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurple/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurple/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurple/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurple/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurple/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurple/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurple/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurple/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurple/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurple/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurple/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurple/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurple/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurple/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurple/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurple/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurple/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurple/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurple/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurple/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurple/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurple/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurple/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurple/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurple/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurple/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurple/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurple/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurple/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurple/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurple/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurple/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurple/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurple/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurple/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurple/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurple/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurple/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurpleGrey/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurpleGrey/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurpleGrey/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurpleGrey/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurpleGrey/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurpleGrey/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurpleGrey/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurpleGrey/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurpleGrey/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurpleGrey/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurpleGrey/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurpleGrey/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurpleGrey/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurpleGrey/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurpleGrey/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurpleGrey/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurpleGrey/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurpleGrey/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurpleGrey/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurpleGrey/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurpleGrey/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurpleGrey/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurpleGrey/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurpleGrey/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurpleGrey/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurpleGrey/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurpleGrey/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurpleGrey/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurpleGrey/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurpleGrey/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurpleGrey/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurpleGrey/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurpleGrey/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurpleGrey/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurpleGrey/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurpleGrey/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurpleGrey/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurpleGrey/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurpleGrey/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurpleGrey/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurpleGrey/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurpleGrey/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurpleGrey/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurpleGrey/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurpleGrey/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurpleGrey/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVPurpleGrey/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVPurpleGrey/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRauchglas/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRauchglas/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRauchglas/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRauchglas/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRauchglas/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRauchglas/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRauchglas/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRauchglas/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRauchglas/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRauchglas/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRauchglas/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRauchglas/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRauchglas/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRauchglas/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRauchglas/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRauchglas/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRauchglas/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRauchglas/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRauchglas/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRauchglas/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRauchglas/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRauchglas/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRauchglas/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRauchglas/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRauchglas/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRauchglas/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRauchglas/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRauchglas/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRauchglas/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRauchglas/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRauchglas/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRauchglas/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRauchglas/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRauchglas/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRauchglas/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRauchglas/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRauchglas/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRauchglas/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRauchglas/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRauchglas/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRauchglas/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRauchglas/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRauchglas/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRauchglas/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRauchglas/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRauchglas/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRauchglas/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRauchglas/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRed/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRed/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRed/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRed/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRed/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRed/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRed/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRed/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRed/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRed/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRed/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRed/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRed/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRed/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRed/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRed/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRed/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRed/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRed/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRed/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRed/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRed/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRed/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRed/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRed/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRed/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRed/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRed/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRed/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRed/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRed/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRed/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRed/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRed/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRed/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRed/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRed/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRed/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRed/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRed/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRed/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRed/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRed/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRed/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRed/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRed/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVRed/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVRed/uncrypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVXMAS/169.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVXMAS/169.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVXMAS/221.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVXMAS/221.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVXMAS/43.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVXMAS/43.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVXMAS/changroup.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVXMAS/changroup.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVXMAS/crypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVXMAS/crypted.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVXMAS/forward.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVXMAS/forward.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVXMAS/forward_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVXMAS/forward_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVXMAS/hd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVXMAS/hd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVXMAS/logo_background.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVXMAS/logo_background.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVXMAS/pause.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVXMAS/pause.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVXMAS/pause_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVXMAS/pause_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVXMAS/play.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVXMAS/play.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVXMAS/play_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVXMAS/play_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVXMAS/prev.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVXMAS/prev.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVXMAS/prev_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVXMAS/prev_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVXMAS/radio.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVXMAS/radio.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVXMAS/recording_cutted_extra.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVXMAS/recording_cutted_extra.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVXMAS/rewind.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVXMAS/rewind.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVXMAS/rewind_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVXMAS/rewind_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVXMAS/sd.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVXMAS/sd.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVXMAS/skip.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVXMAS/skip.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVXMAS/skip_sel.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVXMAS/skip_sel.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVXMAS/tv.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVXMAS/tv.png differ Binary files /tmp/zWPiatyvDy/vdr-plugin-skinflatplus-0.2.1/icons/MVXMAS/uncrypted.png and /tmp/iYxzS2YDTQ/vdr-plugin-skinflatplus-0.3.0/icons/MVXMAS/uncrypted.png differ diff -Nru vdr-plugin-skinflatplus-0.2.1/imageloader.c vdr-plugin-skinflatplus-0.3.0/imageloader.c --- vdr-plugin-skinflatplus-0.2.1/imageloader.c 2014-03-25 19:21:56.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/imageloader.c 2014-05-11 11:16:37.000000000 +0000 @@ -42,9 +42,9 @@ #ifdef DEBUGIMAGELOADTIME uint32_t tick3 = GetMsTicks(); #endif - + bool success = LoadImage(File); - + if( !success ) { dsyslog("imageloader LoadLogo: %s could not be loaded", *File); return NULL; @@ -57,9 +57,9 @@ #ifdef DEBUGIMAGELOADTIME uint32_t tick5 = GetMsTicks(); #endif - + img = CreateImage(width, height); - + if( img == NULL ) return NULL; @@ -87,9 +87,9 @@ #ifdef DEBUGIMAGELOADTIME uint32_t tick1 = GetMsTicks(); #endif - + img = imgCache.GetImage( *File, width, height ); - + #ifdef DEBUGIMAGELOADTIME uint32_t tick2 = GetMsTicks(); dsyslog(" search in cache: %d ms", tick2 - tick1); @@ -100,23 +100,23 @@ #ifdef DEBUGIMAGELOADTIME uint32_t tick3 = GetMsTicks(); #endif - + bool success = LoadImage(File); - + #ifdef DEBUGIMAGELOADTIME uint32_t tick4 = GetMsTicks(); dsyslog(" load file from disk: %d ms", tick4 - tick3); #endif - + if( !success ) { File = cString::sprintf("%s%s/%s.%s", *Config.iconPath, "default", cIcon, *logoExtension); #ifdef DEBUGIMAGELOADTIME dsyslog("imageloader load icon %s", *File); uint32_t tick5 = GetMsTicks(); #endif - + img = imgCache.GetImage( *File, width, height ); - + #ifdef DEBUGIMAGELOADTIME uint32_t tick6 = GetMsTicks(); dsyslog(" search in cache: %d ms", tick6 - tick5); @@ -127,14 +127,14 @@ #ifdef DEBUGIMAGELOADTIME uint32_t tick7 = GetMsTicks(); #endif - + success = LoadImage(File); - + #ifdef DEBUGIMAGELOADTIME uint32_t tick8 = GetMsTicks(); dsyslog(" load file from disk: %d ms", tick8 - tick7); #endif - + if( !success ) { dsyslog("imageloader LoadIcon: %s could not be loaded", *File); return NULL; @@ -143,9 +143,9 @@ #ifdef DEBUGIMAGELOADTIME uint32_t tick9 = GetMsTicks(); #endif - + img = CreateImage(width, height); - + #ifdef DEBUGIMAGELOADTIME uint32_t tick10 = GetMsTicks(); dsyslog(" scale logo: %d ms", tick10 - tick9); @@ -156,9 +156,69 @@ return img; } +cImage* cImageLoader::LoadFile(const char *cFile, int width, int height, bool preserveAspect) { + if( (width == 0) || (height==0) ) + return NULL; + cString File = cFile; + #ifdef DEBUGIMAGELOADTIME + dsyslog("imageloader load file %s", *File); + #endif + + cImage *img; + #ifdef DEBUGIMAGELOADTIME + uint32_t tick1 = GetMsTicks(); + #endif + + img = imgCache.GetImage( *File, width, height ); + + #ifdef DEBUGIMAGELOADTIME + uint32_t tick2 = GetMsTicks(); + dsyslog(" search in cache: %d ms", tick2 - tick1); + #endif + if( img != NULL ) + return img; + + #ifdef DEBUGIMAGELOADTIME + uint32_t tick3 = GetMsTicks(); + #endif + + bool success = LoadImage(File); + + if( !success ) { + dsyslog("imageloader LoadFile: %s could not be loaded", *File); + return NULL; + } + #ifdef DEBUGIMAGELOADTIME + uint32_t tick4 = GetMsTicks(); + dsyslog(" load file from disk: %d ms", tick4 - tick3); + #endif + + #ifdef DEBUGIMAGELOADTIME + uint32_t tick5 = GetMsTicks(); + #endif + + img = CreateImage(width, height); + + if( img == NULL ) + return NULL; + + #ifdef DEBUGIMAGELOADTIME + uint32_t tick6 = GetMsTicks(); + dsyslog(" scale logo: %d ms", tick6 - tick5); + #endif + + imgCache.InsertImage(img, *File, width, height); + return img; +} + void cImageLoader::toLowerCase(std::string &str) { const int length = str.length(); for(int i=0; i < length; ++i) { str[i] = std::tolower(str[i]); } } + +bool cImageLoader::FileExits(const std::string& name) { + struct stat buffer; + return (stat (name.c_str(), &buffer) == 0); +} diff -Nru vdr-plugin-skinflatplus-0.2.1/imageloader.h vdr-plugin-skinflatplus-0.3.0/imageloader.h --- vdr-plugin-skinflatplus-0.2.1/imageloader.h 2014-03-25 19:21:56.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/imageloader.h 2014-05-11 11:16:37.000000000 +0000 @@ -15,10 +15,11 @@ public: cImageLoader(); ~cImageLoader(); - + cImage* LoadLogo(const char *logo, int width, int height); cImage* LoadIcon(const char *cIcon, int width, int height, bool preserveAspect = true); - + cImage* LoadFile(const char *cFile, int width, int height, bool preserveAspect = true); + bool FileExits(const std::string& name); private: int epgImageWidthLarge, epgImageHeightLarge; int epgImageWidth, epgImageHeight; diff -Nru vdr-plugin-skinflatplus-0.2.1/Makefile vdr-plugin-skinflatplus-0.3.0/Makefile --- vdr-plugin-skinflatplus-0.2.1/Makefile 2014-03-25 19:21:56.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/Makefile 2014-05-11 11:16:37.000000000 +0000 @@ -25,7 +25,8 @@ # vdrlogo_yavdr VDRLOGO = vdrlogo_default -# -DDEBUGIMAGELOADTIME +#DEFINES += -DDEBUGIMAGELOADTIME +#DEFINES += -DDEBUGEPGTIME ### The version number of this plugin (taken from the main source file): @@ -73,7 +74,7 @@ ### The object files (add further files here): -OBJS = config.o setup.o imagecache.o imagescaler.o imagemagickwrapper.o imageloader.o baserender.o displaychannel.o displaymenu.o displaymessage.o \ +OBJS = config.o setup.o imagecache.o imagescaler.o imagemagickwrapper.o imageloader.o baserender.o complexcontent.o displaychannel.o displaymenu.o displaymessage.o \ displayreplay.o displaytracks.o displayvolume.o flat.o $(PLUGIN).o ### The main target: @@ -139,7 +140,7 @@ install-icons: mkdir -p $(DESTDIR)$(PLGRESDIR)/icons cp -r icons/* $(DESTDIR)$(PLGRESDIR)/icons - + install: install-lib install-i18n install-themes install-icons install-decors dist: $(I18Npo) clean diff -Nru vdr-plugin-skinflatplus-0.2.1/MV_Themes.HISTORY vdr-plugin-skinflatplus-0.3.0/MV_Themes.HISTORY --- vdr-plugin-skinflatplus-0.2.1/MV_Themes.HISTORY 2014-03-25 19:21:56.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/MV_Themes.HISTORY 2014-05-11 11:16:37.000000000 +0000 @@ -61,3 +61,5 @@ und 'topbar_timerconflict_high.png' angepasst - Hinweis auf 'make install' im Skript 'flatPlus_MV_Update.sh' - Option für 'Silent Update' (-u) im Skript 'flatPlus_MV_Update.sh' + [03.04.2014] - 'logo_background.png' entfernt. Nutzt nun das default Logo + [10.04.2014] - Logos 'radio.png' und 'tv.png' angepasst diff -Nru vdr-plugin-skinflatplus-0.2.1/MV_Themes.INFO vdr-plugin-skinflatplus-0.3.0/MV_Themes.INFO --- vdr-plugin-skinflatplus-0.2.1/MV_Themes.INFO 2014-03-25 19:21:56.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/MV_Themes.INFO 2014-05-11 11:16:37.000000000 +0000 @@ -1,4 +1,4 @@ -flatPlus-MV_Themen erstellt am 22.03.2014 15:41 +flatPlus-MV_Themen erstellt am 10.04.2014 10:16 Basisthema: flatPlus-MVGreen.theme, Basisicons: MVdefault => Installationshimnweise am Ende der Datei! <= diff -Nru vdr-plugin-skinflatplus-0.2.1/po/de_DE.po vdr-plugin-skinflatplus-0.3.0/po/de_DE.po --- vdr-plugin-skinflatplus-0.2.1/po/de_DE.po 2014-03-25 19:21:56.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/po/de_DE.po 2014-05-11 11:16:37.000000000 +0000 @@ -4,9 +4,9 @@ # msgid "" msgstr "" -"Project-Id-Version: vdr-skinflat 0.2.1\n" +"Project-Id-Version: vdr-skinflat 0.3.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-03-22 16:32+0100\n" +"POT-Creation-Date: 2014-05-09 18:05+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -15,15 +15,15 @@ "Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Transfer-Encoding: 8bit\n" -msgid "clock" -msgstr "Uhr" - msgid "disk usage" msgstr "Plattennutzung" msgid "free" msgstr "frei" +msgid "clock" +msgstr "Uhr" + msgid "Video" msgstr "Video" @@ -39,6 +39,66 @@ msgid "no recording info" msgstr "keine Aufnahme Informationen" +msgid "name: " +msgstr "Name: " + +msgid "first aired: " +msgstr "Erstausstrahlung: " + +msgid "network: " +msgstr "Sender: " + +msgid "genre: " +msgstr "Genre: " + +msgid "rating: " +msgstr "Wertung: " + +msgid "status: " +msgstr "Status: " + +msgid "season number: " +msgstr "Staffel: " + +msgid "episode number: " +msgstr "Folge: " + +msgid "title: " +msgstr "Title: " + +msgid "original title: " +msgstr "Originaltitle: " + +msgid "collection name: " +msgstr "" + +msgid "release date: " +msgstr "Erscheinungsdatum: " + +msgid "popularity: " +msgstr "Beliebtheit: " + +msgid "vote average: " +msgstr "durchsch. Wertung: " + +msgid "Description" +msgstr "Beschreibung" + +msgid "Movie information" +msgstr "Film Informationen" + +msgid "Series information" +msgstr "Serien Informationen" + +msgid "Actors" +msgstr "Schauspieler" + +msgid "Reruns" +msgstr "Wiederholungen" + +msgid "Video information" +msgstr "Video Informationen" + msgid "Length" msgstr "Länge" @@ -63,6 +123,9 @@ msgid "search pattern" msgstr "Suchmuster" +msgid "Recording information" +msgstr "Aufnahme Informationen" + msgid "Audio Tracks" msgstr "Audio Tracks" @@ -120,6 +183,18 @@ msgid "big line + alpha blend" msgstr "" +msgid "do not show" +msgstr "nicht anzeigen" + +msgid "timer & recording menu" +msgstr "Timer & Aufnahme Menü" + +msgid "always on the menu" +msgstr "immer im Menü" + +msgid "always show" +msgstr "immer anzeigen" + msgid "VDR default" msgstr "VDR standard" @@ -156,6 +231,12 @@ msgid "Tracks settings" msgstr "Audiospur Einstellungen" +msgid "TVScraper / scraper2vdr settings" +msgstr "TVScraper / scraper2vdr Einstellungen" + +msgid "TVScraper / scraper2vdr not installed" +msgstr "TVScraper / scraper2vdr nicht installiert" + msgid "Decorfile" msgstr "Decordatei" @@ -279,6 +360,9 @@ msgid "Show additional EPG info" msgstr "Zeige Zusatzinfo bei EPG" +msgid "Show reruns in EPG info" +msgstr "Zeige Wiederholungen bei EPG" + msgid "Main menuitem scale" msgstr "Hauptmenüeintrag Scale" @@ -372,14 +456,20 @@ msgid "Tracks border size" msgstr "Audiospur Rand Größe" -#~ msgid "C" -#~ msgstr "K" +msgid "Channelinfo show poster?" +msgstr "Kanalinfo zeige Poster?" + +msgid "Channelinfo poster size" +msgstr "Kanalinfo Poster Größe" + +msgid "EPG info show poster?" +msgstr "EPG-Info zeige Poster?" -#~ msgid "Recordings" -#~ msgstr "Aufnahmen" +msgid "recording info show poster?" +msgstr "Aufnahmeinfo zeige Poster?" -#~ msgid "Unwatched" -#~ msgstr "Ungesehen" +msgid "EPG info show actors?" +msgstr "EPG-Info zeige Schauspieler?" -#~ msgid "Recs" -#~ msgstr "Aufn." +msgid "recording info show actors?" +msgstr "Aufnahmeinfo zeige Schauspieler?" diff -Nru vdr-plugin-skinflatplus-0.2.1/README vdr-plugin-skinflatplus-0.3.0/README --- vdr-plugin-skinflatplus-0.2.1/README 2014-03-25 19:21:56.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/README 2014-05-11 11:16:37.000000000 +0000 @@ -4,6 +4,7 @@ Project's homepage: http://projects.vdr-developer.org/projects/plg-skinflatplus/ +Projekt Wiki http://projects.vdr-developer.org/projects/plg-skinflatplus/wiki This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -11,35 +12,69 @@ (at your option) any later version. See the file COPYING for more information. -Requirements ------------- -- VDR version >= 1.7.34 +Anforderungen +------------------------------- +- VDR Version >= 1.7.34 +- ImageMagick zur Anzeige von png/jpg Icons, Kanal Logos and EPG Bilder + + +Beschreibung +------------------------------- +Skin flatPlus ist ein moderner und aktueller Skin für VDR. +Das Design ist flach und geradlinig (keine glossy oder 3D-Effekte) + -- Installed ImageMagick for displaying png/jpg Icons, Channel Logos and EPG Images +git-Zugriff +------------------------------- +Auf das git kann mittels + +git clone http://projects.vdr-developer.org/git/skin-flatplus.git/ -Description ------------ -Skin flatPlus basiert auf dem Skin flat. Im Gegensatz zu diesem ist der Skin flatPlus grafisch aufwendiger -und an die Bedürfnisse Konfigurierbar. Derzeit ist der Hauptunterschied die Decorations mit Border und ProgressBar. +zugegriffen werden. +Da im git natürlich aktiv entwickelt wird können Fehler nicht ausgeschlossen werden (ich empfehle es nicht für produktiv Systeme) -Installation ------------- +Installation +------------------------------- Installation wie bei allen VDR Plugins. make make install -Für die Kanallogos empfehle ich die Logos von 3PO Repo (https://github.com/3PO/Senderlogos). -Diese können mit folgendem Befehl heruntergeladen werden: - git clone https://github.com/3PO/Senderlogos.git logos +Für die Kanallogos empfehle ich die Logos von Copperhead: http://creimer.net/channellogos/ +Ich nutze "nopacity-logos-white" Die Logos müssen im folgenden Ordner zur Verfügung gestellt werden: /plugins/skinflat/logos/ Der Skin muss im Menü unter Einstellungen -> OSD ausgewählt werden. -Themes and theme specific Icons +Versteckte Einstellungen +------------------------------- +Versteckte Einstellungen sind Einstellungen die in der VDR setup.conf konfiguriert werden können, wozu es aber keine Einstellungen im OSD -> Einstellungen -> Plugins -> skinflatplus gibt. + +* MenuItemRecordingClearPercent - Wenn die Einstellung auf 1 gesetzt ist, wird vom Aufnahmetext das Prozentzeichen am Anfang des Strings entfernt. +* MenuItemRecordingShowFolderDate - Wenn die Einstellung auf 1 gesetzt ist, wird bei einem Ordner von der neuesten Aufzeichnung das Datum angezeigt, Wenn die Einstellung auf 2 gesetzt ist, wird bei einem Ordner von der ältesten Aufzeichnung das Datum angezeigt. +* MenuItemParseTilde - Wenn die Einstellung auf 1 gesetzt ist, wird beim Menü-Item-Text auf den Buchstaben Tilde '~' geprüft und wenn eine Tilde gefunden wurde, wird die Tilde entfernt und alles was nach der Tilde steht in einer anderen Farbe dargestellt. Dies ist z.B. interessant wenn man epgsearch hat. + + +TVScraper & scraper2vdr +------------------------------- +Since version 0.3.0 the skin support TVScraper & scraper2vdr. +With both plugins you'll get poster, banner and actor images for recordings and epg info. +If You use scraper2vdr, which I recommend, you'll also get movie and series information. + + +epgd & doppelte Informationen in EPG-Text +------------------------------- +Wenn epgd + epg2vdr verwendet wird, wird der angezeigte EPG-Text über die eventsview.sql festgelegt (in der epgd.conf Option: EpgView). +Mit der default eventsview.sql ist im EPG-Text die Schauspieler, Serien- und Filminformationen mit enthalten. Da diese dann doppelt angezeigt werden würden (im EPG-Text und in den extra Bereichen über scraper2vdr) existiert im contrib-Ordner von flatPlus eine eigene "eventsview-flatplus.sql". Mit dieser wird im EPG-Text wirklich nur der EPG-Text ausgeben und keine weiteren Informationen. +Ich empfehle diese zu verwenden. Dafür einfach die Datei aus den contrib Ordner nach /etc/epgd/ kopieren und in der epgd.conf folgenden Eintrag verwenden: + +EpgView = eventsview-flatplus.sql + + +Themes und Theme spezifische Icons ------------------------------- Der Skin ist weitestgehend über Themes anpassbar. Die Decorations (Border, ProgressBar) sind über das Theme einstellbar. Dabei kann jeweils der Typ und diff -Nru vdr-plugin-skinflatplus-0.2.1/services/scraper2vdr.h vdr-plugin-skinflatplus-0.3.0/services/scraper2vdr.h --- vdr-plugin-skinflatplus-0.2.1/services/scraper2vdr.h 1970-01-01 00:00:00.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/services/scraper2vdr.h 2014-05-11 11:16:37.000000000 +0000 @@ -0,0 +1,194 @@ +#ifndef __SCRAPER2VDRSERVICES_H +#define __SCRAPER2VDRSERVICES_H + +#include +#include + +enum tvType { + tSeries, + tMovie, + tNone, +}; + +/********************************************************************* +* Helper Structures +*********************************************************************/ +class cTvMedia { +public: + cTvMedia(void) { + path = ""; + width = height = 0; + }; + std::string path; + int width; + int height; +}; + +class cEpisode { +public: + cEpisode(void) { + number = 0; + season = 0; + name = ""; + firstAired = ""; + guestStars = ""; + overview = ""; + rating = 0.0; + }; + int number; + int season; + std::string name; + std::string firstAired; + std::string guestStars; + std::string overview; + float rating; + cTvMedia episodeImage; +}; + +class cActor { +public: + cActor(void) { + name = ""; + role = ""; + }; + std::string name; + std::string role; + cTvMedia actorThumb; +}; + +/********************************************************************* +* Data Structures for Service Calls +*********************************************************************/ + +// Data structure for service "GetEventType" +class ScraperGetEventType { +public: + ScraperGetEventType(void) { + event = NULL; + recording = NULL; + type = tNone; + movieId = 0; + seriesId = 0; + episodeId = 0; + }; +// in + const cEvent *event; // check type for this event + const cRecording *recording; // or for this recording +//out + tvType type; //typeSeries or typeMovie + int movieId; + int seriesId; + int episodeId; +}; + +//Data structure for full series and episode information +class cMovie { +public: + cMovie(void) { + title = ""; + originalTitle = ""; + tagline = ""; + overview = ""; + adult = false; + collectionName = ""; + budget = 0; + revenue = 0; + genres = ""; + homepage = ""; + releaseDate = ""; + runtime = 0; + popularity = 0.0; + voteAverage = 0.0; + }; +//IN + int movieId; // movieId fetched from ScraperGetEventType +//OUT + std::string title; + std::string originalTitle; + std::string tagline; + std::string overview; + bool adult; + std::string collectionName; + int budget; + int revenue; + std::string genres; + std::string homepage; + std::string releaseDate; + int runtime; + float popularity; + float voteAverage; + cTvMedia poster; + cTvMedia fanart; + cTvMedia collectionPoster; + cTvMedia collectionFanart; + std::vector actors; +}; + +//Data structure for full series and episode information +class cSeries { +public: + cSeries(void) { + seriesId = 0; + episodeId = 0; + name = ""; + overview = ""; + firstAired = ""; + network = ""; + genre = ""; + rating = 0.0; + status = ""; + }; +//IN + int seriesId; // seriesId fetched from ScraperGetEventType + int episodeId; // episodeId fetched from ScraperGetEventType +//OUT + std::string name; + std::string overview; + std::string firstAired; + std::string network; + std::string genre; + float rating; + std::string status; + cEpisode episode; + std::vector actors; + std::vector posters; + std::vector banners; + std::vector fanarts; + cTvMedia seasonPoster; +}; + +// Data structure for service "GetPosterBanner" +class ScraperGetPosterBanner { +public: + ScraperGetPosterBanner(void) { + type = tNone; + }; +// in + const cEvent *event; // check type for this event +//out + tvType type; //typeSeries or typeMovie + cTvMedia poster; + cTvMedia banner; +}; + +// Data structure for service "GetPoster" +class ScraperGetPoster { +public: +// in + const cEvent *event; // check type for this event + const cRecording *recording; // or for this recording +//out + cTvMedia poster; +}; + +// Data structure for service "GetPosterThumb" +class ScraperGetPosterThumb { +public: +// in + const cEvent *event; // check type for this event + const cRecording *recording; // or for this recording +//out + cTvMedia poster; +}; + +#endif //__SCRAPER2VDRSERVICES_H \ No newline at end of file diff -Nru vdr-plugin-skinflatplus-0.2.1/services/tvscraper.h vdr-plugin-skinflatplus-0.3.0/services/tvscraper.h --- vdr-plugin-skinflatplus-0.2.1/services/tvscraper.h 1970-01-01 00:00:00.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/services/tvscraper.h 2014-05-11 11:16:37.000000000 +0000 @@ -0,0 +1,56 @@ +enum tvMediaType { + typeSeries, + typeMovie, + typeNone, +}; + +struct tvMedia { + std::string path; + int width; + int height; +}; + +struct tvActor { + std::string name; + std::string role; + tvMedia thumb; +}; + +// Data structure for service "TVScraper-GetPosterOrBanner" +struct TVScraperGetPosterOrBanner +{ +// in + const cEvent *event; // search image for this event +//out + tvMediaType type; //typeSeries or typeMovie + tvMedia media; //banner or poster +}; + +// Data structure for service "TVScraper-GetPoster" +struct TVScraperGetPoster +{ +// in + const cEvent *event; // search image for this event + bool isRecording; // search in current EPG or recordings +//out + tvMedia media; //poster +}; + + +/* Data structure for service "TVScraper-GetFullEPGInformation" +if type == typeMovie a poster and a fanart image is delivered +if type == typeSeries a banner and up to three posters and fanarts are delivered +*/ +struct TVScraperGetFullInformation +{ +// in + const cEvent *event; // search all media for this event + bool isRecording; // search in current EPG or recordings +//out + tvMediaType type; + tvMedia banner; + std::vector posters; + std::vector fanart; + std::vector actors; + std::string description; +}; \ No newline at end of file diff -Nru vdr-plugin-skinflatplus-0.2.1/setup.c vdr-plugin-skinflatplus-0.3.0/setup.c --- vdr-plugin-skinflatplus-0.2.1/setup.c 2014-03-25 19:21:56.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/setup.c 2014-05-11 11:16:37.000000000 +0000 @@ -1,6 +1,7 @@ #include "setup.h" cStringList Bordertypes; +cStringList DiskUsages; cStringList Progresstypes; cStringList MenuChannelViews; cStringList MenuTimerViews; @@ -15,14 +16,14 @@ } cFlatSetup::~cFlatSetup() { - + } void cFlatSetup::Setup(void) { Clear(); Bordertypes.Clear(); Progresstypes.Clear(); - + Bordertypes.Clear(); Bordertypes.Append( strdup(tr("none")) ); Bordertypes.Append( strdup(tr("rect")) ); @@ -44,6 +45,12 @@ Progresstypes.Append( strdup(tr("small line + big line + alpha blend")) ); Progresstypes.Append( strdup(tr("big line + alpha blend")) ); + DiskUsages.Clear(); + DiskUsages.Append( strdup(tr("do not show")) ); + DiskUsages.Append( strdup(tr("timer & recording menu")) ); + DiskUsages.Append( strdup(tr("always on the menu")) ); + DiskUsages.Append( strdup(tr("always show")) ); + MenuChannelViews.Clear(); MenuChannelViews.Append( strdup(tr("VDR default")) ); MenuChannelViews.Append( strdup(tr("flatPlus long")) ); @@ -76,6 +83,13 @@ Add(new cOsdItem(tr("Volume settings"), osUnknown, true)); Add(new cOsdItem(tr("Tracks settings"), osUnknown, true)); + static cPlugin *pTVScraper = cPluginManager::GetPlugin("tvscraper"); + static cPlugin *pScraper2Vdr = cPluginManager::GetPlugin("scraper2vdr"); + if( pTVScraper || pScraper2Vdr ) + Add(new cOsdItem(tr("TVScraper / scraper2vdr settings"), osUnknown, true)); + else + Add(new cOsdItem(tr("TVScraper / scraper2vdr not installed"), osUnknown, false)); + if( ItemLastSel >= 0 ) { SetCurrent(Get(ItemLastSel)); ItemLastSel = -1; @@ -85,7 +99,7 @@ } eOSState cFlatSetup::ProcessKey(eKeys Key) { - bool hadSubMenu = HasSubMenu(); + bool hadSubMenu = HasSubMenu(); eOSState state = cMenuSetupPage::ProcessKey(Key); if (hadSubMenu && Key == kOk) Store(); @@ -104,8 +118,10 @@ state = AddSubMenu(new cFlatSetupVolume(&SetupConfig)); if (strcmp(ItemText, tr("Tracks settings")) == 0) state = AddSubMenu(new cFlatSetupTracks(&SetupConfig)); + if (strcmp(ItemText, tr("TVScraper / scraper2vdr settings")) == 0) + state = AddSubMenu(new cFlatSetupTvsraper(&SetupConfig)); } - } + } return state; } @@ -189,6 +205,13 @@ SetupStore("TopBarRecConflictsShow", Config.TopBarRecConflictsShow); SetupStore("TopBarRecConflictsHigh", Config.TopBarRecConflictsHigh); SetupStore("SignalQualityUseColors", Config.SignalQualityUseColors); + SetupStore("TVScraperChanInfoShowPoster", Config.TVScraperChanInfoShowPoster); + SetupStore("TVScraperChanInfoPosterSize", dtoa(Config.TVScraperChanInfoPosterSize)); + SetupStore("TVScraperEPGInfoShowPoster", Config.TVScraperEPGInfoShowPoster); + SetupStore("TVScraperRecInfoShowPoster", Config.TVScraperEPGInfoShowPoster); + SetupStore("EpgRerunsShow", Config.EpgRerunsShow); + SetupStore("TVScraperEPGInfoShowActors", Config.TVScraperEPGInfoShowActors); + SetupStore("TVScraperRecInfoShowActors", Config.TVScraperRecInfoShowActors); Config.Init(); } @@ -207,7 +230,7 @@ return item; } -// General Settings +// General Settings cFlatSetupGeneral::cFlatSetupGeneral(cFlatConfig* data) : cMenuSetupSubMenu(tr("General settings"), data) { Setup(); } @@ -219,12 +242,12 @@ SetupConfig->DecorDescriptions( DecorDescriptions ); if( SetupConfig->DecorIndex < 0 || SetupConfig->DecorIndex > DecorDescriptions.Size() ) SetupConfig->DecorIndex = 0; - + Add(new cMenuEditStraItem(tr("Decorfile"), &SetupConfig->DecorIndex, DecorDescriptions.Size(), &DecorDescriptions[0])); Add(new cMenuEditBoolItem(tr("Show empty color-buttons"), &SetupConfig->ButtonsShowEmpty)); Add(new cMenuEditBoolItem(tr("Show TopBar menu icons"), &SetupConfig->TopBarMenuIconShow)); - Add(new cMenuEditBoolItem(tr("Show Diskusage stats"), &SetupConfig->DiskUsageShow)); + Add(new cMenuEditStraItem(tr("Show Diskusage stats"), &SetupConfig->DiskUsageShow, DiskUsages.Size(), &DiskUsages[0])); Add(new cMenuEditIntItem(tr("OSD vertical margin"), &SetupConfig->marginOsdVer)); Add(new cMenuEditIntItem(tr("OSD horizontal margin"), &SetupConfig->marginOsdHor)); Add(new cMenuEditPrcItem(tr("TopBar font size"), &SetupConfig->TopBarFontSize, 0.01, 0.2, 1)); @@ -269,7 +292,7 @@ cString ImageCache = cString::sprintf("%s:\t%d / %d", tr("Imagecache entries"), imgCache.getCacheCount(), MAX_IMAGE_CACHE); Add(new cOsdItem(ImageCache, osUnknown, true)); - + if( ItemLastSel >= 0 ) { SetCurrent(Get(ItemLastSel)); ItemLastSel = -1; @@ -297,11 +320,11 @@ ItemLastSel = Current(); Setup(); } - } + } return state; } -// Channel Info Settings +// Channel Info Settings cFlatSetupChannelInfo::cFlatSetupChannelInfo(cFlatConfig* data) : cMenuSetupSubMenu(tr("Channelinfo settings"), data) { Setup(); } @@ -315,7 +338,7 @@ Add(new cMenuEditBoolItem(tr("Show resolution & aspect"), &SetupConfig->ChannelResolutionAspectShow)); Add(new cMenuEditBoolItem(tr("Show format (hd/sd)"), &SetupConfig->ChannelFormatShow)); Add(new cMenuEditBoolItem(tr("Simple aspect & format"), &SetupConfig->ChannelSimpleAspectFormat)); - + Add(new cMenuEditBoolItem(tr("Channelinfo border by decor-file?"), &SetupConfig->decorBorderChannelByTheme)); if( SetupConfig->decorBorderChannelByTheme ) { cString type = cString::sprintf("%s:\t%s", tr("Channelinfo border type"), Bordertypes[SetupConfig->decorBorderChannelTypeTheme]); @@ -348,7 +371,7 @@ Add(new cMenuEditStraItem(tr("Signalquality progress type"), &SetupConfig->decorProgressSignalTypeUser, Progresstypes.Size(), &Progresstypes[0])); Add(new cMenuEditIntItem(tr("Signalquality progress size"), &SetupConfig->decorProgressSignalSizeUser)); } - + if( ItemLastSel >= 0 ) { SetCurrent(Get(ItemLastSel)); ItemLastSel = -1; @@ -376,11 +399,11 @@ ItemLastSel = Current(); Setup(); } - } + } return state; } -// Menu Settings +// Menu Settings cFlatSetupMenu::cFlatSetupMenu(cFlatConfig* data) : cMenuSetupSubMenu(tr("Menu settings"), data) { Setup(); } @@ -393,6 +416,7 @@ Add(new cMenuEditBoolItem(tr("Menu content fullsize background"), &SetupConfig->MenuContentFullSize)); Add(new cMenuEditBoolItem(tr("Show additional recording info"), &SetupConfig->RecordingAdditionalInfoShow)); Add(new cMenuEditBoolItem(tr("Show additional EPG info"), &SetupConfig->EpgAdditionalInfoShow)); + Add(new cMenuEditBoolItem(tr("Show reruns in EPG info"), &SetupConfig->EpgRerunsShow)); Add(new cMenuEditPrcItem(tr("Main menuitem scale"), &SetupConfig->MainMenuItemScale, 0.2, 1, 0)); Add(new cMenuEditStraItem(tr("Menu channel view"), &SetupConfig->MenuChannelView, MenuChannelViews.Size(), &MenuChannelViews[0])); @@ -410,7 +434,7 @@ Add(new cMenuEditStraItem(tr("Menuitem border type"), &SetupConfig->decorBorderMenuItemTypeUser, Bordertypes.Size(), &Bordertypes[0])); Add(new cMenuEditIntItem(tr("Menuitem border size"), &SetupConfig->decorBorderMenuItemSizeUser)); } - + Add(new cMenuEditBoolItem(tr("Menucont. border by decor-file?"), &SetupConfig->decorBorderMenuContentByTheme)); if( SetupConfig->decorBorderMenuContentByTheme ) { cString type = cString::sprintf("%s:\t%s", tr("Menucont. border type"), Bordertypes[SetupConfig->decorBorderMenuContentTypeTheme]); @@ -443,7 +467,7 @@ Add(new cMenuEditStraItem(tr("Menuitem progress type"), &SetupConfig->decorProgressMenuItemTypeUser, Progresstypes.Size(), &Progresstypes[0])); Add(new cMenuEditIntItem(tr("Menuitem progress size"), &SetupConfig->decorProgressMenuItemSizeUser)); } - + if( ItemLastSel >= 0 ) { SetCurrent(Get(ItemLastSel)); ItemLastSel = -1; @@ -472,11 +496,11 @@ ItemLastSel = Current(); Setup(); } - } + } return state; } -// Replay Settings +// Replay Settings cFlatSetupReplay::cFlatSetupReplay(cFlatConfig* data) : cMenuSetupSubMenu(tr("Replay settings"), data) { Setup(); } @@ -488,7 +512,7 @@ Add(new cMenuEditBoolItem(tr("Show resolution & aspect"), &SetupConfig->RecordingResolutionAspectShow)); Add(new cMenuEditBoolItem(tr("Show format (hd/sd)"), &SetupConfig->RecordingFormatShow)); Add(new cMenuEditBoolItem(tr("Simple aspect & format"), &SetupConfig->RecordingSimpleAspectFormat)); - + if( SetupConfig->decorBorderReplayByTheme ) { cString type = cString::sprintf("%s:\t%s", tr("Replay border type"), Bordertypes[SetupConfig->decorBorderReplayTypeTheme]); Add(new cOsdItem(type, osUnknown, false)); @@ -506,7 +530,7 @@ } else { Add(new cMenuEditIntItem(tr("Replay progress size"), &SetupConfig->decorProgressReplaySizeUser)); } - + if( ItemLastSel >= 0 ) { SetCurrent(Get(ItemLastSel)); ItemLastSel = -1; @@ -533,11 +557,11 @@ ItemLastSel = Current(); Setup(); } - } + } return state; } -// Volume Settings +// Volume Settings cFlatSetupVolume::cFlatSetupVolume(cFlatConfig* data) : cMenuSetupSubMenu(tr("Volume settings"), data) { Setup(); } @@ -566,7 +590,7 @@ Add(new cMenuEditStraItem(tr("Volume progress type"), &SetupConfig->decorProgressVolumeTypeUser, Progresstypes.Size(), &Progresstypes[0])); Add(new cMenuEditIntItem(tr("Volume progress size"), &SetupConfig->decorProgressVolumeSizeUser)); } - + if( ItemLastSel >= 0 ) { SetCurrent(Get(ItemLastSel)); ItemLastSel = -1; @@ -593,11 +617,11 @@ ItemLastSel = Current(); Setup(); } - } + } return state; } -// Tracks Settings +// Tracks Settings cFlatSetupTracks::cFlatSetupTracks(cFlatConfig* data) : cMenuSetupSubMenu(tr("Tracks settings"), data) { Setup(); } @@ -615,7 +639,7 @@ Add(new cMenuEditStraItem(tr("Tracks border type"), &SetupConfig->decorBorderTrackTypeUser, Bordertypes.Size(), &Bordertypes[0])); Add(new cMenuEditIntItem(tr("Tracks border size"), &SetupConfig->decorBorderTrackSizeUser)); } - + if( ItemLastSel >= 0 ) { SetCurrent(Get(ItemLastSel)); ItemLastSel = -1; @@ -641,6 +665,52 @@ ItemLastSel = Current(); Setup(); } - } + } + return state; +} + +// TVScraper Settings +cFlatSetupTvsraper::cFlatSetupTvsraper(cFlatConfig* data) : cMenuSetupSubMenu(tr("Tracks settings"), data) { + Setup(); +} + +void cFlatSetupTvsraper::Setup(void) { + Clear(); + + Add(new cMenuEditBoolItem(tr("Channelinfo show poster?"), &SetupConfig->TVScraperChanInfoShowPoster)); + Add(new cMenuEditPrcItem(tr("Channelinfo poster size"), &SetupConfig->TVScraperChanInfoPosterSize, 0.004, 0.015, 2)); + Add(new cMenuEditBoolItem(tr("EPG info show poster?"), &SetupConfig->TVScraperEPGInfoShowPoster)); + Add(new cMenuEditBoolItem(tr("recording info show poster?"), &SetupConfig->TVScraperRecInfoShowPoster)); + Add(new cMenuEditBoolItem(tr("EPG info show actors?"), &SetupConfig->TVScraperEPGInfoShowActors)); + Add(new cMenuEditBoolItem(tr("recording info show actors?"), &SetupConfig->TVScraperRecInfoShowActors)); + + if( ItemLastSel >= 0 ) { + SetCurrent(Get(ItemLastSel)); + ItemLastSel = -1; + } + + Display(); +} + +eOSState cFlatSetupTvsraper::ProcessKey(eKeys Key) { + eOSState state = cOsdMenu::ProcessKey(Key); + if (state == osUnknown) { + switch (Key) { + case kOk: + return osBack; + default: + break; + } + } + /* + if( Key == kLeft || Key == kRight ) { + const char* ItemText = Get(Current())->Text(); + if( strstr(ItemText, tr("Tracks border by decor-file?")) != NULL + ) { + ItemLastSel = Current(); + Setup(); + } + } + */ return state; } diff -Nru vdr-plugin-skinflatplus-0.2.1/setup.h vdr-plugin-skinflatplus-0.3.0/setup.h --- vdr-plugin-skinflatplus-0.2.1/setup.h 2014-03-25 19:21:56.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/setup.h 2014-05-11 11:16:37.000000000 +0000 @@ -3,14 +3,16 @@ #include #include #include "config.h" +#include "services/tvscraper.h" +#include "services/scraper2vdr.h" class cFlatSetup : public cMenuSetupPage { public: cFlatSetup(void); - virtual ~cFlatSetup(); + virtual ~cFlatSetup(); private: cFlatConfig SetupConfig; - + int ItemLastSel; void Setup(void); protected: @@ -76,3 +78,11 @@ cFlatSetupTracks(cFlatConfig *data); virtual eOSState ProcessKey(eKeys Key); }; + +class cFlatSetupTvsraper : public cMenuSetupSubMenu { + protected: + void Setup(void); + public: + cFlatSetupTvsraper(cFlatConfig *data); + virtual eOSState ProcessKey(eKeys Key); +}; diff -Nru vdr-plugin-skinflatplus-0.2.1/skinflatplus.c vdr-plugin-skinflatplus-0.3.0/skinflatplus.c --- vdr-plugin-skinflatplus-0.2.1/skinflatplus.c 2014-03-25 19:21:56.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/skinflatplus.c 2014-05-11 11:16:37.000000000 +0000 @@ -16,7 +16,7 @@ #include "setup.h" #include "imageloader.h" -static const char *VERSION = "0.2.1"; +static const char *VERSION = "0.3.0"; static const char *DESCRIPTION = "skin flatplus"; class cPluginFlat : public cPlugin { @@ -53,7 +53,7 @@ } const char *cPluginFlat::CommandLineHelp(void) { - return " -l , --logopath= Set directory where Channel Logos are stored.\n"; + return " -l , --logopath= Set directory where Channel Logos are stored.\n"; } bool cPluginFlat::ProcessArgs(int argc, char *argv[]) { @@ -87,7 +87,7 @@ return false; } else dsyslog("skinflatplus: TrueColor OSD found"); - + imgCache.Create(); imgCache.PreLoadImage(); diff -Nru vdr-plugin-skinflatplus-0.2.1/themes/flatPlus-fnuanthraamber.theme vdr-plugin-skinflatplus-0.3.0/themes/flatPlus-fnuanthraamber.theme --- vdr-plugin-skinflatplus-0.2.1/themes/flatPlus-fnuanthraamber.theme 1970-01-01 00:00:00.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/themes/flatPlus-fnuanthraamber.theme 2014-05-11 11:16:37.000000000 +0000 @@ -0,0 +1,114 @@ +Description = fnu anthra.amber +clrTopBarBg = BF000000 +clrTopBarFont = FFEEEEEE +clrTopBarTimeFont = FFEEEEEE +clrTopBarDateFont = FFA0A0A0 +clrTopBarRecordingActiveFg = FFBC0000 +clrTopBarRecordingActiveBg = BF000000 +clrTopBarBorderFg = BF000000 +clrTopBarBorderBg = BF000000 +clrTopBarConflictLowFg = FFCCBB33 +clrTopBarConflictLowBg = BF000000 +clrTopBarConflictHighFg = FFCC2222 +clrTopBarConflictHighBg = BF000000 +clrButtonBg = BF000000 +clrButtonFont = FFEEEEEE +clrButtonRed = FFCC2222 +clrButtonGreen = FF40A040 +clrButtonYellow = FFCCBB22 +clrButtonBlue = FF2222CC +clrButtonBorderFg = BF000000 +clrButtonBorderBg = BF000000 +clrMessageBg = BF000000 +clrMessageFont = FFAAAAAA +clrMessageStatus = FF2222CC +clrMessageInfo = FF337633 +clrMessageWarning = FFCCBB33 +clrMessageError = FFCC2222 +clrMessageBorderFg = BF000000 +clrMessageBorderBg = BF000000 +clrChannelBg = BF000000 +clrChannelFontTitle = FFEEEEEE +clrChannelFontEpg = FFEEEEEE +clrChannelFontEpgFollow = FFA0A0A0 +clrChannelProgressFg = FFA0A0A0 +clrChannelProgressBarFg = FFFFBF00 +clrChannelProgressBg = BF000000 +clrChannelRecordingPresentFg = FFFFBF00 +clrChannelRecordingPresentBg = BF000000 +clrChannelRecordingFollowFg = FFA0A0A0 +clrChannelRecordingFollowBg = BF000000 +clrChannelBorderFg = BF000000 +clrChannelBorderBg = BF000000 +clrChannelSignalFont = FFA0A0A0 +clrChannelSignalProgressFg = FFA0A0A0 +clrChannelSignalProgressBarFg = FFb89c50 +clrChannelSignalProgressBg = BF000000 +clrItemBg = BF000000 +clrItemFont = FF404040 +clrItemCurrentBg = BF404040 +clrItemCurrentFont = FFEEEEEE +clrItemSelableBg = BF000000 +clrItemSelableFont = FFEEEEEE +clrScrollbarFg = D8A0A0A0 +clrScrollbarBarFg = FFFFBF00 +clrScrollbarBg = BF000000 +clrMenuEventBg = BF000000 +clrMenuEventFontTitle = FFFFBF00 +clrMenuEventFontInfo = FFD0D0D0 +clrMenuRecBg = BF000000 +clrMenuRecFontTitle = FFFFBF00 +clrMenuRecFontInfo = FFD0D0D0 +clrMenuTextBg = BF000000 +clrMenuTextFont = FFEEEEEE +clrMenuTextFixedFont = FFCCBB22 +clrMenuContentHeadBorderFg = BF000000 +clrMenuContentHeadBorderBg = BF000000 +clrMenuContentBorderFg = BF000000 +clrMenuContentBorderBg = BF000000 +clrMenuItemProgressFg = FFEEEEEE +clrMenuItemProgressBarFg = FFEEEEEE +clrMenuItemProgressBg = BF000000 +clrMenuItemCurProgressFg = FFEEEEEE +clrMenuItemCurProgressBarFg = FFEEEEEE +clrMenuItemCurProgressBg = BF404040 +clrMenuItemBorderFg = BF000000 +clrMenuItemBorderBg = BF000000 +clrMenuItemSelableBorderFg = BF000000 +clrMenuItemSelableBorderBg = BF000000 +clrMenuItemCurrentBorderFg = BF404040 +clrMenuItemCurrentBorderBg = BF404040 +clrMenuItemExtraTextFont = FFA0A0A0 +clrMenuItemExtraTextCurrentFont = FFA0A0A0 +clrMenuTimerItemDisabledFont = FFA0A0A0 +clrMenuTimerItemRecordingFont = FFFFBF00 +clrReplayBg = BF000000 +clrReplayFont = FFEEEEEE +clrReplayFontSpeed = FF404040 +clrReplayProgressFg = FF555555 +clrReplayProgressBarFg = FF757575 +clrReplayProgressBarCurFg = FFFFBF00 +clrReplayProgressBg = BF000000 +clrReplayMarkFg = FFEEEEEE +clrReplayMarkCurrentFg = FF404040 +clrReplayBorderFg = BF000000 +clrReplayBorderBg = BF000000 +clrTrackItemBg = D8555555 +clrTrackItemFont = FFEEEEEE +clrTrackItemSelableBg = BF000000 +clrTrackItemSelableFont = FFEEEEEE +clrTrackItemBorderFg = D8555555 +clrTrackItemBorderBg = D8555555 +clrTrackItemSelableBorderFg = BF000000 +clrTrackItemSelableBorderBg = BF000000 +clrTrackItemCurrentBg = BF404040 +clrTrackItemCurrentFont = FFEEEEEE +clrTrackItemCurrentBorderFg = BF404040 +clrTrackItemCurrentBorderBg = BF404040 +clrVolumeBg = BF000000 +clrVolumeFont = FFEEEEEE +clrVolumeProgressFg = FF555555 +clrVolumeProgressBarFg = FF404040 +clrVolumeProgressBg = BF000000 +clrVolumeBorderFg = BF000000 +clrVolumeBorderBg = BF000000 diff -Nru vdr-plugin-skinflatplus-0.2.1/themes/flatPlus-fnuanthragreen.theme vdr-plugin-skinflatplus-0.3.0/themes/flatPlus-fnuanthragreen.theme --- vdr-plugin-skinflatplus-0.2.1/themes/flatPlus-fnuanthragreen.theme 1970-01-01 00:00:00.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/themes/flatPlus-fnuanthragreen.theme 2014-05-11 11:16:37.000000000 +0000 @@ -0,0 +1,114 @@ +Description = fnu anthra.green +clrTopBarBg = BF000000 +clrTopBarFont = FFEEEEEE +clrTopBarTimeFont = FFEEEEEE +clrTopBarDateFont = FFA0A0A0 +clrTopBarRecordingActiveFg = FFBC0000 +clrTopBarRecordingActiveBg = BF000000 +clrTopBarBorderFg = BF000000 +clrTopBarBorderBg = BF000000 +clrTopBarConflictLowFg = FFCCBB33 +clrTopBarConflictLowBg = BF000000 +clrTopBarConflictHighFg = FFCC2222 +clrTopBarConflictHighBg = BF000000 +clrButtonBg = BF000000 +clrButtonFont = FFEEEEEE +clrButtonRed = FFCC2222 +clrButtonGreen = FF40A040 +clrButtonYellow = FFCCBB22 +clrButtonBlue = FF2222CC +clrButtonBorderFg = BF000000 +clrButtonBorderBg = BF000000 +clrMessageBg = BF000000 +clrMessageFont = FFAAAAAA +clrMessageStatus = FF2222CC +clrMessageInfo = FF337633 +clrMessageWarning = FFCCBB33 +clrMessageError = FFCC2222 +clrMessageBorderFg = BF000000 +clrMessageBorderBg = BF000000 +clrChannelBg = BF000000 +clrChannelFontTitle = FFEEEEEE +clrChannelFontEpg = FFEEEEEE +clrChannelFontEpgFollow = FFA0A0A0 +clrChannelProgressFg = FFA0A0A0 +clrChannelProgressBarFg = FF00CD00 +clrChannelProgressBg = BF000000 +clrChannelRecordingPresentFg = FF00CD00 +clrChannelRecordingPresentBg = BF000000 +clrChannelRecordingFollowFg = FFA0A0A0 +clrChannelRecordingFollowBg = BF000000 +clrChannelBorderFg = BF000000 +clrChannelBorderBg = BF000000 +clrChannelSignalFont = FFA0A0A0 +clrChannelSignalProgressFg = FFA0A0A0 +clrChannelSignalProgressBarFg = FF4b9b3e +clrChannelSignalProgressBg = BF000000 +clrItemBg = BF000000 +clrItemFont = FF404040 +clrItemCurrentBg = BF404040 +clrItemCurrentFont = FFEEEEEE +clrItemSelableBg = BF000000 +clrItemSelableFont = FFEEEEEE +clrScrollbarFg = D8A0A0A0 +clrScrollbarBarFg = FF00CD00 +clrScrollbarBg = BF000000 +clrMenuEventBg = BF000000 +clrMenuEventFontTitle = FF00CD00 +clrMenuEventFontInfo = FFD0D0D0 +clrMenuRecBg = BF000000 +clrMenuRecFontTitle = FF00CD00 +clrMenuRecFontInfo = FFD0D0D0 +clrMenuTextBg = BF000000 +clrMenuTextFont = FFEEEEEE +clrMenuTextFixedFont = FFCCBB22 +clrMenuContentHeadBorderFg = BF000000 +clrMenuContentHeadBorderBg = BF000000 +clrMenuContentBorderFg = BF000000 +clrMenuContentBorderBg = BF000000 +clrMenuItemProgressFg = FFEEEEEE +clrMenuItemProgressBarFg = FFEEEEEE +clrMenuItemProgressBg = BF000000 +clrMenuItemCurProgressFg = FFEEEEEE +clrMenuItemCurProgressBarFg = FFEEEEEE +clrMenuItemCurProgressBg = BF404040 +clrMenuItemBorderFg = BF000000 +clrMenuItemBorderBg = BF000000 +clrMenuItemSelableBorderFg = BF000000 +clrMenuItemSelableBorderBg = BF000000 +clrMenuItemCurrentBorderFg = BF404040 +clrMenuItemCurrentBorderBg = BF404040 +clrMenuItemExtraTextFont = FFA0A0A0 +clrMenuItemExtraTextCurrentFont = FFA0A0A0 +clrMenuTimerItemDisabledFont = FFA0A0A0 +clrMenuTimerItemRecordingFont = FF00CD00 +clrReplayBg = BF000000 +clrReplayFont = FFEEEEEE +clrReplayFontSpeed = FF404040 +clrReplayProgressFg = FF555555 +clrReplayProgressBarFg = FF757575 +clrReplayProgressBarCurFg = FF00CD00 +clrReplayProgressBg = BF000000 +clrReplayMarkFg = FFEEEEEE +clrReplayMarkCurrentFg = FF404040 +clrReplayBorderFg = BF000000 +clrReplayBorderBg = BF000000 +clrTrackItemBg = D8555555 +clrTrackItemFont = FFEEEEEE +clrTrackItemSelableBg = BF000000 +clrTrackItemSelableFont = FFEEEEEE +clrTrackItemBorderFg = D8555555 +clrTrackItemBorderBg = D8555555 +clrTrackItemSelableBorderFg = BF000000 +clrTrackItemSelableBorderBg = BF000000 +clrTrackItemCurrentBg = BF404040 +clrTrackItemCurrentFont = FFEEEEEE +clrTrackItemCurrentBorderFg = BF404040 +clrTrackItemCurrentBorderBg = BF404040 +clrVolumeBg = BF000000 +clrVolumeFont = FFEEEEEE +clrVolumeProgressFg = FF555555 +clrVolumeProgressBarFg = FF404040 +clrVolumeProgressBg = BF000000 +clrVolumeBorderFg = BF000000 +clrVolumeBorderBg = BF000000 diff -Nru vdr-plugin-skinflatplus-0.2.1/themes/flatPlus-fnuanthrared.theme vdr-plugin-skinflatplus-0.3.0/themes/flatPlus-fnuanthrared.theme --- vdr-plugin-skinflatplus-0.2.1/themes/flatPlus-fnuanthrared.theme 1970-01-01 00:00:00.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/themes/flatPlus-fnuanthrared.theme 2014-05-11 11:16:37.000000000 +0000 @@ -0,0 +1,114 @@ +Description = fnu anthra.red +clrTopBarBg = BF000000 +clrTopBarFont = FFEEEEEE +clrTopBarTimeFont = FFEEEEEE +clrTopBarDateFont = FFA0A0A0 +clrTopBarRecordingActiveFg = FFBC0000 +clrTopBarRecordingActiveBg = BF000000 +clrTopBarBorderFg = BF000000 +clrTopBarBorderBg = BF000000 +clrTopBarConflictLowFg = FFCCBB33 +clrTopBarConflictLowBg = BF000000 +clrTopBarConflictHighFg = FFCC2222 +clrTopBarConflictHighBg = BF000000 +clrButtonBg = BF000000 +clrButtonFont = FFEEEEEE +clrButtonRed = FFCC2222 +clrButtonGreen = FF40A040 +clrButtonYellow = FFCCBB22 +clrButtonBlue = FF2222CC +clrButtonBorderFg = BF000000 +clrButtonBorderBg = BF000000 +clrMessageBg = BF000000 +clrMessageFont = FFAAAAAA +clrMessageStatus = FF2222CC +clrMessageInfo = FF337633 +clrMessageWarning = FFCCBB33 +clrMessageError = FFCC2222 +clrMessageBorderFg = BF000000 +clrMessageBorderBg = BF000000 +clrChannelBg = BF000000 +clrChannelFontTitle = FFEEEEEE +clrChannelFontEpg = FFEEEEEE +clrChannelFontEpgFollow = FFA0A0A0 +clrChannelProgressFg = FFA0A0A0 +clrChannelProgressBarFg = FFBC0000 +clrChannelProgressBg = BF000000 +clrChannelRecordingPresentFg = FFBC0000 +clrChannelRecordingPresentBg = BF000000 +clrChannelRecordingFollowFg = FFA0A0A0 +clrChannelRecordingFollowBg = BF000000 +clrChannelBorderFg = BF000000 +clrChannelBorderBg = BF000000 +clrChannelSignalFont = FFA0A0A0 +clrChannelSignalProgressFg = FFA0A0A0 +clrChannelSignalProgressBarFg = FF8a3342 +clrChannelSignalProgressBg = BF000000 +clrItemBg = BF000000 +clrItemFont = FF404040 +clrItemCurrentBg = BF404040 +clrItemCurrentFont = FFEEEEEE +clrItemSelableBg = BF000000 +clrItemSelableFont = FFEEEEEE +clrScrollbarFg = D8A0A0A0 +clrScrollbarBarFg = FFBC0000 +clrScrollbarBg = BF000000 +clrMenuEventBg = BF000000 +clrMenuEventFontTitle = FFBC0000 +clrMenuEventFontInfo = FFD0D0D0 +clrMenuRecBg = BF000000 +clrMenuRecFontTitle = FFBC0000 +clrMenuRecFontInfo = FFD0D0D0 +clrMenuTextBg = BF000000 +clrMenuTextFont = FFEEEEEE +clrMenuTextFixedFont = FFCCBB22 +clrMenuContentHeadBorderFg = BF000000 +clrMenuContentHeadBorderBg = BF000000 +clrMenuContentBorderFg = BF000000 +clrMenuContentBorderBg = BF000000 +clrMenuItemProgressFg = FFEEEEEE +clrMenuItemProgressBarFg = FFEEEEEE +clrMenuItemProgressBg = BF000000 +clrMenuItemCurProgressFg = FFEEEEEE +clrMenuItemCurProgressBarFg = FFEEEEEE +clrMenuItemCurProgressBg = BF404040 +clrMenuItemBorderFg = BF000000 +clrMenuItemBorderBg = BF000000 +clrMenuItemSelableBorderFg = BF000000 +clrMenuItemSelableBorderBg = BF000000 +clrMenuItemCurrentBorderFg = BF404040 +clrMenuItemCurrentBorderBg = BF404040 +clrMenuItemExtraTextFont = FFA0A0A0 +clrMenuItemExtraTextCurrentFont = FFA0A0A0 +clrMenuTimerItemDisabledFont = FFA0A0A0 +clrMenuTimerItemRecordingFont = FFBC0000 +clrReplayBg = BF000000 +clrReplayFont = FFEEEEEE +clrReplayFontSpeed = FF404040 +clrReplayProgressFg = FF555555 +clrReplayProgressBarFg = FF757575 +clrReplayProgressBarCurFg = FFBC0000 +clrReplayProgressBg = BF000000 +clrReplayMarkFg = FFEEEEEE +clrReplayMarkCurrentFg = FF404040 +clrReplayBorderFg = BF000000 +clrReplayBorderBg = BF000000 +clrTrackItemBg = D8555555 +clrTrackItemFont = FFEEEEEE +clrTrackItemSelableBg = BF000000 +clrTrackItemSelableFont = FFEEEEEE +clrTrackItemBorderFg = D8555555 +clrTrackItemBorderBg = D8555555 +clrTrackItemSelableBorderFg = BF000000 +clrTrackItemSelableBorderBg = BF000000 +clrTrackItemCurrentBg = BF404040 +clrTrackItemCurrentFont = FFEEEEEE +clrTrackItemCurrentBorderFg = BF404040 +clrTrackItemCurrentBorderBg = BF404040 +clrVolumeBg = BF000000 +clrVolumeFont = FFEEEEEE +clrVolumeProgressFg = FF555555 +clrVolumeProgressBarFg = FF404040 +clrVolumeProgressBg = BF000000 +clrVolumeBorderFg = BF000000 +clrVolumeBorderBg = BF000000 diff -Nru vdr-plugin-skinflatplus-0.2.1/themes/flatPlus-fnuanthrayablue.theme vdr-plugin-skinflatplus-0.3.0/themes/flatPlus-fnuanthrayablue.theme --- vdr-plugin-skinflatplus-0.2.1/themes/flatPlus-fnuanthrayablue.theme 1970-01-01 00:00:00.000000000 +0000 +++ vdr-plugin-skinflatplus-0.3.0/themes/flatPlus-fnuanthrayablue.theme 2014-05-11 11:16:37.000000000 +0000 @@ -0,0 +1,114 @@ +Description = fnu anthra.yablue +clrTopBarBg = BF000000 +clrTopBarFont = FFEEEEEE +clrTopBarTimeFont = FFEEEEEE +clrTopBarDateFont = FFA0A0A0 +clrTopBarRecordingActiveFg = FFBC0000 +clrTopBarRecordingActiveBg = BF000000 +clrTopBarBorderFg = BF000000 +clrTopBarBorderBg = BF000000 +clrTopBarConflictLowFg = FFCCBB33 +clrTopBarConflictLowBg = BF000000 +clrTopBarConflictHighFg = FFCC2222 +clrTopBarConflictHighBg = BF000000 +clrButtonBg = BF000000 +clrButtonFont = FFEEEEEE +clrButtonRed = FFCC2222 +clrButtonGreen = FF40A040 +clrButtonYellow = FFCCBB22 +clrButtonBlue = FF2222CC +clrButtonBorderFg = BF000000 +clrButtonBorderBg = BF000000 +clrMessageBg = BF000000 +clrMessageFont = FFAAAAAA +clrMessageStatus = FF2222CC +clrMessageInfo = FF337633 +clrMessageWarning = FFCCBB33 +clrMessageError = FFCC2222 +clrMessageBorderFg = BF000000 +clrMessageBorderBg = BF000000 +clrChannelBg = BF000000 +clrChannelFontTitle = FFEEEEEE +clrChannelFontEpg = FFEEEEEE +clrChannelFontEpgFollow = FFA0A0A0 +clrChannelProgressFg = FFA0A0A0 +clrChannelProgressBarFg = FF4e78b1 +clrChannelProgressBg = BF000000 +clrChannelRecordingPresentFg = FF4e78b1 +clrChannelRecordingPresentBg = BF000000 +clrChannelRecordingFollowFg = FFA0A0A0 +clrChannelRecordingFollowBg = BF000000 +clrChannelBorderFg = BF000000 +clrChannelBorderBg = BF000000 +clrChannelSignalFont = FFA0A0A0 +clrChannelSignalProgressFg = FFA0A0A0 +clrChannelSignalProgressBarFg = FF38618c +clrChannelSignalProgressBg = BF000000 +clrItemBg = BF000000 +clrItemFont = FF404040 +clrItemCurrentBg = BF404040 +clrItemCurrentFont = FFEEEEEE +clrItemSelableBg = BF000000 +clrItemSelableFont = FFEEEEEE +clrScrollbarFg = D8A0A0A0 +clrScrollbarBarFg = FF4e78b1 +clrScrollbarBg = BF000000 +clrMenuEventBg = BF000000 +clrMenuEventFontTitle = FF4e78b1 +clrMenuEventFontInfo = FFD0D0D0 +clrMenuRecBg = BF000000 +clrMenuRecFontTitle = FF4e78b1 +clrMenuRecFontInfo = FFD0D0D0 +clrMenuTextBg = BF000000 +clrMenuTextFont = FFEEEEEE +clrMenuTextFixedFont = FFCCBB22 +clrMenuContentHeadBorderFg = BF000000 +clrMenuContentHeadBorderBg = BF000000 +clrMenuContentBorderFg = BF000000 +clrMenuContentBorderBg = BF000000 +clrMenuItemProgressFg = FFEEEEEE +clrMenuItemProgressBarFg = FFEEEEEE +clrMenuItemProgressBg = BF000000 +clrMenuItemCurProgressFg = FFEEEEEE +clrMenuItemCurProgressBarFg = FFEEEEEE +clrMenuItemCurProgressBg = BF404040 +clrMenuItemBorderFg = BF000000 +clrMenuItemBorderBg = BF000000 +clrMenuItemSelableBorderFg = BF000000 +clrMenuItemSelableBorderBg = BF000000 +clrMenuItemCurrentBorderFg = BF404040 +clrMenuItemCurrentBorderBg = BF404040 +clrMenuItemExtraTextFont = FFA0A0A0 +clrMenuItemExtraTextCurrentFont = FFA0A0A0 +clrMenuTimerItemDisabledFont = FFA0A0A0 +clrMenuTimerItemRecordingFont = FF4e78b1 +clrReplayBg = BF000000 +clrReplayFont = FFEEEEEE +clrReplayFontSpeed = FF404040 +clrReplayProgressFg = FF555555 +clrReplayProgressBarFg = FF757575 +clrReplayProgressBarCurFg = FF4e78b1 +clrReplayProgressBg = BF000000 +clrReplayMarkFg = FFEEEEEE +clrReplayMarkCurrentFg = FF404040 +clrReplayBorderFg = BF000000 +clrReplayBorderBg = BF000000 +clrTrackItemBg = D8555555 +clrTrackItemFont = FFEEEEEE +clrTrackItemSelableBg = BF000000 +clrTrackItemSelableFont = FFEEEEEE +clrTrackItemBorderFg = D8555555 +clrTrackItemBorderBg = D8555555 +clrTrackItemSelableBorderFg = BF000000 +clrTrackItemSelableBorderBg = BF000000 +clrTrackItemCurrentBg = BF404040 +clrTrackItemCurrentFont = FFEEEEEE +clrTrackItemCurrentBorderFg = BF404040 +clrTrackItemCurrentBorderBg = BF404040 +clrVolumeBg = BF000000 +clrVolumeFont = FFEEEEEE +clrVolumeProgressFg = FF555555 +clrVolumeProgressBarFg = FF404040 +clrVolumeProgressBg = BF000000 +clrVolumeBorderFg = BF000000 +clrVolumeBorderBg = BF000000