private async Task <IEnumerable <PodcastGroup> > LoadFavorites() { StorageFile roamingFavoritesFile; try { roamingFavoritesFile = await ApplicationData.Current.RoamingFolder.GetFileAsync("podcatch.json"); Tracer.TraceInformation("Loading Favorites from {0}", roamingFavoritesFile.Path); using (Stream stream = await roamingFavoritesFile.OpenStreamForReadAsync()) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(IEnumerable <PodcastGroupData>)); IEnumerable <PodcastGroupData> favoritesData = (IEnumerable <PodcastGroupData>)serializer.ReadObject(stream); List <PodcastGroup> favorites = new List <PodcastGroup>(); foreach (PodcastGroupData groupData in favoritesData) { favorites.Add(PodcastGroup.FromData(ServiceContext, groupData)); } return(favorites); } } catch (Exception e) { Tracer.TraceInformation("Couldn't find favorites file in roaming folder. {0}", e); return(new Collection <PodcastGroup>()); } }
public Task RemoveFromFavorites(Podcast podcast) { PodcastGroup favorites = GetGroup(Constants.FavoritesGroupId); favorites.Podcasts.Remove(podcast); return(Store()); }
public override bool Equals(object obj) { PodcastGroup other = obj as PodcastGroup; if (other != null) { return(other.Id == Id); } return(false); }
private void AddPodcast(string groupId, Podcast podcast) { PodcastGroup group = GetGroup(groupId); if (group != null) { if (!group.Podcasts.Contains(podcast)) { group.Podcasts.Add(podcast); } } }
private void AddDefaultGroups() { PodcastGroup favorites = new PodcastGroup(ServiceContext) { Id = Constants.FavoritesGroupId, TitleText = "FavoritesTitleText", SubtitleText = "FavoritesSubtitleText", DescriptionText = "FavoritesDescriptionText", }; Groups.Add(favorites); }
private PodcastGroup AddSearchResultsGroup() { PodcastGroup searchGroup = new PodcastGroup(ServiceContext) { Id = Constants.SearchGroupId, TitleText = "SearchTitleText", SubtitleText = "SearchSubtitleText", DescriptionText = "SearchDescriptionText", }; Groups.Add(searchGroup); return(searchGroup); }
public static PodcastGroup FromData(IServiceContext serviceContext, PodcastGroupData data) { PodcastGroup group = new PodcastGroup(serviceContext) { Id = data.Id }; group.Podcasts = new ConcurrentObservableCollection <Podcast>(null, true); foreach (RoamingPodcastData podcastData in data.RoamingPodcastsData) { group.Podcasts.Add(Podcast.FromRoamingData(serviceContext, podcastData)); } group.Podcasts.HoldNotifications = false; return(group); }
public Task Load(bool force) { Podcast podcast = new Podcast(ServiceContext) { Title = "Podcast Title", Description = "Podcast Descirption" }; PodcastGroup group = new PodcastGroup(ServiceContext) { Podcasts = new ConcurrentObservableCollection <Podcast>() { podcast }, Id = "Favorites", TitleText = "Favorites" }; m_Groups.Add(group); return(VoidTask.Completed); }
public async Task <bool> AddToFavorites(Podcast podcast) { PodcastGroup favorites = GetGroup(Constants.FavoritesGroupId); if (favorites.Podcasts.Contains(podcast)) { return(false); } PodcastGroup search = GetGroup(Constants.SearchGroupId); if (search.Podcasts.Contains(podcast)) { search.Podcasts.Remove(podcast); } favorites.Podcasts.Add(podcast); await Store(); return(await LoadPodcast(podcast)); }
public async Task UpdateSearchResults(IEnumerable <Podcast> podcasts) { PodcastGroup searchGroup = GetGroup(Constants.SearchGroupId); if (searchGroup == null) { searchGroup = AddSearchResultsGroup(); } // TODO: this needs to happen on UIThread searchGroup.Podcasts.Clear(); searchGroup.Podcasts.AddAll(podcasts); foreach (Podcast podcast in searchGroup.Podcasts) { try { await podcast.RefreshFromRss(false); } catch (Exception e) { Tracer.TraceInformation("PodcastDataSource.UpdateSearchResults() - failed to refresh {0}: {1}", podcast.Title, e); } } }
public bool IsPodcastInFavorites(Podcast podcast) { PodcastGroup favorites = GetGroup(Constants.FavoritesGroupId); return(favorites.Podcasts.Contains(podcast)); }