private void Manager_SessionsChanged(object sender, SessionsChangedEventArgs args) { if (IsHooked) { if (!manager !.GetSessions().Contains(session)) { if (session != null) { session.MediaPropertiesChanged -= SpotifySession_MediaPropertiesChanged; session.PlaybackInfoChanged -= SpotifySession_PlaybackInfoChanged; session = null; } IsHooked = false; TryHook(); } } else { TryHook(); } }
private async void SMTC_SessionsChanged(GlobalSystemMediaTransportControlsSessionManager sender, SessionsChangedEventArgs args) { await Dispatcher.BeginInvoke(DispatcherPriority.Send, new Action(() => { var sessions = SMTC.GetSessions(); foreach (MusicSessionControl ses in SessionStackPanel.Children) { ses.ClearSession(); } SessionStackPanel.Children.Clear(); foreach (var session in sessions) { var newControl = new MusicSessionControl(session); SessionStackPanel.Children.Add(newControl); } this.Height = sessions.Count * 60; })); }
private async void GSMTCSessionsChanged(GlobalSystemMediaTransportControlsSessionManager sender, SessionsChangedEventArgs args) { await Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Send, new Action(LoadSessions)); }
private static void SessionsChanged(GlobalSystemMediaTransportControlsSessionManager sender, SessionsChangedEventArgs args = null) { var sessionList = sender.GetSessions(); foreach (var session in sessionList) { if (!CurrentMediaSessions.ContainsKey(session.SourceAppUserModelId)) { MediaSession mediaSession = new MediaSession(session); CurrentMediaSessions[session.SourceAppUserModelId] = mediaSession; OnNewSource?.Invoke(mediaSession); mediaSession.OnSongChange(session); } } }
private void OnSessionsChanged(GlobalSystemMediaTransportControlsSessionManager sender, SessionsChangedEventArgs args = null) { DisableUpdates = true; SimpleLogger.DefaultLog("MediaSessionManager::OnSessionsChanged - Clearing old sessions..."); foreach (var entry in CurrentSessions) { entry.Key.MediaPropertiesChanged -= OnMediaPropertiesChanged; entry.Key.PlaybackInfoChanged -= OnPlaybackInfoChanged; } CurrentSessions.Clear(); SimpleLogger.DefaultLog("MediaSessionManager::OnSessionsChanged - Clearing old sessions DONE"); SimpleLogger.DefaultLog("MediaSessionManager::OnSessionsChanged - Adding new sessions..."); var sessions = sender.GetSessions(); foreach (var session in sessions) { CurrentSessions[session] = new PlaybackData { IsPlaying = false, Artist = "", Title = "", }; OnMediaPropertiesChanged(session); OnPlaybackInfoChanged(session); session.MediaPropertiesChanged += OnMediaPropertiesChanged; session.PlaybackInfoChanged += OnPlaybackInfoChanged; SimpleLogger.DefaultLog($" {session.SourceAppUserModelId}"); } SimpleLogger.DefaultLog("MediaSessionManager::OnSessionsChanged - Adding new sessions DONE"); DisableUpdates = false; UpdateCurrentSong(); }
//TODO: This does not trigger private static void SmtcManagerOnSessionsChanged(GlobalSystemMediaTransportControlsSessionManager sender, SessionsChangedEventArgs args) { Console.WriteLine("Changed"); }
private void SMTC_SessionsChanged(GlobalSystemMediaTransportControlsSessionManager sender, SessionsChangedEventArgs args) { Dispatcher.BeginInvoke(DispatcherPriority.Send, new Action(LoadSessionControls)); }
private void SMTC_SessionsChanged(GlobalSystemMediaTransportControlsSessionManager sender, SessionsChangedEventArgs args) { Dispatcher.BeginInvoke(DispatcherPriority.Send, new Action(() => { var lol = args.GetType(); var sessions = SMTC.GetSessions(); var CLR = sessions.ToList(); // DELETE IF IT DOESN'T EXIST ANYMORE. var toDelete = new List <SessionControl>(); //Find if we have the mythical beast already in list. foreach (var sessControl in SessionsStackPanel.Children) { var tmp = (SessionControl)sessControl; //if (!sessions.Any(s => s.SourceAppUserModelId == tmp.SMTCSession.SourceAppUserModelId)) //Sad this doesn't work if there are two SourceAppUserModelId with the same name :( toDelete.Add(tmp); } toDelete.ForEach(ses => { ses.SMTCSession = null; SessionsStackPanel.Children.Remove(ses); }); //ADD IF IT'S NEW var toAdd = new List <SessionControl>(); foreach (var session in sessions) { if (!SessionsStackPanel.Children.Cast <SessionControl>().Any(s => s.SMTCSession.SourceAppUserModelId == session.SourceAppUserModelId)) { toAdd.Add(new SessionControl { SMTCSession = session, Margin = new Thickness(0, 2, 0, 0) }); } } toAdd.ForEach(ses => SessionsStackPanel.Children.Add(ses)); if (SessionsStackPanel.Children.Count > 0) { SessionsStackPanel.Margin = new Thickness(0, 2, 0, 0); (SessionsStackPanel.Children[0] as SessionControl).Margin = new Thickness(0); } else { SessionsStackPanel.Margin = new Thickness(0); } })); }
private void OnSessionsChanged(MediaControlSessionManager sender, SessionsChangedEventArgs arg) { SessionsChanged?.Invoke(sender, arg); }
private void GSMTCSessionsChanged(GlobalSystemMediaTransportControlsSessionManager sender, SessionsChangedEventArgs args) { Application.Current.Dispatcher.Invoke(LoadSessions); }
private static void SessionManager_SessionsChanged(GlobalSystemMediaTransportControlsSessionManager sender, SessionsChangedEventArgs args) { sessions = sender.GetSessions(); Cout("SMTCSessionChanged", sessions.Count); //I don't know if it's correctly here. }
private void SessionManager_SessionsChanged(GlobalSystemMediaTransportControlsSessionManager sender, SessionsChangedEventArgs args) { WriteCurrentlyPlayingAsync(); AddCurrentSessionHandlers(); }