private void ContinueStartup() { ((UI.Themes.Manager)Resources["ThemeManager"]).Load(); _settings = new AppSettings(); _settings.FlyoutHotkeyTyped += () => FlyoutViewModel.OpenFlyout(InputType.Keyboard); _settings.MixerHotkeyTyped += () => _mixerWindow.OpenOrClose(); _settings.SettingsHotkeyTyped += () => _settingsWindow.OpenOrBringToFront(); _mixerWindow = new WindowHolder(CreateMixerExperience); _settingsWindow = new WindowHolder(CreateSettingsExperience); PlaybackDevicesViewModel = new DeviceCollectionViewModel(DataModel.WindowsAudio.WindowsAudioFactory.Create(DataModel.WindowsAudio.AudioDeviceKind.Playback), _settings); PlaybackDevicesViewModel.Ready += (_, __) => CompleteStartup(); PlaybackDevicesViewModel.TrayPropertyChanged += () => UpdateTrayTooltipAndIcon(); FlyoutViewModel = new FlyoutViewModel(PlaybackDevicesViewModel, () => _trayIcon.SetFocus()); FlyoutWindow = new FlyoutWindow(FlyoutViewModel); CreateTrayExperience(); }
private void ContinueStartup() { ((UI.Themes.Manager)Resources["ThemeManager"]).Load(); var deviceManager = WindowsAudioFactory.Create(AudioDeviceKind.Playback); deviceManager.Loaded += (_, __) => CompleteStartup(); CollectionViewModel = new DeviceCollectionViewModel(deviceManager, _settings); _trayIcon = new ShellNotifyIcon(new TaskbarIconSource(CollectionViewModel, _settings)); Exit += (_, __) => _trayIcon.IsVisible = false; CollectionViewModel.TrayPropertyChanged += () => _trayIcon.SetTooltip(CollectionViewModel.GetTrayToolTip()); _flyoutViewModel = new FlyoutViewModel(CollectionViewModel, () => _trayIcon.SetFocus()); FlyoutWindow = new FlyoutWindow(_flyoutViewModel); // Initialize the FlyoutWindow last because its Show/Hide cycle will pump messages, causing UI frames // to be executed, breaking the assumption that startup is complete. FlyoutWindow.Initialize(); }