コード例 #1
0
        static void Main(string[] args)
        {
            var options = new Options();

            if (Parser.Default.ParseArguments(args, options))
            {
                while (true)
                {
                    int choice = -1;

                    if (!_waitingToConnect)
                    {
                        _waitingToConnect = true;

                        var phoneManager = new iPhoneManager();
                        phoneManager.DeviceDiscovered += (s, e) =>
                        {
                            e.iPhone.ConnectViaHouseArrest(options.BundleIdentifier);

                            var root  = new DirectoryInfo(options.SourceDirectory).Name;
                            var files = Directory.EnumerateFiles(options.SourceDirectory, "*.*", SearchOption.AllDirectories).ToList();
                            for (int i = 0; i < files.Count; i++)
                            {
                                var file         = files[i];
                                var remoteFolder = Path.Combine(options.TargetDirectory,
                                                                new FileInfo(file).DirectoryName.Substring(file.IndexOf(root) + root.Length + 1)).Replace(@"\", "/");
                                CreateRemoteDirectory(e.iPhone, remoteFolder);
                                CopyFile(e.iPhone, file, Path.Combine(remoteFolder, Path.GetFileName(file)).Replace(@"\", "/"),
                                         ((double)i / (double)files.Count) * 100.0);
                            }
                        };
                        phoneManager.GetiPhonesAsync();
                    }
                    else if (_finished)
                    {
                        Console.WriteLine("1. Start sync");
                        Console.WriteLine("2. Exit");
                        choice = Convert.ToInt32(Console.ReadLine());
                    }
                    else
                    {
                        Thread.Sleep(50);
                    }

                    if (choice == 1)
                    {
                        _finished         = false;
                        _waitingToConnect = false;
                    }
                    else if (choice == 2)
                    {
                        break;
                    }
                }
            }
        }
コード例 #2
0
        private void FindDevices_Click(object sender, RoutedEventArgs e)
        {
            Devices.Items.Clear();

            var deviceFinder = new iPhoneManager();

            deviceFinder.DeviceDiscovered += (s, args) => Dispatcher.BeginInvoke((Action)(() =>
            {
                Devices.Items.Add(
                    new iPhoneSync
                {
                    iPhone = args.iPhone
                });

                SyncDevices.IsEnabled = true;
            }));
            deviceFinder.GetiPhonesAsync();
        }