Remove SongMediaAdapter

This commit is contained in:
Christopher Eby 2011-09-21 16:26:41 -05:00
parent 0f38aa4159
commit e94c40bdcb
3 changed files with 18 additions and 94 deletions

View File

@ -179,30 +179,6 @@ public class MediaAdapter extends CursorAdapter implements SectionIndexer {
mActivity.runQuery(this);
}
/**
* A query selection that should always be a part of the query. By default,
* this returns null, meaning that no elements should be excluded. This
* method may be overridden in subclasses to exclude certain media from the
* adapter.
*
* @return The selection, formatted as an SQL WHERE clause or null to
* accept all media.
*/
protected String getDefaultSelection()
{
return null;
}
/**
* Returns the sort order for queries. By default, sorts by the last field
* in mFields, using the field keys if available.
*/
protected String getSortOrder()
{
String[] source = mFieldKeys == null ? mFields : mFieldKeys;
return source[source.length - 1];
}
/**
* Query the backing content provider. Should be called on a background
* thread.
@ -210,6 +186,10 @@ public class MediaAdapter extends CursorAdapter implements SectionIndexer {
public void runQuery()
{
ContentResolver resolver = mActivity.getContentResolver();
Cursor cursor;
String constraint = mConstraint;
Limiter limiter = mLimiter;
String[] projection;
if (mFields.length == 1)
@ -220,11 +200,17 @@ public class MediaAdapter extends CursorAdapter implements SectionIndexer {
StringBuilder selection = new StringBuilder();
String[] selectionArgs = null;
String defaultSelection = getDefaultSelection();
if (defaultSelection != null)
selection.append(defaultSelection);
String sort;
if (mLimiter != null && mLimiter.type == MediaUtils.TYPE_ALBUM)
sort = MediaStore.Audio.Media.TRACK;
else if (mFieldKeys == null)
sort = mFields[mFields.length - 1];
else
sort = mFieldKeys[mFieldKeys.length - 1];
if (mType == MediaUtils.TYPE_SONG)
selection.append("is_music!=0");
String constraint = mConstraint;
if (constraint != null && constraint.length() != 0) {
String[] needles;
@ -260,20 +246,18 @@ public class MediaAdapter extends CursorAdapter implements SectionIndexer {
}
}
Cursor cursor;
if (mLimiter != null && mLimiter.type == MediaUtils.TYPE_GENRE) {
if (limiter != null && limiter.type == MediaUtils.TYPE_GENRE) {
// Genre is not standard metadata for MediaStore.Audio.Media.
// We have to query it through a separate provider. : /
cursor = MediaUtils.queryGenre(mActivity, mLimiter.id, projection, selection.toString(), selectionArgs);
} else {
if (mLimiter != null) {
if (limiter != null) {
if (selection.length() != 0)
selection.append(" AND ");
selection.append(mLimiter.selection);
}
cursor = resolver.query(mStore, projection, selection.toString(), selectionArgs, getSortOrder());
cursor = resolver.query(mStore, projection, selection.toString(), selectionArgs, sort);
}
mActivity.changeCursor(this, cursor);

View File

@ -1,60 +0,0 @@
/*
* Copyright (C) 2010 Christopher Eby <kreed@kreed.org>
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package org.kreed.vanilla;
import android.provider.MediaStore;
/**
* Subclasses MediaAdapter to represent songs. Providers some song-specific
* logic over plain MediaAdapter: exclusion of non-music media files and
* better sorting inside albums.
*/
public class SongMediaAdapter extends MediaAdapter {
/**
* Construct a MediaAdapter backed by MediaStore.Audio.Media.
*
* @param activity The activity that owns this adapter.
* @param expandable Whether an expander arrow should by shown to the right
* of views
* @param limiter An initial limiter to use.
*/
public SongMediaAdapter(SongSelector activity, boolean expandable, MediaAdapter.Limiter limiter)
{
super(activity, MediaUtils.TYPE_SONG, expandable, limiter);
}
@Override
protected String getDefaultSelection()
{
return MediaStore.Audio.Media.IS_MUSIC + "!=0";
}
@Override
protected String getSortOrder()
{
Limiter limiter = getLimiter();
if (limiter != null && limiter.type == MediaUtils.TYPE_ALBUM)
return MediaStore.Audio.Media.TRACK;
return super.getSortOrder();
}
}

View File

@ -149,7 +149,7 @@ public class SongSelector extends PlaybackActivity implements AdapterView.OnItem
mArtistAdapter = setupView(R.id.artist_list, new MediaAdapter(this, MediaUtils.TYPE_ARTIST, true, null));
mAlbumAdapter = setupView(R.id.album_list, new MediaAdapter(this, MediaUtils.TYPE_ALBUM, true, state == null ? null : (MediaAdapter.Limiter)state.getSerializable("limiter_albums")));
mSongAdapter = setupView(R.id.song_list, new SongMediaAdapter(this, false, state == null ? null : (MediaAdapter.Limiter)state.getSerializable("limiter_songs")));
mSongAdapter = setupView(R.id.song_list, new MediaAdapter(this, MediaUtils.TYPE_SONG, false, state == null ? null : (MediaAdapter.Limiter)state.getSerializable("limiter_songs")));
mPlaylistAdapter = setupView(R.id.playlist_list, new MediaAdapter(this, MediaUtils.TYPE_PLAYLIST, false, null));
mGenreAdapter = setupView(R.id.genre_list, new MediaAdapter(this, MediaUtils.TYPE_GENRE, true, state == null ? null : (MediaAdapter.Limiter)state.getSerializable("limiter_genres")));
mAdapters = new MediaAdapter[] { mArtistAdapter, mAlbumAdapter, mSongAdapter, mPlaylistAdapter, mGenreAdapter };