/** * Clear a limiter. * * @param type Which type of limiter to clear. */ public void clearLimiter(int type) { maintainPosition(); if (type == MediaUtils.TYPE_FILE) { if (mFilesAdapter == null) { mPendingFileLimiter = null; } else { mFilesAdapter.setLimiter(null); requestRequery(mFilesAdapter); } } else { if (mAlbumAdapter == null) { mPendingAlbumLimiter = null; } else { mAlbumAdapter.setLimiter(null); loadSortOrder(mAlbumAdapter); requestRequery(mAlbumAdapter); } if (mSongAdapter == null) { mPendingSongLimiter = null; } else { mSongAdapter.setLimiter(null); loadSortOrder(mSongAdapter); requestRequery(mSongAdapter); } } }
@Override public Parcelable saveState() { Bundle out = new Bundle(10); if (mAlbumAdapter != null) out.putSerializable("limiter_albums", mAlbumAdapter.getLimiter()); if (mSongAdapter != null) out.putSerializable("limiter_songs", mSongAdapter.getLimiter()); if (mFilesAdapter != null) out.putSerializable("limiter_files", mFilesAdapter.getLimiter()); maintainPosition(); return out; }
/** * Update the adapters with the given limiter. * * @param limiter The limiter to set. * @return The tab type that should be switched to to expand the row. */ public int setLimiter(Limiter limiter) { int tab; maintainPosition(); switch (limiter.type) { case MediaUtils.TYPE_ALBUM: if (mSongAdapter == null) { mPendingSongLimiter = limiter; } else { mSongAdapter.setLimiter(limiter); loadSortOrder(mSongAdapter); requestRequery(mSongAdapter); } tab = mSongsPosition; break; case MediaUtils.TYPE_ARTIST: if (mAlbumAdapter == null) { mPendingAlbumLimiter = limiter; } else { mAlbumAdapter.setLimiter(limiter); loadSortOrder(mAlbumAdapter); requestRequery(mAlbumAdapter); } if (mSongAdapter == null) { mPendingSongLimiter = limiter; } else { mSongAdapter.setLimiter(limiter); loadSortOrder(mSongAdapter); requestRequery(mSongAdapter); } tab = mAlbumsPosition; if (tab == -1) tab = mSongsPosition; break; case MediaUtils.TYPE_GENRE: if (mAlbumAdapter == null) { mPendingAlbumLimiter = limiter; } else { mAlbumAdapter.setLimiter(limiter); loadSortOrder(mAlbumAdapter); requestRequery(mAlbumAdapter); } if (mSongAdapter == null) { mPendingSongLimiter = limiter; } else { mSongAdapter.setLimiter(limiter); loadSortOrder(mSongAdapter); requestRequery(mSongAdapter); } tab = mSongsPosition; break; case MediaUtils.TYPE_FILE: if (mFilesAdapter == null) { mPendingFileLimiter = limiter; } else { mFilesAdapter.setLimiter(limiter); requestRequery(mFilesAdapter); } tab = -1; break; default: throw new IllegalArgumentException("Unsupported limiter type: " + limiter.type); } return tab; }