public LibraryImage GetImage(string path)
        {
            LibraryImage image  = null;
            bool         cached = false;

            lock (cache){
                cached = cache.TryGetValue(path, out image);
            }

            if (!cached && image == null)
            {
                try {
                    foreach (var resolver in Kernel.Instance.ImageResolvers)
                    {
                        image = resolver(path);
                        if (image != null)
                        {
                            break;
                        }
                    }

                    if (image == null)
                    {
                        image = new FilesystemImage();
                    }

                    image.Path = path;
                    image.Init();

                    // this will trigger a download a resize
                    image.EnsureImageSizeInitialized();
                } catch (Exception ex) {
                    Logger.ReportException("Failed to load image: " + path + " ", ex);
                    image = null;
                }
            }

            lock (cache) {
                cache[path] = image;
            }

            return(image);
        }
        public LibraryImage GetImage(string path, bool canBeProcessed, BaseItem item)
        {
            LibraryImage image  = null;
            bool         cached = false;

            lock (cache){
                cached = cache.TryGetValue(path, out image);
            }

            if (!cached && image == null)
            {
                try {
                    foreach (var resolver in Kernel.Instance.ImageResolvers)
                    {
                        image = resolver(path, canBeProcessed, item);
                        if (image != null)
                        {
                            break;
                        }
                    }

                    if (image == null)
                    {
                        image = new FilesystemImage();
                    }

                    image.Path = path;
                    image.Init(canBeProcessed, item);
                } catch (Exception ex) {
                    Logger.ReportException("Failed to load image: " + path + " ", ex);
                    image = null;
                }
            }

            lock (cache) {
                cache[path] = image;
            }

            return(image);
        }
        private void LoadImageImpl(Loader loader)
        {
            int retries = 0;

            while (retries++ < 4 && localImage == null)
            {
                localImage = source();
                if (localImage != null)
                {
                    break;
                }
                // during aggressive metadata updates - images may be blank
                Logger.ReportInfo("Image source not available waiting...");
                Thread.Sleep(100 * retries);
            }

            // if the image is invalid it may be null.
            if (localImage != null)
            {
                if (loader == Loader.NormalLoader && !localImage.IsCached)
                {
                    if (LowPriority)
                    {
                        NetImageLoadingProcessors.Enqueue(() => LoadImage(Loader.SlowLoader));
                    }
                    else
                    {
                        NetImageLoadingProcessors.Inject(() => LoadImage(Loader.SlowLoader));
                    }
                }
                else
                {
                    FetchImage();
                }
            }
            else
            {
                doneProcessing = true;
            }
        }
Beispiel #4
0
 public ImageViewModel()
 {
     _library = new LibraryImage();
     _library.PropertyChanged += PropertyChangedHandler;
 }
Beispiel #5
0
 public void EditLibraryImage(LibraryImage imageToEdit)
 {
     imageRepository.Update(imageToEdit);
     SaveLibraryImage();
 }
Beispiel #6
0
 public void CreateLibraryImage(LibraryImage image)
 {
     imageRepository.Add(image);
     SaveLibraryImage();
 }
Beispiel #7
0
        public void Save(HttpPostedFileBase[] files, string pathSv, int type, int?typeImge = null, string iframe = null, int?typeVideo = null, int?productId = null)
        {
            switch (type)
            {
            case (int)Enums.LibraryImageType.Image:
                if (files != null)
                {
                    foreach (var item in files)
                    {
                        var temp = new LibraryImage();
                        temp.Type  = type;
                        temp.Temp1 = typeImge;
                        temp.Url   = Utils.SaveFile(pathSv, item, type);
                        imageRepository.Add(temp);
                    }
                    SaveLibraryImage();
                }
                break;

            case (int)Enums.LibraryImageType.Video:

                if (typeVideo != null)
                {
                    var temp = new LibraryImage();
                    temp.Type  = type;
                    temp.Temp1 = typeVideo.Value;
                    switch (typeVideo)
                    {
                    case (int)Enums.VideoEnum.Youtube:
                        temp.Temp2 = iframe;
                        imageRepository.Add(temp);
                        SaveLibraryImage();
                        break;

                    case (int)Enums.VideoEnum.Server:
                        if (files != null)
                        {
                            var item = files[0];
                            temp.Url = Utils.SaveFile(pathSv, item, type);
                            imageRepository.Add(temp);
                            SaveLibraryImage();
                        }
                        break;

                    default:
                        break;
                    }
                }

                break;

            case (int)Enums.LibraryImageType.Course:

                if (typeVideo != null)
                {
                    var temp = new LibraryImage();
                    temp.Type  = type;
                    temp.Temp1 = typeVideo.Value;
                    temp.Temp3 = productId.Value;
                    switch (typeVideo)
                    {
                    case (int)Enums.VideoEnum.Youtube:
                        temp.Temp2 = iframe;
                        imageRepository.Add(temp);
                        SaveLibraryImage();
                        break;

                    case (int)Enums.VideoEnum.Server:
                        if (files != null)
                        {
                            var item = files[0];
                            temp.Url = Utils.SaveFile(pathSv, item, type);
                            imageRepository.Add(temp);
                            SaveLibraryImage();
                        }
                        break;

                    default:
                        break;
                    }
                }

                break;

            default:
                break;
            }
        }