void setFanartPreviewBackground(MFFanart fanart)
        {
            string fanartInfo = fanart.isAvailableLocally ? "Translation.FanArtLocal" : "Translation.FanArtOnline";
              fanartInfo += Environment.NewLine;

              MyFilmsDetail.setGUIProperty("FanArt.SelectedFanartResolution", fanart.ImageResolutionClass);
              fanartInfo += "Resolution: " + fanart.ImageResolutionClass + Environment.NewLine;
              MyFilmsDetail.setGUIProperty("FanArt.SelectedFanartIsChosen", fanart.Chosen.ToString());
              fanartInfo += "Chosen: " + fanart.Chosen + Environment.NewLine;
              MyFilmsDetail.setGUIProperty("FanArt.SelectedFanartIsDisabled", fanart.Disabled.ToString());
              fanartInfo += "Disabled: " + fanart.Disabled + Environment.NewLine;

              MyFilmsDetail.setGUIProperty("FanArt.SelectedFanartInfo", fanartInfo);

              string preview = string.Empty;

              lock (locker)
              {
            if (fanart.isAvailableLocally)
            {
              // Ensure Fanart on Disk is valid as well
              if (ImageAllocator.LoadImageFastFromFile(fanart.FullLocalPath) == null)
              {
            LogMyFilms.Debug("Fanart is invalid, deleting...");
            fanart.Delete();
            fanart.Chosen = false;
            m_Facade.SelectedListItem.Label = "Translation.FanArtOnline";
              }

              // Should be safe to assign fullsize fanart if available
              preview = fanart.isAvailableLocally ?
                    ImageAllocator.GetOtherImage(fanart.FullLocalPath, default(System.Drawing.Size), false) :
                    m_Facade.SelectedListItem.IconImageBig;
            }
            else
              preview = m_Facade.SelectedListItem.IconImageBig;

            MyFilmsDetail.setGUIProperty("FanArt.SelectedPreview", preview);
              }
        }
        public static List<MFFanart> GetAll(int SeriesID, bool availableOnly)
        {
            lock (cache)
              {
            if (SeriesID < 0) return new List<MFFanart>();

            if (cache == null || !cache.ContainsKey(SeriesID))
            {
              try
              {
            // make sure the table is created - create a dummy object
            MFFanart dummy = new MFFanart();

            // retrieve all fields in the table
            // ToDo: Get TMDB fanarts here ...
            var movies = new List<TmdbMovie>();
            var movie = new TmdbMovie();
            var results = movie.backdrop_path;
            if (results.Length > 0)
            {
              var ourFanart = new List<MFFanart>(results.Length);

              for (int index = 0; index < results.Length; index++)
              {
                ourFanart.Add(new MFFanart());
                // ourFanart[index].Read(ref results, index);
              }
              if (cache == null) cache = new Dictionary<int, List<MFFanart>>();
              cache.Add(SeriesID, ourFanart);
            }
            LogMyFilms.Debug("Found " + results.Length + " Fanart from TMDB");

              }
              catch (Exception ex)
              {
            LogMyFilms.Error("Error in MFFanart.Get (" + ex.Message + ").");
              }
            }
            List<MFFanart> faForSeries = null;
            if (cache != null && cache.TryGetValue(SeriesID, out faForSeries))
              return faForSeries;
            return new List<MFFanart>();
              }
        }
        void downloadFanart(MFFanart fanart)
        {
            // we need to get it, let's queue them up and download in the background
              lock (toDownload)
              {
            toDownload.Enqueue(fanart);
              }
              setDownloadStatus();
              // don't return, user can queue up multiple fanart to download
              // the last he selects to download will be the chosen one by default

              // finally lets check if the downloader is already running, and if not start it
              if (!downloadingWorker.IsBusy)
            downloadingWorker.RunWorkerAsync();
        }