private void NewsPaper_OnPaperDeleting(NewsPaper updatedNewspaper) { if (NewsPapers.Count == 1) { NewsPapers.Add(new NewsPaper("创建你的第一份报纸!")); } }
/// <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); //保存报纸 }
/// <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); }
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; } }
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(); }
/// <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; } }
/// <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(); } //添加完成后引发该事件 }
/// <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(); }); }
/// <summary> /// 删除按钮 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void DeleteButton_Click(object sender, RoutedEventArgs e) { await NewsPaper.DeleteNewsPaper(newsPaper); }
private void NewsPaper_OnPaperDeleted(NewsPaper newsPaper) { NewsPapers.Remove(newsPaper); paperNavigationView.SelectedItem = NewsPapers.First(); }
/// <summary> /// 添加报纸 /// </summary> /// <param name="newsPaper"></param> static public void AddNewsPaper(NewsPaper newsPaper) { OnPaperAdding?.Invoke(newsPaper); NewsPapers.Add(newsPaper); OnPaperAdded?.Invoke(newsPaper); //报纸添加后引发 }