private async void MModel_FetchDataComplete(object sender, FetchDataCompleteEventArgs e) { var loader = new ResourceLoader(); UpdateIndText.Text = loader.GetString("RefreshComplete"); LoadingDot.IsActive = false; Forecast0.SetCondition(Context.Forecast0, Context.IsNight); Forecast1.SetCondition(Context.Forecast1, Context.IsNight); Forecast2.SetCondition(Context.Forecast2, Context.IsNight); Forecast3.SetCondition(Context.Forecast3, Context.IsNight); Forecast4.SetCondition(Context.Forecast4, Context.IsNight); if ((Context.Condition == WeatherCondition.sunny) || (Context.Condition == WeatherCondition.windy) || (Context.Condition == WeatherCondition.calm) || (Context.Condition == WeatherCondition.light_breeze) || (Context.Condition == WeatherCondition.moderate) || (Context.Condition == WeatherCondition.fresh_breeze) || (Context.Condition == WeatherCondition.strong_breeze) || (Context.Condition == WeatherCondition.high_wind) || (Context.Condition == WeatherCondition.gale)) { if (!Context.IsNight) { var s = new SolidColorBrush(Colors.Black); baba.ChangeColor(s); RefreshButton.Foreground = s; } else { baba.ChangeColor(new SolidColorBrush(Colors.White)); RefreshButton.Foreground = new SolidColorBrush(Colors.White); } } else { baba.ChangeColor(new SolidColorBrush(Colors.White)); RefreshButton.Foreground = new SolidColorBrush(Colors.White); } WeatherCanvas.ChangeCondition(Context.Condition, Context.IsNight, Context.IsSummer); if (Context.Aqi == null) { AQIPanel.Visibility = Visibility.Collapsed; } if (Context.Comf == null && Context.Cw == null && Context.Drsg == null) { SuggestionPanel.Visibility = Visibility.Collapsed; } switch (Context.source) { case DataSource.HeWeather: DataSourceImage.Source = new BitmapImage(new Uri("http://heweather.com/weather/images/logo.jpg")); DataSourceContent.Text = loader.GetString("HeWeather"); break; case DataSource.Caiyun: DataSourceImage.Source = new BitmapImage(new Uri("ms-appx:///Assets/Logos/Caiyun.png")); DataSourceContent.Text = loader.GetString("CaiyunWeather"); break; case DataSource.Wunderground: DataSourceImage.Source = new BitmapImage(new Uri("ms-appx:///Assets/Logos/Wunder.png")); DataSourceContent.Text = string.Empty; break; default: break; } baba.ChangeCondition(Context.Condition, Context.IsNight, Context.City, Context.NowL, Context.NowH); ScrollableRoot.RefreshComplete(); if (LoadingDot.Visibility == Visibility.Collapsed) { TempraturePathAnimation.Completed += (s, v) => { RefreshCompleteAni.Begin(); }; TempraturePathAnimation.Begin(); AQIAni.Begin(); DetailGrid0Play(); DetailGrid1Play(); DetailGrid2Play(); DetailGrid3Play(); DetailGrid4Play(); DetailGrid6Play(); DetailGrid7Play(); } try { if (Windows.System.UserProfile.UserProfilePersonalizationSettings.IsSupported() && Context.SetWallPaper) { var file = await FileIOHelper.GetFilebyUriAsync(await Context.GetCurrentBackgroundAsync()); var lFile = await FileIOHelper.CreateWallPaperFileAsync(Guid.NewGuid().ToString() + ".png"); var d = Windows.Devices.Input.PointerDevice.GetPointerDevices(); var m = d.ToArray(); var scaleFactor = Windows.Graphics.Display.DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel; var size = new Size(m[0].PhysicalDeviceRect.Width, m[0].PhysicalDeviceRect.Height); var ratio = size.Height / size.Width; size.Height *= scaleFactor; size.Width *= scaleFactor; 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) { } }
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(); } }