private void ShowLibrary(LibraryKind kind, string projectPath = null)
        {
            using (new UsingProcessor(
                       () => { if (!_Starting)
                               {
                                   transitionManager.StartTransition(layoutControlRoot);
                               }
                       },
                       () => { if (!_Starting)
                               {
                                   transitionManager.EndTransition();
                               }
                       }))
            {
                layoutLookupLibraries.Visibility = (kind == LibraryKind.Library) ? LayoutVisibility.Always : LayoutVisibility.Never;

                CleanupStorage();

                bindingProjects.Clear();
                _CurrentLibrary = kind;

                switch (_CurrentLibrary)
                {
                case LibraryKind.Favorites:
                    layoutControlGroupProjects.Text = "Favorite Projects";
                    _Storage.FavoriteProjects.Sort(new SavedStorageNameComparer());
                    LoadProjects(_Storage.FavoriteProjects);
                    break;

                case LibraryKind.Recent:
                    layoutControlGroupProjects.Text = "Recent Projects";
                    _Storage.RecentProjects.Sort(new SavedStorageLastAccessComparer());
                    LoadProjects(_Storage.RecentProjects);
                    break;

                case LibraryKind.Library:
                    layoutControlGroupProjects.Text = "Libraries";
                    if (!string.IsNullOrWhiteSpace(projectPath) && Directory.Exists(projectPath))
                    {
                        LoadProjectsFromDirectory(projectPath);
                    }
                    else if (lookupLibraries.EditValue is SavedLibrary library)
                    {
                        LoadProjectsFromDirectory(library.Directory);
                    }
                    break;

                case LibraryKind.Examples:
                    layoutControlGroupProjects.Text = "Examples";
                    var folderExamples = Project.FolderExamples;
                    if (Directory.Exists(folderExamples))
                    {
                        LoadProjectsFromDirectory(folderExamples);
                    }
                    break;

                default:
                    break;
                }
            }
Ejemplo n.º 2
0
        public async Task IndexGenres(LibraryKind libraryKind, string language)
        {
            var availableGenres = libraryKind switch
            {
                LibraryKind.Film => await _metadataService.FetchFilmGenres(language),
                LibraryKind.Series => await _metadataService.FetchSeriesGenres(language),
                _ => throw new ArgumentOutOfRangeException()
            };

            await _metadataService.FetchFilmGenres(language);

            var newGenreIds    = availableGenres.Select(g => g.Id).ToList();
            var existingGenres = await _context.Genre.Where(g => newGenreIds.Contains(g.Id)).Select(g => g.Id).ToListAsync();

            _context.AddRange(availableGenres.Where(g => !existingGenres.Contains(g.Id)));
            await _context.SaveChangesAsync();

            await _distributedCache.RemoveFromList("overview", "sys", "genre");
        }