Skip to content

Commit

Permalink
[refactor] 使用C# 13部分属性
Browse files Browse the repository at this point in the history
  • Loading branch information
zxbmmmmmmmmm committed Nov 24, 2024
1 parent 460c55d commit 5e908d5
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 44 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="CommunityToolkit.Mvvm">
<Version>8.3.2</Version>
<Version>8.4.0-preview2</Version>
</PackageReference>
<PackageReference Include="Microsoft.Extensions.DependencyInjection">
<Version>8.0.1</Version>
Expand Down
4 changes: 2 additions & 2 deletions FluentWeather.Uwp/FluentWeather.Uwp.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<LangVersion>latestMajor</LangVersion>
<LangVersion>preview</LangVersion>
<GenerateAppInstallerFile>False</GenerateAppInstallerFile>
<PackageCertificateThumbprint>E39CF1FCA51EDC5BD1FCA218F4565B737622C059</PackageCertificateThumbprint>
<AppxPackageSigningTimestampDigestAlgorithm>SHA256</AppxPackageSigningTimestampDigestAlgorithm>
Expand Down Expand Up @@ -635,7 +635,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="CommunityToolkit.Mvvm">
<Version>8.3.2</Version>
<Version>8.4.0-preview2</Version>
</PackageReference>
<PackageReference Include="CommunityToolkit.Uwp.Controls.Primitives">
<Version>8.1.240916</Version>
Expand Down
11 changes: 7 additions & 4 deletions FluentWeather.Uwp/ViewModels/CitiesPageViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,16 @@ namespace FluentWeather.Uwp.ViewModels;
public sealed partial class CitiesPageViewModel:ObservableObject
{
[ObservableProperty]
private ObservableCollection<GeolocationBase> _cities;
public partial ObservableCollection<GeolocationBase> Cities { get; set; }

[ObservableProperty]
public GeolocationBase _currentCity;
public partial GeolocationBase CurrentCity { get; set; }

[ObservableProperty]
private string _query;
public partial string Query { get; set; }

[ObservableProperty]
private List<GeolocationBase> _suggestedCities;
public partial List<GeolocationBase> SuggestedCities { get; set; }
public static CitiesPageViewModel Instance { get; private set; }
public CitiesPageViewModel()
{
Expand Down
6 changes: 3 additions & 3 deletions FluentWeather.Uwp/ViewModels/DailyForecastDialogViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,18 @@ namespace FluentWeather.Uwp.ViewModels;
public sealed partial class DailyForecastDialogViewModel:ObservableObject
{
[ObservableProperty]
List<WeatherDailyBase> _dailyForecasts = new();
public partial List<WeatherDailyBase> DailyForecasts { get; set; } = new();

[ObservableProperty]
[NotifyPropertyChangedFor(nameof(SunRise))]
[NotifyPropertyChangedFor(nameof(SunSet))]
WeatherDailyBase _selected;
public partial WeatherDailyBase Selected { get; set; }

public DateTime? SunRise => ((IAstronomic)Selected).SunRise;

public DateTime? SunSet => ((IAstronomic)Selected).SunSet;

[ObservableProperty]
List<WeatherHourlyBase> _hourlyForecasts = new();
public partial List<WeatherHourlyBase> HourlyForecasts { get; set; } = new();

}
6 changes: 3 additions & 3 deletions FluentWeather.Uwp/ViewModels/DailyViewPageViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ namespace FluentWeather.Uwp.ViewModels;
public sealed partial class DailyViewViewModel : ObservableObject
{
[ObservableProperty]
private List<WeatherBase> _dailyForecasts;
private partial List<WeatherBase> DailyForecasts { get; set; }

[ObservableProperty]
private List<WeatherBase> _hourlyForecasts;
private partial List<WeatherBase> HourlyForecasts { get; set; }

[ObservableProperty]
private WeatherBase _selected;
private partial WeatherBase Selected { get; set; }
public DailyViewViewModel(List<WeatherBase> daily,List<WeatherBase> hourly)
{
DailyForecasts = daily;
Expand Down
56 changes: 26 additions & 30 deletions FluentWeather.Uwp/ViewModels/MainPageViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,62 +14,62 @@

namespace FluentWeather.Uwp.ViewModels;

public sealed partial class MainPageViewModel : ObservableObject,IMainPageViewModel
public sealed partial class MainPageViewModel : ObservableObject, IMainPageViewModel
{
[ObservableProperty]
[NotifyPropertyChangedFor(nameof(DailyForecasts7D))]
[NotifyPropertyChangedFor(nameof(WeatherToday))]
private List<WeatherDailyBase> _dailyForecasts =[];
public partial List<WeatherDailyBase> DailyForecasts { get; set; } = new();

public List<WeatherDailyBase> DailyForecasts7D =>(DailyForecasts.Count <7)? DailyForecasts.GetRange(0,DailyForecasts.Count) : DailyForecasts.GetRange(0, 7);
public List<WeatherDailyBase> DailyForecasts7D => (DailyForecasts.Count < 7) ? DailyForecasts.GetRange(0, DailyForecasts.Count) : DailyForecasts.GetRange(0, 7);

[ObservableProperty]
[NotifyPropertyChangedFor(nameof(HourlyForecasts24H))]
private List<WeatherHourlyBase> _hourlyForecasts = [];
public partial List<WeatherHourlyBase> HourlyForecasts { get; set; } = new();

public List<WeatherHourlyBase> HourlyForecasts24H => (HourlyForecasts.Count < 24) ? HourlyForecasts.GetRange(0, HourlyForecasts.Count) : HourlyForecasts.GetRange(0, 24);

public WeatherDailyBase WeatherToday => DailyForecasts.FirstOrDefault();

[ObservableProperty]
[NotifyPropertyChangedFor(nameof(WeatherToday))]
private HistoricalDailyWeatherBase _historicalWeather;
public partial HistoricalDailyWeatherBase HistoricalWeather { get; set; }

[ObservableProperty]
private List<WeatherWarningBase> _warnings ;
public partial List<WeatherWarningBase> Warnings { get; set; }

[ObservableProperty]
private WeatherNowBase _weatherNow;
public partial WeatherNowBase WeatherNow { get; set; }

[ObservableProperty]
private string _weatherDescription;
public partial string WeatherDescription { get; set; }

[ObservableProperty]
private DateTime? _sunRise;
public partial DateTime? SunRise { get; set; }

[ObservableProperty]
private DateTime? _sunSet;
public partial DateTime? SunSet { get; set; }

[ObservableProperty]
private GeolocationBase _currentGeolocation;
public partial GeolocationBase CurrentGeolocation { get; set; }

[ObservableProperty]
private List<IndicesBase> _indices;
public partial List<IndicesBase> Indices { get; set; }

[ObservableProperty]
private List<Announcement> _announcements = Announcement.GetAvailableAnnouncements().Where(p => !Common.Settings.ClosedAnnouncements.Contains(p.Name)).ToList();
public partial List<Announcement> Announcements { get; set; } = Announcement.GetAvailableAnnouncements().Where(p => !Common.Settings.ClosedAnnouncements.Contains(p.Name)).ToList();

[ObservableProperty]
[NotifyPropertyChangedFor(nameof(TotalPrecipitation))]
[NotifyPropertyChangedFor(nameof(HasPrecipitation))]
private PrecipitationBase _precipitation;
public partial PrecipitationBase Precipitation { get; set; }

[ObservableProperty]
private AirConditionBase _airCondition;
public partial AirConditionBase AirCondition { get; set; }

public double? TotalPrecipitation => Precipitation?.Precipitations?.Sum(p => p.Precipitation);
public bool HasPrecipitation => TotalPrecipitation > 0;
public static MainPageViewModel Instance{ get; private set; }
public static MainPageViewModel Instance { get; private set; }
public MainPageViewModel()
{
Instance = this;
Expand Down Expand Up @@ -100,11 +100,11 @@ public async Task GetHourlyForecast(Location location)
if (hourlyProvider is null) return;
var hourlyForecasts = await hourlyProvider.GetHourlyForecasts(location.Longitude, location.Latitude);

foreach ( var forecast in hourlyForecasts )
foreach (var forecast in hourlyForecasts)
{
if (CurrentGeolocation.UtcOffset is not null)
{
if(forecast.Time.Kind is not DateTimeKind.Utc)
if (forecast.Time.Kind is not DateTimeKind.Utc)
{
forecast.Time = forecast.Time.ToUniversalTime();
}
Expand Down Expand Up @@ -146,9 +146,9 @@ public async Task GetWeatherPrecipitations(Location location)
var precipProvider = Locator.ServiceProvider.GetService<IPrecipitationProvider>();
if (precipProvider is null) return;
var precip = await precipProvider.GetPrecipitations(location.Longitude, location.Latitude);
if(precip.Summary is "" or null)
if (precip.Summary is "" or null)
{
precip.Summary = ResourceLoader.GetForCurrentView().GetString(precip?.Precipitations?.Sum(p => p.Precipitation)> 0 ? "HasPrecipitationText" : "NoPrecipitationText");
precip.Summary = ResourceLoader.GetForCurrentView().GetString(precip?.Precipitations?.Sum(p => p.Precipitation) > 0 ? "HasPrecipitationText" : "NoPrecipitationText");
}
Precipitation = precip;
}
Expand Down Expand Up @@ -179,7 +179,6 @@ public async Task Refresh()
try
{
await Task.WhenAll(tasks.ToArray());

}
finally
{
Expand All @@ -195,9 +194,7 @@ public async Task Refresh()
}
catch
{

}

}
foreach (var hourly in HourlyForecasts)
{
Expand All @@ -208,13 +205,11 @@ public async Task Refresh()
}
await CacheHelper.CacheAsync(this);
}

}
catch(HttpResponseException e)
catch (HttpResponseException e)
{
InfoBarHelper.Error(ResourceLoader.GetForCurrentView().GetString("GetDataFailed"),e.Message);
InfoBarHelper.Error(ResourceLoader.GetForCurrentView().GetString("GetDataFailed"), e.Message);
}

}

[RelayCommand]
Expand All @@ -239,6 +234,7 @@ public async Task GetWeather(GeolocationBase geo)
}
await GetHistoricalWeather(CurrentGeolocation.Location);
}

[RelayCommand]
public async Task GetHistoricalWeather(Location location)
{
Expand All @@ -251,10 +247,10 @@ public void SpeechWeather()
var loader = ResourceLoader.GetForCurrentView();
var text = $"{CurrentGeolocation.Name},{DailyForecasts[0].Description},{loader.GetString("HighestTemperature")}:{DailyForecasts[0].MaxTemperature}°,{loader.GetString("LowestTemperature")}:{DailyForecasts[0].MinTemperature}°";
text += $",{loader.GetString("AirQuality")}:{AirCondition.AqiCategory}";
if(!TTSHelper.IsPlaying)
if (!TTSHelper.IsPlaying)
{
InfoBarHelper.Info(loader.GetString("SpeechWeather"), text, 9000 , false);
InfoBarHelper.Info(loader.GetString("SpeechWeather"), text, 9000, false);
}
TTSHelper.Speech(text);
}
}
}
2 changes: 1 addition & 1 deletion FluentWeather.Uwp/ViewModels/RootPageViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ namespace FluentWeather.Uwp.ViewModels;
public sealed partial class RootPageViewModel:ObservableObject
{
[ObservableProperty]
private bool _isPaneOpen = false;
private partial bool IsPaneOpen { get; set; }

[RelayCommand]
private void TogglePane()
Expand Down

0 comments on commit 5e908d5

Please sign in to comment.