private void themeToolStripMenuItem_Click(object sender, EventArgs e) { int itemIndex = listView1.FocusedItem.Index; string themeId = (string)listView1.Items[itemIndex].Tag; ThemeConfig theme = ThemeManager.themeSettings.Find(t => t.themeId == themeId); DialogResult result = MessageDialog.ShowQuestion(string.Format(_("Are you sure you want to remove " + "the '{0}' theme?"), ThemeManager.GetThemeName(theme)), _("Question"), true); if (result == DialogResult.Yes) { if (!ThemeManager.defaultThemes.Contains(theme.themeId)) { int imageIndex = listView1.Items[itemIndex].ImageIndex; listView1.Items.RemoveAt(itemIndex); listView1.Items[itemIndex - 1].Selected = true; listView1.LargeImageList.Images[imageIndex].Dispose(); } Task.Run(() => { ThemeManager.RemoveTheme(theme); if (ThemeManager.defaultThemes.Contains(theme.themeId)) { this.Invoke(new Action(() => UpdateSelectedItem())); } }); } }
public SchedulerState GetImageData(SolarData data, ThemeConfig theme, DateTime dateNow) { int[] imageList = null; DateTime segmentStart; DateTime segmentEnd; SchedulerState imageData = new SchedulerState() { daySegment2 = isSunUp ? 0 : 1 }; // Use 4-segment mode if theme is not downloaded, or has sunrise/sunset images and dark mode not enabled if (theme?.imageFilename == null || (ThemeManager.IsTheme4Segment(theme) && !JsonConfig.settings.darkMode)) { switch (GetDaySegment(data, dateNow)) { case DaySegment.AllDay: imageList = theme?.dayImageList; segmentStart = dateNow.Date; segmentEnd = dateNow.Date.AddDays(1); imageData.daySegment4 = 1; break; case DaySegment.AllNight: imageList = theme?.nightImageList; segmentStart = dateNow.Date; segmentEnd = dateNow.Date.AddDays(1); imageData.daySegment4 = 3; break; case DaySegment.Sunrise: imageList = theme?.sunriseImageList; segmentStart = data.solarTimes[0]; segmentEnd = data.solarTimes[1]; imageData.daySegment4 = 0; break; case DaySegment.Day: imageList = theme?.dayImageList; segmentStart = data.solarTimes[1]; segmentEnd = data.solarTimes[2]; imageData.daySegment4 = 1; break; case DaySegment.Sunset: imageList = theme?.sunsetImageList; segmentStart = data.solarTimes[2]; segmentEnd = data.solarTimes[3]; imageData.daySegment4 = 2; break; default: imageList = theme?.nightImageList; imageData.daySegment4 = 3; if (dateNow < data.solarTimes[0]) { SolarData yesterdaysData = SunriseSunsetService.GetSolarData(dateNow.Date.AddDays(-1)); segmentStart = yesterdaysData.solarTimes[3]; segmentEnd = data.solarTimes[0]; } else { segmentStart = data.solarTimes[3]; SolarData tomorrowsData = SunriseSunsetService.GetSolarData(dateNow.Date.AddDays(1)); segmentEnd = tomorrowsData.solarTimes[0]; } break; } } else { imageList = theme?.nightImageList; if (!JsonConfig.settings.darkMode && (isSunUp || data.polarPeriod == PolarPeriod.PolarDay)) { imageList = theme?.dayImageList; } if (data.polarPeriod != PolarPeriod.None) { segmentStart = dateNow.Date; segmentEnd = dateNow.Date.AddDays(1); } else if (isSunUp) { segmentStart = data.sunriseTime; segmentEnd = data.sunsetTime; } else if (dateNow < data.sunriseTime) { SolarData yesterdaysData = SunriseSunsetService.GetSolarData(dateNow.Date.AddDays(-1)); segmentStart = yesterdaysData.sunsetTime; segmentEnd = data.sunriseTime; } else { segmentStart = data.sunsetTime; SolarData tomorrowsData = SunriseSunsetService.GetSolarData(dateNow.Date.AddDays(1)); segmentEnd = tomorrowsData.sunriseTime; } } if (imageList != null) { TimeSpan segmentLength = segmentEnd - segmentStart; TimeSpan timerLength = new TimeSpan(segmentLength.Ticks / imageList.Length); int imageNumber = (int)((dateNow.Ticks - segmentStart.Ticks) / timerLength.Ticks); imageData.imageId = imageList[imageNumber]; imageData.imageNumber = imageNumber; imageData.nextUpdateTicks = segmentStart.Ticks + timerLength.Ticks * (imageNumber + 1); } return(imageData); }