diff --git a/MainForm.cs b/MainForm.cs index a07d333..cdd7796 100644 --- a/MainForm.cs +++ b/MainForm.cs @@ -6,6 +6,7 @@ using System.Drawing.Imaging; using System.IO; using System.IO.Compression; using System.Linq; +using System.Reflection; using System.Threading.Tasks; using System.Windows.Forms; using BookmarkManager; @@ -748,9 +749,21 @@ namespace FizzyLauncher InvalidateOptions(); - // Load items + // Clear treeview treeView1.Clear("New Session"); + // Load directories + foreach (var item in this.CurrentSession.Directories ?? new List()) + { + if (string.IsNullOrWhiteSpace(item)) + { + continue; + } + + treeView1.CreateNodePath(item, (int)NodeIcon.Folder1, (int)NodeIcon.Folder2); + } + + // Load bookmarks foreach (var item in this.CurrentSession.Items ?? new List()) { treeView1.AddNode(item); @@ -798,18 +811,11 @@ namespace FizzyLauncher this.CurrentSession.Width = this.Width; this.CurrentSession.Height = this.Height; - var nodeList = treeView1.ToNodeList() ?? new List>(); - foreach (var node in nodeList) - { - node.Value.Path = treeView1.GetNodePath(node.Key); + var directoryList = treeView1.GetAllDirectories(); + var bookmarkList = treeView1.GetAllNodes(); - if (node.Value.Path.Contains('\n')) - { - node.Value.Path = node.Value.Path.Substring(0, node.Value.Path.LastIndexOf('\n')); - } - } - - this.CurrentSession.Items = nodeList.Select(x => x.Value).ToList(); + this.CurrentSession.Directories = directoryList ?? new List(); + this.CurrentSession.Items = bookmarkList.Select(x => x.Value)?.ToList() ?? new List(); var result = GenericResult.Create(); @@ -825,7 +831,7 @@ namespace FizzyLauncher if (result.IsSuccess) { // Add icons to save file - var result2 = AddImagesToZipFile(filename, nodeList); + var result2 = AddImagesToZipFile(filename, bookmarkList); if (!result2.IsSuccess) { if (showNotices) diff --git a/Models/AppOptions.cs b/Models/AppOptions.cs index 7483a9b..7089cd8 100644 --- a/Models/AppOptions.cs +++ b/Models/AppOptions.cs @@ -20,6 +20,8 @@ namespace FizzyLauncher.Models public int Height { get; set; } = 0; + public List Directories { get; set; } = new List(); + public List Items { get; set; } = new List(); } diff --git a/Windows/Forms/BookmarkTreeView.cs b/Windows/Forms/BookmarkTreeView.cs index 528b987..e299a1a 100644 --- a/Windows/Forms/BookmarkTreeView.cs +++ b/Windows/Forms/BookmarkTreeView.cs @@ -1,10 +1,14 @@ using System; +using System.Collections.Generic; using System.ComponentModel; using System.Drawing; +using System.Linq; using System.Reflection; +using System.Threading.Tasks; using System.Windows.Forms; using bzit.bomg.Models; using FizzyLauncher; +using static System.Windows.Forms.VisualStyles.VisualStyleElement; using Resources = BookmarkManager.AppResource; namespace RyzStudio.Windows.Forms @@ -421,6 +425,53 @@ namespace RyzStudio.Windows.Forms this.HasChanged = true; } + public List GetAllDirectories() + { + var nodes = GetAllTreeNodes(); + nodes = nodes.Where(x => this.GetNodeType(x) == NodeType.Folder)?.ToList() ?? new List(); + + var result = new List(); + + foreach (var item in nodes) + { + result.Add(this.GetNodePath(item)); + } + + return result; + } + + public List> GetAllNodes() + { + var result = this.ToNodeList() ?? new List>(); + foreach (var node in result) + { + node.Value.Path = this.GetNodePath(node.Key); + + if (node.Value.Path.Contains('\n')) + { + node.Value.Path = node.Value.Path.Substring(0, node.Value.Path.LastIndexOf('\n')); + } + } + + return result; + } + + public List GetAllTreeNodes() + { + var result = new List(); + if (this.Nodes.Count <= 0) + { + return result; + } + + foreach (TreeNode node in this.Nodes) + { + TraverseNodeTree(result, node); + } + + return result; + } + private void ClearImageList() { @@ -468,5 +519,18 @@ namespace RyzStudio.Windows.Forms return this.ImageList.Images.IndexOfKey(key); } + protected void TraverseNodeTree(List result, TreeNode node) + { + foreach (TreeNode node2 in node.Nodes) + { + result.Add(node2); + + foreach (TreeNode node3 in node2.Nodes) + { + result.Add(node3); + } + } + } + } } \ No newline at end of file