예제 #1
0
 private void NewsPaper_OnPaperDeleting(NewsPaper updatedNewspaper)
 {
     if (NewsPapers.Count == 1)
     {
         NewsPapers.Add(new NewsPaper("创建你的第一份报纸!"));
     }
 }
예제 #2
0
        /// <summary>
        /// 在将要挂起应用程序执行时调用。  在不知道应用程序
        /// 无需知道应用程序会被终止还是会恢复,
        /// 并让内存内容保持不变。
        /// </summary>
        /// <param name="sender">挂起的请求的源。</param>
        /// <param name="e">有关挂起请求的详细信息。</param>
        private void OnSuspending(object sender, SuspendingEventArgs e)
        {
            SaveFavoritesToFile();
            NewsPaper.SaveAll();
            Settings.SaveSettings();
            var deferral = e.SuspendingOperation.GetDeferral();

            //TODO: 保存应用程序状态并停止任何后台活动
            deferral.Complete();
        }
        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);                                     //保存报纸
        }
예제 #4
0
        /// <summary>
        /// 删除一张报纸
        /// </summary>
        /// <param name="newsPaper">要删除的报纸</param>
        static async public Task DeleteNewsPaper(NewsPaper newsPaper)
        {
            OnPaperDeleting?.Invoke(newsPaper);
            var paperListinFile = await ReadListFromFile();

            //var index = paperListinFile.IndexOf(newsPaper.newsPaperModel);
            paperListinFile.Remove(newsPaper.newsPaperModel);
            NewsPapers.Remove(newsPaper);
            //3、将paperListinFile重新保存到文件中
            await FileIO.WriteBytesAsync(paperListFile, App.ObjectToByteArray(paperListinFile));

            OnPaperDeleted?.Invoke(newsPaper);
        }
예제 #5
0
 private void NewsPaper_OnPaperAdded(NewsPaper updatedNewspaper)
 {
     if (PaperPage.thisPaperpage != null)
     {
         PaperPage.thisPaperpage.NavigationCacheMode = NavigationCacheMode.Disabled;
     }
     if (NewsPapers.Count == 1 && NewsPapers.First().PaperTitle == "创建你的第一份报纸!")
     {
         NewsPapers.Clear();
     }
     NewsPapers.Add(updatedNewspaper);
     if (NewsPaper.NewsPapers.Count != 0)
     {
         paperNavigationView.SelectedItem = updatedNewspaper;
     }
 }
예제 #6
0
        private async void GetNewsPapersAtBeginning()
        {
            await NewsPaper.ReadFromFile();

            if (NewsPaper.NewsPapers.Count == 0)
            {
                NewsPapers.Add(new NewsPaper("创建你的第一份报纸!"));
            }
            //Bindings.Update();
            //if(NewsPaper.NewsPapers.Add)
            foreach (var paper in NewsPaper.NewsPapers)
            {
                NewsPapers.Add(paper);
            }

            paperNavigationView.SelectedItem = NewsPapers.First();
        }
예제 #7
0
 /// <summary>
 /// 跳转到该页面时发生的方法
 /// </summary>
 /// <param name="e">要编辑的报纸</param>
 protected override void OnNavigatedTo(NavigationEventArgs e)
 {
     if (e.Parameter is NewsPaper)
     {
         newsPaper = (NewsPaper)e.Parameter;
         newspaperTitleTextBox.Text = newsPaper.PaperTitle;
         foreach (var url in newsPaper.FeedUrls)
         {
             ((TextBox)rssInputPanel.Children[rssInputPanel.Children.Count - 1]).Text = url.AbsoluteUri;
             AddFeedButton_Click(null, null);
         }
         deleteButton.Visibility = Visibility.Visible;
         isEditMode = true;
     }
     else
     {
         isEditMode = false;
     }
 }
예제 #8
0
        /// <summary>
        /// 保存到文件
        /// </summary>
        /// <param name="newsPaper"></param>
        /// <returns>要保存的报纸</returns>
        static public async Task SaveToFile(NewsPaper newsPaper)
        {
            //1、获取报纸列表
            var paperListinFile = await ReadListFromFile();

            bool existFlag;

            //2、获取当前报纸编号
            ////2.1、如果文件中没有保存任何东西,则新建一个paperListinFile
            if (paperListinFile == null)
            {
                paperListinFile = new List <NewsPaperModel>();
            }

            var index = paperListinFile.IndexOf(newsPaper.newsPaperModel);

            ////2.2、如果文件中没有保存此添加(是新报纸)
            if (index == -1)
            {
                existFlag = false;
                paperListinFile.Add(newsPaper.newsPaperModel);
            }
            ////2.3、如果有则修改
            else
            {
                existFlag = true;
                //找到该报纸位置并替换掉 //to-do
                paperListinFile[index] = newsPaper.newsPaperModel; //to-replace
            }
            ////2.4若查到有多张报纸有相同名字,则显示错误

            //3、将paperListinFile重新保存到文件中

            await FileIO.WriteBytesAsync(paperListFile, App.ObjectToByteArray(paperListinFile));

            if (!existFlag)
            {
                OnPaperSaved?.Invoke();
            }    //添加完成后引发该事件
        }
예제 #9
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();
            });
        }
예제 #10
0
 /// <summary>
 /// 删除按钮
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private async void DeleteButton_Click(object sender, RoutedEventArgs e)
 {
     await NewsPaper.DeleteNewsPaper(newsPaper);
 }
예제 #11
0
 private void NewsPaper_OnPaperDeleted(NewsPaper newsPaper)
 {
     NewsPapers.Remove(newsPaper);
     paperNavigationView.SelectedItem = NewsPapers.First();
 }
예제 #12
0
 /// <summary>
 /// 添加报纸
 /// </summary>
 /// <param name="newsPaper"></param>
 static public void AddNewsPaper(NewsPaper newsPaper)
 {
     OnPaperAdding?.Invoke(newsPaper);
     NewsPapers.Add(newsPaper);
     OnPaperAdded?.Invoke(newsPaper); //报纸添加后引发
 }