Added: JSON file support
This commit is contained in:
parent
646db1de56
commit
dc73bb187e
@ -1,4 +1,5 @@
|
|||||||
using RyzStudio.Windows.Forms;
|
using RyzStudio.Windows.Forms;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace BookmarkManager
|
namespace BookmarkManager
|
||||||
{
|
{
|
||||||
@ -8,6 +9,7 @@ namespace BookmarkManager
|
|||||||
|
|
||||||
bool IsEncryptionSupported { get; set; }
|
bool IsEncryptionSupported { get; set; }
|
||||||
|
|
||||||
|
List<string> SupportedExtensions { get; }
|
||||||
|
|
||||||
bool IsSupported(string filename);
|
bool IsSupported(string filename);
|
||||||
|
|
||||||
|
89
Classes/SupportedFile/JSONSupportedFile.cs
Normal file
89
Classes/SupportedFile/JSONSupportedFile.cs
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
using bzit.bomg.Models;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using RyzStudio.IO;
|
||||||
|
using RyzStudio.Windows.Forms;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace BookmarkManager
|
||||||
|
{
|
||||||
|
public class JSONSupportedFile : SupportedFileBase
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
public JSONSupportedFile()
|
||||||
|
{
|
||||||
|
supportedExtensions = new List<string>() { ".json" };
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public override bool IsEncryptionSupported { get; set; } = false;
|
||||||
|
|
||||||
|
public override bool IsEncrypted(string filename) => false;
|
||||||
|
|
||||||
|
public override Result Load(BookmarkTreeView treeview, string filename, string password)
|
||||||
|
{
|
||||||
|
treeview.Clear();
|
||||||
|
|
||||||
|
string sourceCode = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
sourceCode = System.IO.File.ReadAllText(filename);
|
||||||
|
}
|
||||||
|
catch (Exception exc)
|
||||||
|
{
|
||||||
|
return Result.Create(false, "Could not read file (" + exc.Message + ")");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(sourceCode))
|
||||||
|
{
|
||||||
|
return Result.Create(false, "Could not read file, unexpected format");
|
||||||
|
}
|
||||||
|
|
||||||
|
List<BookmarkItem> rs = JsonConvert.DeserializeObject<List<BookmarkItem>>(sourceCode);
|
||||||
|
if (rs == null)
|
||||||
|
{
|
||||||
|
return Result.Create(false, "Could not read file, incorrect format");
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < rs.Count; i++)
|
||||||
|
{
|
||||||
|
if (treeview.InvokeRequired)
|
||||||
|
{
|
||||||
|
treeview.Invoke(new MethodInvoker(() => {
|
||||||
|
treeview.AddItem(rs[i]);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
treeview.AddItem(rs[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Result.Create(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Result Save(BookmarkTreeView treeview, string filename, string password)
|
||||||
|
{
|
||||||
|
List<BookmarkItem> rs = treeview.GetBookmarkList();
|
||||||
|
if (rs.Count <= 0)
|
||||||
|
{
|
||||||
|
return Result.Create(false, "No bookmarks to save");
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
System.IO.File.WriteAllText(filename, JsonConvert.SerializeObject(rs));
|
||||||
|
}
|
||||||
|
catch (Exception exc)
|
||||||
|
{
|
||||||
|
return Result.Create(false, "Could not write file (" + exc.Message + ")");
|
||||||
|
}
|
||||||
|
|
||||||
|
return Result.Create(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -16,6 +16,8 @@ namespace BookmarkManager
|
|||||||
|
|
||||||
public virtual bool IsEncryptionSupported { get; set; } = false;
|
public virtual bool IsEncryptionSupported { get; set; } = false;
|
||||||
|
|
||||||
|
public List<string> SupportedExtensions { get => supportedExtensions; }
|
||||||
|
|
||||||
|
|
||||||
public virtual bool IsSupported(string filename)
|
public virtual bool IsSupported(string filename)
|
||||||
{
|
{
|
||||||
|
58
MainForm.cs
58
MainForm.cs
@ -10,6 +10,7 @@ using System.Drawing;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
|
||||||
@ -66,6 +67,11 @@ namespace FizzyLauncher
|
|||||||
//ThreadControl.SetVisible(this, false);
|
//ThreadControl.SetVisible(this, false);
|
||||||
ThreadControl.SetSize(this, 300, 580);
|
ThreadControl.SetSize(this, 300, 580);
|
||||||
|
|
||||||
|
List<string> supportedFileExtensions = GetSupportedFileTypes();
|
||||||
|
|
||||||
|
openFileDialog1.Filter = BuildOpenFileSupportedFiles(supportedFileExtensions);
|
||||||
|
saveFileDialog1.Filter = BuildSaveFileSupportedFiles(supportedFileExtensions);
|
||||||
|
|
||||||
ApplicationMode = AppMode.Clear;
|
ApplicationMode = AppMode.Clear;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -547,7 +553,7 @@ namespace FizzyLauncher
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="sender"></param>
|
/// <param name="sender"></param>
|
||||||
/// <param name="e"></param>
|
/// <param name="e"></param>
|
||||||
private void addFolderToolStripMenuItem_Click(object sender, EventArgs e) => treeView1.AddFolder("New Folder");
|
private void addFolderToolStripMenuItem_Click(object sender, EventArgs e) => treeView1.AddFolder();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Edit root node
|
/// Edit root node
|
||||||
@ -576,7 +582,7 @@ namespace FizzyLauncher
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="sender"></param>
|
/// <param name="sender"></param>
|
||||||
/// <param name="e"></param>
|
/// <param name="e"></param>
|
||||||
private void addFolderToolStripMenuItem1_Click(object sender, EventArgs e) => treeView1.AddFolder("New Folder");
|
private void addFolderToolStripMenuItem1_Click(object sender, EventArgs e) => treeView1.AddFolder();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Open all pages
|
/// Open all pages
|
||||||
@ -737,6 +743,35 @@ namespace FizzyLauncher
|
|||||||
ThreadControl.SetEnable(saveToolStripMenuItem, (treeView1.HasChanged && ApplicationMode == AppMode.Open));
|
ThreadControl.SetEnable(saveToolStripMenuItem, (treeView1.HasChanged && ApplicationMode == AppMode.Open));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected string BuildOpenFileSupportedFiles(List<string> supportList)
|
||||||
|
{
|
||||||
|
StringBuilder rs = new StringBuilder();
|
||||||
|
rs.Append("All supported files (*" + string.Join("; *", supportList) + ")");
|
||||||
|
rs.Append("|*" + string.Join(";*", supportList));
|
||||||
|
|
||||||
|
for (int i = 0; i < supportList.Count; i++)
|
||||||
|
{
|
||||||
|
rs.Append("|" + supportList[i].TrimStart('.')?.ToUpper() + " Bookmark files");
|
||||||
|
rs.Append("|*" + supportList[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return rs.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected string BuildSaveFileSupportedFiles(List<string> supportList)
|
||||||
|
{
|
||||||
|
StringBuilder rs = new StringBuilder();
|
||||||
|
|
||||||
|
for (int i = 0; i < supportList.Count; i++)
|
||||||
|
{
|
||||||
|
if (i > 0) rs.Append("|");
|
||||||
|
|
||||||
|
rs.Append(supportList[i].TrimStart('.')?.ToUpper() + " Bookmark file");
|
||||||
|
rs.Append("|*" + supportList[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return rs.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
protected async Task<Result> CloseFile()
|
protected async Task<Result> CloseFile()
|
||||||
{
|
{
|
||||||
@ -813,6 +848,25 @@ namespace FizzyLauncher
|
|||||||
return rs;
|
return rs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected List<string> GetSupportedFileTypes()
|
||||||
|
{
|
||||||
|
List<string> rs = new List<string>();
|
||||||
|
|
||||||
|
List<Type> typeList = Assembly.GetExecutingAssembly().GetTypes().Where(x => x.IsSubclassOf(typeof(SupportedFileBase))).ToList();
|
||||||
|
foreach (Type t in typeList)
|
||||||
|
{
|
||||||
|
SupportedFileBase fileHandler = (SupportedFileBase)Activator.CreateInstance(t);
|
||||||
|
if (fileHandler == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
rs.AddRange(fileHandler.SupportedExtensions ?? new List<string>());
|
||||||
|
}
|
||||||
|
|
||||||
|
return rs;
|
||||||
|
}
|
||||||
|
|
||||||
protected void InvalidateAppSession()
|
protected void InvalidateAppSession()
|
||||||
{
|
{
|
||||||
if (CurrentSession == null) CurrentSession = new AppSession();
|
if (CurrentSession == null) CurrentSession = new AppSession();
|
||||||
|
Loading…
Reference in New Issue
Block a user