Esempio n. 1
0
 public async Task <IEnumerable <Artist> > GetArtistsByGenre(string genreId, ArtistSortOrder sortOrder = ArtistSortOrder.Default)
 {
     return(await LoadArtistsAsync(
                selection : null,
                selectionArgs : null,
                sortOrder : sortOrder
                ));
 }
        public async Task <IEnumerable <Artist> > GetArtistsAsync(ArtistSortOrder sortOrder = ArtistSortOrder.Default)
        {
            return(await Task.Run(() =>
            {
                var mediaQuery = PrepareMediaQuery();

                return mediaQuery.ToArtists(sortOrder);
            }));
        }
Esempio n. 3
0
 internal static IEnumerable <Artist> ToArtists(this MPMediaQuery mediaQuery, ArtistSortOrder sortOrder)
 {
     foreach (var mediaItem in mediaQuery.Items)
     {
         if (mediaItem != null)
         {
             yield return(mediaItem.ToArtist());
         }
     }
 }
        public async Task <IEnumerable <Artist> > GetArtistsByGenre(string genreId, ArtistSortOrder sortOrder = ArtistSortOrder.Default)
        {
            if (string.IsNullOrWhiteSpace(genreId))
            {
                throw new ArgumentNullException(nameof(genreId));
            }

            return(await Task.Run(() =>
            {
                var mediaQuery = PrepareMediaQuery();
                var value = NSObject.FromObject(genreId);
                var genreIdPredicate = MPMediaPropertyPredicate.PredicateWithValue(value, MPMediaItem.GenrePersistentIDProperty);
                mediaQuery.AddFilterPredicate(genreIdPredicate);

                return mediaQuery.ToArtists(sortOrder);
            }));
        }
Esempio n. 5
0
 private async Task <IEnumerable <Artist> > LoadArtistsAsync(string selection, string[] selectionArgs, ArtistSortOrder sortOrder)
 {
     return(await Task.Run(() =>
     {
         var cursor = Android.App.Application.Context.ContentResolver.Query(
             uri: MediaStore.Audio.Artists.ExternalContentUri,
             projection: _projections,
             selection: selection,
             selectionArgs: selectionArgs,
             sortOrder: sortOrder.ToStringSortOrder()
             );
         return cursor.ToArtists();
     }));
 }
Esempio n. 6
0
        public async Task <IEnumerable <Artist> > SearchArtistsAsync(string searchTerm, ArtistSortOrder sortOrder = ArtistSortOrder.Default)
        {
            if (string.IsNullOrWhiteSpace(searchTerm))
            {
                throw new ArgumentNullException(nameof(searchTerm));
            }

            return(await LoadArtistsAsync(
                       selection : MediaStore.Audio.ArtistColumns.Artist + " like ?",
                       selectionArgs : new[] { searchTerm + "%" },
                       sortOrder : sortOrder
                       ));
        }
Esempio n. 7
0
        public async Task <IEnumerable <Artist> > GetArtistsByIdAsync(IEnumerable <string> artistIds, ArtistSortOrder sortOrder = ArtistSortOrder.Default)
        {
            if (!artistIds.HasValue())
            {
                throw new ArgumentException(nameof(artistIds));
            }

            var selectionBuilder = new StringBuilder();

            selectionBuilder.Append(MediaStore.Audio.Artists.InterfaceConsts.Id + " IN (");
            selectionBuilder.Append(string.Join(",", artistIds));
            selectionBuilder.Append(")");

            return(await LoadArtistsAsync(
                       selection : selectionBuilder.ToString(),
                       selectionArgs : null,
                       sortOrder : sortOrder
                       ));
        }
        public async Task <IEnumerable <Artist> > SearchArtistsAsync(string searchTerm, ArtistSortOrder sortOrder = ArtistSortOrder.Default)
        {
            if (string.IsNullOrWhiteSpace(searchTerm))
            {
                throw new ArgumentNullException(nameof(searchTerm));
            }

            return(await Task.Run(() =>
            {
                var mediaQuery = PrepareMediaQuery();
                var value = NSObject.FromObject(searchTerm);
                var searchTermPredicate = MPMediaPropertyPredicate.PredicateWithValue(value, MPMediaItem.TitleProperty, MPMediaPredicateComparison.Contains);
                mediaQuery.AddFilterPredicate(searchTermPredicate);

                return mediaQuery.ToArtists(sortOrder);
            }));
        }
        public async Task <IEnumerable <Artist> > GetArtistsByIdAsync(IEnumerable <string> artistIds, ArtistSortOrder sortOrder = ArtistSortOrder.Default)
        {
            if (!artistIds.HasValue())
            {
                throw new ArgumentException(nameof(artistIds));
            }

            return(await Task.Run(() =>
            {
                var mediaQuery = PrepareMediaQuery();
                var value = NSArray.FromNSObjects(artistIds.Select(s => NSObject.FromObject(s)).ToArray());
                var arrayPredictor = MPMediaPropertyPredicate.PredicateWithValue(value, MPMediaItem.PersistentIDProperty, MPMediaPredicateComparison.Contains);
                mediaQuery.AddFilterPredicate(arrayPredictor);

                return mediaQuery.ToArtists(sortOrder);
            }));
        }