Skip to content

Commit 0d2dbbe

Browse files
committed
锁屏前校验是否配置了对应的解锁选项
1 parent cee2562 commit 0d2dbbe

File tree

10 files changed

+90
-24
lines changed

10 files changed

+90
-24
lines changed

src/ComputerLock/App.xaml.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ private void Init()
5757
services.AddTransient<WindowBlankScreen>();
5858
services.AddSingleton<SystemKeyHook>();
5959
services.AddSingleton<HotkeyTools>();
60+
services.AddSingleton<IWindowsMessageBox, WindowsMessageBox>();
6061
services.AddSingleton<IWindowMoving, WindowMoving>();
6162
services.AddSingleton<IWindowTitleBar, WindowTitleBar>();
6263
services.AddSingleton<IGlobalLockService, GlobalLockService>();

src/ComputerLock/ComputerLock.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
<ItemGroup>
2020
<PackageReference Include="CodeBeam.MudBlazor.Extensions" Version="8.0.0" />
21-
<PackageReference Include="JiuLing.AutoUpgrade" Version="2.2.6" />
21+
<PackageReference Include="JiuLing.AutoUpgrade" Version="2.3.0" />
2222
<PackageReference Include="JiuLing.CommonLibs" Version="1.7.2" />
2323
<PackageReference Include="Microsoft.AspNetCore.Components.WebView.Wpf" Version="8.0.100" />
2424
<PackageReference Include="ModernWpfUI" Version="0.9.6" />
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace ComputerLock.Interfaces;
2+
3+
internal interface IWindowsMessageBox
4+
{
5+
void Show(string message);
6+
}

src/ComputerLock/Pages/Index.razor

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,6 @@ else
131131
}
132132
else if (AppSettings.ScreenUnlockMethod == ScreenUnlockMethods.Hotkey)
133133
{
134-
<MudAlert Severity="Severity.Error">@(Lang["HotkeyUnlockTips"])</MudAlert>
135-
136134
<MudPaper Class="mt-1 d-flex align-center" Elevation="0">
137135
<HotkeyInput Title="@(Lang["UnlockHotkey"])"
138136
Hotkey="@(AppSettings.UnlockHotkeyString)"
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
using ComputerLock.Interfaces;
2+
3+
namespace ComputerLock.Platforms;
4+
internal class WindowsMessageBox(IStringLocalizer<Lang> lang) : IWindowsMessageBox
5+
{
6+
public void Show(string text)
7+
{
8+
MessageBox.Show(text, lang["Title"], MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, System.Windows.Forms.MessageBoxOptions.DefaultDesktopOnly);
9+
}
10+
}

src/ComputerLock/Resources/Lang.Designer.cs

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

src/ComputerLock/Resources/Lang.en.resx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -357,9 +357,6 @@
357357
<data name="HotkeyUnlock" xml:space="preserve">
358358
<value>Hotkey Unlock</value>
359359
</data>
360-
<data name="HotkeyUnlockTips" xml:space="preserve">
361-
<value>If you use this option, please make sure that the hotkey is set, otherwise, it won't unlock! (Appropriate validation may be added in the future).</value>
362-
</data>
363360
<data name="UnlockHotkey" xml:space="preserve">
364361
<value>Unlock Hotkey</value>
365362
</data>
@@ -369,4 +366,10 @@
369366
<data name="VersionHistory" xml:space="preserve">
370367
<value>Version History</value>
371368
</data>
369+
<data name="LockHotkeyUndefined" xml:space="preserve">
370+
<value>The screen lock hotkey is not set</value>
371+
</data>
372+
<data name="UnlockHotkeyUndefined" xml:space="preserve">
373+
<value>The screen unlock hotkey is not set</value>
374+
</data>
372375
</root>

src/ComputerLock/Resources/Lang.resx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -337,9 +337,6 @@
337337
<data name="HotkeyUnlock" xml:space="preserve">
338338
<value></value>
339339
</data>
340-
<data name="HotkeyUnlockTips" xml:space="preserve">
341-
<value></value>
342-
</data>
343340
<data name="UnlockHotkey" xml:space="preserve">
344341
<value></value>
345342
</data>
@@ -349,4 +346,10 @@
349346
<data name="VersionHistory" xml:space="preserve">
350347
<value></value>
351348
</data>
349+
<data name="LockHotkeyUndefined" xml:space="preserve">
350+
<value></value>
351+
</data>
352+
<data name="UnlockHotkeyUndefined" xml:space="preserve">
353+
<value></value>
354+
</data>
352355
</root>

src/ComputerLock/Resources/Lang.zh.resx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -354,9 +354,6 @@
354354
<data name="HotkeyUnlock" xml:space="preserve">
355355
<value>快捷键解锁</value>
356356
</data>
357-
<data name="HotkeyUnlockTips" xml:space="preserve">
358-
<value>如果使用此选项,请确保已经设置了快捷键,否则会无法解锁!!(后续可能会加入适当校验)</value>
359-
</data>
360357
<data name="UnlockHotkey" xml:space="preserve">
361358
<value>解锁快捷键</value>
362359
</data>
@@ -366,4 +363,10 @@
366363
<data name="VersionHistory" xml:space="preserve">
367364
<value>更新记录</value>
368365
</data>
366+
<data name="LockHotkeyUndefined" xml:space="preserve">
367+
<value>锁屏失败:未设置锁屏快捷键</value>
368+
</data>
369+
<data name="UnlockHotkeyUndefined" xml:space="preserve">
370+
<value>锁屏失败:未设置解锁快捷键</value>
371+
</data>
369372
</root>

src/ComputerLock/Services/GlobalLockService.cs

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using ComputerLock.Interfaces;
22
using Microsoft.Extensions.DependencyInjection;
33
using Microsoft.Win32;
4-
using System.Diagnostics;
54

65
namespace ComputerLock.Services;
76

@@ -19,10 +18,11 @@ internal class GlobalLockService : IGlobalLockService
1918
private readonly MouseHook _mouseHook;
2019
private readonly SystemKeyHook _systemKeyHook;
2120
private readonly IServiceProvider _serviceProvider;
22-
21+
private readonly IWindowsMessageBox _messageBox;
22+
private readonly IStringLocalizer<Lang> _lang;
2323
public bool IsLocked { get; private set; }
2424

25-
public GlobalLockService(ILogger logger, AppSettings appSettings, UserActivityMonitor activityMonitor, HotkeyHook hotkeyHook, TaskManagerHook taskManagerHook, MouseHook mouseHook, SystemKeyHook systemKeyHook, IServiceProvider serviceProvider)
25+
public GlobalLockService(ILogger logger, AppSettings appSettings, UserActivityMonitor activityMonitor, HotkeyHook hotkeyHook, TaskManagerHook taskManagerHook, MouseHook mouseHook, SystemKeyHook systemKeyHook, IServiceProvider serviceProvider, IWindowsMessageBox messageBox, IStringLocalizer<Lang> lang)
2626
{
2727
_logger = logger;
2828
_appSettings = appSettings;
@@ -38,6 +38,8 @@ public GlobalLockService(ILogger logger, AppSettings appSettings, UserActivityMo
3838
_mouseHook = mouseHook;
3939
_systemKeyHook = systemKeyHook;
4040
_serviceProvider = serviceProvider;
41+
_messageBox = messageBox;
42+
_lang = lang;
4143
}
4244

4345
/// <summary>
@@ -79,6 +81,12 @@ private void InitActivityMonitor(UserActivityMonitor userActivityMonitor)
7981

8082
public void Lock()
8183
{
84+
if (!CheckLockConfig(out var message))
85+
{
86+
_messageBox.Show(message);
87+
return;
88+
}
89+
8290
_screenLockService = _serviceProvider.GetRequiredKeyedService<IScreenLockService>(_appSettings.ScreenUnlockMethod);
8391

8492
if (!_screenLockService.Lock(_appSettings.LockAnimation))
@@ -126,6 +134,31 @@ public void Lock()
126134
IsLocked = true;
127135
}
128136

137+
private bool CheckLockConfig(out string error)
138+
{
139+
if (_appSettings.ScreenUnlockMethod == ScreenUnlockMethods.Hotkey)
140+
{
141+
if (_appSettings.IsUnlockUseLockHotkey)
142+
{
143+
if (_appSettings.LockHotkey == null)
144+
{
145+
error = _lang["LockHotkeyUndefined"];
146+
return false;
147+
}
148+
}
149+
else
150+
{
151+
if (_appSettings.UnlockHotkey == null)
152+
{
153+
error = _lang["UnlockHotkeyUndefined"];
154+
return false;
155+
}
156+
}
157+
}
158+
error = "";
159+
return true;
160+
}
161+
129162
/// <summary>
130163
/// 解锁(目前只有快捷键锁屏才会显式调用)
131164
/// </summary>

0 commit comments

Comments
 (0)