Archived
Added: JSON file support
This commit is contained in:
1 parent
646db1de56
commit
dc73bb187e
4 files changed
+149
-2
No files matched your search
@@ -1,4 +1,5 @@
|
||||
using RyzStudio.Windows.Forms;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace BookmarkManager
|
||||
{
|
||||
@@ -8,6 +9,7 @@ namespace BookmarkManager
|
||||
|
||||
bool IsEncryptionSupported { get; set; }
|
||||
|
||||
List<string> SupportedExtensions { get; }
|
||||
|
||||
bool IsSupported(string filename);
|
||||
|
||||
|
||||
@@ -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 List<string> SupportedExtensions { get => supportedExtensions; }
|
||||
|
||||
|
||||
public virtual bool IsSupported(string filename)
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user