private void ImportNext() { if (ThemeManager.importPaths.Count > 0) { foreach (string themePath in ThemeManager.importPaths) { importQueue.Enqueue(themePath); } numJobs += ThemeManager.importPaths.Count; ThemeManager.importPaths.Clear(); } this.Invoke(new Action(() => UpdateTotalPercentage(0))); if (importQueue.Count > 0) { string themePath = importQueue.Peek(); this.Invoke(new Action(() => label1.Text = string.Format(_("Importing theme from {0}..."), Path.GetFileName(themePath)))); ThemeResult result = ThemeManager.ImportTheme(themePath); result.Match(e => this.Invoke(new Action(() => ThemeLoader.HandleError(e))), theme => ThemeManager.importedThemes.Add(theme)); importQueue.Dequeue(); ImportNext(); } else { ThemeManager.importMode = false; this.Invoke(new Action(() => this.Close())); } }
public async void OnDownloadFileCompleted(object sender, AsyncCompletedEventArgs e) { stopwatch.Stop(); ThemeConfig theme = (ThemeConfig)e.UserState; if ((e.Error == null) && EnsureZipNotHtml()) { cancelButton.Enabled = false; ThemeResult result = await Task.Run( () => ThemeLoader.ExtractTheme(imagesZipDest, theme.themeId)); result.Match(ThemeLoader.HandleError, newTheme => { int themeIndex = ThemeManager.themeSettings.FindIndex(t => t.themeId == newTheme.themeId); ThemeManager.themeSettings[themeIndex] = newTheme; }); this.Close(); } else { themeUriIndex++; if (themeUriIndex >= themeUris.Count) { bool shouldRetry = ThemeLoader.PromptDialog(string.Format(_("Failed to " + "download images for the '{0}' theme. Do you want to try again?"), theme.themeId)); if (shouldRetry) { InitDownload(theme); } else { ThemeLoader.HandleError(new FailedToDownloadImages(theme.themeId)); this.Close(); } } else { DownloadNext(theme); } } }