SukiDialogManager.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. namespace SukiUI.Dialogs
  2. {
  3. public class SukiDialogManager : ISukiDialogManager
  4. {
  5. public event SukiDialogManagerEventHandler? OnDialogShown;
  6. public event SukiDialogManagerEventHandler? OnDialogDismissed;
  7. private ISukiDialog? _activeDialog;
  8. public bool TryShowDialog(ISukiDialog dialog)
  9. {
  10. if (_activeDialog != null) return false;
  11. _activeDialog = dialog;
  12. OnDialogShown?.Invoke(this, new SukiDialogManagerEventArgs(_activeDialog));
  13. return true;
  14. }
  15. public bool TryDismissDialog(ISukiDialog dialog)
  16. {
  17. if (_activeDialog == null || _activeDialog != dialog) return false;
  18. OnDialogDismissed?.Invoke(this, new SukiDialogManagerEventArgs(_activeDialog));
  19. _activeDialog = null;
  20. return true;
  21. }
  22. public void DismissDialog()
  23. {
  24. if (_activeDialog == null) return;
  25. OnDialogDismissed?.Invoke(this, new SukiDialogManagerEventArgs(_activeDialog));
  26. _activeDialog = null;
  27. }
  28. }
  29. }