public MainViewModel(
            [NotNull] MainDataContext dataContext,
            [NotNull] ISystemTrayContextMenu trayMenu,
            [NotNull] IConsoleArgs consoleArgs,
            [NotNull] IWaVersionInfoProvider waVersionInfoProvider,
            [NotNull] MainForm mainForm)
        {
            if (dataContext == null)
            {
                throw new ArgumentNullException(nameof(dataContext));
            }
            if (trayMenu == null)
            {
                throw new ArgumentNullException(nameof(trayMenu));
            }
            if (consoleArgs == null)
            {
                throw new ArgumentNullException(nameof(consoleArgs));
            }
            if (waVersionInfoProvider == null)
            {
                throw new ArgumentNullException(nameof(waVersionInfoProvider));
            }
            if (mainForm == null)
            {
                throw new ArgumentNullException(nameof(mainForm));
            }
            this.DataContext           = dataContext;
            this.trayMenu              = trayMenu;
            this.consoleArgs           = consoleArgs;
            this.waVersionInfoProvider = waVersionInfoProvider;
            this.mainForm              = mainForm;

            trayMenu.ShowMainWindowClicked    += ShowRestore;
            trayMenu.ExitWurmAssistantClicked += (sender, eventArgs) => this.TryClose();

            savedNonMinimizedWindowState = WindowState.Normal;

            if (consoleArgs.WurmUnlimitedMode)
            {
                WindowTitle = "Aldur's Wurm Assistant Unlimited";
                Icon        = Resources.WurmAssistantUnlimitedIcon.ToImageSource();
            }
            else
            {
                WindowTitle = "Aldur's Wurm Assistant";
                Icon        = Resources.WurmAssistantIcon.ToImageSource();
            }

            WindowTitle += string.Format(" ({0})", waVersionInfoProvider.Get());

            mainForm.Dock   = DockStyle.Fill;
            WinFormsContent = new WindowsFormsHost()
            {
                Child = mainForm,
                HorizontalAlignment = HorizontalAlignment.Stretch,
                VerticalAlignment   = VerticalAlignment.Stretch
            };
        }
 public AppRuntimeManager(
     [NotNull] IUserNotifier userNotifier,
     [NotNull] ILogger logger,
     [NotNull] INewsViewModelFactory newsViewModelFactory,
     [NotNull] ITelemetry telemetry,
     [NotNull] IWaVersionInfoProvider waVersionInfoProvider,
     [NotNull] WurmUnlimitedLogsDirChecker wurmUnlimitedLogsDirChecker)
 {
     this.userNotifier                = userNotifier ?? throw new ArgumentNullException(nameof(userNotifier));
     this.logger                      = logger ?? throw new ArgumentNullException(nameof(logger));
     this.newsViewModelFactory        = newsViewModelFactory ?? throw new ArgumentNullException(nameof(newsViewModelFactory));
     this.telemetry                   = telemetry ?? throw new ArgumentNullException(nameof(telemetry));
     this.waVersionInfoProvider       = waVersionInfoProvider ?? throw new ArgumentNullException(nameof(waVersionInfoProvider));
     this.wurmUnlimitedLogsDirChecker = wurmUnlimitedLogsDirChecker ?? throw new ArgumentNullException(nameof(wurmUnlimitedLogsDirChecker));
 }