Skip to content

Commit 8d0d11b

Browse files
committed
在看完寒流的视频大有启发于是...
1 parent 5fd77c9 commit 8d0d11b

File tree

6 files changed

+81
-87
lines changed

6 files changed

+81
-87
lines changed

cat2/Models/Constants.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
using System.IO;
22
using System.Reflection;
3-
using CAT2.Views;
43

54
namespace CAT2.Models;
65

76
public static class Constants
87
{
9-
public static readonly MainWindow MainClass = (MainWindow)Application.Current.MainWindow;
10-
118
public static readonly string Version = Assembly.GetExecutingAssembly().GetName().Version?.ToString();
129

1310
public static readonly string FileVersion = Assembly
Lines changed: 6 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
1-
using System.Collections.Generic;
2-
using System.IO;
3-
using System.Text.Json;
4-
using CAT2.Models;
1+
using CAT2.Models;
52
using Wpf.Ui.Appearance;
6-
using static ChmlFrp.SDK.UserActions;
73

84
namespace CAT2.ViewModels;
95

@@ -17,72 +13,11 @@ public partial class MainWindowViewModel : ObservableObject
1713

1814
[ObservableProperty] private bool _isDarkTheme;
1915

20-
public MainWindowViewModel()
16+
[RelayCommand]
17+
private void ChangeTheme()
2118
{
22-
AppDomain.CurrentDomain.UnhandledException += (_, args) =>
23-
{
24-
if (args.ExceptionObject is not Exception ex) return;
25-
26-
WritingLog(ex.Message.Contains("拒绝访问")
27-
? "请以管理员身份运行本程序"
28-
: $"请将此日志反馈给开发者\n联系方式:\n1.QQ:2976779544\n2.Email:[email protected]\n3.GitHub:Qianyiaz/CAT2\n版本号:{Constants.Version}次版本号:{FileVersion}\n异常信息:\n{ex}");
29-
30-
Process.Start(new ProcessStartInfo
31-
{
32-
FileName = LogFilePath,
33-
UseShellExecute = true
34-
});
35-
};
36-
37-
ApplicationThemeManager.Changed += (theme, _) =>
38-
{
39-
IsDarkTheme = theme == ApplicationTheme.Dark;
40-
};
41-
ApplicationThemeManager.ApplySystemTheme();
42-
43-
MainClass.SizeChanged += (_, e) =>
44-
{
45-
MainClass.RootNavigation.SetCurrentValue(NavigationView.IsPaneOpenProperty, e.NewSize.Width > 875);
46-
};
47-
48-
MainClass.Loaded += async (_, _) =>
49-
{
50-
Init("CAT2");
51-
SystemThemeWatcher.Watch(MainClass);
52-
53-
await Task.WhenAll(
54-
Task.Run(() =>
55-
{
56-
SnackBarService.SetSnackbarPresenter(MainClass.RootSnackbarDialog);
57-
ContentDialogService.SetDialogHost(MainClass.RootContentDialogPresenter);
58-
}),
59-
LoginAsyncFromToken(),
60-
Task.Run(async () =>
61-
{
62-
if (File.Exists(SettingsFilePath)) return;
63-
await File.WriteAllTextAsync(SettingsFilePath, JsonSerializer.Serialize(new
64-
{
65-
StartedItems = new Dictionary<string, bool>()
66-
}));
67-
WritingLog("settings.json文件不存在,已创建");
68-
}));
69-
70-
MainClass.RootNavigation.Navigate("登录");
71-
if (IsLoggedIn)
72-
{
73-
MainClass.LoginItem.Visibility = Visibility.Collapsed;
74-
MainClass.TunnelItem.Visibility = Visibility.Visible;
75-
MainClass.NodeItem.Visibility = Visibility.Visible;
76-
MainClass.UserItem.Visibility = Visibility.Visible;
77-
MainClass.RootNavigation.Navigate("管理隧道");
78-
}
79-
80-
MainClass.Topmost = false;
81-
WritingLog("主窗口加载完成");
82-
};
19+
ApplicationThemeManager.Apply(ApplicationThemeManager.GetAppTheme() == ApplicationTheme.Dark
20+
? ApplicationTheme.Light
21+
: ApplicationTheme.Dark);
8322
}
84-
85-
[RelayCommand]
86-
private void ChangeTheme() =>
87-
ApplicationThemeManager.Apply(ApplicationThemeManager.GetAppTheme() == ApplicationTheme.Dark ? ApplicationTheme.Light : ApplicationTheme.Dark);
8823
}

cat2/ViewModels/Pages/LoginPageViewModel.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,6 @@ private async Task LoggedIn()
2727

2828
if (IsLoggedIn)
2929
{
30-
MainClass.LoginItem.Visibility = Visibility.Collapsed;
31-
MainClass.TunnelItem.Visibility = Visibility.Visible;
32-
MainClass.NodeItem.Visibility = Visibility.Visible;
33-
MainClass.UserItem.Visibility = Visibility.Visible;
34-
MainClass.RootNavigation.Navigate("管理隧道");
3530
ShowSnackBar(
3631
"登录成功!",
3732
$"欢迎回来,{Username}!",

cat2/ViewModels/Pages/UserPageViewModel.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,5 @@ private static async Task OnSignOut()
6363
"请重新登录以继续使用。",
6464
ControlAppearance.Info,
6565
SymbolRegular.SignOut24);
66-
67-
MainClass.LoginItem.Visibility = Visibility.Visible;
68-
MainClass.TunnelItem.Visibility = Visibility.Collapsed;
69-
MainClass.NodeItem.Visibility = Visibility.Collapsed;
70-
MainClass.UserItem.Visibility = Visibility.Collapsed;
71-
MainClass.RootNavigation.Navigate("登录");
7266
}
7367
}

cat2/Views/MainWindow.xaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
MinHeight="450" MinWidth="600"
1212
Height="525" Width="950"
1313
WindowBackdropType="Mica"
14-
Topmost="True">
14+
Loaded="OnLoaded">
1515

1616
<ui:FluentWindow.DataContext>
1717
<vm:MainWindowViewModel />

cat2/Views/MainWindow.xaml.cs

Lines changed: 74 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,82 @@
1-
namespace CAT2.Views;
1+
using System.Collections.Generic;
2+
using System.IO;
3+
using System.Text.Json;
4+
using CAT2.Models;
5+
using Wpf.Ui.Appearance;
6+
using static ChmlFrp.SDK.UserActions;
7+
8+
namespace CAT2.Views;
29

310
public partial class MainWindow
411
{
512
public MainWindow()
613
{
714
InitializeComponent();
815
}
16+
17+
private async void OnLoaded(object sender, RoutedEventArgs e)
18+
{
19+
AppDomain.CurrentDomain.UnhandledException += (_, args) =>
20+
{
21+
var ex = (Exception)args.ExceptionObject;
22+
WritingLog($"请将此日志反馈给开发者\n联系方式:\n1.QQ:2976779544\n2.Email:[email protected]\n3.GitHub:Qianyiaz/CAT2\n版本号:{Constants.Version}次版本号:{FileVersion}\n异常信息:\n{ex}");
23+
Process.Start(new ProcessStartInfo
24+
{
25+
FileName = LogFilePath,
26+
UseShellExecute = true
27+
});
28+
};
29+
30+
ApplicationThemeManager.Changed += (theme, _) =>
31+
{
32+
var vm = (MainWindowViewModel)DataContext;
33+
vm.IsDarkTheme = theme == ApplicationTheme.Dark;
34+
};
35+
ApplicationThemeManager.ApplySystemTheme();
36+
SystemThemeWatcher.Watch(this);
37+
38+
SizeChanged += (_, args) =>
39+
RootNavigation.SetCurrentValue(NavigationView.IsPaneOpenProperty, args.NewSize.Width > 875);
40+
41+
Init("CAT2");
42+
43+
SnackBarService.SetSnackbarPresenter(RootSnackbarDialog);
44+
ContentDialogService.SetDialogHost(RootContentDialogPresenter);
45+
if (!File.Exists(SettingsFilePath))
46+
{
47+
await File.WriteAllTextAsync(SettingsFilePath, JsonSerializer.Serialize(new
48+
{
49+
StartedItems = new Dictionary<string, bool>()
50+
}));
51+
WritingLog("settings.json文件不存在,已创建");
52+
}
53+
54+
var first = true;
55+
OnIsLoggedInChange += value =>
56+
{
57+
if (value)
58+
{
59+
LoginItem.SetValue(VisibilityProperty, Visibility.Collapsed );
60+
TunnelItem.SetValue(VisibilityProperty,Visibility.Visible);
61+
NodeItem.SetValue(VisibilityProperty, Visibility.Visible);
62+
UserItem.SetValue(VisibilityProperty,Visibility.Visible);
63+
64+
if (first)
65+
RootNavigation.Navigate("管理隧道");
66+
first = false;
67+
}
68+
else
69+
{
70+
LoginItem.SetValue(VisibilityProperty, Visibility.Visible);
71+
TunnelItem.SetValue(VisibilityProperty,Visibility.Collapsed);
72+
NodeItem.SetValue(VisibilityProperty,Visibility.Collapsed);
73+
UserItem.SetValue(VisibilityProperty, Visibility.Collapsed);
74+
75+
RootNavigation.Navigate("登录");
76+
first = true;
77+
}
78+
};
79+
await LoginAsyncFromToken();
80+
WritingLog("主窗口加载完成");
81+
}
982
}

0 commit comments

Comments
 (0)