diff options
author | linus_lee <llee@cyngn.com> | 2014-11-05 16:14:44 -0800 |
---|---|---|
committer | linus_lee <llee@cyngn.com> | 2014-11-20 12:51:37 -0800 |
commit | cb9f4f5708b59bfb3136bf11fed49f31f1033b0b (patch) | |
tree | ac587d59524b850c18ac3dc80a579bdb34023fe4 | |
parent | 8f8e55916f56830ab31ba38b1bd05ea411f8c351 (diff) | |
download | android_packages_apps_Eleven-cb9f4f5708b59bfb3136bf11fed49f31f1033b0b.tar.gz android_packages_apps_Eleven-cb9f4f5708b59bfb3136bf11fed49f31f1033b0b.tar.bz2 android_packages_apps_Eleven-cb9f4f5708b59bfb3136bf11fed49f31f1033b0b.zip |
Eleven: Remove irrelevant options when queue is empty
https://cyanogen.atlassian.net/browse/MUSIC-182
Change-Id: Ie6aace33c27009bd93c512a4bc1b5ccbe49b68f1
-rw-r--r-- | res/menu/audio_player.xml | 7 | ||||
-rw-r--r-- | src/com/cyngn/eleven/IElevenService.aidl | 3 | ||||
-rw-r--r-- | src/com/cyngn/eleven/MusicPlaybackService.java | 61 | ||||
-rw-r--r-- | src/com/cyngn/eleven/adapters/AlbumArtPagerAdapter.java | 15 | ||||
-rw-r--r-- | src/com/cyngn/eleven/ui/HeaderBar.java | 16 | ||||
-rw-r--r-- | src/com/cyngn/eleven/ui/fragments/AudioPlayerFragment.java | 22 | ||||
-rw-r--r-- | src/com/cyngn/eleven/utils/MusicUtils.java | 42 |
7 files changed, 141 insertions, 25 deletions
diff --git a/res/menu/audio_player.xml b/res/menu/audio_player.xml index 031a39c..5d8339e 100644 --- a/res/menu/audio_player.xml +++ b/res/menu/audio_player.xml @@ -27,9 +27,14 @@ android:orderInCategory="42" android:title="@string/context_menu_use_as_ringtone"/> <item - android:id="@+id/menu_audio_player_delete" + android:id="@+id/menu_audio_player_more_by_artist" android:showAsAction="never" android:orderInCategory="43" + android:title="@string/context_menu_more_by_artist"/> + <item + android:id="@+id/menu_audio_player_delete" + android:showAsAction="never" + android:orderInCategory="44" android:title="@string/context_menu_delete"/> </menu> diff --git a/src/com/cyngn/eleven/IElevenService.aidl b/src/com/cyngn/eleven/IElevenService.aidl index f52e9ca..c50d246 100644 --- a/src/com/cyngn/eleven/IElevenService.aidl +++ b/src/com/cyngn/eleven/IElevenService.aidl @@ -20,7 +20,10 @@ interface IElevenService void playlistChanged(); boolean isPlaying(); long [] getQueue(); + long getQueueItemAtPosition(int position); + int getQueueSize(); int getQueuePosition(); + int getQueueHistoryPosition(int position); int getQueueHistorySize(); int[] getQueueHistoryList(); long duration(); diff --git a/src/com/cyngn/eleven/MusicPlaybackService.java b/src/com/cyngn/eleven/MusicPlaybackService.java index 0b00d7f..8e514fa 100644 --- a/src/com/cyngn/eleven/MusicPlaybackService.java +++ b/src/com/cyngn/eleven/MusicPlaybackService.java @@ -1813,6 +1813,19 @@ public class MusicPlaybackService extends Service { } /** + * @return the position in the history + */ + public int getQueueHistoryPosition(int position) { + synchronized (this) { + if (position >= 0 && position < mHistory.size()) { + return mHistory.get(position); + } + } + + return -1; + } + + /** * @return the queue of history positions */ public int[] getQueueHistoryList() { @@ -2075,6 +2088,30 @@ public class MusicPlaybackService extends Service { } /** + * Gets the track id at a given position in the queue + * @param position + * @return track id in the queue position + */ + public long getQueueItemAtPosition(int position) { + synchronized (this) { + if (position >= 0 && position < mPlaylist.size()) { + return mPlaylist.get(position).mId; + } + } + + return -1; + } + + /** + * @return the size of the queue + */ + public int getQueueSize() { + synchronized (this) { + return mPlaylist.size(); + } + } + + /** * @return True if music is playing, false otherwise */ public boolean isPlaying() { @@ -3113,6 +3150,30 @@ public class MusicPlaybackService extends Service { * {@inheritDoc} */ @Override + public long getQueueItemAtPosition(int position) throws RemoteException { + return mService.get().getQueueItemAtPosition(position); + } + + /** + * {@inheritDoc} + */ + @Override + public int getQueueSize() throws RemoteException { + return mService.get().getQueueSize(); + } + + /** + * {@inheritDoc} + */ + @Override + public int getQueueHistoryPosition(int position) throws RemoteException { + return mService.get().getQueueHistoryPosition(position); + } + + /** + * {@inheritDoc} + */ + @Override public int getQueueHistorySize() throws RemoteException { return mService.get().getQueueHistorySize(); } diff --git a/src/com/cyngn/eleven/adapters/AlbumArtPagerAdapter.java b/src/com/cyngn/eleven/adapters/AlbumArtPagerAdapter.java index a271945..996231b 100644 --- a/src/com/cyngn/eleven/adapters/AlbumArtPagerAdapter.java +++ b/src/com/cyngn/eleven/adapters/AlbumArtPagerAdapter.java @@ -108,9 +108,7 @@ public class AlbumArtPagerAdapter extends FragmentStatePagerAdapter { } else if (MusicUtils.getShuffleMode() == MusicPlaybackService.SHUFFLE_NONE) { // if we aren't shuffling, just return based on the queue position // add a check for empty queue - long[] songQueue = MusicUtils.getQueue(); - return (position >= 0 && position < songQueue.length) - ? songQueue[position] : NO_TRACK_ID; + return MusicUtils.getQueueItemAtPosition(position); } else { // if we are shuffling, there is no 'queue' going forward per say // because it is dynamically generated. In that case we can only look @@ -126,14 +124,9 @@ public class AlbumArtPagerAdapter extends FragmentStatePagerAdapter { } else if (position - positionOffset == 1) { // next track return MusicUtils.getNextAudioId(); } else if (position < positionOffset) { - // historical track - look up the historical position - long[] audioIds = MusicUtils.getQueue(); - int[] historyPositions = MusicUtils.getQueueHistoryList(); - if (position < historyPositions.length) { - int queuePosition = historyPositions[position]; - if (queuePosition < audioIds.length) { - return audioIds[queuePosition]; - } + int queuePosition = MusicUtils.getQueueHistoryPosition(position); + if (position >= 0) { + return MusicUtils.getQueueItemAtPosition(queuePosition); } } } diff --git a/src/com/cyngn/eleven/ui/HeaderBar.java b/src/com/cyngn/eleven/ui/HeaderBar.java index e6180d0..cbc9cba 100644 --- a/src/com/cyngn/eleven/ui/HeaderBar.java +++ b/src/com/cyngn/eleven/ui/HeaderBar.java @@ -115,17 +115,21 @@ public class HeaderBar extends LinearLayout { return onPopupMenuItemClick(item); } }); + } + + final Menu menu = mPopupMenu.getMenu(); + final MenuInflater inflater = mPopupMenu.getMenuInflater(); - final Menu menu = mPopupMenu.getMenu(); - final MenuInflater inflater = mPopupMenu.getMenuInflater(); + menu.clear(); - // Shuffle all - inflater.inflate(R.menu.shuffle_all, menu); + // Shuffle all + inflater.inflate(R.menu.shuffle_all, menu); + if (MusicUtils.getQueueSize() > 0) { // save queue/clear queue inflater.inflate(R.menu.queue, menu); - // Settings - inflater.inflate(R.menu.activity_base, menu); } + // Settings + inflater.inflate(R.menu.activity_base, menu); // show the popup mPopupMenu.show(); diff --git a/src/com/cyngn/eleven/ui/fragments/AudioPlayerFragment.java b/src/com/cyngn/eleven/ui/fragments/AudioPlayerFragment.java index 351c55b..44690c6 100644 --- a/src/com/cyngn/eleven/ui/fragments/AudioPlayerFragment.java +++ b/src/com/cyngn/eleven/ui/fragments/AudioPlayerFragment.java @@ -401,7 +401,7 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection { int repeatMode = MusicUtils.getRepeatMode(); int targetSize = 0; int targetIndex = 0; - int queueSize = MusicUtils.getQueue().length; + int queueSize = MusicUtils.getQueueSize(); if (repeatMode == MusicPlaybackService.REPEAT_CURRENT) { targetSize = 1; @@ -423,9 +423,11 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection { if(queueSize == 0) { mAlbumArtViewPager.setVisibility(View.GONE); mQueueEmpty.showNoResults(); + mAddToPlaylistButton.setVisibility(View.GONE); } else { mAlbumArtViewPager.setVisibility(View.VISIBLE); mQueueEmpty.hideAll(); + mAddToPlaylistButton.setVisibility(View.VISIBLE); } } @@ -561,19 +563,22 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection { return onPopupMenuItemClick(item); } }); + } - final Menu menu = mPopupMenu.getMenu(); - final MenuInflater inflater = mPopupMenu.getMenuInflater(); + final Menu menu = mPopupMenu.getMenu(); + final MenuInflater inflater = mPopupMenu.getMenuInflater(); + menu.clear(); - // Shuffle all - inflater.inflate(R.menu.shuffle_all, menu); + // Shuffle all + inflater.inflate(R.menu.shuffle_all, menu); + if (MusicUtils.getQueueSize() > 0) { // ringtone, and equalizer inflater.inflate(R.menu.audio_player, menu); // save queue/clear queue inflater.inflate(R.menu.queue, menu); - // Settings - inflater.inflate(R.menu.activity_base, menu); } + // Settings + inflater.inflate(R.menu.activity_base, menu); // show the popup mPopupMenu.show(); @@ -597,6 +602,9 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection { // Settings NavUtils.openSettings(getActivity()); return true; + case R.id.menu_audio_player_more_by_artist: + NavUtils.openArtistProfile(getActivity(), MusicUtils.getArtistName()); + return true; case R.id.menu_audio_player_delete: // Delete current song DeleteDialog.newInstance(MusicUtils.getTrackName(), new long[]{ diff --git a/src/com/cyngn/eleven/utils/MusicUtils.java b/src/com/cyngn/eleven/utils/MusicUtils.java index 3fb5027..7b71e3f 100644 --- a/src/com/cyngn/eleven/utils/MusicUtils.java +++ b/src/com/cyngn/eleven/utils/MusicUtils.java @@ -561,6 +561,35 @@ public final class MusicUtils { } /** + * @param position + * @return the id of the track in the queue at the given position + */ + public static final long getQueueItemAtPosition(int position) { + try { + if (mService != null) { + return mService.getQueueItemAtPosition(position); + } else { + } + } catch (final RemoteException ignored) { + } + return -1; + } + + /** + * @return the current queue size + */ + public static final int getQueueSize() { + try { + if (mService != null) { + return mService.getQueueSize(); + } else { + } + } catch (final RemoteException ignored) { + } + return 0; + } + + /** * @return The position of the current track in the queue. */ public static final int getQueuePosition() { @@ -587,6 +616,19 @@ public final class MusicUtils { } /** + * @return The queue history position at the position + */ + public static final int getQueueHistoryPosition(int position) { + if (mService != null) { + try { + return mService.getQueueHistoryPosition(position); + } catch (final RemoteException ignored) { + } + } + return -1; + } + + /** * @return The queue history */ public static final int[] getQueueHistoryList() { |