private async void BtnSettings_Click(object sender, RoutedEventArgs e) { SettingsWindow window = new SettingsWindow(viewModel.Parent, hotKeys); window.ShowDialog(); IAudioExtended service = await window.ServiceBuilder.Build(); if (service != viewModel.Parent) { viewModel.Dispose(); DataContext = viewModel = new ViewModel(service); } hotKeys = window.HotKeysBuilder.Build(); }
public ServiceBuilder WithService(IAudioExtended service) { if (service is IMqttAudioService) { WithService(service as IMqttAudioService); } else if (service is IMqttAudioClient) { WithService(service as IMqttAudioClient); } Service = service; return(WithMediaSources(service.MediaSources) .WithIsAllShuffle(service.IsAllShuffle) .WithIsSearchShuffle(service.IsSearchShuffle) .WithIsOnlySearch(service.IsOnlySearch) .WithSearchKey(service.SearchKey) .WithPlay(service.PlayState == PlaybackState.Playing) .WithReload(false) .WithSetMediaIfNon(false) .WithVolume(service.Volume) .WithWindowHandler(service.WindowHandle)); }
public SettingsWindow(IAudioExtended service, HotKeys hotKeys) : this(new ServiceBuilder().WithService(service), new HotKeysBuilder().WithHotKeys(hotKeys)) { }
public async Task <IAudioExtended> Build() { IAudioExtended service; if (BuildServer) { IMqttAudioService server = Service as IMqttAudioService; if (server != null && (ServerPort != server.Port || windowHandler != server.WindowHandle)) { if (server.IsOpen) { await server.CloseAsync(); } server = null; } if (server == null) { server = new MqttAudioService(ServerPort, windowHandler); } if (!server.IsOpen) { await server.OpenAsync(); } service = server; } else if (BuildClient) { IMqttAudioClient client = Service as IMqttAudioClient; if (client != null && (ServerAddress != client.ServerAddress || ClientPort != client.Port || windowHandler != client.WindowHandle)) { client = null; } if (client == null) { client = clientPort.HasValue ? new MqttAudioClient(serverAddress, clientPort.Value, windowHandler) : new MqttAudioClient(serverAddress, windowHandler); } if (!client.IsOpen) { await client.OpenAsync(); } if (isStreaming.HasValue) { client.IsStreaming = isStreaming.Value; } if (clientVolume.HasValue) { client.ClientVolume = clientVolume.Value; } service = client; } else { service = Service == null || Service is IMqttAudio ? new AudioService(windowHandler) : Service; if (mediaSources == null) { mediaSources = new string[] { Environment.GetFolderPath(Environment.SpecialFolder.MyMusic) } } ; } bool setMediaSources = mediaSources != null && (!ifNon || !service.MediaSources.ToNotNull().Any()); if (setMediaSources && !mediaSources.BothNullOrSequenceEqual(service.MediaSources)) { service.MediaSources = mediaSources; } else if (reload) { service.Reload(); } if (!reload && Service != null && ContainsSameSongs(Service.AllSongsShuffled, service.AllSongsShuffled)) { service.AllSongsShuffled = Service.AllSongsShuffled; service.CurrentSong = Service.CurrentSong; } if (IsAllShuffle.HasValue) { service.IsAllShuffle = IsAllShuffle.Value; } if (IsSearchShuffle.HasValue) { service.IsSearchShuffle = IsSearchShuffle.Value; } if (IsOnlySearch.HasValue) { service.IsOnlySearch = IsOnlySearch.Value; } if (SearchKey != null) { service.SearchKey = SearchKey; } if (play.HasValue) { service.PlayState = play.Value ? PlaybackState.Playing : PlaybackState.Paused; } if (volume.HasValue) { service.Volume = volume.Value; } return(service); }
public ViewModel(IAudioExtended parent) { this.Parent = parent; parent.PropertyChanged += Parent_PropertyChanged; }