private void tagNameEditBox_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e) { RemovableTagModel mdl = DataContext as RemovableTagModel; if (e.Key == System.Windows.Input.Key.Escape) { e.Handled = true; HideConfirmation(); DisableEditing(); } }
private void OnDataContextChanged(object sender, DependencyPropertyChangedEventArgs e) { RemovableTag t = sender as RemovableTag; RemovableTagModel mdl = t.DataContext as RemovableTagModel; if (mdl != null) { mdl.PropertyChanged += mdl_PropertyChanged; mdl_PropertyChanged(mdl, RemovableTagModel.HIGHLIGHTED_TAGNAME); } }
private void MenuItem_Click(object sender, RoutedEventArgs e) { MenuItem itm = sender as MenuItem; RemovableTagModel mdl = DataContext as RemovableTagModel; switch (itm.Tag.ToString()) { case "DeleteTag": Tag = itm.Tag; if (mdl.CanRemove) { RaiseEvent(new RoutedEventArgs(ActionEvent, this)); } else { ShowConfirmation(); actionMenu.IsSubmenuOpen = true; } break; case "RenameTag": Tag = itm.Tag; EnableEditing(); ShowConfirmation(); break; case "CancelAction": HideConfirmation(); DisableEditing(); break; case "ConfirmAction": HideConfirmation(); DisableEditing(); if (!"RenameTag".Equals(itm.Tag) || mdl.LocalName.Equals(mdl.TagName, StringComparison.CurrentCultureIgnoreCase)) { RaiseEvent(new RoutedEventArgs(ActionEvent, this)); } break; } }
private void mdl_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { RemovableTagModel mdl = sender as RemovableTagModel; if (mdl != null) { if (e == RemovableTagModel.HIGHLIGHTED_TAGNAME) { highlighedTag.Inlines.Clear(); highlighedTag.Inlines.AddRange(mdl.HighlightedTagName.Select((f) => { Run r = new Run(f.Text); if (f.IsMatch) { r.Background = Brushes.Yellow; } return(r); })); } } }
/// <summary> /// Remove or rename tag from suggestions when user control is tapped. /// </summary> /// <param name="sender">user control emitting this event</param> /// <param name="e"> event details</param> private void Tag_Action(object sender, RoutedEventArgs e) { var rt = sender as RemovableTag; var rt_mdl = rt.DataContext as RemovableTagModel; string[] toRemove = new string[] { rt_mdl.Key }; if ("DeleteTag".Equals(rt.Tag)) { _model.SuggestedTags.RemoveAll(toRemove); // schedule all pages with this tag for tag removal if (rt_mdl.Tag != null) { foreach (var tp in rt_mdl.Tag.Pages) { _model.OneNoteApp.TaggingService.Add(new TaggingJob(tp.ID, toRemove, TagOperation.SUBTRACT)); } suggestedTags.Notification = rt_mdl.Tag.Pages.Count == 0 ? Properties.Resources.TagEditor_Popup_NothingTagged : string.Format(Properties.Resources.TagEditor_Popup_TaggingInProgress, rt_mdl.Tag.Pages.Count); TraceLogger.Log(TraceCategory.Info(), "{0} page(s) enqueued for background tagging; Operation SUBTRACT {1}", rt_mdl.Tag.Pages.Count, toRemove[0]); } else { suggestedTags.Notification = Properties.Resources.TagEditor_Popup_NothingTagged; } } else if ("RenameTag".Equals(rt.Tag)) { _model.SuggestedTags.RemoveAll(toRemove); string[] newTagNames = (from tn in OneNotePageProxy.ParseTags(rt_mdl.LocalName) select TagFormatter.Format(tn)).ToArray(); // create new tag models unless they already exist List <RemovableTagModel> newTagModels = new List <RemovableTagModel>(); foreach (var newName in newTagNames) { RemovableTagModel tagmodel; if (!_model.SuggestedTags.TryGetValue(newName, out tagmodel)) { tagmodel = new RemovableTagModel() { Tag = new TagPageSet(newName) }; newTagModels.Add(tagmodel); } else if (tagmodel.Tag == null && rt_mdl.Tag != null) { tagmodel.Tag = new TagPageSet(newName); } if (rt_mdl.Tag != null) { // copy the pages into the new tag and update the tag count foreach (var pg in rt_mdl.Tag.Pages) { tagmodel.Tag.Pages.Add(pg); } tagmodel.UseCount = tagmodel.Tag.Pages.Count; } } _model.SuggestedTags.AddAll(newTagModels); if (rt_mdl.Tag != null) { // remove the old tag and add new tag to the pages foreach (var tp in rt_mdl.Tag.Pages) { _model.OneNoteApp.TaggingService.Add(new TaggingJob(tp.ID, toRemove, TagOperation.SUBTRACT)); _model.OneNoteApp.TaggingService.Add(new TaggingJob(tp.ID, newTagNames, TagOperation.UNITE)); } suggestedTags.Notification = rt_mdl.Tag.Pages.Count == 0 ? Properties.Resources.TagEditor_Popup_NothingTagged : string.Format(Properties.Resources.TagEditor_Popup_TaggingInProgress, rt_mdl.Tag.Pages.Count); TraceLogger.Log(TraceCategory.Info(), "{0} page(s) enqueued for background tagging; Operation UNITE {1} SUBTRACT {2}", rt_mdl.Tag.Pages.Count, string.Join(",", newTagNames), toRemove[0]); } else { suggestedTags.Notification = Properties.Resources.TagEditor_Popup_NothingTagged; } } TraceLogger.Flush(); _model.SaveChanges(); }