private async Task Init() { foreach (var item in Cities) { if (item.data != null && item.data.Length > 31) { var weather = HeWeatherModel.Generate(item.data, settings.Preferences.DataSource); if (weather == null || weather.DailyForecast == null || weather.HourlyForecast == null) { return; } await itemInit(item, weather); item.Updated = true; item.Succeed = true; } } if (settings.Cities.EnableLocate && settings.Cities.LocatedCity != null) { CurrentIndex = settings.Cities.CurrentIndex + 1; } else { CurrentIndex = settings.Cities.CurrentIndex; } }
public async static Task <HeWeather.Location> ReGeobyIpAsync() { var ipUrl = "http://api.ip138.com/query/?token={0}"; var result = await ApiRequestHelper.RequestWithFormattedUrlAsync(ipUrl, new string[] { Key.ip138 }); if (result == null) { return(null); } var ipRes = JsonHelper.FromJson <IpContract>(result); var city = await Request.RequestbyIpAsync(ipRes.ip); var fetchresult = HeWeatherModel.Generate(city, DataSource.HeWeather); return(fetchresult.Location); }
private async Task itemInit(CityViewModel item, HeWeatherModel weather) { item.NowCondition = weather.NowWeather.Now.Condition; item.Temperature = weather.NowWeather.Temprature; string p = TemperatureDecoratorConverter.GetCurrentDeco(); item.Decorator = p; var utcOffset = weather.Location.UpdateTime - weather.Location.UtcTime; var current = DateTimeHelper.ReviseLoc(utcOffset); var todayIndex = Array.FindIndex(weather.DailyForecast, x => { return(x.Date.Date == current.Date); }); var hourIndex = Array.FindIndex(weather.HourlyForecast, x => { return((x.DateTime - current).TotalSeconds > 0); }); if (todayIndex < 0) { todayIndex = 0; } if (hourIndex < 0) { hourIndex = 0; } item.High = weather.DailyForecast[todayIndex].HighTemp; item.Low = weather.DailyForecast[todayIndex].LowTemp; var isNight = Generator.CalcIsNight(weather.Location.UpdateTime, weather.DailyForecast[todayIndex].SunRise, weather.DailyForecast[todayIndex].SunSet, new Models.Location(item.latitude, item.longitude)); item.Glance = Glance.GenerateGlanceDescription(weather, isNight, settings.Preferences.TemperatureParameter, DateTime.Now); var uri = await settings.Immersive.GetCurrentBackgroundAsync(weather.NowWeather.Now.Condition, isNight); if (uri != null) { try { item.Background = new BitmapImage(uri); } catch (Exception) { } } item.data = null; }
private async Task Complete(CityViewModel item) { await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.High, new DispatchedHandler(async() => { if (item.data != null && item.data.Length > 31) { var weather = HeWeatherModel.Generate(item.data, settings.Preferences.DataSource); if (weather == null || weather.DailyForecast == null || weather.HourlyForecast == null) { return; } await itemInit(item, weather); item.Updated = true; item.Succeed = true; item.LastUpdate = DateTime.Now; } })); }
internal static string GenerateLockDetailDescription(HeWeatherModel model, bool isNight, TemperatureParameter parameter, DateTime desiredDate) { var todayIndex = Array.FindIndex(model.DailyForecast, x => { return(x.Date.Date == desiredDate.Date); }); if (isNight && desiredDate.Hour < 12) { todayIndex--; } if (todayIndex < 0) { todayIndex = 0; } var 主语 = model.NowWeather.Now.Condition; string zhuyu = loader.GetString("xianzai"); if (Tools.Random.Next(200) >= 100) { if (isNight) { 主语 = model.DailyForecast[todayIndex].Condition.NightCond; zhuyu = loader.GetString("wanjian"); } else { 主语 = model.DailyForecast[todayIndex].Condition.DayCond; zhuyu = loader.GetString("jintian"); } } string binyu; StringBuilder decoration = new StringBuilder(); if (Tools.Random.Next(200) >= 100) { if (Tools.Random.Next(200) >= 100 && model.NowWeather.Temprature.Celsius < 0) { decoration.Append(wendudi.SelectRandomString() + ", "); } else if (Tools.Random.Next(200) >= 100 && model.NowWeather.Temprature.Celsius > 25) { decoration.Append(wendugao.SelectRandomString() + ", "); } if (Tools.Random.Next(200) >= 100 && model.DailyForecast[todayIndex].Humidity > 80) { decoration.Append(shiduda[0] + ", "); } if (model.NowWeather.Visibility != null) { if (Tools.Random.Next(200) >= 100 && model.NowWeather.Visibility.KM < 0.5) { decoration.Append(nengjiandudi[0] + ", "); } } if (Tools.Random.Next(200) >= 100) { switch (主语) { case WeatherCondition.unknown: return(loader.GetString("unknown_weather")); case WeatherCondition.sunny: case WeatherCondition.few_clouds: case WeatherCondition.partly_cloudy: case WeatherCondition.calm: case WeatherCondition.light_breeze: case WeatherCondition.moderate: case WeatherCondition.fresh_breeze: decoration.Append(haotianqi.SelectRandomString() + ", "); break; case WeatherCondition.overcast: case WeatherCondition.cloudy: case WeatherCondition.windy: break; case WeatherCondition.strong_breeze: case WeatherCondition.high_wind: break; case WeatherCondition.gale: case WeatherCondition.strong_gale: case WeatherCondition.storm: case WeatherCondition.violent_storm: case WeatherCondition.hurricane: case WeatherCondition.tornado: case WeatherCondition.tropical_storm: decoration.Append(huaitianqi.SelectRandomString() + ", "); break; case WeatherCondition.shower_rain: break; case WeatherCondition.heavy_shower_rain: case WeatherCondition.thundershower: case WeatherCondition.heavy_thunderstorm: case WeatherCondition.hail: decoration.Append(huaitianqi.SelectRandomString() + ", "); break; case WeatherCondition.light_rain: case WeatherCondition.moderate_rain: break; case WeatherCondition.heavy_rain: case WeatherCondition.extreme_rain: decoration.Append(huaitianqi.SelectRandomString() + ", "); break; case WeatherCondition.drizzle_rain: break; case WeatherCondition.storm_rain: case WeatherCondition.heavy_storm_rain: case WeatherCondition.severe_storm_rain: case WeatherCondition.freezing_rain: decoration.Append(huaitianqi.SelectRandomString() + ", "); break; case WeatherCondition.light_snow: break; case WeatherCondition.moderate_snow: case WeatherCondition.heavy_snow: case WeatherCondition.snowstorm: decoration.Append(huaitianqi.SelectRandomString() + ", "); break; case WeatherCondition.sleet: case WeatherCondition.rain_snow: case WeatherCondition.shower_snow: case WeatherCondition.snow_flurry: break; case WeatherCondition.mist: break; case WeatherCondition.foggy: case WeatherCondition.haze: case WeatherCondition.sand: case WeatherCondition.dust: case WeatherCondition.volcanic_ash: case WeatherCondition.duststorm: case WeatherCondition.sandstorm: decoration.Append(huaitianqi.SelectRandomString() + ", "); break; case WeatherCondition.hot: case WeatherCondition.cold: break; default: break; } } } switch (主语) { case WeatherCondition.unknown: return(loader.GetString("unknown_weather")); case WeatherCondition.sunny: binyu = sunny.SelectRandomString(); break; case WeatherCondition.cloudy: binyu = cloudy.SelectRandomString(); break; case WeatherCondition.few_clouds: binyu = few_clouds.SelectRandomString(); break; case WeatherCondition.partly_cloudy: binyu = partly_cloudy.SelectRandomString(); break; case WeatherCondition.overcast: binyu = overcast.SelectRandomString(); break; case WeatherCondition.windy: binyu = windy.SelectRandomString(); break; case WeatherCondition.calm: case WeatherCondition.light_breeze: case WeatherCondition.moderate: case WeatherCondition.fresh_breeze: binyu = breeze.SelectRandomString(); break; case WeatherCondition.strong_breeze: case WeatherCondition.high_wind: case WeatherCondition.gale: case WeatherCondition.strong_gale: binyu = gale.SelectRandomString(); break; case WeatherCondition.storm: case WeatherCondition.violent_storm: case WeatherCondition.hurricane: case WeatherCondition.tornado: case WeatherCondition.tropical_storm: binyu = storm.SelectRandomString(); break; case WeatherCondition.shower_rain: case WeatherCondition.heavy_shower_rain: binyu = shower.SelectRandomString(); break; case WeatherCondition.thundershower: case WeatherCondition.heavy_thunderstorm: binyu = thundershower.SelectRandomString(); break; case WeatherCondition.hail: binyu = hail.SelectRandomString(); break; case WeatherCondition.drizzle_rain: case WeatherCondition.light_rain: case WeatherCondition.moderate_rain: binyu = moderate_rain.SelectRandomString(); break; case WeatherCondition.heavy_rain: case WeatherCondition.extreme_rain: binyu = heavy_rain.SelectRandomString(); break; case WeatherCondition.storm_rain: case WeatherCondition.heavy_storm_rain: case WeatherCondition.severe_storm_rain: binyu = storm.SelectRandomString(); break; case WeatherCondition.freezing_rain: binyu = freezing_rain.SelectRandomString(); break; case WeatherCondition.light_snow: case WeatherCondition.moderate_snow: binyu = moderate_snow.SelectRandomString(); break; case WeatherCondition.heavy_snow: binyu = heavy_snow.SelectRandomString(); break; case WeatherCondition.snowstorm: binyu = snowstorm.SelectRandomString(); break; case WeatherCondition.sleet: case WeatherCondition.rain_snow: binyu = sleet.SelectRandomString(); break; case WeatherCondition.shower_snow: case WeatherCondition.snow_flurry: binyu = shower_snow.SelectRandomString(); break; case WeatherCondition.mist: binyu = mist.SelectRandomString(); break; case WeatherCondition.foggy: binyu = foggy.SelectRandomString(); break; case WeatherCondition.haze: binyu = haze.SelectRandomString(); break; case WeatherCondition.sand: case WeatherCondition.dust: binyu = dust.SelectRandomString(); break; case WeatherCondition.volcanic_ash: case WeatherCondition.duststorm: case WeatherCondition.sandstorm: binyu = duststorm.SelectRandomString(); break; case WeatherCondition.hot: binyu = loader.GetString("bianre"); break; case WeatherCondition.cold: binyu = loader.GetString("bianleng"); break; default: return(loader.GetString("unknown_weather")); } string nowtemp; string tomorrowtemp; switch (parameter) { case TemperatureParameter.Celsius: nowtemp = model.DailyForecast[todayIndex].LowTemp.Celsius + "°~" + model.DailyForecast[todayIndex].HighTemp.Celsius + '°'; tomorrowtemp = model.DailyForecast[todayIndex + 1].LowTemp.Celsius + "°~" + model.DailyForecast[todayIndex + 1].HighTemp.Celsius + '°'; break; case TemperatureParameter.Fahrenheit: nowtemp = model.DailyForecast[todayIndex + 0].LowTemp.Fahrenheit + "°~" + model.DailyForecast[todayIndex + 0].HighTemp.Fahrenheit + '°'; tomorrowtemp = model.DailyForecast[todayIndex + 1].LowTemp.Fahrenheit + "°~" + model.DailyForecast[todayIndex + 1].HighTemp.Fahrenheit + '°'; break; case TemperatureParameter.Kelvin: nowtemp = model.DailyForecast[todayIndex + 0].LowTemp.Kelvin + "K~" + model.DailyForecast[todayIndex + 0].HighTemp.Kelvin + "K"; tomorrowtemp = model.DailyForecast[todayIndex + 1].LowTemp.Kelvin + "K~" + model.DailyForecast[todayIndex + 1].HighTemp.Kelvin + "K"; break; default: nowtemp = model.DailyForecast[todayIndex + 0].LowTemp.Celsius + "°~" + model.DailyForecast[todayIndex + 0].HighTemp.Celsius + "°"; tomorrowtemp = model.DailyForecast[todayIndex + 1].LowTemp.Celsius + "°~" + model.DailyForecast[todayIndex + 1].HighTemp.Celsius + "°"; break; } string tomorrowcondition; var converter = new ConditiontoTextConverter(); tomorrowcondition = (string)converter.Convert(model.DailyForecast[todayIndex + 1].Condition.DayCond, null, null, null); return(string.Format(loader.GetString("LockDetail"), zhuyu, binyu, decoration, nowtemp, tomorrowcondition, tomorrowtemp)); }
public static string GenerateShortDescription(HeWeatherModel model, bool isNight) { var utcOffset = model.Location.UpdateTime - model.Location.UtcTime; var current = DateTimeHelper.ReviseLoc(utcOffset); var todayIndex = Array.FindIndex(model.DailyForecast, x => { return(x.Date.Date == current.Date); }); if (isNight && current.Hour < 12) { todayIndex--; } if (todayIndex < 0) { todayIndex = 0; } var 主语 = model.NowWeather.Now.Condition; string zhuyu = loader.GetString("xianzai"); if (Tools.Random.Next(200) >= 100) { if (isNight) { 主语 = model.DailyForecast[todayIndex].Condition.NightCond; zhuyu = loader.GetString("wanjian"); } else { 主语 = model.DailyForecast[todayIndex].Condition.DayCond; zhuyu = loader.GetString("jintian"); } } string binyu; StringBuilder decoration = new StringBuilder(); if (Tools.Random.Next(200) >= 100) { if (Tools.Random.Next(200) >= 100 && model.NowWeather.Temprature.Celsius < 0) { decoration.Append(wendudi.SelectRandomString() + ", "); } else if (Tools.Random.Next(200) >= 100 && model.NowWeather.Temprature.Celsius > 25) { decoration.Append(wendugao.SelectRandomString() + ", "); } if (Tools.Random.Next(200) >= 100 && model.DailyForecast[todayIndex].Humidity > 80) { decoration.Append(shiduda[0] + ", "); } if (model.NowWeather.Visibility != null) { if (Tools.Random.Next(200) >= 100 && model.NowWeather.Visibility.KM < 0.5) { decoration.Append(nengjiandudi[0] + ", "); } } if (Tools.Random.Next(200) >= 100) { switch (主语) { case WeatherCondition.unknown: return(loader.GetString("unknown_weather")); case WeatherCondition.sunny: case WeatherCondition.few_clouds: case WeatherCondition.partly_cloudy: case WeatherCondition.calm: case WeatherCondition.light_breeze: case WeatherCondition.moderate: case WeatherCondition.fresh_breeze: decoration.Append(haotianqi.SelectRandomString() + ", "); break; case WeatherCondition.overcast: case WeatherCondition.cloudy: case WeatherCondition.windy: break; case WeatherCondition.strong_breeze: case WeatherCondition.high_wind: break; case WeatherCondition.gale: case WeatherCondition.strong_gale: case WeatherCondition.storm: case WeatherCondition.violent_storm: case WeatherCondition.hurricane: case WeatherCondition.tornado: case WeatherCondition.tropical_storm: decoration.Append(huaitianqi.SelectRandomString() + ", "); break; case WeatherCondition.shower_rain: break; case WeatherCondition.heavy_shower_rain: case WeatherCondition.thundershower: case WeatherCondition.heavy_thunderstorm: case WeatherCondition.hail: decoration.Append(huaitianqi.SelectRandomString() + ", "); break; case WeatherCondition.light_rain: case WeatherCondition.moderate_rain: break; case WeatherCondition.heavy_rain: case WeatherCondition.extreme_rain: decoration.Append(huaitianqi.SelectRandomString() + ", "); break; case WeatherCondition.drizzle_rain: break; case WeatherCondition.storm_rain: case WeatherCondition.heavy_storm_rain: case WeatherCondition.severe_storm_rain: case WeatherCondition.freezing_rain: decoration.Append(huaitianqi.SelectRandomString() + ", "); break; case WeatherCondition.light_snow: break; case WeatherCondition.moderate_snow: case WeatherCondition.heavy_snow: case WeatherCondition.snowstorm: decoration.Append(huaitianqi.SelectRandomString() + ", "); break; case WeatherCondition.sleet: case WeatherCondition.rain_snow: case WeatherCondition.shower_snow: case WeatherCondition.snow_flurry: break; case WeatherCondition.mist: break; case WeatherCondition.foggy: case WeatherCondition.haze: case WeatherCondition.sand: case WeatherCondition.dust: case WeatherCondition.volcanic_ash: case WeatherCondition.duststorm: case WeatherCondition.sandstorm: decoration.Append(huaitianqi.SelectRandomString() + ", "); break; case WeatherCondition.hot: case WeatherCondition.cold: break; default: break; } } if (decoration.ToString().EndsWith(", ")) { decoration.Remove(decoration.Length - 2, 2); } } switch (主语) { case WeatherCondition.unknown: return(loader.GetString("unknown_weather")); case WeatherCondition.sunny: binyu = sunny.SelectRandomString(); break; case WeatherCondition.cloudy: binyu = cloudy.SelectRandomString(); break; case WeatherCondition.few_clouds: binyu = few_clouds.SelectRandomString(); break; case WeatherCondition.partly_cloudy: binyu = partly_cloudy.SelectRandomString(); break; case WeatherCondition.overcast: binyu = overcast.SelectRandomString(); break; case WeatherCondition.windy: binyu = windy.SelectRandomString(); break; case WeatherCondition.calm: case WeatherCondition.light_breeze: case WeatherCondition.moderate: case WeatherCondition.fresh_breeze: binyu = breeze.SelectRandomString(); break; case WeatherCondition.strong_breeze: case WeatherCondition.high_wind: case WeatherCondition.gale: case WeatherCondition.strong_gale: binyu = gale.SelectRandomString(); break; case WeatherCondition.storm: case WeatherCondition.violent_storm: case WeatherCondition.hurricane: case WeatherCondition.tornado: case WeatherCondition.tropical_storm: binyu = storm.SelectRandomString(); break; case WeatherCondition.shower_rain: case WeatherCondition.heavy_shower_rain: binyu = shower.SelectRandomString(); break; case WeatherCondition.thundershower: case WeatherCondition.heavy_thunderstorm: binyu = thundershower.SelectRandomString(); break; case WeatherCondition.hail: binyu = hail.SelectRandomString(); break; case WeatherCondition.drizzle_rain: case WeatherCondition.light_rain: case WeatherCondition.moderate_rain: binyu = moderate_rain.SelectRandomString(); break; case WeatherCondition.heavy_rain: case WeatherCondition.extreme_rain: binyu = heavy_rain.SelectRandomString(); break; case WeatherCondition.storm_rain: case WeatherCondition.heavy_storm_rain: case WeatherCondition.severe_storm_rain: binyu = storm.SelectRandomString(); break; case WeatherCondition.freezing_rain: binyu = freezing_rain.SelectRandomString(); break; case WeatherCondition.light_snow: case WeatherCondition.moderate_snow: binyu = moderate_snow.SelectRandomString(); break; case WeatherCondition.heavy_snow: binyu = heavy_snow.SelectRandomString(); break; case WeatherCondition.snowstorm: binyu = snowstorm.SelectRandomString(); break; case WeatherCondition.sleet: case WeatherCondition.rain_snow: binyu = sleet.SelectRandomString(); break; case WeatherCondition.shower_snow: case WeatherCondition.snow_flurry: binyu = shower_snow.SelectRandomString(); break; case WeatherCondition.mist: binyu = mist.SelectRandomString(); break; case WeatherCondition.foggy: binyu = foggy.SelectRandomString(); break; case WeatherCondition.haze: binyu = haze.SelectRandomString(); break; case WeatherCondition.sand: case WeatherCondition.dust: binyu = dust.SelectRandomString(); break; case WeatherCondition.volcanic_ash: case WeatherCondition.duststorm: case WeatherCondition.sandstorm: binyu = duststorm.SelectRandomString(); break; case WeatherCondition.hot: binyu = loader.GetString("bianre"); break; case WeatherCondition.cold: binyu = loader.GetString("bianleng"); break; default: return(loader.GetString("unknown_weather")); } return(string.Format(loader.GetString("Glance"), zhuyu, binyu, decoration)); }
internal async void Pin(IList <object> selectedItems) { if (selectedItems == null || selectedItems.Count == 0) { return; } foreach (CityViewModel item in selectedItems) { SecondaryTile s = new SecondaryTile(item.Id, item.City, item.Id, new Uri("ms-appx:///Assets/Square150x150Logo.png"), TileSize.Default); var elem = s.VisualElements; elem.ShowNameOnSquare150x150Logo = true; elem.ShowNameOnSquare310x310Logo = true; elem.ShowNameOnWide310x150Logo = true; elem.Square310x310Logo = new Uri("ms-appx:///Assets/Square310x310Logo.png"); elem.Square44x44Logo = new Uri("ms-appx:///Assets/Square44x44Logo.png"); elem.Square71x71Logo = new Uri("ms-appx:///Assets/Square71x71Logo.png"); elem.Wide310x150Logo = new Uri("ms-appx:///Assets/Wide310x150Logo.png"); await s.RequestCreateAsync(); var index = Array.FindIndex(settings.Cities.SavedCities, x => { return(x.Id == item.Id); }); CitySettingsModel currentCity; if (index == -1 && settings.Cities.LocatedCity != null) { settings.Cities.LocatedCity.IsPinned = true; currentCity = settings.Cities.LocatedCity; } else { settings.Cities.SavedCities[index].IsPinned = true; currentCity = settings.Cities.SavedCities[index]; } var t = ThreadPool.RunAsync(async(work) => { string resstr; try { resstr = await settings.Cities.ReadDataAsync(item.Id.IsNullorEmpty() ? item.City : item.Id, settings.Preferences.DataSource); } catch (Exception) { resstr = await Request.GetRequestAsync(settings, item.Id, item.City, item.longitude, item.latitude, item.zmw); } if (!resstr.IsNullorEmpty()) { var weather = HeWeatherModel.Generate(resstr, settings.Preferences.DataSource); if (weather == null || weather.DailyForecast == null || weather.HourlyForecast == null) { return; } var utcOffset = weather.Location.UpdateTime - weather.Location.UtcTime; var current = DateTimeHelper.ReviseLoc(utcOffset); var todayIndex = Array.FindIndex(weather.DailyForecast, x => { return(x.Date.Date == current.Date); }); var hourIndex = Array.FindIndex(weather.HourlyForecast, x => { return((x.DateTime - current).TotalSeconds > 0); }); if (todayIndex < 0) { todayIndex = 0; } if (hourIndex < 0) { hourIndex = 0; } var isNight = Generator.CalcIsNight(weather.Location.UpdateTime, weather.DailyForecast[todayIndex].SunRise, weather.DailyForecast[todayIndex].SunSet, new Models.Location(currentCity.Latitude, currentCity.Longitude)); var glanceFull = Glance.GenerateGlanceDescription(weather, isNight, settings.Preferences.TemperatureParameter, DateTime.Now); var glance = Glance.GenerateShortDescription(weather, isNight); var uri = await settings.Immersive.GetCurrentBackgroundAsync(weather.NowWeather.Now.Condition, isNight); Sender.CreateSubTileNotification(await Generator.CreateAll(currentCity, weather, current), item.Id); } }); } }
private async Task Init(SettingsModel settings, CitySettingsModel currentCity) { string resstr = await Request.GetRequestAsync(settings, currentCity); if (!resstr.IsNullorEmpty()) { var fetchresult = HeWeatherModel.Generate(resstr, settings.Preferences.DataSource); if (fetchresult == null || fetchresult.DailyForecast == null || fetchresult.HourlyForecast == null) { return; } var utcOffset = fetchresult.Location.UpdateTime - fetchresult.Location.UtcTime; var current = DateTimeHelper.ReviseLoc(utcOffset); try { Sender.CreateMainTileQueue(await Generator.CreateAll(currentCity, fetchresult, current)); } catch (Exception) { } try { if (UserProfilePersonalizationSettings.IsSupported() && settings.Preferences.SetWallPaper) { var todayIndex = Array.FindIndex(fetchresult.DailyForecast, x => { return(x.Date.Date == current.Date); }); if (current.Hour <= 7) { todayIndex--; } if (todayIndex < 0) { todayIndex = 0; } TimeSpan sunRise, sunSet; if (fetchresult.DailyForecast[todayIndex].SunRise == default(TimeSpan) || fetchresult.DailyForecast[todayIndex].SunSet == default(TimeSpan)) { sunRise = Core.LunarCalendar.SunRiseSet.GetRise(new Models.Location(currentCity.Latitude, currentCity.Longitude), current); sunSet = Core.LunarCalendar.SunRiseSet.GetSet(new Models.Location(currentCity.Latitude, currentCity.Longitude), current); } else { sunRise = fetchresult.DailyForecast[todayIndex].SunRise; sunSet = fetchresult.DailyForecast[todayIndex].SunSet; } var file = await FileIOHelper.GetFilebyUriAsync(await settings.Immersive.GetCurrentBackgroundAsync(fetchresult.NowWeather.Now.Condition, WeatherModel.CalculateIsNight(current, sunRise, sunSet))); var lFile = await FileIOHelper.CreateWallPaperFileAsync(Guid.NewGuid().ToString() + ".png"); var d = PointerDevice.GetPointerDevices(); var m = d.ToArray(); var scaleFactor = DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel; var size = new Size(m[0].PhysicalDeviceRect.Width, m[0].PhysicalDeviceRect.Height); var ratio = size.Height / size.Width; var cropSize = new Size(); double scale; var startPoint = new Point(); using (var stream = await file.OpenReadAsync()) { var bitmap = new BitmapImage(); await bitmap.SetSourceAsync(stream); var width = bitmap.PixelWidth; var height = bitmap.PixelHeight; var center = new Point(width / 2, height / 2); if (width * ratio >= height) { cropSize.Width = height / ratio; cropSize.Height = height; scale = size.Height / height; } else { cropSize.Width = width; cropSize.Height = width * ratio; scale = size.Width / width; } startPoint.X = center.X - cropSize.Width / 2; startPoint.Y = center.Y - cropSize.Height / 2; } await ImagingHelper.CropandScaleAsync(file, lFile, startPoint, cropSize, scale); var uc = await ImagingHelper.SetWallpaperAsync(lFile); } } catch (Exception) { } if (settings.Preferences.EnableMorning) { var shu1 = settings.Preferences.MorningNoteTime.TotalHours; var tomorrow8 = DateTime.Now.Hour > shu1 ? (DateTime.Today.AddDays(1)).AddHours(shu1) : (DateTime.Today.AddHours(shu1)); try { Sender.CreateScheduledToastNotification(await(Generator.CreateToast(fetchresult, currentCity, settings, DateTimeHelper.ReviseLoc(tomorrow8, utcOffset))), tomorrow8, "MorningToast"); } catch (Exception) { } } if (settings.Preferences.EnableEvening) { var shu2 = settings.Preferences.EveningNoteTime.TotalHours; var tomorrow20 = DateTime.Now.Hour > shu2 ? (DateTime.Today.AddDays(1)).AddHours(shu2) : (DateTime.Today.AddHours(shu2)); try { Sender.CreateScheduledToastNotification(await(Generator.CreateToast(fetchresult, currentCity, settings, DateTimeHelper.ReviseLoc(tomorrow20, utcOffset))), tomorrow20, "EveningToast"); } catch (Exception) { } } if (settings.Preferences.EnableAlarm) { if (!fetchresult.Alarms.IsNullorEmpty() && (DateTime.Now - settings.Preferences.LastAlertTime).TotalDays > 1) { Sender.CreateBadge(Generator.GenerateAlertBadge()); Sender.CreateToast(Generator.CreateAlertToast(fetchresult, currentCity).GetXml()); } else { Sender.ClearBadge(); } var str = Generator.CalculateWeatherAlarm(fetchresult, currentCity, settings, DateTimeHelper.ReviseLoc(DateTime.Now, utcOffset)); if (!str.IsNullorEmpty() && str.Length > 1 && (DateTime.Now - settings.Preferences.LastAlarmTime).TotalDays > 1) { Sender.CreateToast(Generator.CreateAlarmToast(str, currentCity).GetXml()); } } await settings.Cities.SaveDataAsync(currentCity.Id.IsNullorEmpty()?currentCity.City : currentCity.Id, resstr, settings.Preferences.DataSource); currentCity.Update(); if (settings.Cities.CurrentIndex != -1) { settings.Cities.SavedCities[settings.Cities.CurrentIndex] = currentCity; } else { settings.Cities.LocatedCity = currentCity; } settings.Cities.Save(); } }
private async Task FetchDataAsync() { await SearchExistingDataAsync(); string resstr; if (currentCityModel.Id != null) { try { if (!storedDatas.IsNullorEmpty()) { resstr = storedDatas; fetchresult = HeWeatherModel.Generate(resstr, settings.Preferences.DataSource); return; } resstr = await Core.Models.Request.GetRequestAsync(settings, currentCityModel); if (resstr.IsNullorEmpty()) { await Task.Delay(1000); this.OnFetchDataFailed(this, new FetchDataFailedEventArgs("Network_Error")); return; } fetchresult = HeWeatherModel.Generate(resstr, settings.Preferences.DataSource); if (fetchresult.Status != HeWeatherStatus.ok) { await Task.Delay(1000); this.OnFetchDataFailed(this, new FetchDataFailedEventArgs("Service_Unavailable")); return; } var task = ThreadPool.RunAsync(async(work) => { await settings.Cities.SaveDataAsync(currentCityModel.Id.IsNullorEmpty() ? currentCityModel.City : currentCityModel.Id, resstr, settings.Preferences.DataSource); currentCityModel.Update(); if (settings.Cities.CurrentIndex != -1) { settings.Cities.SavedCities[settings.Cities.CurrentIndex] = currentCityModel; } else { settings.Cities.LocatedCity = currentCityModel; } settings.Cities.Save(); }); return; } catch (Exception) { await Task.Delay(1000); this.OnFetchDataFailed(this, new FetchDataFailedEventArgs("Service_Unavailable")); return; } } else { throw new NullReferenceException(); } }