public async Task <IEnumerable <Album> > GetAlbumsAsync(AlbumSortOrder sortOrder = AlbumSortOrder.Default) { return(await LoadAlbumsAsync( selection : null, selectionArgs : null, sortOrder : sortOrder )); }
public async Task <IEnumerable <Album> > GetAlbumsAsync(AlbumSortOrder sortOrder = AlbumSortOrder.Default) { return(await Task.Run(() => { var mediaQuery = PrepareMediaQuery(); return mediaQuery.ToAlbums(sortOrder); })); }
internal static IEnumerable <Album> ToAlbums(this MPMediaQuery mediaQuery, AlbumSortOrder sortOrder) { foreach (var mediaItem in mediaQuery.Items) { if (mediaItem != null) { yield return(mediaItem.ToAlbum()); } } }
/// <summary> /// Changes Album ListView sort order. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void AlbumsSortByDate(object sender, ref string lastAlbumsHeaderClicked, ref ListSortDirection lastAlbumsDirection) { if (_lastAlbumSortOrder == AlbumSortOrder.ByDate) { SortListView(sender, ref lastAlbumsHeaderClicked, ref lastAlbumsDirection, "Title"); _lastAlbumSortOrder = AlbumSortOrder.ByTitleAsc; Albums = Albums.OrderBy(i => i.Title).ToList(); } else if (_lastAlbumSortOrder == AlbumSortOrder.ByTitleAsc) { SortListView(sender, ref lastAlbumsHeaderClicked, ref lastAlbumsDirection, "Title"); _lastAlbumSortOrder = AlbumSortOrder.ByTitleDesc; Albums = Albums.OrderByDescending(i => i.Title).ToList(); } else { SortListView(sender, ref lastAlbumsHeaderClicked, ref lastAlbumsDirection, "Date"); _lastAlbumSortOrder = AlbumSortOrder.ByDate; Albums = Albums.OrderBy(i => i.Date).ToList(); } OnPropertyChanged("LastAlbumSortOrderText"); }
public async Task <IEnumerable <Album> > SearchAlbumsAsync(string searchTerm, AlbumSortOrder sortOrder = AlbumSortOrder.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.ToAlbums(sortOrder); })); }
public async Task <IEnumerable <Album> > GetAlbumsByIdAsync(IEnumerable <string> albumIds, AlbumSortOrder sortOrder = AlbumSortOrder.Default) { if (!albumIds.HasValue()) { throw new ArgumentException(nameof(albumIds)); } return(await Task.Run(() => { var mediaQuery = PrepareMediaQuery(); var value = NSArray.FromNSObjects(albumIds.Select(s => NSObject.FromObject(s)).ToArray()); var arrayPredictor = MPMediaPropertyPredicate.PredicateWithValue(value, MPMediaItem.PersistentIDProperty, MPMediaPredicateComparison.Contains); mediaQuery.AddFilterPredicate(arrayPredictor); return mediaQuery.ToAlbums(sortOrder); })); }
public async Task <IEnumerable <Album> > GetAlbumsByGenreAsync(string genreId, AlbumSortOrder sortOrder = AlbumSortOrder.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.ToAlbums(sortOrder); })); }
private async Task <IEnumerable <Album> > LoadAlbumsAsync(string selection, string[] selectionArgs, AlbumSortOrder sortOrder) { return(await Task.Run(() => { var cursor = Android.App.Application.Context.ContentResolver.Query( uri: MediaStore.Audio.Albums.ExternalContentUri, projection: _projections, selection: selection, selectionArgs: selectionArgs, sortOrder: sortOrder.ToStringSortOrder() ); return cursor.ToAlbums(); })); }
public async Task <IEnumerable <Album> > SearchAlbumsAsync(string searchTerm, AlbumSortOrder sortOrder = AlbumSortOrder.Default) { if (string.IsNullOrWhiteSpace(searchTerm)) { throw new ArgumentNullException(nameof(searchTerm)); } return(await LoadAlbumsAsync( selection : MediaStore.Audio.AlbumColumns.Album + " like ?", selectionArgs : new[] { searchTerm + "%" }, sortOrder : sortOrder )); }
public async Task <IEnumerable <Album> > GetAlbumsByIdAsync(IEnumerable <string> albumIds, AlbumSortOrder sortOrder = AlbumSortOrder.Default) { if (!albumIds.HasValue()) { throw new ArgumentException(nameof(albumIds)); } var selectionBuilder = new StringBuilder(); selectionBuilder.Append(MediaStore.Audio.AlbumColumns.AlbumId + " IN ("); selectionBuilder.Append(string.Join(",", albumIds)); selectionBuilder.Append(")"); return(await LoadAlbumsAsync( selection : selectionBuilder.ToString(), selectionArgs : null, sortOrder : sortOrder )); }