Пример #1
0
        private void Configure()
        {
            lock (_syncRoot)
            {
                if (_configuration != null)
                {
                    return;
                }

                var cfg = CreateConfiguration();

                var keyboardEventHandler = cfg.KeyboardEventHandler ?? new BlockAllKeyInputEventHandler();

                _configuration      = cfg;
                _lifetimeSupervisor = cfg.LifetimeSupervisor;
                _lifetimeSupervisor.UseDispatcher(cfg.Dispatcher);

                _displaySupervisor = new NotificationsDisplaySupervisor(
                    cfg.Dispatcher,
                    cfg.PositionProvider,
                    cfg.LifetimeSupervisor,
                    cfg.DisplayOptions,
                    keyboardEventHandler);
            }
        }
        public void Dispose()
        {
            _window?.Close();
            _window = null;

            _lifetimeSupervisor.ShowNotificationRequested  -= LifetimeSupervisorOnShowNotificationRequested;
            _lifetimeSupervisor.CloseNotificationRequested -= LifetimeSupervisorOnCloseNotificationRequested;

            _positionProvider.UpdatePositionRequested       -= PositionProviderOnUpdatePositionRequested;
            _positionProvider.UpdateEjectDirectionRequested -= PositionProviderOnUpdateEjectDirectionRequested;
            _positionProvider.UpdateHeightRequested         -= PositionProviderOnUpdateHeightRequested;

            _lifetimeSupervisor = null;
        }
        public NotificationsDisplaySupervisor(Dispatcher dispatcher,
                                              IPositionProvider positionProvider,
                                              INotificationsLifetimeSupervisor lifetimeSupervisor,
                                              DisplayOptions displayOptions,
                                              IKeyboardEventHandler keyboardEventHandler)
        {
            _dispatcher           = dispatcher;
            _positionProvider     = positionProvider;
            _lifetimeSupervisor   = lifetimeSupervisor;
            _displayOptions       = displayOptions;
            _keyboardEventHandler = keyboardEventHandler;

            _lifetimeSupervisor.ShowNotificationRequested  += LifetimeSupervisorOnShowNotificationRequested;
            _lifetimeSupervisor.CloseNotificationRequested += LifetimeSupervisorOnCloseNotificationRequested;

            _positionProvider.UpdatePositionRequested       += PositionProviderOnUpdatePositionRequested;
            _positionProvider.UpdateEjectDirectionRequested += PositionProviderOnUpdateEjectDirectionRequested;
            _positionProvider.UpdateHeightRequested         += PositionProviderOnUpdateHeightRequested;
        }
        protected virtual void Dispose(bool disposing)
        {
            if (_disposed)
            {
                return;
            }

            if (disposing)
            {
                _window?.Close();
                _window = null;

                _lifetimeSupervisor.ShowNotificationRequested  -= LifetimeSupervisorOnShowNotificationRequested;
                _lifetimeSupervisor.CloseNotificationRequested -= LifetimeSupervisorOnCloseNotificationRequested;

                _positionProvider.UpdatePositionRequested       -= PositionProviderOnUpdatePositionRequested;
                _positionProvider.UpdateEjectDirectionRequested -= PositionProviderOnUpdateEjectDirectionRequested;
                _positionProvider.UpdateHeightRequested         -= PositionProviderOnUpdateHeightRequested;

                _lifetimeSupervisor = null;
            }

            _disposed = true;
        }