Newer
Older
JumpListUtil / EntryList.cs
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;

namespace Entries
{
    public class Entry
    {        
        public string Target { get; set; }
        public string Arguments { get; set; }
        public string Icon { get; set; }
        public int IconIndex { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
    }

    public class EntryList
    {
        public string FilePath = null;
        public List<Entry> Entries;

        public static EntryList FromString(string contents)
        {
            Entry[] entries = (Entry[])JsonSerializer.Deserialize(contents, typeof(Entry[]), new JsonSerializerOptions() { PropertyNameCaseInsensitive = true, ReadCommentHandling = JsonCommentHandling.Skip, AllowTrailingCommas = true });
            return new EntryList { Entries = new List<Entry>(entries) };
        }

        public static EntryList FromFile(string path)
        {
            string contents = "";
            using (FileStream input = File.OpenRead(path))
            {
                contents = new StreamReader(input).ReadToEnd();
            }
            EntryList entryList = FromString(contents);
            if (entryList != null) entryList.FilePath = Path.GetFullPath(path);

            return entryList;
        }

        public override string ToString()
        {
            return JsonSerializer.Serialize(Entries.ToArray(), typeof(Entry[]), new JsonSerializerOptions() { WriteIndented = true });
        }

        public void WriteToFile(string path)
        {
            using (FileStream output = File.Create(path))
            {
                new StreamWriter(output).Write(ToString());
            }
        }
    }
}