diff options
-rw-r--r-- | HISTORY | 4 | ||||
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | baserender.h | 2 | ||||
-rw-r--r-- | displaychannel.c | 39 | ||||
-rw-r--r-- | displaychannel.h | 2 | ||||
-rw-r--r-- | displaymenu.c | 75 | ||||
-rw-r--r-- | displaymenu.h | 5 | ||||
-rw-r--r-- | displayreplay.c | 49 | ||||
-rw-r--r-- | displayreplay.h | 2 | ||||
-rw-r--r-- | displaytracks.c | 1 | ||||
-rw-r--r-- | displayvolume.c | 5 | ||||
-rw-r--r-- | displayvolume.h | 2 | ||||
-rw-r--r-- | flat.c | 31 | ||||
-rw-r--r-- | flat.h | 4 | ||||
-rw-r--r-- | icons/default/recording_cutted_extra.png | bin | 0 -> 1888 bytes | |||
-rw-r--r-- | imagecache.c | 34 | ||||
-rw-r--r-- | imagecache.h | 11 | ||||
-rw-r--r-- | imageloader.c | 2 | ||||
-rw-r--r-- | imageloader.h | 8 | ||||
-rw-r--r-- | po/de_DE.po | 5 | ||||
-rw-r--r-- | setup.c | 3 | ||||
-rw-r--r-- | skinflatplus.c | 3 |
22 files changed, 230 insertions, 59 deletions
@@ -3,8 +3,12 @@ VDR Plugin 'skinflatplus' Revision History 2014-XX-XX: Version 0.2.1 - [fix] epgsearch progessbar in SetItemEvent, if start time is after now (2 minutes tolerance) +- [fix] channel logo in topbar in program menu +- [update] imagecache, pre load images after skin is loaded + menu item under general to show the amount of cached images - [add] theme color clrMenuItemExtraTextCurrentFont - [add] logo background for channel logos (filename: logo_background.png) +- [add] show cutted length of recording in replay info 2014-02-22: Version 0.2.0 - [fix] load user decor settings @@ -25,7 +25,7 @@ PLUGIN = skinflatplus # vdrlogo_yavdr VDRLOGO = vdrlogo_default -# -DDEBUGIMAGELOADTIME +# -DDEBUGIMAGELOADTIME ### The version number of this plugin (taken from the main source file): diff --git a/baserender.h b/baserender.h index 82e552c8..e113777a 100644 --- a/baserender.h +++ b/baserender.h @@ -1,8 +1,8 @@ #pragma once -#include "flat.h" #include "imageloader.h" #include <list> +#include "flat.h" enum eBorder { BorderMenuItem, diff --git a/displaychannel.c b/displaychannel.c index a2d007c7..0212ba24 100644 --- a/displaychannel.c +++ b/displaychannel.c @@ -1,4 +1,5 @@ #include "displaychannel.h" +#include "flat.h" cFlatDisplayChannel::cFlatDisplayChannel(bool WithInfo) { if (firstDisplay) { @@ -488,3 +489,41 @@ void cFlatDisplayChannel::Flush(void) { TopBarUpdate(); osd->Flush(); } + +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 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); + if( img ) + index++; + } + + height = max(fontSmlHeight, Config.decorProgressSignalSize); + imgLoader.LoadIcon("crypted", 999, height); + imgLoader.LoadIcon("uncrypted", 999, height); + imgLoader.LoadIcon("unknown_asp", 999, height); + imgLoader.LoadIcon("43", 999, height); + imgLoader.LoadIcon("169", 999, height); + imgLoader.LoadIcon("221", 999, height); + imgLoader.LoadIcon("1920x1080", 999, height); + imgLoader.LoadIcon("1440x1080", 999, height); + imgLoader.LoadIcon("1280x720", 999, height); + imgLoader.LoadIcon("960x720", 999, height); + imgLoader.LoadIcon("704x576", 999, height); + imgLoader.LoadIcon("720x576", 999, height); + imgLoader.LoadIcon("544x576", 999, height); + imgLoader.LoadIcon("528x576", 999, height); + imgLoader.LoadIcon("480x576", 999, height); + imgLoader.LoadIcon("352x576", 999, height); + imgLoader.LoadIcon("unknown_res", 999, height); + imgLoader.LoadIcon("hd", 999, height); + imgLoader.LoadIcon("sd", 999, height); +} diff --git a/displaychannel.h b/displaychannel.h index 584c8836..1ef652c2 100644 --- a/displaychannel.h +++ b/displaychannel.h @@ -38,4 +38,6 @@ class cFlatDisplayChannel : public cFlatBaseRender, public cSkinDisplayChannel { virtual void SetEvents(const cEvent *Present, const cEvent *Following); virtual void SetMessage(eMessageType Type, const char *Text); virtual void Flush(void); + + void PreLoadImages(void); }; diff --git a/displaymenu.c b/displaymenu.c index 3c7d2eec..c5951410 100644 --- a/displaymenu.c +++ b/displaymenu.c @@ -10,6 +10,7 @@ #include "symbols/1080/Cclock.xpm" #include "symbols/1080/Cclocksml.xpm" #include "symbols/1080/Cvpssml.xpm" +#include "flat.h" cBitmap cFlatDisplayMenu::bmCNew(Cnew_xpm); cBitmap cFlatDisplayMenu::bmCArrowTurn(Carrowturn_xpm); @@ -1170,36 +1171,11 @@ bool cFlatDisplayMenu::SetItemEvent(const cEvent *Event, int Index, bool Current int w = 0; if( !Channel ) { - int CurrentChannelNr = cDevice::CurrentChannel(); - cChannel *ChannelLogo = Channels.GetByNumber(CurrentChannelNr); - - cImage *img; - img = imgLoader.LoadLogo(ChannelLogo->Name(), 999, topBarHeight - marginItem*2); - if( img ) { - TopBarSetMenuLogo( ChannelLogo->Name() ); - } else { - bool isRadioChannel = ( (!ChannelLogo->Vpid()) && (ChannelLogo->Apid(0)) ) ? true : false; - - if( isRadioChannel ) { - img = imgLoader.LoadIcon("radio", 999, topBarHeight - marginItem*2); - if( img ) { - TopBarSetMenuLogo( ChannelLogo->Name() ); - } - } else if( ChannelLogo->GroupSep() ) { - img = imgLoader.LoadIcon("changroup", 999, topBarHeight - marginItem*2); - if( img ) { - TopBarSetMenuIcon( ChannelLogo->Name() ); - } - } else { - img = imgLoader.LoadIcon("tv", 999, topBarHeight - marginItem*2); - if( img ) { - TopBarSetMenuLogo( ChannelLogo->Name() ); - } - } - } + TopBarSetMenuLogo( ItemEventLastChannelName ); } if( Channel ) { + ItemEventLastChannelName = Channel->Name(); cString ws = cString::sprintf("%d", Channels.MaxNumber()); w = font->Width(ws); if( !Channel->GroupSep() ) { @@ -2444,3 +2420,48 @@ const char * cFlatDisplayMenu::GetRecordingName(const cRecording *Recording, int return recNamePart.c_str(); } + +void cFlatDisplayMenu::PreLoadImages(void) { + // menu icons + cString Path = cString::sprintf("%s%s/menuIcons", *Config.iconPath, Setup.OSDTheme); + cReadDir d(Path); + struct dirent *e; + while ((e = d.Next()) != NULL) { + 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); + 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); + if( img ) + index++; + } + + 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); + imgLoader.LoadIcon("recording", fontHeight, fontHeight); + imgLoader.LoadIcon("folder", fontHeight, fontHeight); +} diff --git a/displaymenu.h b/displaymenu.h index ecc106d5..ac003d52 100644 --- a/displaymenu.h +++ b/displaymenu.h @@ -8,7 +8,6 @@ #include <iomanip> using namespace std; - class cFlatDisplayMenu : public cFlatBaseRender, public cSkinDisplayMenu { private: cPixmap *menuPixmap; @@ -37,6 +36,8 @@ class cFlatDisplayMenu : public cFlatBaseRender, public cSkinDisplayMenu { bool isScrolling; bool ShowEvent, ShowRecording, ShowText; + cString ItemEventLastChannelName; + void ItemBorderInsertUnique(sDecorBorder ib); void ItemBorderDrawAllWithScrollbar(void); void ItemBorderDrawAllWithoutScrollbar(void); @@ -87,4 +88,6 @@ class cFlatDisplayMenu : public cFlatBaseRender, public cSkinDisplayMenu { virtual int GetTextAreaWidth(void) const; virtual const cFont *GetTextAreaFont(bool FixedFont) const; virtual void Flush(void); + + void PreLoadImages(void); }; diff --git a/displayreplay.c b/displayreplay.c index 52c1c12d..5d574457 100644 --- a/displayreplay.c +++ b/displayreplay.c @@ -1,4 +1,5 @@ #include "displayreplay.h" +#include "flat.h" cFlatDisplayReplay::cFlatDisplayReplay(bool ModeOnly) { labelHeight = fontHeight + fontSmlHeight; @@ -149,11 +150,8 @@ void cFlatDisplayReplay::UpdateInfo(void) { cMarks marks; bool hasMarks = marks.Load(recording->FileName(), recording->FramesPerSecond(), recording->IsPesRecording()) && marks.Count(); cIndexFile *index = new cIndexFile(recording->FileName(), false, recording->IsPesRecording()); - int lastIndex = 0; - int cuttedLength = 0; long cutinframe = 0; - unsigned long long recsize = 0; unsigned long long recsizecutted = 0; unsigned long long cutinoffset = 0; unsigned long long filesize[100000]; @@ -178,11 +176,9 @@ void cFlatDisplayReplay::UpdateInfo(void) { else { if (ENOENT != errno) { esyslog ("skinflatplus: error determining file size of \"%s\" %d (%s)", (const char *)filename, errno, strerror(errno)); - recsize = 0; } } } while( i <= imax && !rc ); - recsize = filesize[i-1]; if (hasMarks && index) { uint16_t FileNumber; @@ -212,7 +208,6 @@ void cFlatDisplayReplay::UpdateInfo(void) { } } if (index) { - lastIndex = index->Last(); if (hasMarks) { cutted = IndexToHMSF(cuttedLength, false, recording->FramesPerSecond()); iscutted = true; @@ -221,26 +216,19 @@ void cFlatDisplayReplay::UpdateInfo(void) { delete index; } if( iscutted ) { - cImage *imgRecCut = imgLoader.LoadIcon("recording_cutted", fontHeight, fontHeight); + cImage *imgRecCut = imgLoader.LoadIcon("recording_cutted_extra", fontHeight, fontHeight); int imgWidth = 0; if( imgRecCut ) imgWidth = imgRecCut->Width(); - int right = osdWidth - Config.decorBorderReplaySize*2 - font->Width(total) - marginItem*2 - imgWidth - font->Width(" ()") - font->Width(cutted); + int right = osdWidth - Config.decorBorderReplaySize*2 - font->Width(total) - marginItem - imgWidth - font->Width(" ") - font->Width(cutted); labelPixmap->DrawText(cPoint(right - marginItem, 0), total, Theme.Color(clrReplayFont), Theme.Color(clrReplayBg), font, font->Width(total), fontHeight); right += font->Width(total); right += font->Width(" "); - labelPixmap->DrawText(cPoint(right - marginItem, 0), "(", Theme.Color(clrReplayFont), Theme.Color(clrReplayBg), font, font->Width("("), fontHeight); - right += font->Width("("); if( imgRecCut ) { iconsPixmap->DrawImage( cPoint(right, 0), *imgRecCut ); right += imgRecCut->Width() + marginItem*2; } - labelPixmap->DrawText(cPoint(right - marginItem, 0), cutted, Theme.Color(clrReplayFont), Theme.Color(clrReplayBg), font, font->Width(cutted), fontHeight); - right += font->Width(cutted); - labelPixmap->DrawText(cPoint(right - marginItem, 0), ")", Theme.Color(clrReplayFont), Theme.Color(clrReplayBg), font, font->Width(")"), fontHeight); - - - + labelPixmap->DrawText(cPoint(right - marginItem, 0), cutted, Theme.Color(clrMenuItemExtraTextFont), Theme.Color(clrReplayBg), font, font->Width(cutted), fontHeight); } else { int right = osdWidth - Config.decorBorderReplaySize*2 - font->Width(total); labelPixmap->DrawText(cPoint(right - marginItem, 0), total, Theme.Color(clrReplayFont), Theme.Color(clrReplayBg), font, font->Width(total), fontHeight); @@ -389,3 +377,32 @@ void cFlatDisplayReplay::Flush(void) { osd->Flush(); } + +void cFlatDisplayReplay::PreLoadImages(void) { + imgLoader.LoadIcon("rewind", fontHeight, fontHeight); + imgLoader.LoadIcon("pause", fontHeight, fontHeight); + imgLoader.LoadIcon("play_sel", fontHeight, fontHeight); + imgLoader.LoadIcon("forward", fontHeight, fontHeight); + imgLoader.LoadIcon("pause_sel", fontHeight, fontHeight); + imgLoader.LoadIcon("forward_sel", fontHeight, fontHeight); + imgLoader.LoadIcon("rewind_sel", fontHeight, fontHeight); + imgLoader.LoadIcon("pause_sel", fontHeight, fontHeight); + imgLoader.LoadIcon("recording_cutted", fontHeight, fontHeight); + + imgLoader.LoadIcon("43", 999, fontSmlHeight); + imgLoader.LoadIcon("169", 999, fontSmlHeight); + imgLoader.LoadIcon("221", 999, fontSmlHeight); + imgLoader.LoadIcon("1920x1080", 999, fontSmlHeight); + imgLoader.LoadIcon("1440x1080", 999, fontSmlHeight); + imgLoader.LoadIcon("1280x720", 999, fontSmlHeight); + imgLoader.LoadIcon("960x720", 999, fontSmlHeight); + imgLoader.LoadIcon("704x576", 999, fontSmlHeight); + imgLoader.LoadIcon("720x576", 999, fontSmlHeight); + imgLoader.LoadIcon("544x576", 999, fontSmlHeight); + imgLoader.LoadIcon("528x576", 999, fontSmlHeight); + imgLoader.LoadIcon("480x576", 999, fontSmlHeight); + imgLoader.LoadIcon("352x576", 999, fontSmlHeight); + imgLoader.LoadIcon("unknown_res", 999, fontSmlHeight); + imgLoader.LoadIcon("hd", 999, fontSmlHeight); + imgLoader.LoadIcon("sd", 999, fontSmlHeight); +} diff --git a/displayreplay.h b/displayreplay.h index 4a86a1fe..a5ce2541 100644 --- a/displayreplay.h +++ b/displayreplay.h @@ -32,4 +32,6 @@ class cFlatDisplayReplay : public cFlatBaseRender, public cSkinDisplayReplay { virtual void SetJump(const char *Jump); virtual void SetMessage(eMessageType Type, const char *Text); virtual void Flush(void); + + void PreLoadImages(void); }; diff --git a/displaytracks.c b/displaytracks.c index 2bbcaac1..e53e0142 100644 --- a/displaytracks.c +++ b/displaytracks.c @@ -1,4 +1,5 @@ #include "displaytracks.h" +#include "flat.h" cFlatDisplayTracks::cFlatDisplayTracks(const char *Title, int NumTracks, const char * const *Tracks) { diff --git a/displayvolume.c b/displayvolume.c index f9daaf1d..1db43294 100644 --- a/displayvolume.c +++ b/displayvolume.c @@ -1,4 +1,5 @@ #include "displayvolume.h" +#include "flat.h" cFlatDisplayVolume::cFlatDisplayVolume(void) { muted = false; @@ -69,3 +70,7 @@ void cFlatDisplayVolume::Flush(void) { TopBarUpdate(); osd->Flush(); } + +void cFlatDisplayVolume::PreLoadImages(void) { + imgLoader.LoadIcon("mute", fontHeight, fontHeight); +} diff --git a/displayvolume.h b/displayvolume.h index c98b293c..5ccbefce 100644 --- a/displayvolume.h +++ b/displayvolume.h @@ -16,4 +16,6 @@ class cFlatDisplayVolume : public cFlatBaseRender, public cSkinDisplayVolume { virtual void SetVolume(int Current, int Total, bool Mute); //virtual void SetAudioChannel(int AudioChannel); virtual void Flush(void); + + void PreLoadImages(void); }; @@ -51,3 +51,34 @@ cSkinDisplayTracks *cFlat::DisplayTracks(const char *Title, int NumTracks, const cSkinDisplayMessage *cFlat::DisplayMessage(void) { return new cFlatDisplayMessage; } + + +char * substr(char * string, int start, int end) +{ + char * p = &string[start]; + char * buf = (char*) malloc(strlen(p) + 1); + char * ptr = buf; + if(!buf) return NULL; + + while(*p != '\0' && start < end) { + *ptr ++ = *p++; + start ++; + } + *ptr++ = '\0'; + + return buf; +} + +char *GetFilenameWithoutext(char * fullfilename) +{ + int i, size; + i = size = 0; + + while(fullfilename[i] != '\0') { + if(fullfilename[i] == '.') { + size = i; + } + i++; + } + return substr(fullfilename, 0, size); +} @@ -5,6 +5,7 @@ #include <time.h> #include <unistd.h> #include <stdint.h> +#include <string.h> #include <vdr/skins.h> #include <vdr/videodir.h> @@ -188,6 +189,9 @@ class cFlat : public cSkin { virtual cSkinDisplayMessage *DisplayMessage(void); }; +char * substr(char * string, int start, int end); +char *GetFilenameWithoutext(char * fullfilename); + static inline uint32_t GetMsTicks(void) { #ifdef CLOCK_MONOTONIC diff --git a/icons/default/recording_cutted_extra.png b/icons/default/recording_cutted_extra.png Binary files differnew file mode 100644 index 00000000..62eaa105 --- /dev/null +++ b/icons/default/recording_cutted_extra.png diff --git a/imagecache.c b/imagecache.c index 5453d7e2..61606476 100644 --- a/imagecache.c +++ b/imagecache.c @@ -1,7 +1,17 @@ #include "imagecache.h" +#include "config.h" + + +#include "displaychannel.h" +#include "displaymenu.h" +#include "displaymessage.h" +#include "displayreplay.h" +#include "displaytracks.h" +#include "displayvolume.h" -cImageCache::cImageCache() { +cImageCache::cImageCache() { + Overflow = false; } cImageCache::~cImageCache() { @@ -46,6 +56,28 @@ void cImageCache::InsertImage(cImage *Image, std::string Name, int Width, int He InsertIndex++; if( InsertIndex >= MAX_IMAGE_CACHE ) { + isyslog("skinflatplus: imagecache overflow, increase MAX_IMAGE_CACHE"); InsertIndex = 0; + Overflow = true; } } + +void cImageCache::PreLoadImage(void) { + uint32_t tick1 = GetMsTicks(); + + cFlatDisplayChannel DisplayChannel(false); + DisplayChannel.PreLoadImages(); + + cFlatDisplayMenu DisplayMenu; + DisplayMenu.PreLoadImages(); + + cFlatDisplayReplay DisplayReplay(false); + DisplayReplay.PreLoadImages(); + + cFlatDisplayVolume DisplayVolume; + DisplayVolume.PreLoadImages(); + + uint32_t tick2 = GetMsTicks(); + dsyslog("skinflatplus imagecache pre load images time: %d ms", tick2 - tick1); + dsyslog("skinflatplus imagecache pre loaded images %d / %d", getCacheCount(), MAX_IMAGE_CACHE); +} diff --git a/imagecache.h b/imagecache.h index edeb8f41..00ee007d 100644 --- a/imagecache.h +++ b/imagecache.h @@ -4,6 +4,10 @@ #include <string> #define MAX_IMAGE_CACHE 999 +#define LOGO_PRE_CACHE 200 +// note MAX_LOGO_PRE_CACHE is used twice +// one for displaychannel and one for menu +// you must double the value for the real amount of pre cached logos class cImageCache { private: @@ -13,13 +17,18 @@ private: int CacheHeight[MAX_IMAGE_CACHE]; int InsertIndex; + bool Overflow; public: cImageCache(); ~cImageCache(); void Create(void); void Clear(void); - + + int getCacheCount(void) { if(Overflow) return MAX_IMAGE_CACHE; return InsertIndex+1; } + cImage *GetImage(std::string Name, int Width, int Height); void InsertImage(cImage *Image, std::string Name, int Width, int Height); + + void PreLoadImage(void); }; diff --git a/imageloader.c b/imageloader.c index 5dafd953..d1b52984 100644 --- a/imageloader.c +++ b/imageloader.c @@ -3,10 +3,10 @@ #include <string> #include <dirent.h> #include <iostream> +#include "flat.h" using namespace Magick; - cImageLoader::cImageLoader() { InitializeMagick(NULL); logoExtension = "png"; diff --git a/imageloader.h b/imageloader.h index b7ffb243..bdcfc787 100644 --- a/imageloader.h +++ b/imageloader.h @@ -9,8 +9,6 @@ #include <Magick++.h> #include "imagemagickwrapper.h" -#include "flat.h" - using namespace Magick; class cImageLoader : public cImageMagickWrapper { @@ -21,12 +19,6 @@ public: cImage* LoadLogo(const char *logo, int width, int height); cImage* LoadIcon(const char *cIcon, int width, int height, bool preserveAspect = true); - //cImage GetImage(); - //cImage GetImage(int width, int height, bool preserveAspect = true); - - //bool LoadIcon(const char *cIcon, int size = -1); - //bool LoadIcon2(const char *cIcon); - private: int epgImageWidthLarge, epgImageHeightLarge; int epgImageWidth, epgImageHeight; diff --git a/po/de_DE.po b/po/de_DE.po index 20b76d2f..b96c7aa2 100644 --- a/po/de_DE.po +++ b/po/de_DE.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: vdr-skinflat 0.2.0\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2014-02-18 18:04+0100\n" +"POT-Creation-Date: 2014-03-13 20:26+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -207,6 +207,9 @@ msgstr "Tasten Rand Typ" msgid "Button border size" msgstr "Tasten Rand Größe" +msgid "Imagecache entries" +msgstr "Imagecache Einträge" + msgid "Show Channelinfo icons" msgstr "Zeige Kanalinfo Icons" @@ -261,6 +261,9 @@ void cFlatSetupGeneral::Setup(void) { Add(new cMenuEditStraItem(tr("Button border type"), &SetupConfig->decorBorderButtonTypeUser, Bordertypes.Size(), &Bordertypes[0])); Add(new cMenuEditIntItem(tr("Button border size"), &SetupConfig->decorBorderButtonSizeUser)); } + + 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)); diff --git a/skinflatplus.c b/skinflatplus.c index d89bbe93..7fed342a 100644 --- a/skinflatplus.c +++ b/skinflatplus.c @@ -89,7 +89,8 @@ bool cPluginFlat::Start(void) { dsyslog("skinflatplus: TrueColor OSD found"); imgCache.Create(); - + imgCache.PreLoadImage(); + flat = new cFlat; return flat; } |