public static void MaybeShuffleWallpaper()
        {
            if (!JsonConfig.settings.enableShuffle)
            {
                return;
            }

            if (JsonConfig.settings.lastShuffleDate != null)
            {
                DateTime lastShuffleDate = UpdateHandler.SafeParse(JsonConfig.settings.lastShuffleDate);

                if (lastShuffleDate.Date == DateTime.Now.Date)
                {
                    return;
                }
            }

            ShuffleWallpaper();
        }
        private static SolarData GetUserProvidedSolarData()
        {
            SolarData data = new SolarData();

            data.sunriseTime = UpdateHandler.SafeParse(JsonConfig.settings.sunriseTime);
            data.sunsetTime  = UpdateHandler.SafeParse(JsonConfig.settings.sunsetTime);

            int halfSunriseSunsetDuration = JsonConfig.settings.sunriseSunsetDuration * 30;

            data.solarTimes = new DateTime[4]
            {
                data.sunriseTime.AddSeconds(-halfSunriseSunsetDuration),
                data.sunriseTime.AddSeconds(halfSunriseSunsetDuration),
                data.sunsetTime.AddSeconds(-halfSunriseSunsetDuration),
                data.sunsetTime.AddSeconds(halfSunriseSunsetDuration)
            };

            return(data);
        }
Exemple #3
0
        public static SolarData GetSolarData(DateTimeTZ date)
        {
            double    latitude  = double.Parse(JsonConfig.settings.latitude, CultureInfo.InvariantCulture);
            double    longitude = double.Parse(JsonConfig.settings.longitude, CultureInfo.InvariantCulture);
            var       sunPhases = GetSunPhases(date, latitude, longitude);
            SolarData data      = new SolarData();

            if (JsonConfig.settings.dontUseLocation)
            {
                data.sunriseTime = UpdateHandler.SafeParse(JsonConfig.settings.sunriseTime, TimeZoneInfo.FindSystemTimeZoneById(JsonConfig.settings.timezone));
                data.sunsetTime  = UpdateHandler.SafeParse(JsonConfig.settings.sunsetTime, TimeZoneInfo.FindSystemTimeZoneById(JsonConfig.settings.timezone));
            }

            try
            {
                data.sunriseTime = GetSolarTime(sunPhases, SunPhaseName.Sunrise).ConvertTime(JsonConfig.settings.timezone);
                data.sunsetTime  = GetSolarTime(sunPhases, SunPhaseName.Sunset).ConvertTime(JsonConfig.settings.timezone);
                data.solarTimes  = new DateTimeTZ[4]
                {
                    GetSolarTime(sunPhases, SunPhaseName.Dawn),
                    GetSolarTime(sunPhases, SunPhaseName.GoldenHourEnd),
                    GetSolarTime(sunPhases, SunPhaseName.GoldenHour),
                    GetSolarTime(sunPhases, SunPhaseName.Dusk)
                };
            }
            catch (InvalidOperationException)  // Handle polar day/night
            {
                DateTimeTZ solarNoon   = GetSolarTime(sunPhases, SunPhaseName.SolarNoon);
                double     sunAltitude = SunCalcNet.SunCalc.GetSunPosition(solarNoon.ToUniversalTime(), latitude, longitude).Altitude;

                if (sunAltitude > 0)
                {
                    data.polarPeriod = PolarPeriod.PolarDay;
                }
                else
                {
                    data.polarPeriod = PolarPeriod.PolarNight;
                }
            }

            return(data);
        }
Exemple #4
0
        public static void Initialize()
        {
            Directory.CreateDirectory("themes");
            UpdateHandler.CompatibilizeThemes();

            defaultThemes = DefaultThemes.GetDefaultThemes();
            List <string> themeIds = new List <string>();

            foreach (string filePath in Directory.EnumerateFiles("themes", "*.json", SearchOption.AllDirectories))
            {
                string themeId = Path.GetFileName(Path.GetDirectoryName(filePath));

                if (!themeId.StartsWith("."))
                {
                    themeIds.Add(themeId);
                }
            }

            LoadInstalledThemes(themeIds);
        }
        public static void TryCheckAuto(bool forceIfEnabled = false)
        {
            if (UwpDesktop.IsRunningAsUwp() || JsonConfig.settings.disableAutoUpdate)
            {
                return;
            }

            if (JsonConfig.settings.lastUpdateCheck != null && !forceIfEnabled)
            {
                DateTime lastUpdateCheck = UpdateHandler.SafeParse(JsonConfig.settings.lastUpdateCheck);
                TimeSpan timeDiff        = new TimeSpan(DateTime.Now.Ticks - lastUpdateCheck.Ticks);

                if (timeDiff.Days < 7)
                {
                    return;
                }
            }

            Task.Run(() => CheckAuto());
        }
        private void InputDialog_Load(object sender, EventArgs e)
        {
            if (JsonConfig.settings.location != null)
            {
                locationBox.Text = JsonConfig.settings.location;
            }

            radioButton2.Enabled  = UwpDesktop.IsUwpSupported();
            hasLocationPermission = UwpLocation.HasAccess();

            sunriseTimePicker.MinDate = DateTime.Today;
            sunsetTimePicker.MaxDate  = DateTime.Today.AddDays(1);

            if (JsonConfig.settings.sunriseTime != null && JsonConfig.settings.sunsetTime != null)
            {
                sunriseTimePicker.Value = UpdateHandler.SafeParse(JsonConfig.settings.sunriseTime);
                sunsetTimePicker.Value  = UpdateHandler.SafeParse(JsonConfig.settings.sunsetTime);
            }
            else
            {
                sunriseTimePicker.Value = DateTime.Today.AddHours(6);
                sunsetTimePicker.Value  = DateTime.Today.AddHours(18);
            }

            if (JsonConfig.settings.sunriseSunsetDuration > 0)
            {
                sunriseSunsetDurationBox.Value = JsonConfig.settings.sunriseSunsetDuration;
            }

            if (JsonConfig.settings.useWindowsLocation)
            {
                radioButton2.Checked = true;
            }
            else if (JsonConfig.settings.dontUseLocation)
            {
                radioButton3.Checked = true;
            }

            UpdateGuiState();
            isLoaded = true;
        }
        private void InputDialog_Load(object sender, EventArgs e)
        {
            foreach (TimeZoneInfo tzi in TimeZoneInfo.GetSystemTimeZones())
            {
                timezoneBox.Items.Add(tzi.Id);
            }

            if (JsonConfig.settings.location != null)
            {
                locationBox.Text = JsonConfig.settings.location;
            }

            radioButton2.Enabled  = UwpDesktop.IsUwpSupported();
            hasLocationPermission = UwpLocation.HasAccess();

            sunriseTimePicker.MinDate = DateTime.Today;
            sunsetTimePicker.MaxDate  = DateTime.Today.AddDays(1);

            if (JsonConfig.settings.sunriseTime != null && JsonConfig.settings.sunsetTime != null)
            {
                sunriseTimePicker.Value = UpdateHandler.SafeParse(JsonConfig.settings.sunriseTime, TimeZoneInfo.FindSystemTimeZoneById(JsonConfig.settings.timezone)).Time;
                sunsetTimePicker.Value  = UpdateHandler.SafeParse(JsonConfig.settings.sunsetTime, TimeZoneInfo.FindSystemTimeZoneById(JsonConfig.settings.timezone)).Time;
            }
            else
            {
                sunriseTimePicker.Value = DateTime.Today.AddHours(6);
                sunsetTimePicker.Value  = DateTime.Today.AddHours(18);
            }

            if (JsonConfig.settings.sunriseSunsetDuration > 0)
            {
                sunriseSunsetDurationBox.Value = JsonConfig.settings.sunriseSunsetDuration;
            }

            if (JsonConfig.settings.useWindowsLocation)
            {
                radioButton2.Checked = true;
            }
            else if (JsonConfig.settings.dontUseLocation)
            {
                radioButton3.Checked = true;
            }

            if (JsonConfig.settings.timezone != null)
            {
                timezoneBox.Text = JsonConfig.settings.timezone;
            }
            else
            {
                timezoneBox.Text = TimeZoneInfo.Local.Id;
            }

            if (JsonConfig.settings.latitude != null)
            {
                latitudeTextBox.Text = JsonConfig.settings.latitude;
            }

            if (JsonConfig.settings.longitude != null)
            {
                longitudeTextBox.Text = JsonConfig.settings.longitude;
            }


            UpdateGuiState();
            isLoaded = true;
        }