private async void SaveButton_Click(object sender, RoutedEventArgs e)
        {
            newsPaper = NewsPaper.NewsPapers.Find((NewsPaper paper) => paper.PaperTitle == News.PaperTitle);

            //保存笔迹
            var currentStrokes = newsCanvas.InkPresenter.StrokeContainer.GetStrokes(); //获取笔迹

            byte[] serializedStrokes = await SerializeStrokes(currentStrokes);         //序列化笔迹

            News.InkStrokes = serializedStrokes;                                       //将笔迹保存到新闻实例里
            newsPaper.UpdateNewsList(News);
            await NewsPaper.SaveToFile(newsPaper);                                     //保存报纸
        }
Exemple #2
0
        /// <summary>
        /// 保存按钮点击事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void SaveButton_Click(object sender, RoutedEventArgs e)
        {
            if (isEditMode)
            {
                List <Uri> editedUris = new List <Uri>();
                string     oldTitle   = newsPaper.PaperTitle;
                newsPaper.PaperTitle = newspaperTitleTextBox.Text;

                //修改导航栏的标题
                foreach (var element in rssInputPanel.Children)
                {
                    try
                    {
                        var editedFeedUri = new Uri((element as TextBox).Text);
                        editedUris.Add(editedFeedUri);
                    }
                    catch (Exception)
                    {
                        continue;
                    }
                }
                var             editedUrisEnumerables  = newsPaper.FeedUrls.Union(editedUris).Intersect(editedUris);
                var             deletedUrisEnumerables = newsPaper.FeedUrls.Except(editedUrisEnumerables);
                List <NewsItem> deletedNews            = new List <NewsItem>();
                foreach (var news in newsPaper.NewsList)
                {
                    if (deletedUrisEnumerables.Contains(new Uri(news.Feed.Id)))
                    {
                        if (news.IsFavorite)
                        {
                            App.Favorites.Remove(new FavoriteModel(news));
                        }
                        deletedNews.Add(news);
                    }
                }

                //删除相应的订阅源
                var deletedFeedModels = from feedModel in newsPaper.Feeds
                                        where deletedUrisEnumerables.Contains(new Uri(feedModel.Id))
                                        select feedModel;
                var remainedFeedModel = newsPaper.Feeds.Except(deletedFeedModels);
                newsPaper.Feeds = remainedFeedModel.ToList();

                var remainedNewsEnumerables = newsPaper.NewsList.Except(deletedNews);
                newsPaper.NewsList = new List <NewsItem>(remainedNewsEnumerables);
                newsPaper.FeedUrls = new List <Uri>(editedUrisEnumerables);
                foreach (var favNewsModel in App.Favorites)
                {
                    if (favNewsModel.NewsPaperTitle == oldTitle)
                    {
                        favNewsModel.NewsPaperTitle = newsPaper.PaperTitle;
                    }
                }
                this.Frame.Navigate(typeof(PaperPage), newsPaper);
                OnPaperEdited?.Invoke();
                NewsPaper.SaveAll();
            }
            else
            {
                bool hasSameTitle = false;
                foreach (var paper in NewsPaper.NewsPapers)
                {
                    if (paper.PaperTitle == newspaperTitleTextBox.Text)
                    {
                        hasSameTitle = true;
                        break;
                    }
                }
                if (!hasSameTitle && //如果没有同名的报纸
                    newspaperTitleTextBox.Text != "")    //并且如果名字不等与""
                {
                    newsPaper = new NewsPaper(newspaperTitleTextBox.Text);
                    foreach (var element in rssInputPanel.Children)
                    {
                        try
                        {
                            newsPaper.AddFeedLink(new Uri((element as TextBox).Text));
                        }
                        catch (Exception)
                        {
                            continue;
                        }
                    }
                    NewsPaper.AddNewsPaper(newsPaper);
                    await NewsPaper.SaveToFile(newsPaper);
                }
                else
                {
                    var dialog = new Windows.UI.Popups.MessageDialog("名字重复或为空");
                    await dialog.ShowAsync();

                    return;
                }
            }

            Invoke(() =>
            {
                PaperPage.thisPaperpage.RefreshNews();
            });
        }