private void Client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e) { Action Finish = () => { Status = e.Error == null ? DownloadStatus.Ready : DownloadStatus.Failed; App.DownloadManager.DownloadList.Remove(this); if (Status == DownloadStatus.Ready) { if ((URLCollection == null) || (!URLCollection.Any(c => App.DownloadManager.DownloadList.Any(d => d.URL == c)))) // if there are no files left to download from this collection, then call the callback-function. { string[] Files; if (URLCollection == null) { Files = new string[1]; Files[0] = System.IO.Path.Combine(Folder, DownloadsViewModel.GetFileNameFromURL(URL)); } else { Files = new string[URLCollection.Length]; for (int i = 0; i < URLCollection.Length; i++) { Files[i] = System.IO.Path.Combine(Folder, DownloadsViewModel.GetFileNameFromURL(URLCollection[i])); } } Callback(Files, State); } } }; if (UIContext != null) { UIContext.Post(d => Finish(), null); } }
internal SearchResult(string URL, string Category, Action <string[], object> Callback, object State) { UIContext = SynchronizationContext.Current; URLs = new string[1]; URLs[0] = URL; Name = DownloadsViewModel.GetFileNameFromURL(URL); this.Callback = Callback; this.State = State; this.Category = Category; GetSize(); }
private void GetSize() { new Thread(() => { long CalcSize = 0; foreach (string URL in URLs) { CalcSize += DownloadsViewModel.GetFileLengthFromURL(URL); } Size = CalcSize; }).Start(); }
internal DownloadEntry(string URL, string Folder, string[] URLCollection, Action <string[], object> Callback, object State) { UIContext = SynchronizationContext.Current; this.URL = URL; this.Callback = Callback; this.State = State; this.URLCollection = URLCollection; this.Folder = Folder; Directory.CreateDirectory(Folder); Name = DownloadsViewModel.GetFileNameFromURL(URL); Uri Uri = new Uri(URL); Status = DownloadStatus.Downloading; new Thread(() => { Size = DownloadsViewModel.GetFileLengthFromURL(URL); Client = new MyWebClient(); Client.DownloadFileCompleted += Client_DownloadFileCompleted; Client.DownloadProgressChanged += Client_DownloadProgressChanged; Client.DownloadFileAsync(Uri, Path.Combine(Folder, DownloadsViewModel.GetFileNameFromURL(Uri.LocalPath)), null); }).Start(); }
public void StartOperation() { IsMenuEnabled = true; _GettingStartedViewModel = new GettingStartedViewModel( () => { ContextViewModel = new DisclaimerViewModel( () => ContextViewModel = _GettingStartedViewModel ); }, SwitchToUnlockBoot, SwitchToUnlockRoot, SwitchToBackup, SwitchToDumpFFU, SwitchToFlashRom, SwitchToDownload ); this.ContextViewModel = _GettingStartedViewModel; PhoneNotifier = new PhoneNotifierViewModel(); PhoneNotifier.NewDeviceArrived += PhoneNotifier_NewDeviceArrived; PhoneNotifier.DeviceRemoved += PhoneNotifier_DeviceRemoved; InfoViewModel = new LumiaInfoViewModel(PhoneNotifier, (TargetInterface) => { ModeViewModel.OnModeSwitchRequested(TargetInterface); ContextViewModel = ModeViewModel; }, () => { ContextViewModel = _GettingStartedViewModel; }); InfoViewModel.ActivateSubContext(null); ModeViewModel = new LumiaModeViewModel(PhoneNotifier, SwitchToInfoViewModel); ModeViewModel.ActivateSubContext(null); BootUnlockViewModel = new LumiaUnlockBootViewModel(PhoneNotifier, SwitchToFlashRom, SwitchToUndoRoot, SwitchToDownload, true, SwitchToInfoViewModel); BootUnlockViewModel.ActivateSubContext(null); BootRestoreViewModel = new LumiaUnlockBootViewModel(PhoneNotifier, SwitchToFlashRom, SwitchToUndoRoot, SwitchToDownload, false, SwitchToInfoViewModel); BootRestoreViewModel.ActivateSubContext(null); RootUnlockViewModel = new LumiaUnlockRootViewModel(PhoneNotifier, SwitchToUnlockBoot, SwitchToDumpFFU, SwitchToFlashRom, true, SwitchToInfoViewModel); RootUnlockViewModel.ActivateSubContext(null); RootRestoreViewModel = new LumiaUnlockRootViewModel(PhoneNotifier, SwitchToUnlockBoot, SwitchToDumpFFU, SwitchToFlashRom, false, SwitchToInfoViewModel); RootRestoreViewModel.ActivateSubContext(null); BackupViewModel = new BackupViewModel(PhoneNotifier, SwitchToUnlockBoot, SwitchToInfoViewModel); BackupViewModel.ActivateSubContext(null); RestoreViewModel = new RestoreViewModel(PhoneNotifier, SwitchToDifferentInterface, SwitchToUnlockBoot, SwitchToFlashRom, SwitchToInfoViewModel); RestoreViewModel.ActivateSubContext(null); LumiaFlashRomViewModel = new LumiaFlashRomViewModel(PhoneNotifier, SwitchToUnlockBoot, SwitchToUnlockRoot, SwitchToDumpFFU, SwitchToBackup, SwitchToInfoViewModel); LumiaFlashRomViewModel.ActivateSubContext(null); DumpRomViewModel = new DumpRomViewModel(SwitchToUnlockBoot, SwitchToUnlockRoot, SwitchToFlashRom); DumpRomViewModel.ActivateSubContext(null); DownloadsViewModel = new DownloadsViewModel(PhoneNotifier); App.DownloadManager = DownloadsViewModel; PhoneNotifier.Start(); }