summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorlinus_lee <llee@cyngn.com>2014-11-05 16:14:44 -0800
committerlinus_lee <llee@cyngn.com>2014-11-20 12:51:37 -0800
commitcb9f4f5708b59bfb3136bf11fed49f31f1033b0b (patch)
treeac587d59524b850c18ac3dc80a579bdb34023fe4 /src
parent8f8e55916f56830ab31ba38b1bd05ea411f8c351 (diff)
downloadandroid_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
Diffstat (limited to 'src')
-rw-r--r--src/com/cyngn/eleven/IElevenService.aidl3
-rw-r--r--src/com/cyngn/eleven/MusicPlaybackService.java61
-rw-r--r--src/com/cyngn/eleven/adapters/AlbumArtPagerAdapter.java15
-rw-r--r--src/com/cyngn/eleven/ui/HeaderBar.java16
-rw-r--r--src/com/cyngn/eleven/ui/fragments/AudioPlayerFragment.java22
-rw-r--r--src/com/cyngn/eleven/utils/MusicUtils.java42
6 files changed, 135 insertions, 24 deletions
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() {