public WhatsNewViewModel(IPlatformServices platformServices)
            : base(platformServices)
        {
            this.whatsNewDataController  = ServiceRegistry.GetService <IWhatsNewDataController>();
            this.genreListDataController = ServiceRegistry.GetService <IGenreListDataController>();

            this.genreList = new MainThreadObservableCollectionAdapter <IGenreViewModel>(this.genreListDataController.TheList,
                                                                                         PlatformServices.MainThreadDispatcher);

            this.newReleases = new MainThreadObservableCollectionAdapter <IAlbumViewModel>(this.whatsNewDataController.NewReleases,
                                                                                           PlatformServices.MainThreadDispatcher);

            this.deezerPicks = new MainThreadObservableCollectionAdapter <IAlbumViewModel>(this.whatsNewDataController.DeezerPicks,
                                                                                           PlatformServices.MainThreadDispatcher);

            this.genreListDataController.OnFetchStateChanged += OnGenreListFetchStateChanged;

            this.whatsNewDataController.OnNewReleaseFetchStateChanged  += OnNewReleaseFetchStateChanged;
            this.whatsNewDataController.OnDeezerPicksFetchStateChanged += OnDeezerPicksFetchStateChanged;

            this.selectedGenreIndex = this.genreList.Count == 0 ? 0
                                                                : this.genreList.Select((x, i) => new { Genre = x, Index = i })
                                      .Where(x => x.Genre.Id == this.whatsNewDataController.CurrentGenreFilter)
                                      .Single()
                                      .Index;

            this.whatsNewDataController.BeginPopulateAsync();
            this.genreListDataController.RefreshGenreListAsync();
        }
        public ChartsViewModel(IPlatformServices platformServices)
            : base(platformServices)
        {
            this.chartsDataController    = ServiceRegistry.GetService <IChartsDataController>();
            this.genreListDataController = ServiceRegistry.GetService <IGenreListDataController>();


            this.genreList = new MainThreadObservableCollectionAdapter <IGenreViewModel>(this.genreListDataController.TheList,
                                                                                         PlatformServices.MainThreadDispatcher);



            this.albums = new MainThreadObservableCollectionAdapter <IAlbumViewModel>(this.chartsDataController.AlbumChart,
                                                                                      PlatformServices.MainThreadDispatcher);

            this.artists = new MainThreadObservableCollectionAdapter <IArtistViewModel>(this.chartsDataController.ArtistChart,
                                                                                        PlatformServices.MainThreadDispatcher);

            this.tracks = new MainThreadObservableCollectionAdapter <ITrackViewModel>(this.chartsDataController.TrackChart,
                                                                                      PlatformServices.MainThreadDispatcher);

            this.playlists = new MainThreadObservableCollectionAdapter <IPlaylistViewModel>(this.chartsDataController.PlaylistChart,
                                                                                            PlatformServices.MainThreadDispatcher);


            this.genreListDataController.OnFetchStateChanged += OnGenreListFetchStateChanged;

            this.chartsDataController.OnAlbumChartFetchStateChanged    += OnAlbumChartFetchStatusChanged;
            this.chartsDataController.OnArtistChartFetchStateChanged   += OnArtistChartFetchStatusChanged;
            this.chartsDataController.OnTrackChartFetchStateChanged    += OnTrackChartFetchStatusChanged;
            this.chartsDataController.OnPlaylistChartFetchStateChanged += OnPlaylistChartFetchStatusChanged;


            //TODO: Need stop this 'Begin' call required before executing the below LINQ command stuff
            this.chartsDataController.BeginPopulateAsync();
            this.genreListDataController.RefreshGenreListAsync();

            this.selectedGenreIndex = this.genreList.Count == 0 ? 0
                                                                : this.genreList.Select((x, i) => new { Genre = x, Index = i })
                                      .Where(x => x.Genre.Id == this.chartsDataController.CurrentGenreFilter)
                                      .SingleOrDefault()
                                      .Index;
        }