From 6df61daf2e8a81d610ad5fb8d92e20abe4ba3ac2 Mon Sep 17 00:00:00 2001 From: Adrian Ulrich Date: Mon, 21 Dec 2015 17:30:06 +0100 Subject: [PATCH] MirrorLink: do not pre-cache root --- .../MirrorLinkMediaBrowserService.java | 73 +++++-------------- 1 file changed, 20 insertions(+), 53 deletions(-) diff --git a/src/ch/blinkenlights/android/vanilla/MirrorLinkMediaBrowserService.java b/src/ch/blinkenlights/android/vanilla/MirrorLinkMediaBrowserService.java index 77968bd8..2a3962e9 100644 --- a/src/ch/blinkenlights/android/vanilla/MirrorLinkMediaBrowserService.java +++ b/src/ch/blinkenlights/android/vanilla/MirrorLinkMediaBrowserService.java @@ -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 mAlbums = new ArrayList(); - private List mArtists = new ArrayList(); - private List mSongs = new ArrayList(); - private List mPlaylists = new ArrayList(); - private List mGenres = new ArrayList(); - private List mFiltered = new ArrayList(); - private boolean mCatalogReady = false; + private List mQueryResult = new ArrayList(); private final List mMediaRoot = new ArrayList(); @@ -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 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);