public FavoritesViewModel(IPresentationManager presentation, IImageManager imageManager, IApiClient apiClient, ISessionManager session, INavigationService nav, IPlaybackManager playback, ILogger logger, double tileWidth, double tileHeight, IServerEvents serverEvents) : base(presentation, apiClient) { _sessionManager = session; _playbackManager = playback; _imageManager = imageManager; _navService = nav; _logger = logger; _serverEvents = serverEvents; TileWidth = tileWidth; TileHeight = tileHeight; var spotlightTileWidth = TileWidth * 2 + TilePadding; var spotlightTileHeight = spotlightTileWidth * 9 / 16; SpotlightViewModel = new ImageViewerViewModel(_imageManager, new List<ImageViewerImage>()) { Height = spotlightTileHeight, Width = spotlightTileWidth, CustomCommandAction = i => _navService.NavigateToItem(i.Item, ViewType.Tv) }; LoadViewModels(); NavigateToFavoriteMoviesCommand = new RelayCommand(o => NavigateToFavorites("Movie")); }
public ImageViewerPage(IPresentationManager presentation, ImageViewerViewModel viewModel) { _presentation = presentation; InitializeComponent(); DataContext = viewModel; Loaded += ImageViewerPage_Loaded; Unloaded += ImageViewerPage_Unloaded; }
public TvViewModel(IPresentationManager presentation, IImageManager imageManager, IApiClient apiClient, ISessionManager session, INavigationService nav, IPlaybackManager playback, ILogger logger, double tileWidth, double tileHeight, IServerEvents serverEvents, string parentId) : base(presentation, apiClient) { _sessionManager = session; _playbackManager = playback; _imageManager = imageManager; _navService = nav; _logger = logger; _serverEvents = serverEvents; ParentId = parentId; TileWidth = tileWidth; TileHeight = tileHeight; var spotlightTileHeight = TileHeight * 2 + TileMargin * 2; var spotlightTileWidth = 16 * (spotlightTileHeight / 9) + 100; var lowerSpotlightWidth = spotlightTileWidth / 3 - (TileMargin * 1.5); SpotlightViewModel = new ImageViewerViewModel(_imageManager, new List<ImageViewerImage>()) { Height = spotlightTileHeight, Width = spotlightTileWidth, CustomCommandAction = i => _navService.NavigateToItem(i.Item, ViewType.Tv), ImageStretch = Stretch.UniformToFill, FocusedCommandAction = () => GalleryItemFocused() }; GenresViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = lowerSpotlightWidth, CustomCommandAction = () => NavigateWithLoading(NavigateToGenresInternal), FocusedCommandAction = () => GalleryItemFocused() }; AllShowsViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = lowerSpotlightWidth, CustomCommandAction = () => NavigateWithLoading(NavigateToAllShows), FocusedCommandAction = () => GalleryItemFocused() }; UpcomingViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = lowerSpotlightWidth, CustomCommandAction = () => NavigateWithLoading(NavigateToAllShows), FocusedCommandAction = () => GalleryItemFocused() }; LoadViewModels(); }
private async void OpenImageViewer(object commandParameter) { var image = (GalleryImageViewModel)commandParameter; var isBackdrop = image.ImageUrl.IndexOf("backdrop", StringComparison.OrdinalIgnoreCase) != -1; var images = GetImages(Item, _apiClient, Convert.ToInt32(SystemParameters.VirtualScreenWidth), null, !isBackdrop); var selectedIndex = ListCollectionView.IndexOf(image); images = images.Skip(selectedIndex).Concat(images.Take(selectedIndex)).ToList(); var initialImages = images.Select(i => new ImageViewerImage { Url = i, Caption = Item.Name }); var vm = new ImageViewerViewModel(_imageManager, initialImages); await _navigation.NavigateToImageViewer(vm); }
public MoviesViewModel(IPresentationManager presentation, IImageManager imageManager, IApiClient apiClient, ISessionManager session, INavigationService nav, IPlaybackManager playback, ILogger logger, double tileWidth, double tileHeight, IServerEvents serverEvents) : base(presentation, apiClient) { _sessionManager = session; _imageManager = imageManager; _navService = nav; _playbackManager = playback; _logger = logger; _serverEvents = serverEvents; TileWidth = tileWidth; TileHeight = tileHeight; var trailerTileHeight = (TileHeight * 1.46) + TilePadding / 2; var trailerTileWidth = trailerTileHeight * 2 / 3; LatestTrailersViewModel = new ItemListViewModel(GetLatestTrailersAsync, presentation, imageManager, apiClient, nav, playback, logger, _serverEvents) { ImageDisplayWidth = trailerTileWidth, ImageDisplayHeightGenerator = v => trailerTileHeight, DisplayNameGenerator = HomePageViewModel.GetDisplayName, PreferredImageTypesGenerator = vm => new[] { ImageType.Primary }, EnableBackdropsForCurrentItem = false }; LatestTrailersViewModel.PropertyChanged += TrailersViewModel_PropertyChanged; const double tileScaleFactor = 13; LatestMoviesViewModel = new ItemListViewModel(GetLatestMoviesAsync, presentation, imageManager, apiClient, nav, playback, logger, _serverEvents) { ImageDisplayWidth = trailerTileWidth, ImageDisplayHeightGenerator = v => trailerTileHeight, DisplayNameGenerator = HomePageViewModel.GetDisplayName, PreferredImageTypesGenerator = vm => new[] { ImageType.Primary, ImageType.Backdrop, ImageType.Thumb, }, EnableBackdropsForCurrentItem = false, ListType = "LatestMovies" }; LatestMoviesViewModel.PropertyChanged += LatestMoviesViewModel_PropertyChanged; ActorsViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = TileWidth * tileScaleFactor / 16, CustomCommandAction = () => NavigateWithLoading(NavigateToActorsInternal) }; GenresViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = TileWidth * tileScaleFactor / 16, CustomCommandAction = () => NavigateWithLoading(NavigateToGenresInternal) }; YearsViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = TileWidth * tileScaleFactor / 16, CustomCommandAction = () => NavigateWithLoading(NavigateToYearsInternal) }; AllMoviesViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = TileWidth * tileScaleFactor / 16, CustomCommandAction = () => NavigateWithLoading(NavigateToAllMoviesInternal) }; BoxsetsViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = TileWidth * tileScaleFactor / 16, CustomCommandAction = () => NavigateWithLoading(NavigateToBoxsetsInternal) }; TrailersViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = TileWidth * tileScaleFactor / 16, CustomCommandAction = () => NavigateWithLoading(NavigateToTrailersInternal) }; HDMoviesViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = TileWidth * tileScaleFactor / 16, CustomCommandAction = () => NavigateWithLoading(NavigateToHDMoviesInternal) }; FamilyMoviesViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = TileWidth * tileScaleFactor / 16, CustomCommandAction = () => NavigateWithLoading(NavigateToFamilyMoviesInternal) }; ThreeDMoviesViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = TileWidth * tileScaleFactor / 16, CustomCommandAction = () => NavigateWithLoading(NavigateTo3DMoviesInternal) }; RomanticMoviesViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = TileWidth * tileScaleFactor / 16, CustomCommandAction = () => NavigateWithLoading(NavigateToRomanticMoviesInternal) }; ComedyItemsViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = TileWidth * tileScaleFactor / 16, CustomCommandAction = () => NavigateWithLoading(NavigateToComedyMoviesInternal) }; var spotlightTileWidth = TileWidth * 2 + TilePadding; var spotlightTileHeight = spotlightTileWidth * 9 / 16; SpotlightViewModel = new ImageViewerViewModel(_imageManager, new List<ImageViewerImage>()) { Height = spotlightTileHeight, Width = spotlightTileWidth, CustomCommandAction = i => _navService.NavigateToItem(i.Item, ViewType.Movies), ImageStretch = Stretch.UniformToFill }; LoadViewModels(); }
public MoviesViewModel(IPresentationManager presentation, IImageManager imageManager, IApiClient apiClient, ISessionManager session, INavigationService nav, IPlaybackManager playback, ILogger logger, double tileWidth, double tileHeight, IServerEvents serverEvents) : base(presentation, apiClient) { _sessionManager = session; _imageManager = imageManager; _navService = nav; _playbackManager = playback; _logger = logger; _serverEvents = serverEvents; TileWidth = tileWidth; TileHeight = tileHeight; _posterTileHeight = (TileHeight * 1.5) + TileMargin; _posterTileWidth = _posterTileHeight * 2 / 3; var spotlightTileHeight = TileHeight * 2 + TileMargin * 2; var spotlightTileWidth = 16 * (spotlightTileHeight / 9) + 100; var lowerSpotlightWidth = spotlightTileWidth / 4 - (TileMargin * 1.5); GenresViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = lowerSpotlightWidth, CustomCommandAction = () => NavigateWithLoading(NavigateToGenresInternal), FocusedCommandAction = () => GalleryItemFocused() }; TrailersViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = lowerSpotlightWidth, CustomCommandAction = () => NavigateWithLoading(() => NavigateToMoviesInternal("Trailers")), FocusedCommandAction = () => GalleryItemFocused() }; YearsViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = lowerSpotlightWidth, CustomCommandAction = () => NavigateWithLoading(NavigateToYearsInternal), FocusedCommandAction = () => GalleryItemFocused() }; AllMoviesViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = lowerSpotlightWidth, CustomCommandAction = () => NavigateWithLoading(() => NavigateToMoviesInternal("AllMovies")), FocusedCommandAction = () => GalleryItemFocused() }; SpotlightViewModel = new ImageViewerViewModel(_imageManager, new List<ImageViewerImage>()) { Height = spotlightTileHeight, Width = spotlightTileWidth, CustomCommandAction = i => _navService.NavigateToItem(i.Item, ViewType.Movies), ImageStretch = Stretch.UniformToFill, FocusedCommandAction = () => GalleryItemFocused() }; LoadViewModels(); }
public TvViewModel(IPresentationManager presentation, IImageManager imageManager, IApiClient apiClient, ISessionManager session, INavigationService nav, IPlaybackManager playback, ILogger logger, double tileWidth, double tileHeight, IServerEvents serverEvents) : base(presentation, apiClient) { _sessionManager = session; _playbackManager = playback; _imageManager = imageManager; _navService = nav; _logger = logger; _serverEvents = serverEvents; TileWidth = tileWidth; TileHeight = tileHeight; NextUpViewModel = new ItemListViewModel(GetNextUpAsync, presentation, imageManager, apiClient, nav, playback, logger, _serverEvents) { ImageDisplayWidth = TileWidth, ImageDisplayHeightGenerator = v => TileHeight, DisplayNameGenerator = HomePageViewModel.GetDisplayName, EnableBackdropsForCurrentItem = false }; LatestEpisodesViewModel = new ItemListViewModel(GetLatestEpisodes, presentation, imageManager, apiClient, nav, playback, logger, _serverEvents) { ImageDisplayWidth = TileWidth, ImageDisplayHeightGenerator = v => TileHeight, DisplayNameGenerator = HomePageViewModel.GetDisplayName, EnableBackdropsForCurrentItem = false }; ResumeViewModel = new ItemListViewModel(GetResumeablesAsync, presentation, imageManager, apiClient, nav, playback, logger, _serverEvents) { ImageDisplayWidth = TileWidth, ImageDisplayHeightGenerator = v => TileHeight, DisplayNameGenerator = HomePageViewModel.GetDisplayName, EnableBackdropsForCurrentItem = false }; ResumeViewModel.PropertyChanged += ResumeViewModel_PropertyChanged; const double tileScaleFactor = 13; ActorsViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = TileWidth * tileScaleFactor / 16, CustomCommandAction = () => NavigateWithLoading(NavigateToActorsInternal) }; GenresViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = TileWidth * tileScaleFactor / 16, CustomCommandAction = () => NavigateWithLoading(NavigateToGenresInternal) }; AllShowsViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = TileWidth * tileScaleFactor / 16, CustomCommandAction = () => NavigateWithLoading(NavigateToAllShowsInternal) }; RomanticSeriesViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = TileWidth * tileScaleFactor / 16, CustomCommandAction = () => NavigateWithLoading(NavigateToRomanticTvInternal) }; ComedyItemsViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = TileWidth * tileScaleFactor / 16, CustomCommandAction = () => NavigateWithLoading(NavigateToComedySeriesInternal) }; var spotlightTileWidth = TileWidth * 2 + TilePadding; var spotlightTileHeight = spotlightTileWidth * 9 / 16; SpotlightViewModel = new ImageViewerViewModel(_imageManager, new List<ImageViewerImage>()) { Height = spotlightTileHeight, Width = spotlightTileWidth, CustomCommandAction = i => _navService.NavigateToItem(i.Item, ViewType.Tv), ImageStretch = Stretch.UniformToFill }; LoadViewModels(); }
public GamesViewModel(IPresentationManager presentation, IImageManager imageManager, IApiClient apiClient, ISessionManager session, INavigationService nav, IPlaybackManager playback, ILogger logger, double tileWidth, double tileHeight, IServerEvents serverEvents) : base(presentation, apiClient) { _sessionManager = session; _playbackManager = playback; _imageManager = imageManager; _navService = nav; _logger = logger; _serverEvents = serverEvents; TileWidth = tileWidth; TileHeight = tileHeight; var spotlightTileWidth = TileWidth * 2 + TilePadding; var spotlightTileHeight = spotlightTileWidth * 9 / 16; SpotlightViewModel = new ImageViewerViewModel(_imageManager, new List<ImageViewerImage>()) { Height = spotlightTileHeight, Width = spotlightTileWidth, CustomCommandAction = i => _navService.NavigateToItem(i.Item, ViewType.Games), ImageStretch = Stretch.UniformToFill }; GameSystemsViewModel = new ItemListViewModel(GetGameSystems, presentation, imageManager, apiClient, nav, playback, logger, _serverEvents) { ImageDisplayWidth = TileWidth, ImageDisplayHeightGenerator = v => TileHeight, DisplayNameGenerator = HomePageViewModel.GetDisplayName, EnableBackdropsForCurrentItem = false, Context = ViewType.Games }; const int tileScaleFactor = 13; RecentlyPlayedViewModel = new ItemListViewModel(GetRecentlyPlayedAsync, presentation, imageManager, apiClient, nav, playback, logger, _serverEvents) { ImageDisplayWidth = TileWidth * tileScaleFactor / 16, ImageDisplayHeightGenerator = v => TileHeight, DisplayNameGenerator = HomePageViewModel.GetDisplayName, EnableBackdropsForCurrentItem = false, ImageStretch = Stretch.UniformToFill, Context = ViewType.Games }; GenresViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = TileWidth * tileScaleFactor / 16, CustomCommandAction = () => NavigateWithLoading(NavigateToGenresInternal) }; YearsViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = TileWidth * tileScaleFactor / 16, CustomCommandAction = () => NavigateWithLoading(NavigateToYearsInternal) }; MultiPlayerViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService) { GalleryHeight = TileHeight, GalleryWidth = TileWidth * tileScaleFactor / 16, CustomCommandAction = () => NavigateWithLoading(NavigateToMultiPlayerGamesInternal) }; LoadViewModels(); }
public Task NavigateToImageViewer(ImageViewerViewModel viewModel) { return Navigate(new ImageViewerPage(_presentationManager, viewModel)); }