Пример #1
0
        public async Task PlayAutoPlaylist(AutoPlaylist playlist, Song playlistSong, GroupInfo groupInfo = null)
        {
            if (groupInfo == null)
            {
                groupInfo = AutoPlaylistSongViewModel.CreateGroupInfo(playlist, Settings.ShowOfflineOnly);
            }
            LogManager.Shared.LogPlayback(playlist);
            SendEndNotification(ScrobbleManager.PlaybackEndedReason.Skipped);
            Settings.CurrentPlaybackContext = new PlaybackContext
            {
                IsContinuous = false,
                Type         = PlaybackContext.PlaybackType.Playlist,
                ParentId     = playlist.Id,
            };
            Pause();
            var song = playlistSong;
            var info = groupInfo.Clone();
            await Task.WhenAll(
                NativePlayer.PlaySong(song),
                Task.Run(async() =>
            {
                string query =
                    $"select Id from Song {info.FilterString(true)} {info.OrderByString(true)} {info.LimitString()}";
                var queryInfo = info.ConvertSqlFromNamed(query);
                await SetupCurrentPlaylist(queryInfo.Item1, song?.Id ?? "", queryInfo.Item2);
            }));

            if (song == null)
            {
                song = GetSong(CurrentSongIndex);
                await NativePlayer.PlaySong(song);
            }
            await PrepareNextTrack();
        }
 public AutoPlaylistSongsViewController(AutoPlaylist playlist)
 {
     model = new AutoPlaylistSongViewModel
     {
         Playlist = playlist,
     };
     Title = model.Title;
 }