private void ThemeDialog_Load(object sender, EventArgs e) { imageListView1.ContextMenuStrip = contextMenuStrip1; imageListView1.SetRenderer(new ThemeListViewRenderer()); Size thumbnailSize = ThemeThumbLoader.GetThumbnailSize(this); imageListView1.ThumbnailSize = thumbnailSize; imageListView1.Items.Add(_("None"), ThemeThumbLoader.ScaleImage(windowsWallpaper, thumbnailSize)); string currentTheme = ThemeManager.currentTheme?.themeId; ImageListViewItem focusItem = null; if (currentTheme == null) { if (JsonConfig.firstRun || JsonConfig.settings.themeName != null) { currentTheme = "Mojave_Desert"; } else { focusItem = imageListView1.Items[0]; } } Task.Run(new Action(() => { for (int i = 0; i < ThemeManager.themeSettings.Count; i++) { ThemeConfig theme = ThemeManager.themeSettings[i]; string themeName = ThemeManager.GetThemeName(theme); themeNames.Add(themeName); themeNames.Sort(); int itemIndex = themeNames.IndexOf(themeName) + 1; using (Image thumbnailImage = ThemeThumbLoader.GetThumbnailImage(theme, thumbnailSize, true)) { this.Invoke(new Action(() => { imageListView1.Items.Insert(itemIndex, themeName, thumbnailImage); imageListView1.Items[itemIndex].Tag = theme.themeId; })); } if (theme.themeId == currentTheme) { focusItem = imageListView1.Items[itemIndex]; } } if (focusItem != null) { this.Invoke(new Action(() => { focusItem.Selected = true; imageListView1.EnsureVisible(focusItem.Index); })); } ThemeThumbLoader.CacheThumbnails(imageListView1.Items); })); }
private void LoadThemes(List <ThemeConfig> themes, string activeTheme = null) { Size thumbnailSize = ThemeThumbLoader.GetThumbnailSize(this); ListViewItem focusedItem = null; foreach (ThemeConfig theme in themes.ToList()) { try { using (Image thumbnailImage = ThemeThumbLoader.GetThumbnailImage(theme, thumbnailSize, true)) { this.Invoke(new Action(() => { listView1.LargeImageList.Images.Add(thumbnailImage); string itemText = ThemeManager.GetThemeName(theme); if (JsonConfig.settings.favoriteThemes != null && JsonConfig.settings.favoriteThemes.Contains(theme.themeId)) { itemText = "★ " + itemText; } ListViewItem newItem = listView1.Items.Add(itemText, listView1.LargeImageList.Images.Count - 1); newItem.Tag = theme.themeId; if (activeTheme == null || activeTheme == theme.themeId) { focusedItem = newItem; } })); } } catch (OutOfMemoryException) { ThemeLoader.HandleError(new FailedToCreateThumbnail(theme.themeId)); } } this.Invoke(new Action(() => { listView1.Sort(); if (focusedItem == null) { focusedItem = listView1.Items[0]; } focusedItem.Selected = true; listView1.EnsureVisible(focusedItem.Index); ThemeThumbLoader.CacheThumbnails(listView1); })); }
private void LoadImportedThemes(List <ThemeConfig> themes, ImportDialog importDialog) { themes.Sort((t1, t2) => t1.themeId.CompareTo(t2.themeId)); Size thumbnailSize = ThemeThumbLoader.GetThumbnailSize(this); ImageListViewItem newItem = null; Task.Run(() => { for (int i = 0; i < themes.Count; i++) { this.Invoke(new Action(() => EnsureThemeNotDuplicated(themes[i].themeId))); string themeName = ThemeManager.GetThemeName(themes[i]); themeNames.Add(themeName); themeNames.Sort(); int itemIndex = themeNames.IndexOf(themeName) + 1; using (Image thumbnailImage = ThemeThumbLoader.GetThumbnailImage(themes[i], thumbnailSize, false)) { this.Invoke(new Action(() => { imageListView1.Items.Insert(itemIndex, ThemeManager.GetThemeName(themes[i]), thumbnailImage); newItem = imageListView1.Items[itemIndex]; newItem.Tag = themes[i].themeId; })); } } if (newItem != null) { this.Invoke(new Action(() => { imageListView1.ClearSelection(); newItem.Selected = true; imageListView1.EnsureVisible(newItem.Index); })); } ThemeThumbLoader.CacheThumbnails(imageListView1.Items); importDialog.thumbnailsLoaded = true; this.Invoke(new Action(() => importDialog.Close())); }); }
private void LoadThemes(List <ThemeConfig> themes, string activeTheme = null) { Size thumbnailSize = ThemeThumbLoader.GetThumbnailSize(this); ListViewItem focusedItem = null; foreach (ThemeConfig theme in themes) { using (Image thumbnailImage = ThemeThumbLoader.GetThumbnailImage(theme, thumbnailSize, true)) { this.Invoke(new Action(() => { listView1.LargeImageList.Images.Add(thumbnailImage); ListViewItem newItem = listView1.Items.Add(ThemeManager.GetThemeName(theme), listView1.LargeImageList.Images.Count - 1); newItem.Tag = theme.themeId; if (activeTheme == null || activeTheme == theme.themeId) { focusedItem = newItem; } })); } } this.Invoke(new Action(() => { listView1.Sort(); if (focusedItem == null) { focusedItem = listView1.Items[0]; } focusedItem.Selected = true; listView1.EnsureVisible(focusedItem.Index); ThemeThumbLoader.CacheThumbnails(listView1); })); }