/// <summary> /// Find tagged OneNote pages in a scope. /// </summary> /// <param name="scopeID"> /// OneNote id of the scope to search for pages. This is the element ID of a /// notebook, section group, or section. If given as null or empty string scope is /// the entire set of notebooks open in OneNote. /// </param> internal void FindTaggedPages(string scopeID) { // collect all page tags on pages which have page tags. Tag search appears to // be broken using work around if (Properties.Settings.Default.UseWindowsSearch) { ExtractTags(_onenote.FindPagesByMetadata(scopeID, OneNotePageProxy.META_NAME), selectedPagesOnly: false); } else { ExtractTags(_onenote.GetHierarchy(scopeID, HierarchyScope.hsPages), selectedPagesOnly: false, omitUntaggedPages: true); } // attempt to automatically update the tag list, if we have collected all used tags HashSet <string> knownTags = new HashSet <String>(OneNotePageProxy.ParseTags(Properties.Settings.Default.KnownTags)); int countBefore = knownTags.Count; // update the list of known tags by adding tags from search result foreach (KeyValuePair <string, TagPageSet> t in _tags) { knownTags.Add(t.Key); } if (countBefore != knownTags.Count) { // updated tag suggestions string[] sortedTags = knownTags.ToArray(); Array.Sort(sortedTags); Properties.Settings.Default.KnownTags = string.Join(",", sortedTags); } }
private T[] LoadSuggestedTagsAction() { return((from string t in OneNotePageProxy.ParseTags(Properties.Settings.Default.KnownTags) select new T() { TagName = t }).ToArray()); }
/// <summary> /// Create an internal representation of a page returned from FindMeta /// </summary> /// <param name="page"><one:Page> element</param> internal TaggedPage(XElement page) { XNamespace one = page.GetNamespaceOfPrefix("one"); ID = page.Attribute("ID").Value; Title = page.Attribute("name").Value; var rbin = page.Attribute("isInRecycleBin"); IsInRecycleBin = "true".Equals(rbin != null ? rbin.Value : String.Empty); XAttribute selected = page.Attribute("selected"); if (selected != null && "all".Equals(selected.Value)) { _isSelected = true; } XElement meta = page.Elements(one.GetName("Meta")).FirstOrDefault(m => OneNotePageProxy.META_NAME.Equals(m.Attribute("name").Value)); if (meta != null) { _tagnames = OneNotePageProxy.ParseTags(meta.Attribute("content").Value); } else { _tagnames = new string[0]; } // build the items path LinkedList <HierarchyElement> path = new LinkedList <HierarchyElement>(); XElement e = page; while (e.Parent != null) { e = e.Parent; XAttribute id = e.Attribute("ID"); XAttribute name = e.Attribute("name"); if (id == null || name == null) { break; } path.AddFirst(new HierarchyElement(e.Attribute("ID").Value, e.Attribute("name").Value)); } _path = path; }