コード例 #1
0
ファイル: IOTools.cs プロジェクト: ShaoSMpet/GuanZhi
        /// <summary>
        /// 追加单个收藏文章
        /// </summary>
        /// <param name="favouriteArticle">收藏文章</param>
        /// <returns></returns>
        public async static Task <bool?> AddLocalFavouriteArticleItem(AppArticleModel favouriteArticle)
        {
            var dataFolder = await GetLocalDataFolder();

            var favouriteArticleFile = await dataFolder.CreateFileAsync("FavouriteArticle.json", CreationCollisionOption.OpenIfExists);

            string sourceJson = await FileIO.ReadTextAsync(favouriteArticleFile);

            if (string.IsNullOrEmpty(sourceJson))
            {
                sourceJson = "[]";
            }
            var sourceList = JsonConvert.DeserializeObject <List <AppArticleModel> >(sourceJson);

            if (sourceList.Any(article => article.Title == favouriteArticle.Title))
            {
                return(null);
            }
            sourceList.Add(favouriteArticle);
            string afterJson = JsonConvert.SerializeObject(sourceList);

            try
            {
                await FileIO.WriteTextAsync(favouriteArticleFile, afterJson);

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
コード例 #2
0
ファイル: MainPage.xaml.cs プロジェクト: ShaoSMpet/GuanZhi
 public async void AddReadArticle(AppArticleModel article)
 {
     if (!ReadArticleCollection.Any(p => p.Date == article.Date || p.Title == article.Title))
     {
         ReadArticleCollection.Add(article);
         await IOTools.RewriteLocalReadArticleList(ReadArticleCollection.ToList());
     }
 }
コード例 #3
0
        private void ReadButton_Click(object sender, RoutedEventArgs e)
        {
            var article = new AppArticleModel(WebArticle);

            MainPage.Current.AddRecentArticle(article);
            ConnectedAnimationService.GetForCurrentView().PrepareToAnimate("ForwardConnectedAnimation", ArticleContainer);
            MainPage.Current.MainFrame.Navigate(typeof(ReadPage), WebArticle, new SuppressNavigationTransitionInfo());
        }
コード例 #4
0
        private async void NextButton_Click(object sender, RoutedEventArgs e)
        {
            MainPage.Current.NextPageHandle();
            WaittingRing.IsActive = true;
            var webData = await AppTools.GetAsyncJson <WebArticleModel>(AppTools.RANDOM_URL);

            WaittingRing.IsActive = false;
            if (webData != null)
            {
                var article = new AppArticleModel(webData.Data);
                MainPage.Current.AddRecentArticle(article);
                WebArticleHandle(webData.Data);
            }
        }
コード例 #5
0
ファイル: MainPage.xaml.cs プロジェクト: ShaoSMpet/GuanZhi
 public async void AddRecentArticle(AppArticleModel article)
 {
     if (RecentArticleCollection.Count > 0)
     {
         if (RecentArticleCollection.First().Equals(article))
         {
             return;
         }
         RecentArticleCollection.Remove(RecentArticleCollection.Where(p => p.Date == article.Date).FirstOrDefault());
         if (RecentArticleCollection.Count >= 10)
         {
             RecentArticleCollection.Remove(RecentArticleCollection.Last());
         }
     }
     RecentArticleCollection.Insert(0, article);
     await IOTools.RewriteLocalRecentArticleList(RecentArticleCollection.ToList());
 }
コード例 #6
0
ファイル: MainPage.xaml.cs プロジェクト: ShaoSMpet/GuanZhi
        public async Task <bool> AddFavouriteArticle(AppArticleModel article)
        {
            if (FavouriteArticleCollection.Any(p => p.Date == article.Date || p.Title == article.Title))
            {
                new PopToast("您已经收藏过该文章").ShowPopup();
            }
            else
            {
                FavouriteArticleCollection.Add(article);
                bool result = await IOTools.RewriteLocalFavouriteArticleList(FavouriteArticleCollection);

                if (result)
                {
                    new PopToast("收藏成功!").ShowPopup();
                    return(true);
                }
                else
                {
                    new PopToast("收藏失败了...").ShowPopup();
                }
            }
            return(false);
        }
コード例 #7
0
        private void WebArticleHandle(WebArticleData sourceData)
        {
            string sourceContent = sourceData.Content;
            var    contentSplit  = sourceContent.Split("</p>", StringSplitOptions.RemoveEmptyEntries);

            ReadTextBlock.Blocks.Clear();
            ReadScrollView.ChangeView(0, 0, 1);
            foreach (var splitItem in contentSplit)
            {
                var    paragraph = new Paragraph();
                var    run       = new Run();
                string content   = splitItem.Replace("<p>", "");
                if (string.IsNullOrEmpty(content.Trim()))
                {
                    continue;
                }
                run.Text = content;
                paragraph.Inlines.Add(run);
                paragraph.TextIndent = ReadFontSize * 2;
                paragraph.LineHeight = ReadLineHeight;
                paragraph.Margin     = new Thickness(0, 0, 0, ReadParagraphHeight);
                ReadTextBlock.Blocks.Add(paragraph);
            }
            ThisArticleData    = new AppArticleModel(sourceData);
            isFavourite        = MainPage.Current.FavouriteArticleCollection.Any(article => article.Date == sourceData.Date.Curr || article.Title == sourceData.Title);
            LikeButton.Content = isFavourite ? "" : "";
            isRead             = MainPage.Current.ReadArticleCollection.Any(article => article.Date == sourceData.Date.Curr || article.Title == sourceData.Title);
            if (!isRead && ThisArticleData.WordCount <= 1000)
            {
                isRead = true;
                MainPage.Current.AddReadArticle(ThisArticleData);
            }
            TitleTextBlock.Text  = sourceData.Title;
            AuthorTextBlock.Text = sourceData.Author;
            WordCountRun.Text    = sourceData.Wc.ToString();
        }