feat: refactor to simplify null control property and event initialization.
This commit is contained in:
@@ -1,41 +0,0 @@
|
|||||||
using Avalonia.Controls;
|
|
||||||
using Avalonia.Interactivity;
|
|
||||||
|
|
||||||
namespace Ursa.Common;
|
|
||||||
|
|
||||||
internal static class EventHelper
|
|
||||||
{
|
|
||||||
public static void RegisterClickEvent(EventHandler<RoutedEventArgs> handler, params Button?[] buttons)
|
|
||||||
{
|
|
||||||
foreach (var button in buttons)
|
|
||||||
{
|
|
||||||
if(button is not null) button.Click += handler;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void UnregisterClickEvent(EventHandler<RoutedEventArgs> handler, params Button?[] buttons)
|
|
||||||
{
|
|
||||||
foreach (var button in buttons)
|
|
||||||
{
|
|
||||||
if(button is not null) button.Click -= handler;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void RegisterEvent<TArgs>(RoutedEvent<TArgs> routedEvent, EventHandler<TArgs> handler, params Button?[] controls)
|
|
||||||
where TArgs : RoutedEventArgs
|
|
||||||
{
|
|
||||||
foreach (var control in controls)
|
|
||||||
{
|
|
||||||
control?.AddHandler(routedEvent, handler);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void UnregisterEvent<TArgs>(RoutedEvent<TArgs> routedEvent, EventHandler<TArgs> handler, params Button?[] controls)
|
|
||||||
where TArgs : RoutedEventArgs
|
|
||||||
{
|
|
||||||
foreach (var control in controls)
|
|
||||||
{
|
|
||||||
control?.RemoveHandler(routedEvent, handler);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
using Avalonia;
|
|
||||||
|
|
||||||
namespace Ursa.Common;
|
|
||||||
|
|
||||||
public static class PropertyHelper
|
|
||||||
{
|
|
||||||
public static void SetValue<TValue>(AvaloniaProperty<TValue> property, TValue value, params AvaloniaObject?[] elements)
|
|
||||||
{
|
|
||||||
foreach (var element in elements)
|
|
||||||
{
|
|
||||||
element?.SetValue(property, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -4,6 +4,7 @@ using Avalonia.Controls.Metadata;
|
|||||||
using Avalonia.Controls.Primitives;
|
using Avalonia.Controls.Primitives;
|
||||||
using Avalonia.Input;
|
using Avalonia.Input;
|
||||||
using Avalonia.Interactivity;
|
using Avalonia.Interactivity;
|
||||||
|
using Irihi.Avalonia.Shared.Helpers;
|
||||||
using Ursa.Common;
|
using Ursa.Common;
|
||||||
using Ursa.EventArgs;
|
using Ursa.EventArgs;
|
||||||
|
|
||||||
@@ -55,12 +56,12 @@ public class DefaultDialogControl: DialogControlBase
|
|||||||
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
||||||
{
|
{
|
||||||
base.OnApplyTemplate(e);
|
base.OnApplyTemplate(e);
|
||||||
EventHelper.UnregisterClickEvent(DefaultButtonsClose, _okButton, _cancelButton, _yesButton, _noButton);
|
Button.ClickEvent.RemoveHandler(DefaultButtonsClose, _okButton, _cancelButton, _yesButton, _noButton);
|
||||||
_okButton = e.NameScope.Find<Button>(PART_OKButton);
|
_okButton = e.NameScope.Find<Button>(PART_OKButton);
|
||||||
_cancelButton = e.NameScope.Find<Button>(PART_CancelButton);
|
_cancelButton = e.NameScope.Find<Button>(PART_CancelButton);
|
||||||
_yesButton = e.NameScope.Find<Button>(PART_YesButton);
|
_yesButton = e.NameScope.Find<Button>(PART_YesButton);
|
||||||
_noButton = e.NameScope.Find<Button>(PART_NoButton);
|
_noButton = e.NameScope.Find<Button>(PART_NoButton);
|
||||||
EventHelper.RegisterClickEvent(DefaultButtonsClose, _yesButton, _noButton, _okButton, _cancelButton);
|
Button.ClickEvent.AddHandler(DefaultButtonsClose, _okButton, _cancelButton, _yesButton, _noButton);
|
||||||
SetButtonVisibility();
|
SetButtonVisibility();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,38 +69,27 @@ public class DefaultDialogControl: DialogControlBase
|
|||||||
private void SetButtonVisibility()
|
private void SetButtonVisibility()
|
||||||
{
|
{
|
||||||
bool isCloseButtonVisible = DataContext is IDialogContext || Buttons != DialogButton.YesNo;
|
bool isCloseButtonVisible = DataContext is IDialogContext || Buttons != DialogButton.YesNo;
|
||||||
SetVisibility(_closeButton, isCloseButtonVisible);
|
Button.IsVisibleProperty.SetValue(isCloseButtonVisible, _closeButton);
|
||||||
switch (Buttons)
|
switch (Buttons)
|
||||||
{
|
{
|
||||||
case DialogButton.None:
|
case DialogButton.None:
|
||||||
SetVisibility(_okButton, false);
|
Button.IsVisibleProperty.SetValue(false, _okButton, _cancelButton, _yesButton, _noButton);
|
||||||
SetVisibility(_cancelButton, false);
|
|
||||||
SetVisibility(_yesButton, false);
|
|
||||||
SetVisibility(_noButton, false);
|
|
||||||
break;
|
break;
|
||||||
case DialogButton.OK:
|
case DialogButton.OK:
|
||||||
SetVisibility(_okButton, true);
|
Button.IsVisibleProperty.SetValue(true, _okButton);
|
||||||
SetVisibility(_cancelButton, false);
|
Button.IsVisibleProperty.SetValue(false, _cancelButton, _yesButton, _noButton);
|
||||||
SetVisibility(_yesButton, false);
|
|
||||||
SetVisibility(_noButton, false);
|
|
||||||
break;
|
break;
|
||||||
case DialogButton.OKCancel:
|
case DialogButton.OKCancel:
|
||||||
SetVisibility(_okButton, true);
|
Button.IsVisibleProperty.SetValue(true, _okButton, _cancelButton);
|
||||||
SetVisibility(_cancelButton, true);
|
Button.IsVisibleProperty.SetValue(false, _yesButton, _noButton);
|
||||||
SetVisibility(_yesButton, false);
|
|
||||||
SetVisibility(_noButton, false);
|
|
||||||
break;
|
break;
|
||||||
case DialogButton.YesNo:
|
case DialogButton.YesNo:
|
||||||
SetVisibility(_okButton, false);
|
Button.IsVisibleProperty.SetValue(false, _okButton, _cancelButton);
|
||||||
SetVisibility(_cancelButton, false);
|
Button.IsVisibleProperty.SetValue(true, _yesButton, _noButton);
|
||||||
SetVisibility(_yesButton, true);
|
|
||||||
SetVisibility(_noButton, true);
|
|
||||||
break;
|
break;
|
||||||
case DialogButton.YesNoCancel:
|
case DialogButton.YesNoCancel:
|
||||||
SetVisibility(_okButton, false);
|
Button.IsVisibleProperty.SetValue(false, _okButton);
|
||||||
SetVisibility(_cancelButton, true);
|
Button.IsVisibleProperty.SetValue(true, _cancelButton, _yesButton, _noButton);
|
||||||
SetVisibility(_yesButton, true);
|
|
||||||
SetVisibility(_noButton, true);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ using Avalonia.Controls;
|
|||||||
using Avalonia.Controls.Metadata;
|
using Avalonia.Controls.Metadata;
|
||||||
using Avalonia.Controls.Primitives;
|
using Avalonia.Controls.Primitives;
|
||||||
using Avalonia.Interactivity;
|
using Avalonia.Interactivity;
|
||||||
|
using Irihi.Avalonia.Shared.Helpers;
|
||||||
using Ursa.Common;
|
using Ursa.Common;
|
||||||
|
|
||||||
namespace Ursa.Controls;
|
namespace Ursa.Controls;
|
||||||
@@ -46,14 +47,12 @@ public class DefaultDialogWindow: DialogWindow
|
|||||||
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
||||||
{
|
{
|
||||||
base.OnApplyTemplate(e);
|
base.OnApplyTemplate(e);
|
||||||
EventHelper.UnregisterClickEvent(OnDefaultClose, _okButton, _cancelButton, _yesButton, _noButton);
|
Button.ClickEvent.RemoveHandler(OnDefaultClose, _okButton, _cancelButton, _yesButton, _noButton);
|
||||||
|
|
||||||
_okButton = e.NameScope.Find<Button>(PART_OKButton);
|
_okButton = e.NameScope.Find<Button>(PART_OKButton);
|
||||||
_cancelButton = e.NameScope.Find<Button>(PART_CancelButton);
|
_cancelButton = e.NameScope.Find<Button>(PART_CancelButton);
|
||||||
_yesButton = e.NameScope.Find<Button>(PART_YesButton);
|
_yesButton = e.NameScope.Find<Button>(PART_YesButton);
|
||||||
_noButton = e.NameScope.Find<Button>(PART_NoButton);
|
_noButton = e.NameScope.Find<Button>(PART_NoButton);
|
||||||
|
Button.ClickEvent.AddHandler(OnDefaultClose, _okButton, _cancelButton, _yesButton, _noButton);
|
||||||
EventHelper.RegisterClickEvent(OnDefaultClose, _yesButton, _noButton, _okButton, _cancelButton);
|
|
||||||
SetButtonVisibility();
|
SetButtonVisibility();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ using Avalonia.Controls.Metadata;
|
|||||||
using Avalonia.Controls.Primitives;
|
using Avalonia.Controls.Primitives;
|
||||||
using Avalonia.Input;
|
using Avalonia.Input;
|
||||||
using Avalonia.Interactivity;
|
using Avalonia.Interactivity;
|
||||||
|
using Irihi.Avalonia.Shared.Helpers;
|
||||||
using Ursa.Common;
|
using Ursa.Common;
|
||||||
using Ursa.Controls.OverlayShared;
|
using Ursa.Controls.OverlayShared;
|
||||||
using Ursa.EventArgs;
|
using Ursa.EventArgs;
|
||||||
@@ -63,9 +64,9 @@ public abstract class DialogControlBase: OverlayFeedbackElement
|
|||||||
_titleArea?.AddHandler(PointerMovedEvent, OnTitlePointerMove, RoutingStrategies.Bubble);
|
_titleArea?.AddHandler(PointerMovedEvent, OnTitlePointerMove, RoutingStrategies.Bubble);
|
||||||
_titleArea?.AddHandler(PointerPressedEvent, OnTitlePointerPressed, RoutingStrategies.Bubble);
|
_titleArea?.AddHandler(PointerPressedEvent, OnTitlePointerPressed, RoutingStrategies.Bubble);
|
||||||
_titleArea?.AddHandler(PointerReleasedEvent, OnTitlePointerRelease, RoutingStrategies.Bubble);
|
_titleArea?.AddHandler(PointerReleasedEvent, OnTitlePointerRelease, RoutingStrategies.Bubble);
|
||||||
EventHelper.UnregisterClickEvent(OnCloseButtonClick, _closeButton);
|
Button.ClickEvent.AddHandler(OnCloseButtonClick, _closeButton);
|
||||||
_closeButton = e.NameScope.Find<Button>(PART_CloseButton);
|
_closeButton = e.NameScope.Find<Button>(PART_CloseButton);
|
||||||
EventHelper.RegisterClickEvent(OnCloseButtonClick, _closeButton);
|
Button.ClickEvent.RemoveHandler(OnCloseButtonClick, _closeButton);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnTitlePointerPressed(object sender, PointerPressedEventArgs e)
|
private void OnTitlePointerPressed(object sender, PointerPressedEventArgs e)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using Avalonia.Controls.Metadata;
|
|||||||
using Avalonia.Controls.Primitives;
|
using Avalonia.Controls.Primitives;
|
||||||
using Avalonia.Input;
|
using Avalonia.Input;
|
||||||
using Avalonia.Interactivity;
|
using Avalonia.Interactivity;
|
||||||
|
using Irihi.Avalonia.Shared.Helpers;
|
||||||
using Ursa.Common;
|
using Ursa.Common;
|
||||||
|
|
||||||
namespace Ursa.Controls;
|
namespace Ursa.Controls;
|
||||||
@@ -42,16 +43,14 @@ public class DialogWindow: Window
|
|||||||
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
||||||
{
|
{
|
||||||
base.OnApplyTemplate(e);
|
base.OnApplyTemplate(e);
|
||||||
EventHelper.UnregisterClickEvent(OnCloseButtonClicked, _closeButton);
|
Button.ClickEvent.RemoveHandler(OnCloseButtonClicked, _closeButton);
|
||||||
_titleArea?.RemoveHandler(PointerPressedEvent, OnTitlePointerPressed);
|
_titleArea?.RemoveHandler(PointerPressedEvent, OnTitlePointerPressed);
|
||||||
_closeButton = e.NameScope.Find<Button>(PART_CloseButton);
|
_closeButton = e.NameScope.Find<Button>(PART_CloseButton);
|
||||||
if (_closeButton is not null)
|
Button.IsVisibleProperty.SetValue(IsCloseButtonVisible, _closeButton);
|
||||||
{
|
Button.ClickEvent.AddHandler(OnCloseButtonClicked, _closeButton);
|
||||||
_closeButton.IsVisible = IsCloseButtonVisible;
|
|
||||||
}
|
|
||||||
_titleArea = e.NameScope.Find<Panel>(PART_TitleArea);
|
_titleArea = e.NameScope.Find<Panel>(PART_TitleArea);
|
||||||
_titleArea?.AddHandler(PointerPressedEvent, OnTitlePointerPressed, RoutingStrategies.Bubble);
|
_titleArea?.AddHandler(PointerPressedEvent, OnTitlePointerPressed, RoutingStrategies.Bubble);
|
||||||
EventHelper.RegisterClickEvent(OnCloseButtonClicked, _closeButton);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnContextRequestClose(object? sender, object? args)
|
private void OnContextRequestClose(object? sender, object? args)
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ using Avalonia.Controls;
|
|||||||
using Avalonia.Controls.Metadata;
|
using Avalonia.Controls.Metadata;
|
||||||
using Avalonia.Controls.Primitives;
|
using Avalonia.Controls.Primitives;
|
||||||
using Avalonia.Interactivity;
|
using Avalonia.Interactivity;
|
||||||
|
using Irihi.Avalonia.Shared.Helpers;
|
||||||
using Ursa.Common;
|
using Ursa.Common;
|
||||||
using Ursa.EventArgs;
|
using Ursa.EventArgs;
|
||||||
|
|
||||||
@@ -54,50 +55,39 @@ public class DefaultDrawerControl: DrawerControlBase
|
|||||||
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
||||||
{
|
{
|
||||||
base.OnApplyTemplate(e);
|
base.OnApplyTemplate(e);
|
||||||
EventHelper.UnregisterClickEvent(OnDefaultButtonClick, _yesButton, _noButton, _okButton, _cancelButton);
|
Button.ClickEvent.RemoveHandler(OnDefaultButtonClick, _yesButton, _noButton, _okButton, _cancelButton);
|
||||||
_yesButton = e.NameScope.Find<Button>(PART_YesButton);
|
_yesButton = e.NameScope.Find<Button>(PART_YesButton);
|
||||||
_noButton = e.NameScope.Find<Button>(PART_NoButton);
|
_noButton = e.NameScope.Find<Button>(PART_NoButton);
|
||||||
_okButton = e.NameScope.Find<Button>(PART_OKButton);
|
_okButton = e.NameScope.Find<Button>(PART_OKButton);
|
||||||
_cancelButton = e.NameScope.Find<Button>(PART_CancelButton);
|
_cancelButton = e.NameScope.Find<Button>(PART_CancelButton);
|
||||||
EventHelper.RegisterClickEvent(OnDefaultButtonClick, _yesButton, _noButton, _okButton, _cancelButton);
|
Button.ClickEvent.AddHandler(OnDefaultButtonClick, _yesButton, _noButton, _okButton, _cancelButton);
|
||||||
SetButtonVisibility();
|
SetButtonVisibility();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SetButtonVisibility()
|
private void SetButtonVisibility()
|
||||||
{
|
{
|
||||||
bool isCloseButtonVisible = DataContext is IDialogContext || Buttons != DialogButton.YesNo;
|
bool isCloseButtonVisible = DataContext is IDialogContext || Buttons != DialogButton.YesNo;
|
||||||
SetVisibility(_closeButton, isCloseButtonVisible);
|
Button.IsVisibleProperty.SetValue(isCloseButtonVisible, _closeButton);
|
||||||
switch (Buttons)
|
switch (Buttons)
|
||||||
{
|
{
|
||||||
case DialogButton.None:
|
case DialogButton.None:
|
||||||
SetVisibility(_okButton, false);
|
Button.IsVisibleProperty.SetValue(false, _okButton, _cancelButton, _yesButton, _noButton);
|
||||||
SetVisibility(_cancelButton, false);
|
|
||||||
SetVisibility(_yesButton, false);
|
|
||||||
SetVisibility(_noButton, false);
|
|
||||||
break;
|
break;
|
||||||
case DialogButton.OK:
|
case DialogButton.OK:
|
||||||
SetVisibility(_okButton, true);
|
Button.IsVisibleProperty.SetValue(true, _okButton);
|
||||||
SetVisibility(_cancelButton, false);
|
Button.IsVisibleProperty.SetValue(false, _cancelButton, _yesButton, _noButton);
|
||||||
SetVisibility(_yesButton, false);
|
|
||||||
SetVisibility(_noButton, false);
|
|
||||||
break;
|
break;
|
||||||
case DialogButton.OKCancel:
|
case DialogButton.OKCancel:
|
||||||
SetVisibility(_okButton, true);
|
Button.IsVisibleProperty.SetValue(true, _okButton, _cancelButton);
|
||||||
SetVisibility(_cancelButton, true);
|
Button.IsVisibleProperty.SetValue(false, _yesButton, _noButton);
|
||||||
SetVisibility(_yesButton, false);
|
|
||||||
SetVisibility(_noButton, false);
|
|
||||||
break;
|
break;
|
||||||
case DialogButton.YesNo:
|
case DialogButton.YesNo:
|
||||||
SetVisibility(_okButton, false);
|
Button.IsVisibleProperty.SetValue(false, _okButton, _cancelButton);
|
||||||
SetVisibility(_cancelButton, false);
|
Button.IsVisibleProperty.SetValue(true, _yesButton, _noButton);
|
||||||
SetVisibility(_yesButton, true);
|
|
||||||
SetVisibility(_noButton, true);
|
|
||||||
break;
|
break;
|
||||||
case DialogButton.YesNoCancel:
|
case DialogButton.YesNoCancel:
|
||||||
SetVisibility(_okButton, false);
|
Button.IsVisibleProperty.SetValue(false, _okButton);
|
||||||
SetVisibility(_cancelButton, true);
|
Button.IsVisibleProperty.SetValue(true, _cancelButton, _yesButton, _noButton);
|
||||||
SetVisibility(_yesButton, true);
|
|
||||||
SetVisibility(_noButton, true);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using Avalonia.Controls.Metadata;
|
|||||||
using Avalonia.Controls.Primitives;
|
using Avalonia.Controls.Primitives;
|
||||||
using Avalonia.Interactivity;
|
using Avalonia.Interactivity;
|
||||||
using Avalonia.Threading;
|
using Avalonia.Threading;
|
||||||
|
using Irihi.Avalonia.Shared.Helpers;
|
||||||
using Ursa.Common;
|
using Ursa.Common;
|
||||||
using Ursa.Controls.OverlayShared;
|
using Ursa.Controls.OverlayShared;
|
||||||
using Ursa.EventArgs;
|
using Ursa.EventArgs;
|
||||||
@@ -59,9 +60,9 @@ public const string PART_CloseButton = "PART_CloseButton";
|
|||||||
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
||||||
{
|
{
|
||||||
base.OnApplyTemplate(e);
|
base.OnApplyTemplate(e);
|
||||||
EventHelper.UnregisterClickEvent(OnCloseButtonClick, _closeButton);
|
Button.ClickEvent.RemoveHandler(OnCloseButtonClick, _closeButton);
|
||||||
_closeButton = e.NameScope.Find<Button>(PART_CloseButton);
|
_closeButton = e.NameScope.Find<Button>(PART_CloseButton);
|
||||||
EventHelper.RegisterClickEvent(OnCloseButtonClick, _closeButton);
|
Button.ClickEvent.AddHandler(OnCloseButtonClick, _closeButton);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnDataContextChange(AvaloniaPropertyChangedEventArgs<object?> args)
|
private void OnDataContextChange(AvaloniaPropertyChangedEventArgs<object?> args)
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ using Avalonia.Input;
|
|||||||
using Avalonia.Interactivity;
|
using Avalonia.Interactivity;
|
||||||
using Avalonia.Media;
|
using Avalonia.Media;
|
||||||
using Avalonia.Styling;
|
using Avalonia.Styling;
|
||||||
|
using Irihi.Avalonia.Shared.Helpers;
|
||||||
using Ursa.Common;
|
using Ursa.Common;
|
||||||
|
|
||||||
namespace Ursa.Controls;
|
namespace Ursa.Controls;
|
||||||
@@ -65,12 +66,12 @@ public class MessageBoxControl: DialogControlBase
|
|||||||
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
||||||
{
|
{
|
||||||
base.OnApplyTemplate(e);
|
base.OnApplyTemplate(e);
|
||||||
EventHelper.UnregisterClickEvent(DefaultButtonsClose, _okButton, _cancelButton, _yesButton, _noButton);
|
Button.ClickEvent.RemoveHandler(DefaultButtonsClose, _okButton, _cancelButton, _yesButton, _noButton);
|
||||||
_okButton = e.NameScope.Find<Button>(PART_OKButton);
|
_okButton = e.NameScope.Find<Button>(PART_OKButton);
|
||||||
_cancelButton = e.NameScope.Find<Button>(PART_CancelButton);
|
_cancelButton = e.NameScope.Find<Button>(PART_CancelButton);
|
||||||
_yesButton = e.NameScope.Find<Button>(PART_YesButton);
|
_yesButton = e.NameScope.Find<Button>(PART_YesButton);
|
||||||
_noButton = e.NameScope.Find<Button>(PART_NoButton);
|
_noButton = e.NameScope.Find<Button>(PART_NoButton);
|
||||||
EventHelper.RegisterClickEvent(DefaultButtonsClose, _okButton, _cancelButton, _yesButton, _noButton);
|
Button.ClickEvent.AddHandler(DefaultButtonsClose, _okButton, _cancelButton, _yesButton, _noButton);
|
||||||
SetButtonVisibility();
|
SetButtonVisibility();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -102,28 +103,20 @@ public class MessageBoxControl: DialogControlBase
|
|||||||
switch (Buttons)
|
switch (Buttons)
|
||||||
{
|
{
|
||||||
case MessageBoxButton.OK:
|
case MessageBoxButton.OK:
|
||||||
SetVisibility(_okButton, true);
|
Button.IsVisibleProperty.SetValue(true, _okButton);
|
||||||
SetVisibility(_cancelButton, false);
|
Button.IsVisibleProperty.SetValue(false, _cancelButton, _yesButton, _noButton);
|
||||||
SetVisibility(_yesButton, false);
|
|
||||||
SetVisibility(_noButton, false);
|
|
||||||
break;
|
break;
|
||||||
case MessageBoxButton.OKCancel:
|
case MessageBoxButton.OKCancel:
|
||||||
SetVisibility(_okButton, true);
|
Button.IsVisibleProperty.SetValue(true, _okButton, _cancelButton);
|
||||||
SetVisibility(_cancelButton, true);
|
Button.IsVisibleProperty.SetValue(false, _yesButton, _noButton);
|
||||||
SetVisibility(_yesButton, false);
|
|
||||||
SetVisibility(_noButton, false);
|
|
||||||
break;
|
break;
|
||||||
case MessageBoxButton.YesNo:
|
case MessageBoxButton.YesNo:
|
||||||
SetVisibility(_okButton, false);
|
Button.IsVisibleProperty.SetValue(false, _okButton, _cancelButton);
|
||||||
SetVisibility(_cancelButton, false);
|
Button.IsVisibleProperty.SetValue(true, _yesButton, _noButton);
|
||||||
SetVisibility(_yesButton, true);
|
|
||||||
SetVisibility(_noButton, true);
|
|
||||||
break;
|
break;
|
||||||
case MessageBoxButton.YesNoCancel:
|
case MessageBoxButton.YesNoCancel:
|
||||||
SetVisibility(_okButton, false);
|
Button.IsVisibleProperty.SetValue(false, _okButton);
|
||||||
SetVisibility(_cancelButton, true);
|
Button.IsVisibleProperty.SetValue(true, _cancelButton, _yesButton, _noButton);
|
||||||
SetVisibility(_yesButton, true);
|
|
||||||
SetVisibility(_noButton, true);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ using Avalonia.Controls.Primitives;
|
|||||||
using Avalonia.Input;
|
using Avalonia.Input;
|
||||||
using Avalonia.Interactivity;
|
using Avalonia.Interactivity;
|
||||||
using Avalonia.Platform;
|
using Avalonia.Platform;
|
||||||
|
using Irihi.Avalonia.Shared.Helpers;
|
||||||
using Ursa.Common;
|
using Ursa.Common;
|
||||||
|
|
||||||
namespace Ursa.Controls;
|
namespace Ursa.Controls;
|
||||||
@@ -55,97 +56,38 @@ public class MessageBoxWindow : Window
|
|||||||
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
||||||
{
|
{
|
||||||
base.OnApplyTemplate(e);
|
base.OnApplyTemplate(e);
|
||||||
if (_closeButton != null)
|
Button.ClickEvent.RemoveHandler(OnDefaultButtonClick, _yesButton, _noButton, _okButton, _cancelButton);
|
||||||
{
|
Button.ClickEvent.RemoveHandler(OnCloseButtonClick, _closeButton);
|
||||||
_closeButton.Click -= OnCloseButtonClick;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_yesButton != null)
|
|
||||||
{
|
|
||||||
_yesButton.Click -= OnYesButtonClick;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_noButton != null)
|
|
||||||
{
|
|
||||||
_noButton.Click -= OnNoButtonClick;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_okButton != null)
|
|
||||||
{
|
|
||||||
_okButton.Click -= OnOKButtonClick;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_cancelButton != null)
|
|
||||||
{
|
|
||||||
_cancelButton.Click -= OnCancelButtonClick;
|
|
||||||
}
|
|
||||||
|
|
||||||
_yesButton = e.NameScope.Find<Button>(PART_YesButton);
|
_yesButton = e.NameScope.Find<Button>(PART_YesButton);
|
||||||
_noButton = e.NameScope.Find<Button>(PART_NoButton);
|
_noButton = e.NameScope.Find<Button>(PART_NoButton);
|
||||||
_okButton = e.NameScope.Find<Button>(PART_OKButton);
|
_okButton = e.NameScope.Find<Button>(PART_OKButton);
|
||||||
_cancelButton = e.NameScope.Find<Button>(PART_CancelButton);
|
_cancelButton = e.NameScope.Find<Button>(PART_CancelButton);
|
||||||
_closeButton = e.NameScope.Find<Button>(PART_CloseButton);
|
_closeButton = e.NameScope.Find<Button>(PART_CloseButton);
|
||||||
if (_closeButton is not null)
|
Button.ClickEvent.AddHandler(OnDefaultButtonClick, _yesButton, _noButton, _okButton, _cancelButton);
|
||||||
{
|
Button.ClickEvent.AddHandler(OnCloseButtonClick, _closeButton);
|
||||||
_closeButton.Click += OnCloseButtonClick;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_yesButton is not null)
|
|
||||||
{
|
|
||||||
_yesButton.Click += OnYesButtonClick;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_noButton is not null)
|
|
||||||
{
|
|
||||||
_noButton.Click += OnNoButtonClick;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_okButton is not null)
|
|
||||||
{
|
|
||||||
_okButton.Click += OnOKButtonClick;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_cancelButton is not null)
|
|
||||||
{
|
|
||||||
_cancelButton.Click += OnCancelButtonClick;
|
|
||||||
}
|
|
||||||
|
|
||||||
SetButtonVisibility();
|
SetButtonVisibility();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SetButtonVisibility()
|
private void SetButtonVisibility()
|
||||||
{
|
{
|
||||||
if (_buttonConfigs == MessageBoxButton.OK)
|
switch (_buttonConfigs)
|
||||||
{
|
{
|
||||||
if (_closeButton != null) _closeButton.IsVisible = true;
|
case MessageBoxButton.OK:
|
||||||
if (_yesButton != null) _yesButton.IsVisible = false;
|
Button.IsVisibleProperty.SetValue(true, _okButton);
|
||||||
if (_noButton != null) _noButton.IsVisible = false;
|
Button.IsVisibleProperty.SetValue(false, _cancelButton, _yesButton, _noButton);
|
||||||
if (_okButton != null) _okButton.IsVisible = true;
|
break;
|
||||||
if (_cancelButton != null) _cancelButton.IsVisible = false;
|
case MessageBoxButton.OKCancel:
|
||||||
}
|
Button.IsVisibleProperty.SetValue(true, _okButton, _cancelButton);
|
||||||
else if (_buttonConfigs == MessageBoxButton.OKCancel)
|
Button.IsVisibleProperty.SetValue(false, _yesButton, _noButton);
|
||||||
{
|
break;
|
||||||
if (_closeButton != null) _closeButton.IsVisible = true;
|
case MessageBoxButton.YesNo:
|
||||||
if (_yesButton != null) _yesButton.IsVisible = false;
|
Button.IsVisibleProperty.SetValue(false, _okButton, _cancelButton);
|
||||||
if (_noButton != null) _noButton.IsVisible = false;
|
Button.IsVisibleProperty.SetValue(true, _yesButton, _noButton);
|
||||||
if (_okButton != null) _okButton.IsVisible = true;
|
break;
|
||||||
if (_cancelButton != null) _cancelButton.IsVisible = true;
|
case MessageBoxButton.YesNoCancel:
|
||||||
}
|
Button.IsVisibleProperty.SetValue(false, _okButton);
|
||||||
else if (_buttonConfigs == MessageBoxButton.YesNo)
|
Button.IsVisibleProperty.SetValue(true, _cancelButton, _yesButton, _noButton);
|
||||||
{
|
break;
|
||||||
if (_closeButton != null) _closeButton.IsVisible = false;
|
|
||||||
if (_yesButton != null) _yesButton.IsVisible = true;
|
|
||||||
if (_noButton != null) _noButton.IsVisible = true;
|
|
||||||
if (_okButton != null) _okButton.IsVisible = false;
|
|
||||||
if (_cancelButton != null) _cancelButton.IsVisible = false;
|
|
||||||
}
|
|
||||||
else if (_buttonConfigs == MessageBoxButton.YesNoCancel)
|
|
||||||
{
|
|
||||||
if (_closeButton != null) _closeButton.IsVisible = true;
|
|
||||||
if (_yesButton != null) _yesButton.IsVisible = true;
|
|
||||||
if (_noButton != null) _noButton.IsVisible = true;
|
|
||||||
if (_okButton != null) _okButton.IsVisible = false;
|
|
||||||
if (_cancelButton != null) _cancelButton.IsVisible = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -159,24 +101,24 @@ public class MessageBoxWindow : Window
|
|||||||
Close(MessageBoxResult.Cancel);
|
Close(MessageBoxResult.Cancel);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnYesButtonClick(object sender, RoutedEventArgs e)
|
private void OnDefaultButtonClick(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
Close(MessageBoxResult.Yes);
|
if (sender == _okButton)
|
||||||
}
|
{
|
||||||
|
Close(MessageBoxResult.OK);
|
||||||
private void OnNoButtonClick(object sender, RoutedEventArgs e)
|
}
|
||||||
{
|
else if (sender == _cancelButton)
|
||||||
Close(MessageBoxResult.No);
|
{
|
||||||
}
|
Close(MessageBoxResult.Cancel);
|
||||||
|
}
|
||||||
private void OnOKButtonClick(object sender, RoutedEventArgs e)
|
else if (sender == _yesButton)
|
||||||
{
|
{
|
||||||
Close(MessageBoxResult.OK);
|
Close(MessageBoxResult.Yes);
|
||||||
}
|
}
|
||||||
|
else if (sender == _noButton)
|
||||||
private void OnCancelButtonClick(object sender, RoutedEventArgs e)
|
{
|
||||||
{
|
Close(MessageBoxResult.No);
|
||||||
Close(MessageBoxResult.Cancel);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnKeyUp(KeyEventArgs e)
|
protected override void OnKeyUp(KeyEventArgs e)
|
||||||
|
|||||||
@@ -84,10 +84,5 @@ public abstract class OverlayFeedbackElement: ContentControl
|
|||||||
return tcs.Task;
|
return tcs.Task;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static void SetVisibility(Button? button, bool visible)
|
|
||||||
{
|
|
||||||
if (button is not null) button.IsVisible = visible;
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract void Close();
|
public abstract void Close();
|
||||||
}
|
}
|
||||||
@@ -4,6 +4,7 @@ using Avalonia.Controls.Metadata;
|
|||||||
using Avalonia.Controls.Primitives;
|
using Avalonia.Controls.Primitives;
|
||||||
using Avalonia.Interactivity;
|
using Avalonia.Interactivity;
|
||||||
using Avalonia.Styling;
|
using Avalonia.Styling;
|
||||||
|
using Irihi.Avalonia.Shared.Helpers;
|
||||||
using Ursa.Common;
|
using Ursa.Common;
|
||||||
|
|
||||||
namespace Ursa.Controls;
|
namespace Ursa.Controls;
|
||||||
@@ -28,10 +29,10 @@ public class ThemeToggleButton: ThemeSelectorBase
|
|||||||
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
||||||
{
|
{
|
||||||
base.OnApplyTemplate(e);
|
base.OnApplyTemplate(e);
|
||||||
EventHelper.UnregisterEvent(Button.ClickEvent, OnButtonClickedChanged, _button);
|
Button.ClickEvent.RemoveHandler(OnButtonClickedChanged, _button);
|
||||||
_button = e.NameScope.Get<ToggleButton>(PART_ThemeToggleButton);
|
_button = e.NameScope.Get<ToggleButton>(PART_ThemeToggleButton);
|
||||||
EventHelper.RegisterEvent(Button.ClickEvent, OnButtonClickedChanged, _button);
|
Button.ClickEvent.AddHandler(OnButtonClickedChanged, _button);
|
||||||
PropertyHelper.SetValue(ToggleButton.IsCheckedProperty, _currentTheme == ThemeVariant.Light, _button);
|
ToggleButton.IsCheckedProperty.SetValue(_currentTheme == ThemeVariant.Light, _button);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnButtonClickedChanged(object sender, RoutedEventArgs e)
|
private void OnButtonClickedChanged(object sender, RoutedEventArgs e)
|
||||||
@@ -44,6 +45,6 @@ public class ThemeToggleButton: ThemeSelectorBase
|
|||||||
protected override void SyncThemeFromScope(ThemeVariant? theme)
|
protected override void SyncThemeFromScope(ThemeVariant? theme)
|
||||||
{
|
{
|
||||||
base.SyncThemeFromScope(theme);
|
base.SyncThemeFromScope(theme);
|
||||||
PropertyHelper.SetValue(ToggleButton.IsCheckedProperty, theme == ThemeVariant.Light, _button);
|
ToggleButton.IsCheckedProperty.SetValue(theme == ThemeVariant.Light, _button);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Avalonia" Version="$(AvaloniaVersion)" />
|
<PackageReference Include="Avalonia" Version="$(AvaloniaVersion)" />
|
||||||
|
<PackageReference Include="Irihi.Avalonia.Shared" Version="0.1.1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
Reference in New Issue
Block a user