private void ApplySelectedTheme() { if (selectedIndex > 0) { ThemeManager.currentTheme = ThemeManager.themeSettings[selectedIndex - 1]; } else { ThemeManager.currentTheme = null; } JsonConfig.settings.themeName = ThemeManager.currentTheme?.themeId; if (selectedIndex == 0) { WallpaperApi.SetWallpaper(windowsWallpaper); } else { ThemeShuffler.AddThemeToHistory(ThemeManager.currentTheme.themeId); AppContext.wpEngine.RunScheduler(true); AppContext.ShowPopup(string.Format(_("New theme applied: {0}"), ThemeManager.GetThemeName(ThemeManager.currentTheme))); } }
private static void OnShuffleItemClick(object sender, EventArgs e) { ThemeShuffler.ToggleShuffle(); }
public void RunScheduler(bool forceImageUpdate = false) { if (!LaunchSequence.IsLocationReady() || !LaunchSequence.IsThemeReady()) { return; } schedulerTimer.Stop(); SolarData data = SunriseSunsetService.GetSolarData(DateTime.Today); isSunUp = (data.sunriseTime <= DateTime.Now && DateTime.Now < data.sunsetTime); DateTime?nextImageUpdateTime = null; //for (int i = 0; i < DisplayDevices.GetAllMonitorsFriendlyNames().Count(); i++) if (ThemeManager.currentTheme != null) { if (forceImageUpdate) { lastImagePath = null; } ThemeShuffler.MaybeShuffleWallpaper(); } SchedulerState imageData = GetImageData(data, ThemeManager.currentTheme, DateTime.Now); if (ThemeManager.currentTheme != null) { SetWallpaper(imageData.imageId); nextImageUpdateTime = new DateTime(imageData.nextUpdateTicks); } ScriptManager.RunScripts(new ScriptArgs { daySegment2 = imageData.daySegment2, daySegment4 = imageData.daySegment4, imagePath = (ThemeManager.currentTheme != null) ? lastImagePath : null }); if (data.polarPeriod != PolarPeriod.None) { nextUpdateTime = DateTime.Today.AddDays(1); } else if (isSunUp) { nextUpdateTime = data.sunsetTime; } else if (DateTime.Now < data.solarTimes[0]) { nextUpdateTime = data.sunriseTime; } else { SolarData tomorrowsData = SunriseSunsetService.GetSolarData(DateTime.Today.AddDays(1)); nextUpdateTime = tomorrowsData.sunriseTime; } if (nextImageUpdateTime.HasValue && nextImageUpdateTime.Value < nextUpdateTime.Value) { nextUpdateTime = nextImageUpdateTime; } StartTimer(nextUpdateTime.Value); }