Add option to jump to albums, artists and genres in fullplaybackactivity
This commit is contained in:
parent
f1aa25556f
commit
ffe0fe55df
@ -275,6 +275,8 @@ THE SOFTWARE.
|
||||
<string name="enqueue_current_album">Enqueue album</string>
|
||||
<string name="enqueue_current_artist">Enqueue artist</string>
|
||||
<string name="enqueue_current_genre">Enqueue genre</string>
|
||||
<string name="enqueue_current">Enqueue…</string>
|
||||
<string name="more_from_current">More from…</string>
|
||||
<string name="empty_the_queue">Empty queue</string>
|
||||
<string name="show_queue">Show queue</string>
|
||||
<string name="hide_queue">Hide queue</string>
|
||||
|
@ -36,6 +36,7 @@ import android.view.Gravity;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.SubMenu;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.LinearLayout;
|
||||
@ -298,14 +299,23 @@ public class FullPlaybackActivity extends SlidingPlaybackActivity
|
||||
{
|
||||
super.onCreateOptionsMenu(menu);
|
||||
menu.add(0, MENU_DELETE, 30, R.string.delete);
|
||||
menu.add(0, MENU_ENQUEUE_ALBUM, 30, R.string.enqueue_current_album);
|
||||
menu.add(0, MENU_ENQUEUE_ARTIST, 30, R.string.enqueue_current_artist);
|
||||
menu.add(0, MENU_ENQUEUE_GENRE, 30, R.string.enqueue_current_genre);
|
||||
SubMenu enqueueMenu = menu.addSubMenu(0, MENU_ENQUEUE, 30, R.string.enqueue_current);
|
||||
SubMenu moreMenu = menu.addSubMenu(0, MENU_MORE, 30, R.string.more_from_current);
|
||||
menu.add(0, MENU_ADD_TO_PLAYLIST, 30, R.string.add_to_playlist);
|
||||
menu.add(0, MENU_SHARE, 30, R.string.share);
|
||||
menu.add(0, MENU_PLUGINS, 30, R.string.plugins);
|
||||
mFavorites = menu.add(0, MENU_SONG_FAVORITE, 0, R.string.add_to_favorites).setIcon(R.drawable.btn_rating_star_off_mtrl_alpha).setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||
|
||||
// Subitems of 'enqueue...'
|
||||
enqueueMenu.add(0, MENU_ENQUEUE_ALBUM, 30, R.string._album);
|
||||
enqueueMenu.add(0, MENU_ENQUEUE_ARTIST, 30, R.string._artist);
|
||||
enqueueMenu.add(0, MENU_ENQUEUE_GENRE, 30, R.string._genre);
|
||||
|
||||
// Subitems of 'more from...'
|
||||
moreMenu.add(0, MENU_MORE_ALBUM, 30, R.string._album);
|
||||
moreMenu.add(0, MENU_MORE_ARTIST, 30, R.string._artist);
|
||||
moreMenu.add(0, MENU_MORE_GENRE, 30, R.string._genre);
|
||||
|
||||
// ensure that mFavorites is updated
|
||||
mHandler.sendEmptyMessage(MSG_LOAD_FAVOURITE_INFO);
|
||||
return true;
|
||||
@ -318,8 +328,16 @@ public class FullPlaybackActivity extends SlidingPlaybackActivity
|
||||
|
||||
switch (item.getItemId()) {
|
||||
case android.R.id.home:
|
||||
case MENU_LIBRARY:
|
||||
openLibrary(null);
|
||||
openLibrary(null, -1);
|
||||
break;
|
||||
case MENU_MORE_ALBUM:
|
||||
openLibrary(song, MediaUtils.TYPE_ALBUM);
|
||||
break;
|
||||
case MENU_MORE_ARTIST:
|
||||
openLibrary(song, MediaUtils.TYPE_ARTIST);
|
||||
break;
|
||||
case MENU_MORE_GENRE:
|
||||
openLibrary(song, MediaUtils.TYPE_GENRE);
|
||||
break;
|
||||
case MENU_ENQUEUE_ALBUM:
|
||||
PlaybackService.get(this).enqueueFromSong(song, MediaUtils.TYPE_ALBUM);
|
||||
@ -396,7 +414,7 @@ public class FullPlaybackActivity extends SlidingPlaybackActivity
|
||||
@Override
|
||||
public boolean onSearchRequested()
|
||||
{
|
||||
openLibrary(null);
|
||||
openLibrary(null, -1);
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -639,7 +657,7 @@ public class FullPlaybackActivity extends SlidingPlaybackActivity
|
||||
} else if (view == mCoverView) {
|
||||
performAction(mCoverPressAction);
|
||||
} else if (view.getId() == R.id.info_table) {
|
||||
openLibrary(mCurrentSong);
|
||||
openLibrary(mCurrentSong, MediaUtils.TYPE_ALBUM);
|
||||
} else {
|
||||
super.onClick(view);
|
||||
}
|
||||
|
@ -185,7 +185,7 @@ public class LibraryActivity
|
||||
pager.setCurrentItem(page);
|
||||
}
|
||||
|
||||
loadAlbumIntent(getIntent());
|
||||
loadLimiterIntent(getIntent());
|
||||
bindControlButtons();
|
||||
}
|
||||
|
||||
@ -230,22 +230,22 @@ public class LibraryActivity
|
||||
}
|
||||
|
||||
/**
|
||||
* If the given intent has album data, set a limiter built from that
|
||||
* If the given intent has type data, set a limiter built from that
|
||||
* data.
|
||||
*/
|
||||
private void loadAlbumIntent(Intent intent)
|
||||
private void loadLimiterIntent(Intent intent)
|
||||
{
|
||||
long albumId = intent.getLongExtra("albumId", -1);
|
||||
if (albumId != -1) {
|
||||
String[] fields = { intent.getStringExtra("artist"), intent.getStringExtra("album") };
|
||||
String data = String.format("album_id=%d", albumId);
|
||||
Limiter limiter = new Limiter(MediaUtils.TYPE_ALBUM, fields, data);
|
||||
int type = intent.getIntExtra("type", -1);
|
||||
long id = intent.getLongExtra("id", -1);
|
||||
if (type != -1 && id != -1) {
|
||||
MediaAdapter adapter = new MediaAdapter(this, type, null, null);
|
||||
adapter.commitQuery(adapter.query());
|
||||
Limiter limiter = adapter.buildLimiter(id);
|
||||
int tab = mPagerAdapter.setLimiter(limiter);
|
||||
if (tab == -1 || tab == mViewPager.getCurrentItem())
|
||||
updateLimiterViews();
|
||||
else
|
||||
mViewPager.setCurrentItem(tab);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -256,7 +256,7 @@ public class LibraryActivity
|
||||
return;
|
||||
|
||||
checkForLaunch(intent);
|
||||
loadAlbumIntent(intent);
|
||||
loadLimiterIntent(intent);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -393,9 +393,9 @@ public abstract class PlaybackActivity extends Activity
|
||||
|
||||
static final int MENU_SORT = 1;
|
||||
static final int MENU_PREFS = 2;
|
||||
static final int MENU_LIBRARY = 3;
|
||||
static final int MENU_PLAYBACK = 5;
|
||||
static final int MENU_SEARCH = 7;
|
||||
static final int MENU_PLAYBACK = 3;
|
||||
static final int MENU_SEARCH = 4;
|
||||
static final int MENU_ENQUEUE = 7; // toplevel menu, has no action
|
||||
static final int MENU_ENQUEUE_ALBUM = 8;
|
||||
static final int MENU_ENQUEUE_ARTIST = 9;
|
||||
static final int MENU_ENQUEUE_GENRE = 10;
|
||||
@ -409,6 +409,10 @@ public abstract class PlaybackActivity extends Activity
|
||||
static final int MENU_SHARE = 18;
|
||||
static final int MENU_GO_HOME = 19;
|
||||
static final int MENU_PLUGINS = 20; // used in FullPlaybackActivity
|
||||
static final int MENU_MORE = 21; // toplevel menu, has no own action
|
||||
static final int MENU_MORE_ALBUM = 22;
|
||||
static final int MENU_MORE_ARTIST = 23;
|
||||
static final int MENU_MORE_GENRE = 24;
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu)
|
||||
@ -633,15 +637,29 @@ public abstract class PlaybackActivity extends Activity
|
||||
* Open the library activity.
|
||||
*
|
||||
* @param song If non-null, will open the library focused on this song.
|
||||
* @param type the media type to switch to for 'song'
|
||||
*/
|
||||
public void openLibrary(Song song)
|
||||
public void openLibrary(Song song, int type)
|
||||
{
|
||||
Intent intent = new Intent(this, LibraryActivity.class);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
if (song != null) {
|
||||
intent.putExtra("albumId", song.albumId);
|
||||
intent.putExtra("album", song.album);
|
||||
intent.putExtra("artist", song.artist);
|
||||
long id = -1;
|
||||
switch(type) {
|
||||
case MediaUtils.TYPE_ARTIST:
|
||||
id = song.artistId;
|
||||
break;
|
||||
case MediaUtils.TYPE_ALBUM:
|
||||
id = song.albumId;
|
||||
break;
|
||||
case MediaUtils.TYPE_GENRE:
|
||||
id = MediaUtils.queryGenreForSong(this, song.id);
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Invalid media type " + type);
|
||||
}
|
||||
intent.putExtra("type", type);
|
||||
intent.putExtra("id", id);
|
||||
}
|
||||
startActivity(intent);
|
||||
}
|
||||
|
@ -331,7 +331,7 @@ public class SlidingPlaybackActivity extends PlaybackActivity
|
||||
return; // not initialized yet
|
||||
|
||||
final int[] slide_visible = {MENU_HIDE_QUEUE, MENU_CLEAR_QUEUE, MENU_EMPTY_QUEUE, MENU_SAVE_QUEUE};
|
||||
final int[] slide_hidden = {MENU_SHOW_QUEUE, MENU_SORT, MENU_DELETE, MENU_ENQUEUE_ALBUM, MENU_ENQUEUE_ARTIST, MENU_ENQUEUE_GENRE, MENU_ADD_TO_PLAYLIST, MENU_SHARE};
|
||||
final int[] slide_hidden = {MENU_SHOW_QUEUE, MENU_SORT, MENU_DELETE, MENU_ENQUEUE, MENU_MORE, MENU_ADD_TO_PLAYLIST, MENU_SHARE};
|
||||
|
||||
for (int id : slide_visible) {
|
||||
MenuItem item = mMenu.findItem(id);
|
||||
|
Loading…
x
Reference in New Issue
Block a user