From 8bb9e7a02c0314b24b783e9d2f57a568cc314db8 Mon Sep 17 00:00:00 2001 From: NaBian <836904362@qq.com> Date: Tue, 7 Jan 2020 01:25:25 +0800 Subject: [PATCH] Update Growl.cs --- .../Controls/Growl/Growl.cs | 223 +++++++++--------- 1 file changed, 111 insertions(+), 112 deletions(-) diff --git a/src/Shared/HandyControl_Shared/Controls/Growl/Growl.cs b/src/Shared/HandyControl_Shared/Controls/Growl/Growl.cs index c62a0a39..6267a340 100644 --- a/src/Shared/HandyControl_Shared/Controls/Growl/Growl.cs +++ b/src/Shared/HandyControl_Shared/Controls/Growl/Growl.cs @@ -278,7 +278,7 @@ namespace HandyControl.Controls } _tickCount++; - if (_tickCount >= _waitTime) Close(); + if (_tickCount >= _waitTime) Close(true); }; _timerClose.Start(); } @@ -462,6 +462,96 @@ namespace HandyControl.Controls #endif } + private static void InitGrowlInfo(ref GrowlInfo growlInfo, InfoType infoType) + { + if (growlInfo == null) throw new ArgumentNullException(nameof(growlInfo)); + growlInfo.Type = infoType; + + switch (infoType) + { + case InfoType.Success: + if (!growlInfo.IsCustom) + { + growlInfo.IconKey = ResourceToken.SuccessGeometry; + growlInfo.IconBrushKey = ResourceToken.SuccessBrush; + } + else + { + growlInfo.IconKey ??= ResourceToken.SuccessGeometry; + growlInfo.IconBrushKey ??= ResourceToken.SuccessBrush; + } + break; + case InfoType.Info: + if (!growlInfo.IsCustom) + { + growlInfo.IconKey = ResourceToken.InfoGeometry; + growlInfo.IconBrushKey = ResourceToken.InfoBrush; + } + else + { + growlInfo.IconKey ??= ResourceToken.InfoGeometry; + growlInfo.IconBrushKey ??= ResourceToken.InfoBrush; + } + break; + case InfoType.Warning: + if (!growlInfo.IsCustom) + { + growlInfo.IconKey = ResourceToken.WarningGeometry; + growlInfo.IconBrushKey = ResourceToken.WarningBrush; + } + else + { + growlInfo.IconKey ??= ResourceToken.WarningGeometry; + growlInfo.IconBrushKey ??= ResourceToken.WarningBrush; + } + break; + case InfoType.Error: + if (!growlInfo.IsCustom) + { + growlInfo.IconKey = ResourceToken.ErrorGeometry; + growlInfo.IconBrushKey = ResourceToken.DangerBrush; + growlInfo.StaysOpen = true; + } + else + { + growlInfo.IconKey ??= ResourceToken.ErrorGeometry; + growlInfo.IconBrushKey ??= ResourceToken.DangerBrush; + } + break; + case InfoType.Fatal: + if (!growlInfo.IsCustom) + { + growlInfo.IconKey = ResourceToken.FatalGeometry; + growlInfo.IconBrushKey = ResourceToken.PrimaryTextBrush; + growlInfo.StaysOpen = true; + growlInfo.ShowCloseButton = false; + if (GrowlPanel.ContextMenu != null) GrowlPanel.ContextMenu.Opacity = 0; + } + else + { + growlInfo.IconKey ??= ResourceToken.FatalGeometry; + growlInfo.IconBrushKey ??= ResourceToken.PrimaryTextBrush; + } + break; + case InfoType.Ask: + if (!growlInfo.IsCustom) + { + growlInfo.IconKey = ResourceToken.AskGeometry; + growlInfo.IconBrushKey = ResourceToken.AccentBrush; + growlInfo.StaysOpen = true; + growlInfo.ShowCloseButton = false; + } + else + { + growlInfo.IconKey ??= ResourceToken.AskGeometry; + growlInfo.IconBrushKey ??= ResourceToken.AccentBrush; + } + break; + default: + throw new ArgumentOutOfRangeException(nameof(infoType), infoType, null); + } + } + /// /// 成功 /// @@ -479,13 +569,7 @@ namespace HandyControl.Controls /// public static void Success(GrowlInfo growlInfo) { - if (growlInfo == null) throw new ArgumentNullException(nameof(growlInfo)); - if (!growlInfo.IsCustom) - { - growlInfo.IconKey = ResourceToken.SuccessGeometry; - growlInfo.IconBrushKey = ResourceToken.SuccessBrush; - growlInfo.Type = InfoType.Success; - } + InitGrowlInfo(ref growlInfo, InfoType.Success); Show(growlInfo); } @@ -504,13 +588,7 @@ namespace HandyControl.Controls /// public static void SuccessGlobal(GrowlInfo growlInfo) { - if (growlInfo == null) throw new ArgumentNullException(nameof(growlInfo)); - if (!growlInfo.IsCustom) - { - growlInfo.IconKey = ResourceToken.SuccessGeometry; - growlInfo.IconBrushKey = ResourceToken.SuccessBrush; - growlInfo.Type = InfoType.Success; - } + InitGrowlInfo(ref growlInfo, InfoType.Success); ShowGlobal(growlInfo); } @@ -531,13 +609,7 @@ namespace HandyControl.Controls /// public static void Info(GrowlInfo growlInfo) { - if (growlInfo == null) throw new ArgumentNullException(nameof(growlInfo)); - if (!growlInfo.IsCustom) - { - growlInfo.IconKey = ResourceToken.InfoGeometry; - growlInfo.IconBrushKey = ResourceToken.InfoBrush; - growlInfo.Type = InfoType.Info; - } + InitGrowlInfo(ref growlInfo, InfoType.Info); Show(growlInfo); } @@ -556,13 +628,7 @@ namespace HandyControl.Controls /// public static void InfoGlobal(GrowlInfo growlInfo) { - if (growlInfo == null) throw new ArgumentNullException(nameof(growlInfo)); - if (!growlInfo.IsCustom) - { - growlInfo.IconKey = ResourceToken.InfoGeometry; - growlInfo.IconBrushKey = ResourceToken.InfoBrush; - growlInfo.Type = InfoType.Info; - } + InitGrowlInfo(ref growlInfo, InfoType.Info); ShowGlobal(growlInfo); } @@ -583,13 +649,7 @@ namespace HandyControl.Controls /// public static void Warning(GrowlInfo growlInfo) { - if (growlInfo == null) throw new ArgumentNullException(nameof(growlInfo)); - if (!growlInfo.IsCustom) - { - growlInfo.IconKey = ResourceToken.WarningGeometry; - growlInfo.IconBrushKey = ResourceToken.WarningBrush; - growlInfo.Type = InfoType.Warning; - } + InitGrowlInfo(ref growlInfo, InfoType.Warning); Show(growlInfo); } @@ -608,13 +668,7 @@ namespace HandyControl.Controls /// public static void WarningGlobal(GrowlInfo growlInfo) { - if (growlInfo == null) throw new ArgumentNullException(nameof(growlInfo)); - if (!growlInfo.IsCustom) - { - growlInfo.IconKey = ResourceToken.WarningGeometry; - growlInfo.IconBrushKey = ResourceToken.WarningBrush; - growlInfo.Type = InfoType.Warning; - } + InitGrowlInfo(ref growlInfo, InfoType.Warning); ShowGlobal(growlInfo); } @@ -635,14 +689,7 @@ namespace HandyControl.Controls /// public static void Error(GrowlInfo growlInfo) { - if (growlInfo == null) throw new ArgumentNullException(nameof(growlInfo)); - if (!growlInfo.IsCustom) - { - growlInfo.IconKey = ResourceToken.ErrorGeometry; - growlInfo.IconBrushKey = ResourceToken.DangerBrush; - growlInfo.StaysOpen = true; - growlInfo.Type = InfoType.Error; - } + InitGrowlInfo(ref growlInfo, InfoType.Error); Show(growlInfo); } @@ -661,14 +708,7 @@ namespace HandyControl.Controls /// public static void ErrorGlobal(GrowlInfo growlInfo) { - if (growlInfo == null) throw new ArgumentNullException(nameof(growlInfo)); - if (!growlInfo.IsCustom) - { - growlInfo.IconKey = ResourceToken.ErrorGeometry; - growlInfo.IconBrushKey = ResourceToken.DangerBrush; - growlInfo.StaysOpen = true; - growlInfo.Type = InfoType.Error; - } + InitGrowlInfo(ref growlInfo, InfoType.Error); ShowGlobal(growlInfo); } @@ -689,16 +729,7 @@ namespace HandyControl.Controls /// public static void Fatal(GrowlInfo growlInfo) { - if (growlInfo == null) throw new ArgumentNullException(nameof(growlInfo)); - if (!growlInfo.IsCustom) - { - growlInfo.IconKey = ResourceToken.FatalGeometry; - growlInfo.IconBrushKey = ResourceToken.PrimaryTextBrush; - growlInfo.StaysOpen = true; - growlInfo.ShowCloseButton = false; - growlInfo.Type = InfoType.Fatal; - if (GrowlPanel.ContextMenu != null) GrowlPanel.ContextMenu.Opacity = 0; - } + InitGrowlInfo(ref growlInfo, InfoType.Fatal); Show(growlInfo); } @@ -717,16 +748,7 @@ namespace HandyControl.Controls /// public static void FatalGlobal(GrowlInfo growlInfo) { - if (growlInfo == null) throw new ArgumentNullException(nameof(growlInfo)); - if (!growlInfo.IsCustom) - { - growlInfo.IconKey = ResourceToken.FatalGeometry; - growlInfo.IconBrushKey = ResourceToken.PrimaryTextBrush; - growlInfo.StaysOpen = true; - growlInfo.ShowCloseButton = false; - growlInfo.Type = InfoType.Fatal; - if (GrowlPanel.ContextMenu != null) GrowlPanel.ContextMenu.Opacity = 0; - } + InitGrowlInfo(ref growlInfo, InfoType.Fatal); ShowGlobal(growlInfo); } @@ -749,15 +771,7 @@ namespace HandyControl.Controls /// public static void Ask(GrowlInfo growlInfo) { - if (growlInfo == null) throw new ArgumentNullException(nameof(growlInfo)); - if (!growlInfo.IsCustom) - { - growlInfo.IconKey = ResourceToken.AskGeometry; - growlInfo.IconBrushKey = ResourceToken.AccentBrush; - growlInfo.StaysOpen = true; - growlInfo.ShowCloseButton = false; - growlInfo.Type = InfoType.Ask; - } + InitGrowlInfo(ref growlInfo, InfoType.Ask); Show(growlInfo); } @@ -778,15 +792,7 @@ namespace HandyControl.Controls /// public static void AskGlobal(GrowlInfo growlInfo) { - if (growlInfo == null) throw new ArgumentNullException(nameof(growlInfo)); - if (!growlInfo.IsCustom) - { - growlInfo.IconKey = ResourceToken.AskGeometry; - growlInfo.IconBrushKey = ResourceToken.AccentBrush; - growlInfo.StaysOpen = true; - growlInfo.ShowCloseButton = false; - growlInfo.Type = InfoType.Ask; - } + InitGrowlInfo(ref growlInfo, InfoType.Ask); ShowGlobal(growlInfo); } @@ -795,8 +801,13 @@ namespace HandyControl.Controls /// /// 关闭 /// - private void Close() + private void Close(bool invokeActionBeforeClose = false, bool invokeParam = true) { + if (invokeActionBeforeClose) + { + ActionBeforeClose?.Invoke(invokeParam); + } + _timerClose?.Stop(); var transform = new TranslateTransform(); _gridMain.RenderTransform = transform; @@ -862,20 +873,8 @@ namespace HandyControl.Controls GrowlWindow = null; } - private void ButtonCancel_OnClick(object sender, RoutedEventArgs e) - { - if (ActionBeforeClose?.Invoke(false) == true) - { - Close(); - } - } + private void ButtonCancel_OnClick(object sender, RoutedEventArgs e) => Close(true, false); - private void ButtonOk_OnClick(object sender, RoutedEventArgs e) - { - if (ActionBeforeClose?.Invoke(true) == true) - { - Close(); - } - } + private void ButtonOk_OnClick(object sender, RoutedEventArgs e) => Close(true); } } \ No newline at end of file