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();
     }
 }
예제 #2
0
        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;
            }));
        }
예제 #3
0
 private async void GSMTCSessionsChanged(GlobalSystemMediaTransportControlsSessionManager sender, SessionsChangedEventArgs args)
 {
     await Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Send, new Action(LoadSessions));
 }
예제 #4
0
        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);
                }
            }
        }
예제 #5
0
        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();
        }
예제 #6
0
 //TODO: This does not trigger
 private static void SmtcManagerOnSessionsChanged(GlobalSystemMediaTransportControlsSessionManager sender, SessionsChangedEventArgs args)
 {
     Console.WriteLine("Changed");
 }
예제 #7
0
 private void SMTC_SessionsChanged(GlobalSystemMediaTransportControlsSessionManager sender, SessionsChangedEventArgs args)
 {
     Dispatcher.BeginInvoke(DispatcherPriority.Send, new Action(LoadSessionControls));
 }
예제 #8
0
        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);
                }
            }));
        }
예제 #9
0
 private void OnSessionsChanged(MediaControlSessionManager sender, SessionsChangedEventArgs arg)
 {
     SessionsChanged?.Invoke(sender, arg);
 }
예제 #10
0
 private void GSMTCSessionsChanged(GlobalSystemMediaTransportControlsSessionManager sender, SessionsChangedEventArgs args)
 {
     Application.Current.Dispatcher.Invoke(LoadSessions);
 }
예제 #11
0
 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.
 }
예제 #12
0
 private void SessionManager_SessionsChanged(GlobalSystemMediaTransportControlsSessionManager sender, SessionsChangedEventArgs args)
 {
     WriteCurrentlyPlayingAsync();
     AddCurrentSessionHandlers();
 }