internal void AddNewFolder(TreeNode parentNode) { FeedFolder parentFolder; TreeNode newNode; FeedFolder newFolder = new FeedFolder(); newFolder.Name = "New Folder"; if (fst == null) { //this is most likely a new user with no subscriptions who has chosen to start //with a new folder fst = new FeedSubscriptionTree(); } if (parentNode == null) { newFolder.ParentFolder = null; fst.RootLevelNodes.Add(newFolder); newNode = feedsTreeView.Nodes.Add(newFolder.Name); } else { parentFolder = (FeedFolder)parentNode.Tag; newFolder.ParentFolder = parentFolder; parentFolder.ChildNodes.Add(newFolder); newNode = parentNode.Nodes.Add(newFolder.Name); } newNode.Tag = newFolder; SaveFeedSubTree(); }
public static new FeedFolder GetFromOpmlXmlNode(XmlNode node) { FeedFolder ff = new FeedFolder(); ff.Name = node.Attributes["text"].Value; return ff; }
internal void AddFeedSubscriptionToFolder(FeedFolder parentFolder, FeedSubscription fs) { if (parentFolder == null) { fst.RootLevelNodes.Add(fs); } else { parentFolder.ChildNodes.Add(fs); } TreeNode newNode = new TreeNode(fs.ToString()); newNode.Tag = fs; newNode.ImageIndex = 1; if (TreeNodesByTag != null && parentFolder != null && TreeNodesByTag.ContainsKey(parentFolder)) { TreeNode parentNode = TreeNodesByTag[parentFolder]; parentNode.Nodes.Add(newNode); } else { feedsTreeView.Nodes.Add(newNode); } if (TreeNodesByTag == null) { TreeNodesByTag = new Dictionary<object, TreeNode>(); } TreeNodesByTag.Add(fs, newNode); SaveFeedSubTree(); }
private void markFolderRead(FeedFolder ff) { foreach (FeedSubTreeNodeBase fstnb in ff.ChildNodes) { Type t = fstnb.GetType(); if (t == typeof(FeedSubscription)) { markFeedRead((FeedSubscription)fstnb); } else if (t == typeof(FeedFolder)) { markFolderRead((FeedFolder)fstnb); } else { throw new Exception("Error. Unhandled FeedSubTreeNodeBase type in markFolderRead"); } } }
private void setParentInfoOnNodesInList(List<FeedSubTreeNodeBase> nodeList, FeedFolder curParent) { foreach (FeedSubTreeNodeBase fstnb in nodeList) { fstnb.ParentFolder = curParent; fstnb.ParentFeedSubTree = this; if (fstnb.GetType() == typeof (FeedFolder)) { FeedFolder ff = fstnb as FeedFolder; setParentInfoOnNodesInList(ff.ChildNodes, ff); } } }
private static void processOpmlNode(FeedSubscriptionTree fst, XmlNode node, FeedFolder currentParentFolder) { if (node.Name == null && node.Name.Length < 1) { return; } switch (node.Name.ToLower()) { case "body": case "opml": case "xml": foreach (XmlNode childNode in node.ChildNodes) { processOpmlNode(fst, childNode, currentParentFolder); } break; case "outline": processOpmlOutlineNode(fst, node, currentParentFolder); break; case "head": return; } }
private static void processOpmlOutlineNode(FeedSubscriptionTree fst, XmlNode node, FeedFolder currentParentFolder) { FeedSubTreeNodeBase fstnb = FeedSubTreeNodeBase.GetFromOpmlXmlNode(node); Type nodeType = fstnb.GetType(); if (nodeType == typeof(FeedSubscription)) { FeedSubscription fs = fstnb as FeedSubscription; fs.ParentFolder = currentParentFolder; if (currentParentFolder == null) { //this feed sub is at the root level of the tree fst.RootLevelNodes.Add(fs); } else { currentParentFolder.ChildNodes.Add(fs); } //Debug.WriteLine("Processed Sub Node: " + fs.DisplayName + ":" + currentParentFolder == null ? "root" : currentParentFolder.Name); } else if (nodeType == typeof(FeedFolder)) { FeedFolder ff = fstnb as FeedFolder; ff.ParentFolder = currentParentFolder; if (currentParentFolder == null) { //this feed folder is at the root level of the tree fst.RootLevelNodes.Add(ff); } else { currentParentFolder.ChildNodes.Add(ff); } foreach (XmlNode childNode in node.ChildNodes) { processOpmlNode(fst, childNode, ff); } } else { throw new Exception("FeedSubscriptionTree.processOpmlOutlineNode error: Unrecognized node type: " + nodeType.ToString()); } }