Beispiel #1
0
        private async void ConnectorMenuItemOnClicked(object sender, EventArgs eventArgs)
        {
            var item = (CSDeskBandMenuAction)sender;

            if (item.Checked)
            {
                item.Checked = false;
                await UnsubscribeToConnector(_connector);

                _connector = null;
                return;
            }
            // Uncheck old item and unsubscribe from the current connector
            var lastItemChecked = _pluginSubMenu.Items.Cast <CSDeskBandMenuAction>().FirstOrDefault(i => i.Text == _connector?.ConnectorName);

            if (lastItemChecked != null)
            {
                lastItemChecked.Checked = false;
            }

            await UnsubscribeToConnector(_connector);

            item.Checked = true;
            _connector   = _connectorManager.AudioConnectors.First(c => c.ConnectorName == item.Text);
            await SubscribeToConnector(_connector);
        }
Beispiel #2
0
        private async Task SubscribeToConnector(IAudioConnector connector)
        {
            if (connector == null)
            {
                return;
            }

            connector.TrackInfoChanged     += ConnectorOnTrackInfoChanged;
            connector.TrackPlaying         += ConnectorOnTrackPlaying;
            connector.TrackPaused          += ConnectorOnTrackPaused;
            connector.TrackProgressChanged += ConnectorOnTrackProgressChanged;

            _connectorTokenSource = new CancellationTokenSource();
            await connector.ActivateAsync(new ConnectorContext(connector.ConnectorName));

            _settingsManager.AudioBandSettings.Connector = connector.ConnectorName;
        }
Beispiel #3
0
        private async Task UnsubscribeToConnector(IAudioConnector connector)
        {
            if (connector == null)
            {
                return;
            }

            connector.TrackInfoChanged     -= ConnectorOnTrackInfoChanged;
            connector.TrackPlaying         -= ConnectorOnTrackPlaying;
            connector.TrackPaused          -= ConnectorOnTrackPaused;
            connector.TrackProgressChanged -= ConnectorOnTrackProgressChanged;

            _connectorTokenSource.Cancel();
            await connector.DeactivateAsync();

            ResetState();
            _settingsManager.AudioBandSettings.Connector = null;
        }