Skip to content

Commit 1d9aa3d

Browse files
committed
新增锁屏状态:左上角圆点、右上角圆点
1 parent d47a577 commit 1d9aa3d

File tree

11 files changed

+131
-22
lines changed

11 files changed

+131
-22
lines changed

src/ComputerLock/BreathingLightHelper.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@
55
namespace ComputerLock;
66
public static class BreathingLightHelper
77
{
8-
public static void InitializeBreathingLight(Border breathingLight)
8+
public static void InitializeBreathingLight(UIElement element)
99
{
10-
breathingLight.Visibility = Visibility.Visible;
11-
StartBreathingAnimation(breathingLight);
10+
element.Visibility = Visibility.Visible;
11+
StartBreathingAnimation(element);
1212
}
1313

14-
private static void StartBreathingAnimation(Border breathingLight)
14+
private static void StartBreathingAnimation(UIElement element)
1515
{
16-
var breathingAnimation = new Storyboard();
16+
var animation = new Storyboard();
1717

1818
var opacityAnimation = new DoubleAnimation
1919
{
@@ -24,10 +24,10 @@ private static void StartBreathingAnimation(Border breathingLight)
2424
RepeatBehavior = RepeatBehavior.Forever
2525
};
2626

27-
Storyboard.SetTarget(opacityAnimation, breathingLight);
28-
Storyboard.SetTargetProperty(opacityAnimation, new PropertyPath(Border.OpacityProperty));
27+
Storyboard.SetTarget(opacityAnimation, element);
28+
Storyboard.SetTargetProperty(opacityAnimation, new PropertyPath("Opacity"));
2929

30-
breathingAnimation.Children.Add(opacityAnimation);
31-
breathingAnimation.Begin();
30+
animation.Children.Add(opacityAnimation);
31+
animation.Begin();
3232
}
33-
}
33+
}

src/ComputerLock/Components/Settings/LockSettings.razor

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,10 @@
5656
Variant="Variant.Outlined"
5757
Value="@(AppSettings.LockStatusDisplay)"
5858
ValueChanged="LockStatusDisplayChanged">
59-
<MudSelectItem Value="@(LockStatusDisplay.None)">@(Lang["LockStatusDisplayNone"])</MudSelectItem>
60-
<MudSelectItem Value="@(LockStatusDisplay.BreathingTop)">@(Lang["LockStatusDisplayBreathingTop"])</MudSelectItem>
59+
<MudSelectItem Value="@(LockStatusDisplay.None)">@($"🚫 {Lang["LockStatusDisplayNone"]}")</MudSelectItem>
60+
<MudSelectItem Value="@(LockStatusDisplay.BreathingTop)">@($"💡 {Lang["LockStatusDisplayBreathingTop"]}")</MudSelectItem>
61+
<MudSelectItem Value="@(LockStatusDisplay.DotTopLeft)">@($"🔵 {Lang["LockStatusDisplayDotTopLeft"]}")</MudSelectItem>
62+
<MudSelectItem Value="@(LockStatusDisplay.DotTopRight)">@($"🔴 {Lang["LockStatusDisplayDotTopRight"]}")</MudSelectItem>
6163
</MudSelect>
6264

6365
<MudNumericField T="int"

src/ComputerLock/Enums/LockStatusDisplay.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,13 @@ public enum LockStatusDisplay
1313
/// <summary>
1414
/// 顶部呼吸灯
1515
/// </summary>
16-
BreathingTop = 2
16+
BreathingTop = 2,
17+
/// <summary>
18+
/// 左上角圆点
19+
/// </summary>
20+
DotTopLeft = 4,
21+
/// <summary>
22+
/// 右上角圆点
23+
/// </summary>
24+
DotTopRight = 8,
1725
}

src/ComputerLock/Resources/Lang.Designer.cs

Lines changed: 18 additions & 0 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: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@
331331
<value>Suggested to Enable</value>
332332
</data>
333333
<data name="LockStatusDisplay" xml:space="preserve">
334-
<value>Lock Screen Status Display</value>
334+
<value>Lock Screen Indicator</value>
335335
</data>
336336
<data name="LockStatusDisplayNone" xml:space="preserve">
337337
<value>None</value>
@@ -372,4 +372,10 @@
372372
<data name="EnableSoftwareRenderingRemark" xml:space="preserve">
373373
<value>Reduces memory usage when enabled, but may affect animation smoothness.</value>
374374
</data>
375+
<data name="LockStatusDisplayDotTopLeft" xml:space="preserve">
376+
<value>Top-left Dot</value>
377+
</data>
378+
<data name="LockStatusDisplayDotTopRight" xml:space="preserve">
379+
<value>Top-right Dot</value>
380+
</data>
375381
</root>

src/ComputerLock/Resources/Lang.resx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,4 +390,10 @@
390390
<data name="EnableSoftwareRenderingRemark" xml:space="preserve">
391391
<value />
392392
</data>
393+
<data name="LockStatusDisplayDotTopLeft" xml:space="preserve">
394+
<value />
395+
</data>
396+
<data name="LockStatusDisplayDotTopRight" xml:space="preserve">
397+
<value />
398+
</data>
393399
</root>

src/ComputerLock/Resources/Lang.zh.resx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -328,10 +328,10 @@
328328
<value>建议开启</value>
329329
</data>
330330
<data name="LockStatusDisplay" xml:space="preserve">
331-
<value>锁屏状态展示</value>
331+
<value>锁屏状态提示方式</value>
332332
</data>
333333
<data name="LockStatusDisplayNone" xml:space="preserve">
334-
<value>关闭</value>
334+
<value>不提示</value>
335335
</data>
336336
<data name="LockStatusDisplayBreathingTop" xml:space="preserve">
337337
<value>顶部呼吸灯</value>
@@ -369,4 +369,10 @@
369369
<data name="EnableSoftwareRenderingRemark" xml:space="preserve">
370370
<value>启用时可减少内存占用,但可能影响动画流畅性</value>
371371
</data>
372+
<data name="LockStatusDisplayDotTopLeft" xml:space="preserve">
373+
<value>左上角圆点</value>
374+
</data>
375+
<data name="LockStatusDisplayDotTopRight" xml:space="preserve">
376+
<value>右上角圆点</value>
377+
</data>
372378
</root>

src/ComputerLock/WindowBlankScreen.xaml

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,38 @@
1616
Closing="Window_Closing">
1717
<Grid>
1818
<Panel.Background>
19-
<SolidColorBrush Color="#000000" Opacity="0.01"/>
19+
<SolidColorBrush Color="#01000000"/>
2020
</Panel.Background>
21+
22+
<!-- 顶部呼吸灯,默认隐藏 -->
2123
<Grid VerticalAlignment="Top">
22-
23-
<!-- 顶部呼吸灯,默认隐藏 -->
2424
<Border x:Name="TopBreathingLight"
2525
Background="#fb8c00"
2626
Height="4"
2727
HorizontalAlignment="Stretch"
2828
Visibility="Collapsed"/>
2929
</Grid>
30+
31+
<!-- 左上角小圆点 -->
32+
<Ellipse x:Name="DotTopLeft"
33+
Width="10"
34+
Height="10"
35+
Fill="#fb8c00"
36+
Opacity="0.3"
37+
HorizontalAlignment="Left"
38+
VerticalAlignment="Top"
39+
Margin="2"
40+
Visibility="Collapsed"/>
41+
42+
<!-- 右上角小圆点 -->
43+
<Ellipse x:Name="DotTopRight"
44+
Width="10"
45+
Height="10"
46+
Fill="#fb8c00"
47+
Opacity="0.3"
48+
HorizontalAlignment="Right"
49+
VerticalAlignment="Top"
50+
Margin="2"
51+
Visibility="Collapsed"/>
3052
</Grid>
3153
</Window>

src/ComputerLock/WindowBlankScreen.xaml.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,21 @@ public WindowBlankScreen(AppSettings appSettings, ILogger logger)
2323
private void Window_Loaded(object sender, RoutedEventArgs e)
2424
{
2525
_logger.Write("空白屏幕 -> 准备锁定");
26-
if (_appSettings.LockStatusDisplay == LockStatusDisplay.BreathingTop)
26+
if (_appSettings.LockStatusDisplay.HasFlag(LockStatusDisplay.BreathingTop))
2727
{
2828
_logger.Write("空白屏幕 -> 启用顶部呼吸灯");
2929
BreathingLightHelper.InitializeBreathingLight(TopBreathingLight);
3030
}
31+
if (_appSettings.LockStatusDisplay.HasFlag(LockStatusDisplay.DotTopLeft))
32+
{
33+
_logger.Write("空白屏幕 -> 启用左上角圆点");
34+
BreathingLightHelper.InitializeBreathingLight(DotTopLeft);
35+
}
36+
if (_appSettings.LockStatusDisplay.HasFlag(LockStatusDisplay.DotTopRight))
37+
{
38+
_logger.Write("空白屏幕 -> 启用右上角圆点");
39+
BreathingLightHelper.InitializeBreathingLight(DotTopRight);
40+
}
3141
}
3242

3343
private void Window_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)

src/ComputerLock/WindowLockScreen.xaml

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
<Grid>
2828
<Panel.Background>
29-
<SolidColorBrush Color="#000000" Opacity="0.01"/>
29+
<SolidColorBrush Color="#01000000"/>
3030
</Panel.Background>
3131

3232
<!-- 顶部呼吸灯,默认隐藏 -->
@@ -35,6 +35,27 @@
3535
HorizontalAlignment="Stretch" Visibility="Collapsed"/>
3636
</Grid>
3737

38+
<!-- 左上角小圆点 -->
39+
<Border x:Name="DotTopLeft"
40+
Width="10"
41+
Height="10"
42+
Background="#fb8c00"
43+
CornerRadius="5"
44+
HorizontalAlignment="Left"
45+
VerticalAlignment="Top"
46+
Margin="2"
47+
Visibility="Collapsed" />
48+
49+
<!-- 右上角小圆点 -->
50+
<Border x:Name="DotTopRight"
51+
Width="10" Height="10"
52+
Background="#fb8c00"
53+
CornerRadius="5"
54+
HorizontalAlignment="Right"
55+
VerticalAlignment="Top"
56+
Margin="2"
57+
Visibility="Collapsed" />
58+
3859
<Border MouseDown="PasswordBlock_MouseDown"
3960
x:Name="PasswordBlock"
4061
Width="230"

src/ComputerLock/WindowLockScreen.xaml.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,21 @@ private void Window_Loaded(object sender, RoutedEventArgs e)
4848
}
4949
HidePassword();
5050

51-
if (_appSettings.LockStatusDisplay == LockStatusDisplay.BreathingTop)
51+
if (_appSettings.LockStatusDisplay.HasFlag(LockStatusDisplay.BreathingTop))
5252
{
5353
_logger.Write("功能屏幕 -> 启用顶部呼吸灯");
5454
BreathingLightHelper.InitializeBreathingLight(TopBreathingLight);
5555
}
56+
if (_appSettings.LockStatusDisplay.HasFlag(LockStatusDisplay.DotTopLeft))
57+
{
58+
_logger.Write("功能屏幕 -> 启用左上角圆点");
59+
BreathingLightHelper.InitializeBreathingLight(DotTopLeft);
60+
}
61+
if (_appSettings.LockStatusDisplay.HasFlag(LockStatusDisplay.DotTopRight))
62+
{
63+
_logger.Write("功能屏幕 -> 启用右上角圆点");
64+
BreathingLightHelper.InitializeBreathingLight(DotTopRight);
65+
}
5666
}
5767

5868
private void Window_SizeChanged(object sender, SizeChangedEventArgs e)

0 commit comments

Comments
 (0)