Esempio n. 1
0
        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;
            }
        }