mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-16 11:48:06 +01:00
[Light Switch] Fixed issue where number boxes in select location dialog were sometimes not updating (#43514)
<!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? --> ## Summary of the Pull Request Ensure that even if the user enters the same values the correct buttons are enabled and the dialog shows the correct info. <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [x] Closes: #43511 - [x] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [x] **Localization:** All end-user-facing strings can be localized
This commit is contained in:
@@ -199,10 +199,8 @@
|
|||||||
<ContentDialog
|
<ContentDialog
|
||||||
x:Name="LocationDialog"
|
x:Name="LocationDialog"
|
||||||
x:Uid="LightSwitch_LocationDialog"
|
x:Uid="LightSwitch_LocationDialog"
|
||||||
Closed="LocationDialog_Closed"
|
|
||||||
IsPrimaryButtonEnabled="False"
|
IsPrimaryButtonEnabled="False"
|
||||||
IsSecondaryButtonEnabled="True"
|
IsSecondaryButtonEnabled="True"
|
||||||
Opened="LocationDialog_Opened"
|
|
||||||
PrimaryButtonClick="LocationDialog_PrimaryButtonClick"
|
PrimaryButtonClick="LocationDialog_PrimaryButtonClick"
|
||||||
PrimaryButtonStyle="{StaticResource AccentButtonStyle}">
|
PrimaryButtonStyle="{StaticResource AccentButtonStyle}">
|
||||||
<Grid RowSpacing="16">
|
<Grid RowSpacing="16">
|
||||||
|
|||||||
@@ -35,9 +35,6 @@ namespace Microsoft.PowerToys.Settings.UI.Views
|
|||||||
private readonly IFileSystemWatcher fileSystemWatcher;
|
private readonly IFileSystemWatcher fileSystemWatcher;
|
||||||
private readonly DispatcherQueue dispatcherQueue;
|
private readonly DispatcherQueue dispatcherQueue;
|
||||||
private bool suppressViewModelUpdates;
|
private bool suppressViewModelUpdates;
|
||||||
private bool suppressLatLonChange = true;
|
|
||||||
private bool latBoxLoaded;
|
|
||||||
private bool lonBoxLoaded;
|
|
||||||
|
|
||||||
private LightSwitchViewModel ViewModel { get; set; }
|
private LightSwitchViewModel ViewModel { get; set; }
|
||||||
|
|
||||||
@@ -132,8 +129,6 @@ namespace Microsoft.PowerToys.Settings.UI.Views
|
|||||||
// Since we use this mode, we can remove the selected city data.
|
// Since we use this mode, we can remove the selected city data.
|
||||||
this.ViewModel.SelectedCity = null;
|
this.ViewModel.SelectedCity = null;
|
||||||
|
|
||||||
this.suppressLatLonChange = false;
|
|
||||||
|
|
||||||
// ViewModel.CityTimesText = $"Sunrise: {result.SunriseHour}:{result.SunriseMinute:D2}\n" + $"Sunset: {result.SunsetHour}:{result.SunsetMinute:D2}";
|
// ViewModel.CityTimesText = $"Sunrise: {result.SunriseHour}:{result.SunriseMinute:D2}\n" + $"Sunset: {result.SunsetHour}:{result.SunsetMinute:D2}";
|
||||||
this.SyncButton.IsEnabled = true;
|
this.SyncButton.IsEnabled = true;
|
||||||
this.SyncLoader.IsActive = false;
|
this.SyncLoader.IsActive = false;
|
||||||
@@ -157,23 +152,10 @@ namespace Microsoft.PowerToys.Settings.UI.Views
|
|||||||
|
|
||||||
private void LatLonBox_ValueChanged(NumberBox sender, NumberBoxValueChangedEventArgs args)
|
private void LatLonBox_ValueChanged(NumberBox sender, NumberBoxValueChangedEventArgs args)
|
||||||
{
|
{
|
||||||
if (this.suppressLatLonChange)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
double latitude = this.LatitudeBox.Value;
|
double latitude = this.LatitudeBox.Value;
|
||||||
double longitude = this.LongitudeBox.Value;
|
double longitude = this.LongitudeBox.Value;
|
||||||
|
|
||||||
if (double.IsNaN(latitude) || double.IsNaN(longitude))
|
if (double.IsNaN(latitude) || double.IsNaN(longitude) || (latitude == 0 && longitude == 0))
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
double viewModelLatitude = double.TryParse(this.ViewModel.Latitude, out var lat) ? lat : 0.0;
|
|
||||||
double viewModelLongitude = double.TryParse(this.ViewModel.Longitude, out var lon) ? lon : 0.0;
|
|
||||||
|
|
||||||
if (Math.Abs(latitude - viewModelLatitude) < 0.0001 && Math.Abs(longitude - viewModelLongitude) < 0.0001)
|
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -183,7 +165,6 @@ namespace Microsoft.PowerToys.Settings.UI.Views
|
|||||||
this.ViewModel.LocationPanelLightTimeMinutes = (result.SunriseHour * 60) + result.SunriseMinute;
|
this.ViewModel.LocationPanelLightTimeMinutes = (result.SunriseHour * 60) + result.SunriseMinute;
|
||||||
this.ViewModel.LocationPanelDarkTimeMinutes = (result.SunsetHour * 60) + result.SunsetMinute;
|
this.ViewModel.LocationPanelDarkTimeMinutes = (result.SunsetHour * 60) + result.SunsetMinute;
|
||||||
|
|
||||||
// Show the panel with these values
|
|
||||||
this.LocationResultPanel.Visibility = Visibility.Visible;
|
this.LocationResultPanel.Visibility = Visibility.Visible;
|
||||||
if (this.LocationDialog != null)
|
if (this.LocationDialog != null)
|
||||||
{
|
{
|
||||||
@@ -214,37 +195,6 @@ namespace Microsoft.PowerToys.Settings.UI.Views
|
|||||||
this.SunriseModeChartState();
|
this.SunriseModeChartState();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LocationDialog_Opened(ContentDialog sender, ContentDialogOpenedEventArgs args)
|
|
||||||
{
|
|
||||||
this.LatitudeBox.Loaded += LatLonBox_Loaded;
|
|
||||||
this.LongitudeBox.Loaded += LatLonBox_Loaded;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void LocationDialog_Closed(ContentDialog sender, ContentDialogClosedEventArgs args)
|
|
||||||
{
|
|
||||||
this.LatitudeBox.Loaded -= LatLonBox_Loaded;
|
|
||||||
this.LongitudeBox.Loaded -= LatLonBox_Loaded;
|
|
||||||
this.latBoxLoaded = false;
|
|
||||||
this.lonBoxLoaded = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void LatLonBox_Loaded(object sender, RoutedEventArgs e)
|
|
||||||
{
|
|
||||||
if (sender is NumberBox numberBox && numberBox == this.LatitudeBox && this.LatitudeBox.IsLoaded)
|
|
||||||
{
|
|
||||||
this.latBoxLoaded = true;
|
|
||||||
}
|
|
||||||
else if (sender is NumberBox numberBox2 && numberBox2 == this.LongitudeBox && this.LongitudeBox.IsLoaded)
|
|
||||||
{
|
|
||||||
this.lonBoxLoaded = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.latBoxLoaded && this.lonBoxLoaded)
|
|
||||||
{
|
|
||||||
this.suppressLatLonChange = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
private void ViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||||
{
|
{
|
||||||
if (this.suppressViewModelUpdates)
|
if (this.suppressViewModelUpdates)
|
||||||
|
|||||||
@@ -562,7 +562,7 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
|||||||
|
|
||||||
SyncButtonInformation = SelectedCity != null
|
SyncButtonInformation = SelectedCity != null
|
||||||
? SelectedCity.City
|
? SelectedCity.City
|
||||||
: $"{Latitude},{Longitude}";
|
: $"{Latitude}°,{Longitude}°";
|
||||||
|
|
||||||
double lat = double.Parse(ModuleSettings.Properties.Latitude.Value, CultureInfo.InvariantCulture);
|
double lat = double.Parse(ModuleSettings.Properties.Latitude.Value, CultureInfo.InvariantCulture);
|
||||||
double lon = double.Parse(ModuleSettings.Properties.Longitude.Value, CultureInfo.InvariantCulture);
|
double lon = double.Parse(ModuleSettings.Properties.Longitude.Value, CultureInfo.InvariantCulture);
|
||||||
|
|||||||
Reference in New Issue
Block a user