コード例 #1
0
        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>());
            }
        }
コード例 #2
0
        public Task RemoveFromFavorites(Podcast podcast)
        {
            PodcastGroup favorites = GetGroup(Constants.FavoritesGroupId);

            favorites.Podcasts.Remove(podcast);
            return(Store());
        }
コード例 #3
0
ファイル: PodcastGroup.cs プロジェクト: yoavfr/podcatcher
        public override bool Equals(object obj)
        {
            PodcastGroup other = obj as PodcastGroup;

            if (other != null)
            {
                return(other.Id == Id);
            }
            return(false);
        }
コード例 #4
0
        private void AddPodcast(string groupId, Podcast podcast)
        {
            PodcastGroup group = GetGroup(groupId);

            if (group != null)
            {
                if (!group.Podcasts.Contains(podcast))
                {
                    group.Podcasts.Add(podcast);
                }
            }
        }
コード例 #5
0
        private void AddDefaultGroups()
        {
            PodcastGroup favorites = new PodcastGroup(ServiceContext)
            {
                Id              = Constants.FavoritesGroupId,
                TitleText       = "FavoritesTitleText",
                SubtitleText    = "FavoritesSubtitleText",
                DescriptionText = "FavoritesDescriptionText",
            };

            Groups.Add(favorites);
        }
コード例 #6
0
        private PodcastGroup AddSearchResultsGroup()
        {
            PodcastGroup searchGroup = new PodcastGroup(ServiceContext)
            {
                Id              = Constants.SearchGroupId,
                TitleText       = "SearchTitleText",
                SubtitleText    = "SearchSubtitleText",
                DescriptionText = "SearchDescriptionText",
            };

            Groups.Add(searchGroup);
            return(searchGroup);
        }
コード例 #7
0
ファイル: PodcastGroup.cs プロジェクト: yoavfr/podcatcher
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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));
        }
コード例 #10
0
        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);
                }
            }
        }
コード例 #11
0
        public bool IsPodcastInFavorites(Podcast podcast)
        {
            PodcastGroup favorites = GetGroup(Constants.FavoritesGroupId);

            return(favorites.Podcasts.Contains(podcast));
        }