public TrackProtocolItem(ISource source = null, BaseSoundByteItem track = null, IEnumerable <BaseSoundByteItem> playlist = null, string playlistToken = null, TimeSpan?trackPosition = null, bool isShuffled = false) { Track = track; Playlist = playlist; PlaylistToken = playlistToken; Source = source; TrackPosition = trackPosition; IsShuffled = isShuffled; }
private async void OnSearchTrackClickCommand(BaseSoundByteItem item) { // Create the related track collection var relatedTrackCollection = new SoundByteCollection <RelatedTrackSource>(); relatedTrackCollection.Source.Service = item.Track.ServiceType; relatedTrackCollection.Source.TrackId = item.Track.TrackId; // Add this track as an initial track relatedTrackCollection.Add(item); // Play the tracks await BaseViewModel.PlayAllTracksAsync(relatedTrackCollection, item.Track); }
public async void RemoteSystemItemClick(object sender, ItemClickEventArgs e) { try { LoadingPane.Visibility = Windows.UI.Xaml.Visibility.Visible; var system = (RemoteSystem)e.ClickedItem; if (SimpleIoc.Default.GetInstance <IPlaybackService>().GetCurrentTrack() != null) { var track = new BaseSoundByteItem(SimpleIoc.Default.GetInstance <IPlaybackService>().GetCurrentTrack()); var playlist = SimpleIoc.Default.GetInstance <IPlaybackService>().GetMediaPlaybackList().Items.Select(x => new BaseSoundByteItem(x.Source.AsBaseTrack())); var token = SimpleIoc.Default.GetInstance <IPlaybackService>().GetPlaylistToken(); var source = SimpleIoc.Default.GetInstance <IPlaybackService>().GetPlaylistSource(); var status = await RemoteLauncher.LaunchUriAsync(new RemoteSystemConnectionRequest(system), new Uri(ProtocolHelper.EncodeTrackProtocolItem(new ProtocolHelper.TrackProtocolItem(source, track, playlist, token, SimpleIoc.Default.GetInstance <IPlaybackService>().GetTrackDuration()), true))); if (status == RemoteLaunchUriStatus.Success) { Hide(); LoadingPane.Visibility = Windows.UI.Xaml.Visibility.Collapsed; } else { Hide(); LoadingPane.Visibility = Windows.UI.Xaml.Visibility.Collapsed; await NavigationService.Current.CallMessageDialogAsync("Failed with status: " + status, "Remote System Error"); } } else { Hide(); LoadingPane.Visibility = Windows.UI.Xaml.Visibility.Collapsed; await NavigationService.Current.CallMessageDialogAsync("A track must be playing", "Remote System Error"); } } finally { LoadingPane.Visibility = Windows.UI.Xaml.Visibility.Collapsed; } }
private async Task AppSuspendingAsync(object sender, SuspendingEventArgs e) { var def = e.SuspendingOperation.GetDeferral(); try { // Clear live tile var updater = TileUpdateManager.CreateTileUpdaterForApplication(); updater.Clear(); var playbackService = SimpleIoc.Default.GetInstance <IPlaybackService>(); if (playbackService != null) { // Save current position var currentPosition = playbackService.GetMediaPlayer()?.PlaybackSession?.Position; await RoamingService.StopActivityAsync(currentPosition); // Update the resume files var roamingFolder = ApplicationData.Current.RoamingFolder; var track = new BaseSoundByteItem(playbackService.GetCurrentTrack()); var playlist = playbackService.GetMediaPlaybackList().Items.Select(x => new BaseSoundByteItem(x.Source.AsBaseTrack())); var token = playbackService.GetPlaylistToken(); var source = playbackService.GetPlaylistSource(); var playbackFile = await roamingFolder.CreateFileAsync("currentPlayback.txt", CreationCollisionOption.OpenIfExists); await FileIO.WriteTextAsync(playbackFile, ProtocolHelper.EncodeTrackProtocolItem(new ProtocolHelper.TrackProtocolItem(source, track, playlist, token, SimpleIoc.Default.GetInstance <IPlaybackService>().GetTrackPosition(), SimpleIoc.Default.GetInstance <IPlaybackService>().IsPlaylistShuffled()), false) + "\n" + SettingsService.Instance.SessionId); } } catch (Exception ex) { SimpleIoc.Default.GetInstance <ITelemetryService>().TrackException(ex); } finally { def.Complete(); } }