mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-23 01:44:26 +08:00
changed.优化了天气组件
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text.Json;
|
||||
using LanMountainDesktop.Models;
|
||||
@@ -82,7 +82,9 @@ public sealed class AppSettingsService
|
||||
}
|
||||
|
||||
var json = JsonSerializer.Serialize(snapshotToPersist, SerializerOptions);
|
||||
File.WriteAllText(_settingsPath, json);
|
||||
var tempPath = $"{_settingsPath}.{Guid.NewGuid():N}.tmp";
|
||||
File.WriteAllText(tempPath, json);
|
||||
File.Move(tempPath, _settingsPath, overwrite: true);
|
||||
|
||||
var writeTimeUtc = File.Exists(_settingsPath)
|
||||
? File.GetLastWriteTimeUtc(_settingsPath)
|
||||
|
||||
@@ -57,7 +57,9 @@ public sealed class ClockAirAppSettingsStore
|
||||
Directory.CreateDirectory(directory);
|
||||
}
|
||||
|
||||
File.WriteAllText(_settingsPath, JsonSerializer.Serialize(normalized, SerializerOptions));
|
||||
var tempPath = $"{_settingsPath}.{Guid.NewGuid():N}.tmp";
|
||||
File.WriteAllText(tempPath, JsonSerializer.Serialize(normalized, SerializerOptions));
|
||||
File.Move(tempPath, _settingsPath, overwrite: true);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
@@ -100,8 +100,9 @@ internal sealed class FusedDesktopLayoutService : IFusedDesktopLayoutService
|
||||
Directory.CreateDirectory(directory);
|
||||
}
|
||||
|
||||
var json = JsonSerializer.Serialize(snapshot, JsonOptions);
|
||||
File.WriteAllText(ConfigFilePath, json);
|
||||
var tempPath = $"{ConfigFilePath}.{Guid.NewGuid():N}.tmp";
|
||||
File.WriteAllText(tempPath, JsonSerializer.Serialize(snapshot, JsonOptions));
|
||||
File.Move(tempPath, ConfigFilePath, overwrite: true);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
@@ -197,7 +197,9 @@ public sealed class LauncherSettingsService
|
||||
}
|
||||
|
||||
var json = JsonSerializer.Serialize(snapshot, SerializerOptions);
|
||||
File.WriteAllText(_settingsPath, json);
|
||||
var tempPath = $"{_settingsPath}.{Guid.NewGuid():N}.tmp";
|
||||
File.WriteAllText(tempPath, json);
|
||||
File.Move(tempPath, _settingsPath, overwrite: true);
|
||||
|
||||
return File.Exists(_settingsPath)
|
||||
? File.GetLastWriteTimeUtc(_settingsPath)
|
||||
|
||||
@@ -358,7 +358,9 @@ internal sealed class SettingsService : ISettingsService
|
||||
Directory.CreateDirectory(directory);
|
||||
}
|
||||
|
||||
File.WriteAllText(_pluginSettingsPath, JsonSerializer.Serialize(document, SerializerOptions));
|
||||
var tempPath = $"{_pluginSettingsPath}.{Guid.NewGuid():N}.tmp";
|
||||
File.WriteAllText(tempPath, JsonSerializer.Serialize(document, SerializerOptions));
|
||||
File.Move(tempPath, _pluginSettingsPath, overwrite: true);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
@@ -440,7 +440,9 @@ public sealed class ZhiJiaoHubCacheService : IDisposable
|
||||
}
|
||||
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(_manifestPath)!);
|
||||
File.WriteAllText(_manifestPath, JsonSerializer.Serialize(manifest, JsonOptions));
|
||||
var tempPath = $"{_manifestPath}.{Guid.NewGuid():N}.tmp";
|
||||
File.WriteAllText(tempPath, JsonSerializer.Serialize(manifest, JsonOptions));
|
||||
File.Move(tempPath, _manifestPath, overwrite: true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -469,7 +471,9 @@ public sealed class ZhiJiaoHubCacheService : IDisposable
|
||||
manifest.Entries[source] = new CacheEntry(images, DateTimeOffset.UtcNow);
|
||||
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(_manifestPath)!);
|
||||
File.WriteAllText(_manifestPath, JsonSerializer.Serialize(manifest, JsonOptions));
|
||||
var tempPath = $"{_manifestPath}.{Guid.NewGuid():N}.tmp";
|
||||
File.WriteAllText(tempPath, JsonSerializer.Serialize(manifest, JsonOptions));
|
||||
File.Move(tempPath, _manifestPath, overwrite: true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<TextBlock x:Name="ConditionTextBlock" Text="Loading" FontSize="16" FontWeight="SemiBold" TextTrimming="CharacterEllipsis" />
|
||||
</StackPanel>
|
||||
<components:WeatherIconView x:Name="MainIcon" Grid.Column="1" Width="56" Height="56" Margin="0,0,10,0" />
|
||||
<TextBlock x:Name="TemperatureTextBlock" Grid.Column="2" Text="--°" FontSize="56" FontWeight="Bold" VerticalAlignment="Center" />
|
||||
<TextBlock x:Name="TemperatureTextBlock" Grid.Column="2" Text="--°" FontSize="56" FontWeight="Bold" VerticalAlignment="Center" ClipToBounds="False" Padding="0,2,0,0" />
|
||||
</Grid>
|
||||
<UniformGrid x:Name="MetricGrid" Grid.Row="1" Rows="1" Columns="3" />
|
||||
<Border Grid.Row="2" Background="{DynamicResource SurfaceColor}" CornerRadius="{DynamicResource DesignCornerRadiusMd}" Padding="10,8">
|
||||
|
||||
@@ -89,7 +89,7 @@ public partial class ExtendedWeatherWidget : WeatherWidgetBase
|
||||
var inner = (StackPanel)panel.Child!;
|
||||
inner.Children.Add(new TextBlock { Text = FormatTime(item.Time), Foreground = Brush(CurrentPalette.TextSecondary), FontSize = 10, TextAlignment = Avalonia.Media.TextAlignment.Center, HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Center });
|
||||
inner.Children.Add(new WeatherIconView { Width = 26, Height = 26, Source = WeatherIconAssetResolver.LoadIcon(CurrentVisualStyleId, item.WeatherCode, item.WeatherText) });
|
||||
inner.Children.Add(new TextBlock { Text = FormatTemperature(item.TemperatureC), Foreground = Brush(CurrentPalette.TextPrimary), FontWeight = Avalonia.Media.FontWeight.SemiBold, TextAlignment = Avalonia.Media.TextAlignment.Center, HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Center, FontSize = 12 });
|
||||
inner.Children.Add(new TextBlock { Text = FormatTemperature(item.TemperatureC), Foreground = Brush(CurrentPalette.TextPrimary), FontWeight = Avalonia.Media.FontWeight.SemiBold, TextAlignment = Avalonia.Media.TextAlignment.Center, HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Center, FontSize = 12, ClipToBounds = false });
|
||||
HourlyGrid.Children.Add(panel);
|
||||
}
|
||||
}
|
||||
@@ -111,7 +111,7 @@ public partial class ExtendedWeatherWidget : WeatherWidgetBase
|
||||
var inner = (StackPanel)panel.Child!;
|
||||
inner.Children.Add(new TextBlock { Text = ResolveDayLabel(item.Date), Foreground = Brush(CurrentPalette.TextSecondary), FontSize = 10, TextAlignment = Avalonia.Media.TextAlignment.Center, HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Center });
|
||||
inner.Children.Add(new WeatherIconView { Width = 26, Height = 26, Source = WeatherIconAssetResolver.LoadIcon(CurrentVisualStyleId, item.DayWeatherCode, item.DayWeatherText) });
|
||||
inner.Children.Add(new TextBlock { Text = $"{FormatTemperature(item.HighTemperatureC)} / {FormatTemperature(item.LowTemperatureC)}", Foreground = Brush(CurrentPalette.TextPrimary), FontWeight = Avalonia.Media.FontWeight.SemiBold, TextAlignment = Avalonia.Media.TextAlignment.Center, HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Center, FontSize = 11 });
|
||||
inner.Children.Add(new TextBlock { Text = $"{FormatTemperature(item.HighTemperatureC)} / {FormatTemperature(item.LowTemperatureC)}", Foreground = Brush(CurrentPalette.TextPrimary), FontWeight = Avalonia.Media.FontWeight.SemiBold, TextAlignment = Avalonia.Media.TextAlignment.Center, HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Center, FontSize = 11, ClipToBounds = false });
|
||||
DailyGrid.Children.Add(panel);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<Border x:Name="OverlayBorder" />
|
||||
<Grid x:Name="ContentGrid" RowDefinitions="Auto,*" Margin="18,14" RowSpacing="12">
|
||||
<Grid ColumnDefinitions="Auto,*,Auto,Auto" VerticalAlignment="Center">
|
||||
<TextBlock x:Name="TemperatureTextBlock" Text="--°" FontSize="42" FontWeight="Bold" VerticalAlignment="Center" />
|
||||
<TextBlock x:Name="TemperatureTextBlock" Text="--°" FontSize="42" FontWeight="Bold" VerticalAlignment="Center" ClipToBounds="False" Padding="0,1,0,0" />
|
||||
<StackPanel Grid.Column="1" Margin="12,0,0,0" VerticalAlignment="Center">
|
||||
<TextBlock x:Name="ConditionTextBlock" Text="Loading" FontSize="15" FontWeight="SemiBold" TextTrimming="CharacterEllipsis" />
|
||||
<TextBlock x:Name="LocationTextBlock" Text="Weather" FontSize="12" FontWeight="Medium" Opacity="0.72" TextTrimming="CharacterEllipsis" />
|
||||
|
||||
@@ -73,7 +73,7 @@ public partial class HourlyWeatherWidget : WeatherWidgetBase
|
||||
var inner = (StackPanel)panel.Child!;
|
||||
inner.Children.Add(new TextBlock { Text = item.Label, FontSize = 10, Foreground = Brush(CurrentPalette.TextSecondary), HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Center, TextAlignment = Avalonia.Media.TextAlignment.Center });
|
||||
inner.Children.Add(new WeatherIconView { Width = 24, Height = 24, Source = WeatherIconAssetResolver.LoadIcon(CurrentVisualStyleId, item.WeatherCode, item.WeatherText) });
|
||||
inner.Children.Add(new TextBlock { Text = item.Value, FontWeight = Avalonia.Media.FontWeight.SemiBold, Foreground = Brush(CurrentPalette.TextPrimary), HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Center, FontSize = 11, TextAlignment = Avalonia.Media.TextAlignment.Center });
|
||||
inner.Children.Add(new TextBlock { Text = item.Value, FontWeight = Avalonia.Media.FontWeight.SemiBold, Foreground = Brush(CurrentPalette.TextPrimary), HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Center, FontSize = 11, TextAlignment = Avalonia.Media.TextAlignment.Center, ClipToBounds = false });
|
||||
return panel;
|
||||
}
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<Grid x:Name="ContentGrid" ColumnDefinitions="1.2*,1.6*" Margin="18,14" ColumnSpacing="14">
|
||||
<StackPanel VerticalAlignment="Center" Spacing="6">
|
||||
<components:WeatherIconView x:Name="MainIcon" Width="64" Height="64" HorizontalAlignment="Left" />
|
||||
<TextBlock x:Name="TemperatureTextBlock" Text="--°" FontSize="42" FontWeight="Bold" />
|
||||
<TextBlock x:Name="TemperatureTextBlock" Text="--°" FontSize="42" FontWeight="Bold" ClipToBounds="False" Padding="0,1,0,0" />
|
||||
<TextBlock x:Name="ConditionTextBlock" Text="Loading" FontSize="15" FontWeight="SemiBold" TextTrimming="CharacterEllipsis" />
|
||||
<TextBlock x:Name="LocationTextBlock" Text="Weather" FontSize="12" FontWeight="Medium" Opacity="0.72" TextTrimming="CharacterEllipsis" />
|
||||
</StackPanel>
|
||||
|
||||
@@ -66,9 +66,9 @@ public partial class MultiDayWeatherWidget : WeatherWidgetBase
|
||||
row.Children.Add(new WeatherIconView { Width = 24, Height = 24, Source = WeatherIconAssetResolver.LoadIcon(CurrentVisualStyleId, item.DayWeatherCode, item.DayWeatherText), VerticalAlignment = Avalonia.Layout.VerticalAlignment.Center });
|
||||
row.Children.Add(new TextBlock { Text = ResolveDayLabel(item.Date), Foreground = Brush(CurrentPalette.TextPrimary), FontWeight = Avalonia.Media.FontWeight.SemiBold, TextTrimming = Avalonia.Media.TextTrimming.CharacterEllipsis, VerticalAlignment = Avalonia.Layout.VerticalAlignment.Center, FontSize = 12 });
|
||||
Grid.SetColumn(row.Children[^1], 1);
|
||||
row.Children.Add(new TextBlock { Text = FormatTemperature(item.HighTemperatureC), Foreground = Brush(CurrentPalette.TextPrimary), FontWeight = Avalonia.Media.FontWeight.SemiBold, VerticalAlignment = Avalonia.Layout.VerticalAlignment.Center, FontSize = 12 });
|
||||
row.Children.Add(new TextBlock { Text = FormatTemperature(item.HighTemperatureC), Foreground = Brush(CurrentPalette.TextPrimary), FontWeight = Avalonia.Media.FontWeight.SemiBold, VerticalAlignment = Avalonia.Layout.VerticalAlignment.Center, FontSize = 12, ClipToBounds = false });
|
||||
Grid.SetColumn(row.Children[^1], 2);
|
||||
row.Children.Add(new TextBlock { Text = FormatTemperature(item.LowTemperatureC), Foreground = Brush(CurrentPalette.TextSecondary), FontWeight = Avalonia.Media.FontWeight.Medium, VerticalAlignment = Avalonia.Layout.VerticalAlignment.Center, FontSize = 12 });
|
||||
row.Children.Add(new TextBlock { Text = FormatTemperature(item.LowTemperatureC), Foreground = Brush(CurrentPalette.TextSecondary), FontWeight = Avalonia.Media.FontWeight.Medium, VerticalAlignment = Avalonia.Layout.VerticalAlignment.Center, FontSize = 12, ClipToBounds = false });
|
||||
Grid.SetColumn(row.Children[^1], 3);
|
||||
|
||||
rowPanel.Children.Add(row);
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
</StackPanel>
|
||||
<StackPanel Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Right" Spacing="1">
|
||||
<components:WeatherIconView x:Name="MainIcon" Width="44" Height="44" HorizontalAlignment="Right" />
|
||||
<TextBlock x:Name="TemperatureTextBlock" Text="--°" FontSize="20" FontWeight="SemiBold" HorizontalAlignment="Right" />
|
||||
<TextBlock x:Name="TemperatureTextBlock" Text="--°" FontSize="20" FontWeight="SemiBold" HorizontalAlignment="Right" ClipToBounds="False" />
|
||||
<TextBlock x:Name="ConditionTextBlock" Text="Loading" FontSize="11" FontWeight="Medium" HorizontalAlignment="Right" TextTrimming="CharacterEllipsis" MaxWidth="100" Opacity="0.82" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<Grid x:Name="ContentGrid" RowDefinitions="*,Auto" Margin="20,16,20,14">
|
||||
<Grid ColumnDefinitions="*,Auto">
|
||||
<StackPanel VerticalAlignment="Center" Spacing="4">
|
||||
<TextBlock x:Name="TemperatureTextBlock" Text="--°" FontSize="72" FontWeight="Bold" />
|
||||
<TextBlock x:Name="TemperatureTextBlock" Text="--°" FontSize="72" FontWeight="Bold" ClipToBounds="False" Padding="0,2,0,0" />
|
||||
<TextBlock x:Name="ConditionTextBlock" Text="Loading" FontSize="18" FontWeight="SemiBold" TextTrimming="CharacterEllipsis" />
|
||||
</StackPanel>
|
||||
<components:WeatherIconView x:Name="MainIcon" Grid.Column="1" Width="72" Height="72" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,0,4" />
|
||||
|
||||
Reference in New Issue
Block a user