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; } } } }
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(); }