public MainWindow() { InitializeComponent(); var configurationDictionary = JsonConvert.DeserializeObject<Dictionary<string, object>>(File.ReadAllText("configuration.json")); var configurationReader = new ToastrConfigurationReader(); var configuration = configurationReader.Get(configurationDictionary); var actionsExecutor = new ActionsExecutor(Dispatcher); _controller = new NotificationsController( (uint)SystemParameters.PrimaryScreenWidth, (uint)SystemParameters.PrimaryScreenHeight, actionsExecutor, configuration, (notification, config) => { var notificationWindow = new NotificationWindow(notification, config); notificationWindow.Show(); return notificationWindow; }); Closing += (sender, args) => { actionsExecutor.Dispose(); }; }
public NotificationsController(uint desktopWidth, uint desktopHeight, ActionsExecutor actionsExecutor, IToastrConfiguration configuration, Func<Notification, IToastrConfiguration, INotificationWindow> windowCreator) { if (actionsExecutor == null) throw new ArgumentNullException(nameof(actionsExecutor)); if (configuration == null) throw new ArgumentNullException(nameof(configuration)); _actionsExecutor = actionsExecutor; _configuration = configuration; _windowCreator = windowCreator; _positionCalculator = PositionCalculatorFactory.GetCalculator(desktopWidth, desktopHeight, configuration.HorizontalOffset, configuration.VerticalOffset, configuration.Width, configuration.PositionClass); }