示例#1
0
 private void AddAll(List <Entry> entries, ICollection <MusicItem> dest)
 {
     foreach (var item in entries)
     {
         Uri uri = null;
         if (!item.isDir)
         {
             uri = session.StreamUriFor(item.id);
         }
         dest.Add(AudioConversions.EntryToMusicItem(item, uri, session.Username, session.Password));
     }
 }
示例#2
0
        private MusicItem currentPlaylistTrack(JukeboxPlaylist playlist)
        {
            var index = playlist.currentIndex;

            if (index < 0)
            {
                return(null);
            }
            var track = playlist.entry[index];

            return(AudioConversions.EntryToMusicItem(track, session.StreamUriFor(track.id), session.Username, session.Password));
        }
示例#3
0
        public override async Task <PlaybackStatus> Status()
        {
            var status = await session.serverStatus();

            var playlist = await GetPlaylist();

            var musicEntries   = playlist.entry;
            var playlistTracks = musicEntries != null?playlist.entry.Select(e => AudioConversions.SongEntryToMusicItem(e, session.StreamUriFor(e.id), session.Username, session.Password)).ToList() : new List <MusicItem>();

            return(new PlaybackStatus(
                       currentPlaylistTrack(playlist),
                       position(playlist),
                       playlist.currentIndex,
                       playlistTracks,
                       volume(status),
                       playerState(status),
                       IsMute));
        }
示例#4
0
        /// <summary>
        /// called when data is available following an async call
        ///
        /// response 1-1 indexes 1-M index 1-M artist
        /// </summary>
        /// <param name="response">the fetched data</param>
        private List <MusicItem> RootFolderToMusicItems(IndexesResponse response)
        {
            var ret     = new List <MusicItem>();
            var indexes = response.indexes.index;

            if (indexes != null)
            {
                foreach (var i in indexes)
                {
                    foreach (var a in i.artist)
                    {
                        ret.Add(AudioConversions.artist2musicItem(a));
                    }
                }
            }
            var songs = response.indexes.child;

            if (songs != null)
            {
                AddAll(songs, ret);
            }
            return(ret);
        }
        public override async Task LoadData()
        {
            var response = await session.serverGetPlaylistAsync();

            var playlistIndex = response.jukeboxPlaylist.currentIndex;
            // entry null => playlist empty
            var entries = response.jukeboxPlaylist.entry;

            if (entries != null)
            {
                var index = 0;
                var items = new List <PlaylistMusicItem>();
                foreach (var entry in entries)
                {
                    MusicItem musicItem = AudioConversions.EntryToMusicItem(entry, session.StreamUriFor(entry.id), session.Username, session.Password);
                    items.Add(new PlaylistMusicItem(musicItem, index++));
                }
                SyncPlaylist(items, playlistIndex);
            }
            else
            {
                SyncPlaylist(new List <PlaylistMusicItem>(), playlistIndex);
            }
        }