public async void SetClipboardFromMetadata(FtpServer server, string mouseId) { FtpServer.FixName(ref mouseId); var clipboardFolder = Path.Combine(server.Folder, mouseId); if (!Directory.Exists(clipboardFolder)) { Console.WriteLine("Connecting brand new mouse"); await server.SetClipboard(mouseId, this); } Console.WriteLine(clipboardFolder); var files = Directory.GetFiles(clipboardFolder, "*.*"); var metadataFile = files.First(file => Path.GetFileName(file) == FtpServer.MetadataFile); var metadata = File.ReadAllText(metadataFile); var metadataLines = metadata.Split(new[] { Environment.NewLine }, StringSplitOptions.None); Enum.TryParse(metadataLines.First(), out DataType dataType); switch (dataType) { case DataType.Text: var text = string.Join(Environment.NewLine, metadataLines.Skip(1)); SetClipboard(text); break; case DataType.Audio: // Todo audio wav stream pakken en op clipboard zetten break; case DataType.Files: // Todo files in stringcollection zetten en op clipaboar dzetten break; case DataType.Image: var imageFile = Path.Combine(clipboardFolder, metadataLines.First()); var image = Image.FromFile(imageFile); SetClipboard(image); break; default: throw new ArgumentOutOfRangeException(); } }
public static async void Initialize(Window window) { var mouseManager = new MouseManager(window); Console.WriteLine("Current mouse id: " + mouseManager.CurrentMouseId); var ftpServer = new FtpServer("clipboard", Servers); var socketServer = new SocketServer(); socketServer.Message += async(sender, args) => { switch (args.Message.Action) { case Action.Connect: await AddServer(args.Message.Text); var mouseId = mouseManager.CurrentMouseId; FtpServer.FixName(ref mouseId); ftpServer.SyncMouse(mouseId); break; default: throw new ArgumentOutOfRangeException(); } }; var clipboardManager = new ClipboardManager(); clipboardManager.Copy += async(sender, eventArgs) => { Console.WriteLine("ONCOPY"); await ftpServer.SetClipboard(mouseManager.CurrentMouseId, clipboardManager); }; clipboardManager.Ready += async(sender, args) => { await ftpServer.SetClipboard(mouseManager.CurrentMouseId, clipboardManager); }; mouseManager.MouseChange += (sender, args) => { if (args.ChangeType != MouseChangeType.Removed) { return; } Console.WriteLine("Mouse removed, syncing mouse files to everyone: " + args.MouseId); // Nieuwe muis connected, override clipboard clipboardManager.SetClipboardFromMetadata(ftpServer, args.MouseId); }; await UpdateServers(); foreach (var server in Servers) { Console.WriteLine(server); } Console.WriteLine("DONE"); }