From 97722fbe9d474adffbba0b92e9727c48a8205234 Mon Sep 17 00:00:00 2001 From: John T Date: Sat, 11 Nov 2017 08:53:55 -0500 Subject: Only 1/4 broken ShiftFS and WIP File Skimmer --- ShiftOS.Engine/ShiftFS/ShiftFS.cs | 74 +++++++++++++++++++++++++++++++-------- 1 file changed, 60 insertions(+), 14 deletions(-) (limited to 'ShiftOS.Engine/ShiftFS/ShiftFS.cs') diff --git a/ShiftOS.Engine/ShiftFS/ShiftFS.cs b/ShiftOS.Engine/ShiftFS/ShiftFS.cs index d188bee..de406a7 100644 --- a/ShiftOS.Engine/ShiftFS/ShiftFS.cs +++ b/ShiftOS.Engine/ShiftFS/ShiftFS.cs @@ -1,34 +1,80 @@ using System; -using System.Collections.ObjectModel; +using System.Collections.Generic; +using System.Diagnostics; using System.IO; +using System.Runtime.Serialization.Formatters.Binary; +using System.Windows.Forms; +using ShiftOS.Engine.Misc; namespace ShiftOS.Engine.ShiftFS { - public static class ShiftFs + public static class ShiftFS { - internal static readonly string SavePath = Path.Combine(Environment.CurrentDirectory, "Save") + "\\"; + static readonly string FilePath = Path.Combine(Environment.CurrentDirectory, "save.bin"); - public static ObservableCollection Drives = new ObservableCollection(); + static readonly FileSystemWatcher _watcher; + + static readonly BinaryFormatter _formatter = new BinaryFormatter(); + + public static EventList Drives { get; private set; } = new EventList(); - static ShiftFs() + public static void Save() { - if (Directory.Exists(SavePath)) + using (var fs = File.OpenWrite(FilePath)) { - var info = new DirectoryInfo(SavePath); - foreach (var dir in info.EnumerateDirectories()) + //Whoa.Whoa.SerialiseObject(fs, Drives); + _formatter.Serialize(fs, Drives); + } + } + + + static ShiftFS() + { + Drives.ItemAdded += (sender, e) => Debug.WriteLine(e.Item.Name + e.Item.Letter); + + if (!File.Exists(FilePath)) + { + using (File.Create(FilePath)) { - Drives.Add(new ShiftDrive(dir)); + + Drives.Add(new ShiftTree("Local Disk", 'C') + { + new ShiftDirectory("usr") + { + //i'll put in extensions later + new ShiftFile("stringfile.txt", "THIS IS SECRETEXT") + }, + new ShiftDirectory("libs") + { + new ShiftFile("thing.dll", "oh no it's not code FACH") + } + + }); } + + Save(); + + MessageBox.Show("Save file created."); + Debug.WriteLine("Drives: " + Drives.Count); } - else + + WatcherOnChanged(null, null); + + _watcher = new FileSystemWatcher(Environment.CurrentDirectory) { - CreateSaveFile(); - } + Filter = "save.bin", + }; + + _watcher.Changed += WatcherOnChanged; } - public static void CreateSaveFile() + static void WatcherOnChanged(object sender, FileSystemEventArgs e) { - throw new NotImplementedException(); + using (var fs = File.OpenRead(FilePath)) + { + //Drives = Whoa.Whoa.DeserialiseObject>(fs); + Drives = (EventList) _formatter.Deserialize(fs); + } } } } \ No newline at end of file -- cgit v1.2.3