Skip to content

Commit f492027

Browse files
committed
优化 Json 读取方式
1 parent 5186373 commit f492027

File tree

10 files changed

+38
-44
lines changed

10 files changed

+38
-44
lines changed

App.xaml.cs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using System.Collections.ObjectModel;
1212
using System.IO;
1313
using System.Text.Json;
14+
using System.Text.Json.Nodes;
1415
using Windows.Storage;
1516

1617

@@ -20,7 +21,7 @@ public partial class App : Application
2021
{
2122
public static List<MainWindow> mainWindows = [];
2223
public static string LatestVersion = null;
23-
public static Dictionary<string, JsonElement> settings;
24+
public static JsonNode settings;
2425
public static WebView2 webView2 = new();
2526
public static ObservableCollection<WebViewHistory> Histories = [];
2627

@@ -42,7 +43,7 @@ public static MainWindow CreateNewWindow()
4243
window.Closed += (sender, e) =>
4344
{
4445
mainWindows.Remove(window);
45-
File.WriteAllText(ApplicationData.Current.LocalFolder.Path + "/settings.json", JsonSerializer.Serialize(settings));
46+
File.WriteAllText(ApplicationData.Current.LocalFolder.Path + "/settings.json", settings.ToJsonString(new JsonSerializerOptions { WriteIndented = true }));
4647
};
4748
mainWindows.Add(window);
4849
return window;
@@ -69,15 +70,10 @@ public static CoreWebView2 GetCoreWebView2(UIElement element)
6970
return page.CoreWebView2;
7071
}
7172

72-
public static JsonElement ToJsonElement<T>(T value)
73-
{
74-
return JsonDocument.Parse(JsonSerializer.Serialize(value)).RootElement;
75-
}
76-
7773
protected override void OnLaunched(LaunchActivatedEventArgs args)
7874
{
7975
string path = Info.CheckUserSettingData();
80-
settings = JsonSerializer.Deserialize<Dictionary<string, JsonElement>>(File.ReadAllText(path));
76+
settings = JsonNode.Parse(File.ReadAllText(path));
8177

8278
m_window = CreateNewWindow();
8379
m_window.Activate();

MainWindow.xaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ public MainWindow()
9696

9797
public void AddHomePage()
9898
{
99-
string uri = App.settings["SpecificUri"].GetString();
99+
string uri = App.settings["SpecificUri"].ToString();
100100
if (uri != string.Empty)
101101
{
102102
AddNewTab(new WebViewPage() { WebUri = uri });

Pages/HomePage.xaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,6 @@
2121
<ColumnDefinition Width="*"/>
2222
</Grid.ColumnDefinitions>
2323

24-
<!-- 删除 主页 标签 -->
25-
<!-- <TextBlock Text="主页" CharacterSpacing="200" FontSize="25" Margin="20,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Center" FontWeight="Bold" FontFamily="Microsoft Jhenghei UI"/> -->
26-
2724
<local:BrowserMenuItems Grid.Column="2" HorizontalAlignment="Right"/>
2825

2926
<local:WebSearch

Pages/HomePage.xaml.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public HomePage()
1818
this.InitializeComponent();
1919
this.Loaded += InstallWebView2;
2020

21-
if (App.settings["ShowSuggestUri"].GetBoolean())
21+
if (App.settings["ShowSuggestUri"].GetValue<bool>())
2222
{
2323
View.ItemsSource = Info.SuggestWebsiteList;
2424
}
@@ -27,7 +27,7 @@ public HomePage()
2727
View.Visibility = Visibility.Collapsed;
2828
}
2929

30-
if (App.settings["ShowBackground"].GetBoolean())
30+
if (App.settings["ShowBackground"].GetValue<bool>())
3131
{
3232
homeGrid.Background = new ImageBrush()
3333
{

Pages/WebViewPage.xaml.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,15 @@ public string WebUri
2727

2828
private void InitializeToolbarVisibility()
2929
{
30-
homeButton.Visibility = App.settings["ToolBar"].GetProperty("HomeButton").GetBoolean() ? Visibility.Visible : Visibility.Collapsed;
31-
historyButton.Visibility = App.settings["ToolBar"].GetProperty("HistoryButton").GetBoolean() ? Visibility.Visible : Visibility.Collapsed;
32-
downloadButton.Visibility = App.settings["ToolBar"].GetProperty("DownloadButton").GetBoolean() ? Visibility.Visible : Visibility.Collapsed;
30+
homeButton.Visibility = App.settings["ToolBar"]!["HomeButton"].GetValue<bool>() ? Visibility.Visible : Visibility.Collapsed;
31+
historyButton.Visibility = App.settings["ToolBar"]!["HistoryButton"].GetValue<bool>() ? Visibility.Visible : Visibility.Collapsed;
32+
downloadButton.Visibility = App.settings["ToolBar"]!["DownloadButton"].GetValue<bool>() ? Visibility.Visible : Visibility.Collapsed;
3333
}
3434

3535
private void SetNavigationButtonStatus()
3636
{
3737
uriGoBackButton.IsEnabled = EdgeWebViewEngine.CanGoBack;
38-
uriGoForwardButton.Visibility = App.settings["ToolBar"].GetProperty("ForwardButton").GetBoolean() && EdgeWebViewEngine.CanGoForward
38+
uriGoForwardButton.Visibility = App.settings["ToolBar"]!["ForwardButton"].GetValue<bool>() && EdgeWebViewEngine.CanGoForward
3939
? Visibility.Visible : Visibility.Collapsed;
4040
}
4141

@@ -153,7 +153,7 @@ private MenuFlyoutItem CreateCommandMenuItem(CoreWebView2ContextMenuRequestedEve
153153

154154
private async void CoreWebView2_DownloadStarting(CoreWebView2 sender, CoreWebView2DownloadStartingEventArgs args)
155155
{
156-
if (!App.settings["AskDownloadBehavior"].GetBoolean()) return;
156+
if (!App.settings["AskDownloadBehavior"].GetValue<bool>()) return;
157157

158158
args.Handled = true;
159159
var hwnd = this.GetWindowHandle();
@@ -162,7 +162,7 @@ private async void CoreWebView2_DownloadStarting(CoreWebView2 sender, CoreWebVie
162162
args.ResultFilePath = file.Path;
163163
downloadButton.DownloadList.Add(new DownloadObject(args.DownloadOperation));
164164

165-
if (App.settings["ShowFlyoutWhenStartDownloading"].GetBoolean())
165+
if (App.settings["ShowFlyoutWhenStartDownloading"].GetValue<bool>())
166166
{
167167
downloadButton.ShowFlyout();
168168
}

Settings/AppearanceItem.xaml.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public class ToolBarVisual
1717
public sealed partial class AppearanceItem : Page
1818
{
1919
public static bool inLoading = false;
20-
public Dictionary<string, bool> ToolBar = JsonSerializer.Deserialize<Dictionary<string, bool>>(App.settings["ToolBar"].ToString());
20+
public Dictionary<string, bool> ToolBar = JsonSerializer.Deserialize<Dictionary<string, bool>>(App.settings["ToolBar"].ToJsonString());
2121
public List<ToolBarVisual> ToolBarVisualList = [];
2222
public List<string> themeList = [.. Enum.GetNames(typeof(ElementTheme))];
2323
public AppearanceItem()
@@ -32,7 +32,7 @@ public AppearanceItem()
3232

3333
inLoading = true;
3434
appearanceView.SelectedIndex = themeList.IndexOf(App.settings["Appearance"].ToString());
35-
showMicaSwitch.IsOn = App.settings["ShowMicaIfEnabled"].GetBoolean();
35+
showMicaSwitch.IsOn = App.settings["ShowMicaIfEnabled"].GetValue<bool>();
3636
inLoading = false;
3737
}
3838

@@ -41,7 +41,7 @@ private void AppearanceChanged(object sender, SelectionChangedEventArgs e)
4141
if (!inLoading)
4242
{
4343
int index = appearanceView.SelectedIndex;
44-
App.settings["Appearance"] = App.ToJsonElement(themeList[index]);
44+
App.settings["Appearance"] = themeList[index];
4545

4646
foreach (Window window in App.mainWindows)
4747
{
@@ -57,7 +57,7 @@ private void VisualChanged(object sender, RoutedEventArgs e)
5757
if ((sender as ToggleSwitch).Name == visual.Text)
5858
{
5959
ToolBar[visual.Text] = (sender as ToggleSwitch).IsOn;
60-
App.settings["ToolBar"] = App.ToJsonElement(ToolBar);
60+
App.settings["ToolBar"] = JsonSerializer.SerializeToNode(ToolBar);
6161
}
6262
}
6363
}
@@ -66,7 +66,7 @@ private void MicaEffectChanged(object sender, RoutedEventArgs e)
6666
{
6767
if (!inLoading)
6868
{
69-
App.settings["ShowMicaIfEnabled"] = App.ToJsonElement((sender as ToggleSwitch).IsOn);
69+
App.settings["ShowMicaIfEnabled"] = (sender as ToggleSwitch).IsOn;
7070

7171
foreach (Window window in App.mainWindows)
7272
{

Settings/DownloadItem.xaml.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,18 @@ public DownloadItem()
1313

1414
DownloadFolderCard.Description = App.webView2.CoreWebView2.Profile.DefaultDownloadFolderPath;
1515

16-
setDownloadBehavior.IsOn = App.settings["AskDownloadBehavior"].GetBoolean();
17-
setDownloadFlyout.IsOn = App.settings["ShowFlyoutWhenStartDownloading"].GetBoolean();
16+
setDownloadBehavior.IsOn = App.settings["AskDownloadBehavior"].GetValue<bool>();
17+
setDownloadFlyout.IsOn = App.settings["ShowFlyoutWhenStartDownloading"].GetValue<bool>();
1818
}
1919

2020
private void DownloadBehaviorChanged(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)
2121
{
22-
App.settings["AskDownloadBehavior"] = App.ToJsonElement(setDownloadBehavior.IsOn);
22+
App.settings["AskDownloadBehavior"] = setDownloadBehavior.IsOn;
2323
}
2424

2525
private void ShowFlyoutChanged(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)
2626
{
27-
App.settings["ShowFlyoutWhenStartDownloading"] = App.ToJsonElement(setDownloadFlyout.IsOn);
27+
App.settings["ShowFlyoutWhenStartDownloading"] = setDownloadFlyout.IsOn;
2828
}
2929

3030
private async void ChangeDownloadFolder(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)

Settings/ResetItem.xaml.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Collections.Generic;
55
using System.IO;
66
using System.Text.Json;
7+
using System.Text.Json.Nodes;
78
using Windows.Storage;
89

910
namespace Edge
@@ -23,7 +24,7 @@ private async void ResetUserSettings(object sender, Microsoft.UI.Xaml.RoutedEven
2324
string path = ApplicationData.Current.LocalFolder.Path + "/settings.json";
2425
File.Delete(path);
2526
Info.CheckUserSettingData();
26-
App.settings = JsonSerializer.Deserialize<Dictionary<string, JsonElement>>(File.ReadAllText(path));
27+
App.settings = JsonNode.Parse(File.ReadAllText(path));
2728
}
2829
}
2930
}

Settings/StartItem.xaml.cs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,60 +13,60 @@ namespace Edge
1313
{
1414
public sealed partial class StartItem : Page
1515
{
16-
public Dictionary<string, bool> ToolBar = JsonSerializer.Deserialize<Dictionary<string, bool>>(App.settings["ToolBar"].ToString());
16+
public Dictionary<string, bool> ToolBar = JsonSerializer.Deserialize<Dictionary<string, bool>>(App.settings["ToolBar"].ToJsonString());
1717
public StartItem()
1818
{
1919
this.InitializeComponent();
20-
radios.SelectedIndex = App.settings["StartBehavior"].GetInt32();
20+
radios.SelectedIndex = App.settings["StartBehavior"].GetValue<int>();
2121

22-
uriBox.Text = App.settings["SpecificUri"].GetString();
22+
uriBox.Text = App.settings["SpecificUri"].ToString();
2323
uriBox.IsEnabled = radios.SelectedIndex == 2;
2424

2525
setHomeButton.IsOn = ToolBar["HomeButton"];
2626
searchEngineBox.ItemsSource = Info.SearchEngineList.Select(x => x.Name);
2727
searchEngineBox.SelectedItem = Info.SearchEngineList.Select(x => x.Name).First(name => name == App.settings["SearchEngine"].ToString());
2828

29-
showSuggestUri.IsOn = App.settings["ShowSuggestUri"].GetBoolean();
29+
showSuggestUri.IsOn = App.settings["ShowSuggestUri"].GetValue<bool>();
3030

31-
showBackground.IsOn = backgroundCard.IsEnabled = App.settings["ShowBackground"].GetBoolean();
31+
showBackground.IsOn = backgroundCard.IsEnabled = App.settings["ShowBackground"].GetValue<bool>();
3232
}
3333

3434
private void SetStartUri(object sender, Microsoft.UI.Xaml.Input.KeyRoutedEventArgs e)
3535
{
36-
App.settings["SpecificUri"] = App.ToJsonElement(uriBox.Text);
36+
App.settings["SpecificUri"] = uriBox.Text;
3737
}
3838

3939
private void HomeButtonVisualChanged(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)
4040
{
4141
ToolBar["HomeButton"] = setHomeButton.IsOn;
42-
App.settings["ToolBar"] = App.ToJsonElement(ToolBar);
42+
App.settings["ToolBar"] = JsonSerializer.SerializeToNode(ToolBar);
4343
}
4444

4545
private void SearchEngineChanged(object sender, SelectionChangedEventArgs e)
4646
{
47-
App.settings["SearchEngine"] = App.ToJsonElement(Info.SearchEngineList.Where(x => x.Name == (string)searchEngineBox.SelectedItem).First().Name);
47+
App.settings["SearchEngine"] = Info.SearchEngineList.Where(x => x.Name == (string)searchEngineBox.SelectedItem).First().Name;
4848
}
4949

5050
private void BehaviorChanged(object sender, SelectionChangedEventArgs e)
5151
{
5252
uriBox.IsEnabled = radios.SelectedIndex == 2;
53-
App.settings["StartBehavior"] = App.ToJsonElement(radios.SelectedIndex);
53+
App.settings["StartBehavior"] = radios.SelectedIndex;
5454
if (radios.SelectedIndex != 2)
5555
{
5656
uriBox.Text = string.Empty;
57-
App.settings["SpecificUri"] = App.ToJsonElement(uriBox.Text);
57+
App.settings["SpecificUri"] = uriBox.Text;
5858
}
5959
}
6060

6161
private void SuggestUriVisualChanged(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)
6262
{
63-
App.settings["ShowSuggestUri"] = App.ToJsonElement(showSuggestUri.IsOn);
63+
App.settings["ShowSuggestUri"] = showSuggestUri.IsOn;
6464
}
6565

6666
private void ShowBackgroundChanged(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)
6767
{
6868
backgroundCard.IsEnabled = showBackground.IsOn;
69-
App.settings["ShowBackground"] = App.ToJsonElement(showBackground.IsOn);
69+
App.settings["ShowBackground"] = showBackground.IsOn;
7070
}
7171

7272
private async void SetBackgroundImage(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)
@@ -85,7 +85,7 @@ private async void SetBackgroundImage(object sender, Microsoft.UI.Xaml.RoutedEve
8585
InitializeWithWindow.Initialize(picker, this.GetWindowHandle());
8686

8787
StorageFile storageFile = await picker.PickSingleFileAsync();
88-
App.settings["BackgroundImage"] = App.ToJsonElement(storageFile.Path);
88+
App.settings["BackgroundImage"] = storageFile.Path;
8989
}
9090
}
9191
}

Utilities.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public static class Utilities
1414
{
1515
public static void SetBackdrop(this Window window)
1616
{
17-
if (App.settings["ShowMicaIfEnabled"].GetBoolean())
17+
if (App.settings["ShowMicaIfEnabled"].GetValue<bool>())
1818
{
1919
if (MicaController.IsSupported())
2020
{

0 commit comments

Comments
 (0)