Exemple #1
0
        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();
            }
        }
Exemple #2
0
        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");
        }