MirrorLink: do not pre-cache root

This commit is contained in:
Adrian Ulrich 2015-12-21 17:30:06 +01:00
parent 05c6f013d0
commit 6df61daf2e

View File

@ -70,13 +70,7 @@ public class MirrorLinkMediaBrowserService extends MediaBrowserService implement
private MediaAdapter mPlaylistAdapter;
private MediaAdapter mGenreAdapter;
private MediaAdapter[] mMediaAdapters = new MediaAdapter[MediaUtils.TYPE_GENRE + 1];
private List<MediaBrowser.MediaItem> mAlbums = new ArrayList<MediaBrowser.MediaItem>();
private List<MediaBrowser.MediaItem> mArtists = new ArrayList<MediaBrowser.MediaItem>();
private List<MediaBrowser.MediaItem> mSongs = new ArrayList<MediaBrowser.MediaItem>();
private List<MediaBrowser.MediaItem> mPlaylists = new ArrayList<MediaBrowser.MediaItem>();
private List<MediaBrowser.MediaItem> mGenres = new ArrayList<MediaBrowser.MediaItem>();
private List<MediaBrowser.MediaItem> mFiltered = new ArrayList<MediaBrowser.MediaItem>();
private boolean mCatalogReady = false;
private List<MediaBrowser.MediaItem> mQueryResult = new ArrayList<MediaBrowser.MediaItem>();
private final List<MediaBrowser.MediaItem> mMediaRoot = new ArrayList<MediaBrowser.MediaItem>();
@ -347,36 +341,31 @@ public class MirrorLinkMediaBrowserService extends MediaBrowserService implement
protected Integer doInBackground(Void... params) {
int result = ASYNCTASK_FAILED;
try {
if(!mCatalogReady) {
runQuery(mArtists, MediaUtils.TYPE_ARTIST , mArtistAdapter);
runQuery(mAlbums, MediaUtils.TYPE_ALBUM, mAlbumAdapter);
runQuery(mSongs, MediaUtils.TYPE_SONG, mSongAdapter);
runQuery(mGenres, MediaUtils.TYPE_GENRE, mGenreAdapter);
runQuery(mPlaylists, MediaUtils.TYPE_PLAYLIST, mPlaylistAdapter);
mCatalogReady = true;
}
if(limiter != null) {
mFiltered.clear();
mQueryResult.clear();
clearLimiters();
if(parent.isTopAdapter()) {
runQuery(mQueryResult, parent.mType, mMediaAdapters[parent.mType]);
} else if (limiter != null) {
switch(limiter.type) {
case MediaUtils.TYPE_ALBUM:
mSongAdapter.setLimiter(limiter);
runQuery(mFiltered, MediaUtils.TYPE_SONG, mSongAdapter);
runQuery(mQueryResult, MediaUtils.TYPE_SONG, mSongAdapter);
break;
case MediaUtils.TYPE_ARTIST:
mAlbumAdapter.setLimiter(limiter);
runQuery(mFiltered, MediaUtils.TYPE_ALBUM, mAlbumAdapter);
runQuery(mQueryResult, MediaUtils.TYPE_ALBUM, mAlbumAdapter);
break;
case MediaUtils.TYPE_SONG:
mSongAdapter.setLimiter(limiter);
runQuery(mFiltered, MediaUtils.TYPE_SONG, mSongAdapter);
runQuery(mQueryResult, MediaUtils.TYPE_SONG, mSongAdapter);
break;
case MediaUtils.TYPE_PLAYLIST:
mPlaylistAdapter.setLimiter(limiter);
runQuery(mFiltered, MediaUtils.TYPE_PLAYLIST, mPlaylistAdapter);
runQuery(mQueryResult, MediaUtils.TYPE_PLAYLIST, mPlaylistAdapter);
break;
case MediaUtils.TYPE_GENRE:
mSongAdapter.setLimiter(limiter);
runQuery(mFiltered, MediaUtils.TYPE_SONG, mSongAdapter);
runQuery(mQueryResult, MediaUtils.TYPE_SONG, mSongAdapter);
break;
}
}
@ -391,32 +380,7 @@ public class MirrorLinkMediaBrowserService extends MediaBrowserService implement
protected void onPostExecute(Integer current) {
List<MediaBrowser.MediaItem> items = null;
if (result != null) {
if(parent.isTopAdapter()) {
switch(parent.mType) {
case MediaUtils.TYPE_ALBUM:
items = mAlbums;
mAlbumAdapter.setLimiter(null);
break;
case MediaUtils.TYPE_ARTIST:
items = mArtists;
mArtistAdapter.setLimiter(null);
break;
case MediaUtils.TYPE_SONG:
items = mSongs;
mSongAdapter.setLimiter(null);
break;
case MediaUtils.TYPE_PLAYLIST:
items = mPlaylists;
mPlaylistAdapter.setLimiter(null);
break;
case MediaUtils.TYPE_GENRE:
items = mGenres;
mGenreAdapter.setLimiter(null);
break;
}
} else {
items = mFiltered;
}
items = mQueryResult;
if (current == ASYNCTASK_SUCCEEDED) {
result.sendResult(items);
} else {
@ -427,6 +391,13 @@ public class MirrorLinkMediaBrowserService extends MediaBrowserService implement
}.execute();
}
private void clearLimiters() {
for(MediaAdapter adapter : mMediaAdapters) {
adapter.setLimiter(null);
}
}
private Uri getArtUri(int mediaType, String id) {
switch(mediaType) {
case MediaUtils.TYPE_SONG:
@ -462,12 +433,8 @@ public class MirrorLinkMediaBrowserService extends MediaBrowserService implement
return;
}
final int flags = (mediaType != MediaUtils.TYPE_SONG)
&& (mediaType != MediaUtils.TYPE_PLAYLIST) ?
MediaBrowser.MediaItem.FLAG_BROWSABLE : MediaBrowser.MediaItem.FLAG_PLAYABLE;
final int flags = (mediaType == MediaUtils.TYPE_SONG || mediaType == MediaUtils.TYPE_PLAYLIST) ? MediaBrowser.MediaItem.FLAG_PLAYABLE : MediaBrowser.MediaItem.FLAG_BROWSABLE;
final int count = cursor.getCount();
for (int j = 0; j != count; ++j) {
cursor.moveToPosition(j);
final String id = cursor.getString(0);