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();
        }
Exemple #2
0
 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();
        }
Exemple #4
0
 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);
         }
     }
 }
Exemple #6
0
        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;
            }
        }
Exemple #7
0
        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());
            }
        }