private void DisplayWeatherData() { WeatherData data = weatherHandler.GetCurrentWeatherData(); if (data == null) { return; } view.city = data.data.name; TimeSpan timeZone = TimeSpan.FromSeconds(data.data.timezone); string relative = data.data.timezone >= 0 ? "Timezone: GMT +" : "GMT -"; relative += string.Format("{0:D2}:{1:D2}", timeZone.Hours, timeZone.Minutes); view.timeZone = relative; if (data.data.main.temp == 0) { view.temperature = "-"; } else { view.temperature = (int)(data.data.main.temp - 273.15) + "°C"; } view.weatherIcon = PathHandling.GetCorrespondingIconPath(Helperfunctions.ConvertOWMDescrToWeather(data.data.weather[0].description), true); }
private static void ThreadRun() { try { while (true) { WeatherData currentWeather = weatherHandler.GetCurrentWeatherData(); DateTime now = DateTime.Now; PersistentData currentSettings = SettingsLoader.GetCurrentSettingsData(); //check if transition allowed if ((bool)currentSettings.changeInBackground) { if (!AppFocus.OtherAppIsInFullScreen()) { Wait(); continue; } } DataStructures.ImageData[] images = currentSettings.imageData.ToArray(); DataStructures.enumDayTime targetDayTime = Helperfunctions.ConvertTimeToDayTime(now, currentWeather); DataStructures.enumSeason targetSeason = Helperfunctions.ConvertDateToEnumSeason(now); DataStructures.enumWeather targetWeather = Helperfunctions.ConvertOWMDescrToWeather(currentWeather.data.weather[0].description); //filter images to new list after priority //importance desc: season, daytime, weather List <DataStructures.ImageData> filteredImages = new List <DataStructures.ImageData>(); for (int ignorance = 0; ignorance <= 3; ignorance++) { for (int i = 0; i < images.Length; i++) { if (images[i].targetSeason == targetSeason) { if (images[i].targetDaytime == targetDayTime) { if (images[i].targetWeather == targetWeather) { if (!images[i].banUse) { filteredImages.Add(images[i]); } } else if (ignorance > 0) { filteredImages.Add(images[i]); } } else if (ignorance > 1) { filteredImages.Add(images[i]); } } else if (ignorance > 2) { filteredImages.Add(images[i]); } } if (filteredImages.Count > 0) { break; } } if (filteredImages.Count == 0) { Wait(); continue; } //select random from filtered list Random rnd = new Random(); int selected = rnd.Next(0, filteredImages.Count); //change background Uri wallFile = new Uri(filteredImages[selected].fileName); Wallpaper.Set(wallFile, Wallpaper.Style.Stretched); Wait(); } } catch { return; } }