Skip to content

Commit 9efa828

Browse files
authored
Merge pull request #3 from hiddenblue/Dev
Dev
2 parents 44b9185 + 6c15813 commit 9efa828

26 files changed

+848
-311
lines changed

Avalonia.CpuLimiter/App.axaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
<!-- "Default" ThemeVariant follows system theme variant. "Dark" or "Light" are other available options. -->
77

88
<Application.DataTemplates>
9-
<local:ViewLocator/>
109
</Application.DataTemplates>
1110

1211
<Application.Styles>

Avalonia.CpuLimiter/App.axaml.cs

Lines changed: 68 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@
66
using Microsoft.Extensions.DependencyInjection;
77
using System;
88
using System.Collections.Generic;
9+
using System.Collections.ObjectModel;
910
using System.Globalization;
1011
using System.Linq;
1112
using System.Threading.Tasks;
12-
using Avalonia.CpuLimiter.Config;
13+
using Avalonia.Controls;
1314
using Avalonia.CpuLimiter.Models;
15+
using Avalonia.Media;
1416

1517

1618
namespace Avalonia.CpuLimiter
@@ -19,9 +21,6 @@ public partial class App : Application
1921
{
2022
public override void Initialize()
2123
{
22-
//dependency injection and load config.json from file
23-
Services = ConfigureServices();
24-
ConfigModel = ConfigFileService.LoadConfigAsync();
2524
AvaloniaXamlLoader.Load(this);
2625
}
2726

@@ -32,7 +31,6 @@ public override void Initialize()
3231

3332
public ServiceProvider? Services { get; private set; }
3433

35-
3634
private ServiceProvider ConfigureServices()
3735
{
3836
if (ApplicationLifetime is not IClassicDesktopStyleApplicationLifetime desktop)
@@ -43,48 +41,70 @@ private ServiceProvider ConfigureServices()
4341
services.AddSingleton<IHistoryItemFileService, HistoryItemFileService>();
4442

4543
services.AddSingleton<MainWindowViewModel>();
46-
services.AddSingleton<MainWindow>(sp => new MainWindow(){ DataContext = sp.GetRequiredService<MainWindowViewModel>()});
47-
services.AddSingleton<SettingWindowViewModel>();
48-
services.AddSingleton<SettingWindow>( _ =>
44+
services.AddSingleton<MainWindow>(sp =>
4945
{
50-
var settingWindow = new SettingWindow()
46+
MainWindow mainWindow= new()
5147
{
48+
DataContext = sp.GetRequiredService<MainWindowViewModel>(),
5249
RequestedThemeVariant = ConfigModel.ThemeVariantConfig,
53-
DataContext = Services.GetRequiredService<SettingWindowViewModel>()
5450
};
55-
settingWindow.SettingBorder.Material.TintColor = ConfigModel.UserColor.Color;
51+
mainWindow.MainBorder.Material.TintColor = ColorCollection[ConfigModel.ColorIndex].Color;
52+
return mainWindow;
53+
});
54+
55+
services.AddTransient<SettingWindowViewModel>();
56+
services.AddTransient<SettingWindow>( _ =>
57+
{
58+
var settingWindow = new SettingWindow();
59+
60+
settingWindow.SettingBorder.Material.TintColor = ColorCollection[ConfigModel.ColorIndex].Color;
5661
return settingWindow;
5762
});
5863

5964
services.AddTransient<AboutWindow>(_ =>
6065
{
6166
var aboutWindow = new AboutWindow();
6267
aboutWindow.RequestedThemeVariant = ConfigModel.ThemeVariantConfig;
63-
aboutWindow.AboutBorder.Material.TintColor = ConfigModel.UserColor.Color;
68+
aboutWindow.AboutBorder.Material.TintColor = ColorCollection[ConfigModel.ColorIndex].Color;
6469
// to do theme related
6570
return aboutWindow;
6671
});
6772
return services.BuildServiceProvider();
6873
}
6974

70-
public override async void OnFrameworkInitializationCompleted()
75+
public override void OnFrameworkInitializationCompleted()
7176
{
72-
if(!string.IsNullOrWhiteSpace(ConfigModel.StartupCultureConfig))
73-
Lang.Resources.Culture = new CultureInfo(ConfigModel.StartupCultureConfig);
74-
7577
if(ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
7678
{
77-
desktop.MainWindow = Services!.GetService<MainWindow>();
78-
_mainWindowViewModel = Services.GetRequiredService<MainWindowViewModel>();
79-
79+
//dependency injection and load config.json from file
80+
Services = ConfigureServices();
81+
ConfigModel = ConfigFileService.LoadConfig();
82+
83+
if(!string.IsNullOrWhiteSpace(ConfigModel.StartupCultureConfig))
84+
Lang.Resources.Culture = new CultureInfo(ConfigModel.StartupCultureConfig);
85+
86+
try
87+
{
88+
desktop.MainWindow = Services.GetService<MainWindow>();
89+
_mainWindowViewModel = desktop.MainWindow.DataContext as MainWindowViewModel;
90+
}
91+
catch (Exception e)
92+
{
93+
Console.WriteLine(e);
94+
throw;
95+
}
8096
desktop.ShutdownRequested += DesktopOnShutdownRequested;
8197

8298
ExitApplication += OnExitApplicationTriggered;
8399
}
84100
base.OnFrameworkInitializationCompleted();
85-
86-
// init and load from config.json
87-
await LoadHistoryItemToMainVM();
101+
102+
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime normal)
103+
{
104+
// init and load from config.json
105+
LoadHistoryItemToMainVM();
106+
}
107+
88108
}
89109

90110
private bool _canClose;
@@ -147,5 +167,31 @@ public void OnExitApplicationTriggered(object? sender, EventArgs eventArgs)
147167
// the program calling this Event to exit;
148168
// App.Current.ExitApplication.invoke
149169
public event EventHandler? ExitApplication;
170+
171+
public Collection<CustomColor> ColorCollection { get; } = new Collection<CustomColor>
172+
{
173+
new CustomColor("#e95815"),
174+
new CustomColor("#f1a100"),
175+
new CustomColor("#f0c400"),
176+
new CustomColor("#e7e542"),
177+
178+
new CustomColor("#bbd53e"),
179+
new CustomColor("#4fb142"),
180+
new CustomColor("#068bce"),
181+
// new CustomColor("#014da1"),
182+
183+
// new CustomColor("#192c92"),
184+
// new CustomColor("#522a8b"),
185+
new CustomColor("#b01e4f"),
186+
new CustomColor("#e83a17"),
187+
188+
new CustomColor(Colors.Silver.ToString()),
189+
new CustomColor(Colors.Gray.ToString()),
190+
new CustomColor(Colors.Black.ToString()),
191+
new CustomColor(Colors.Aqua.ToString()),
192+
new CustomColor(Colors.SkyBlue.ToString()),
193+
new CustomColor(Colors.DeepSkyBlue.ToString()),
194+
new CustomColor(Colors.LightSkyBlue.ToString())
195+
};
150196
}
151197
}

Avalonia.CpuLimiter/Avalonia.CpuLimiter.csproj

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,28 @@
88
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
99
<PublishAot>false</PublishAot>
1010
<RootNamespace>Avalonia.CpuLimiter</RootNamespace>
11+
<JsonSerializerIsReflectionEnabledByDefault>false</JsonSerializerIsReflectionEnabledByDefault>
1112
</PropertyGroup>
1213

1314
<ItemGroup>
1415
<AvaloniaResource Include="Assets\**" />
1516
<AvaloniaResource Include="Lang\**" />
16-
1717
</ItemGroup>
1818

1919
<ItemGroup>
2020
<PackageReference Include="Avalonia" Version="11.2.0" />
21+
<PackageReference Include="Avalonia.Controls.ItemsRepeater" Version="11.1.4" />
2122
<PackageReference Include="Avalonia.Desktop" Version="11.2.0" />
2223
<PackageReference Include="Avalonia.Themes.Fluent" Version="11.2.0" />
23-
<PackageReference Include="Avalonia.Fonts.Inter" Version="11.2.0" />
2424
<!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
2525
<PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.2.0" />
2626
<PackageReference Include="Avalonia.ReactiveUI" Version="11.2.0" />
2727
<PackageReference Include="MessageBox.Avalonia" Version="3.2.0" />
2828
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
2929
</ItemGroup>
30+
31+
<ItemGroup>
32+
<Compile Remove="ViewLocator.cs" />
33+
</ItemGroup>
34+
3035
</Project>

Avalonia.CpuLimiter/Lang/Resources.Designer.cs

Lines changed: 65 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Avalonia.CpuLimiter/Lang/Resources.resx

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
<value>Launch Game</value>
7474
</data>
7575
<data name="ExeFileBlock" xml:space="preserve">
76-
<value> Exe File Path</value>
76+
<value>Executable File</value>
7777
</data>
7878
<data name="ThemeSwitch" xml:space="preserve">
7979
<value>Theme</value>
@@ -93,4 +93,43 @@
9393
<data name="CloseButton" xml:space="preserve">
9494
<value>Close</value>
9595
</data>
96+
<data name="SettingTitle" xml:space="preserve">
97+
<value>Setting</value>
98+
</data>
99+
<data name="SettingStartupLanguageToggleEnglish" xml:space="preserve">
100+
<value>英语</value>
101+
</data>
102+
<data name="SettingStartupLanguageToggleChinese" xml:space="preserve">
103+
<value>中文</value>
104+
</data>
105+
<data name="SettingStartupThemeTextBlock" xml:space="preserve">
106+
<value>Startup Theme</value>
107+
</data>
108+
<data name="StartupDecorationSliderTextBlock" xml:space="preserve">
109+
<value>Startup Decoration</value>
110+
</data>
111+
<data name="SettingHistoryLimitTextBlock" xml:space="preserve">
112+
<value>History Limit</value>
113+
</data>
114+
<data name="SettingThemeColorSliderTextBlock" xml:space="preserve">
115+
<value>Theme Color</value>
116+
</data>
117+
<data name="FilePickerTitle" xml:space="preserve">
118+
<value>Select executable file</value>
119+
</data>
120+
<data name="SaveFilePickerTitle" xml:space="preserve">
121+
<value>Choose a Path to save file</value>
122+
</data>
123+
<data name="AboutAuthorText" xml:space="preserve">
124+
<value>Author</value>
125+
</data>
126+
<data name="AboutDotnetVersionText" xml:space="preserve">
127+
<value>Dotnet version:</value>
128+
</data>
129+
<data name="AvaloniaUIVersionText" xml:space="preserve">
130+
<value>AvaloniaUI Version</value>
131+
</data>
132+
<data name="AboutLicenseText" xml:space="preserve">
133+
<value>License</value>
134+
</data>
96135
</root>

Avalonia.CpuLimiter/Lang/Resources.zh-hans-cn.resx

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,4 +86,43 @@
8686
<data name="CloseButton" xml:space="preserve">
8787
<value>关闭</value>
8888
</data>
89+
<data name="SettingStartupThemeTextBlock" xml:space="preserve">
90+
<value>启动主题</value>
91+
</data>
92+
<data name="SettingTitle" xml:space="preserve">
93+
<value>设 置</value>
94+
</data>
95+
<data name="SettingHistoryLimitTextBlock" xml:space="preserve">
96+
<value>历史记录上限</value>
97+
</data>
98+
<data name="SettingThemeColorSliderTextBlock" xml:space="preserve">
99+
<value>主题颜色</value>
100+
</data>
101+
<data name="SettingStartupLanguageToggleChinese" xml:space="preserve">
102+
<value>Chinese</value>
103+
</data>
104+
<data name="SettingStartupLanguageToggleEnglish" xml:space="preserve">
105+
<value>English</value>
106+
</data>
107+
<data name="StartupDecorationSliderTextBlock" xml:space="preserve">
108+
<value>启动装饰</value>
109+
</data>
110+
<data name="FilePickerTitle" xml:space="preserve">
111+
<value>选择可执行文件</value>
112+
</data>
113+
<data name="SaveFilePickerTitle" xml:space="preserve">
114+
<value>选择文件保存位置</value>
115+
</data>
116+
<data name="AboutAuthorText" xml:space="preserve">
117+
<value>作 者</value>
118+
</data>
119+
<data name="AboutDotnetVersionText" xml:space="preserve">
120+
<value>Dotnet 版本</value>
121+
</data>
122+
<data name="AvaloniaUIVersionText" xml:space="preserve">
123+
<value>Avalonia 版本</value>
124+
</data>
125+
<data name="AboutLicenseText" xml:space="preserve">
126+
<value>开 源 协 议</value>
127+
</data>
89128
</root>

0 commit comments

Comments
 (0)