diff --git a/app/src/main/java/com/kabouzeid/gramophone/helper/MusicPlayerRemote.java b/app/src/main/java/com/kabouzeid/gramophone/helper/MusicPlayerRemote.java index 035573fc..38042c18 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/helper/MusicPlayerRemote.java +++ b/app/src/main/java/com/kabouzeid/gramophone/helper/MusicPlayerRemote.java @@ -167,7 +167,7 @@ public class MusicPlayerRemote { */ public static void openQueue(final ArrayList queue, final int startPosition, final boolean startPlaying) { if (!tryToHandleOpenPlayingQueue(queue, startPosition, startPlaying) && musicService != null) { - musicService.openAndPlayQueue(queue, startPosition, startPlaying); + musicService.openQueue(queue, startPosition, startPlaying); } } @@ -280,7 +280,13 @@ public class MusicPlayerRemote { public static boolean playNext(Song song) { if (musicService != null) { - musicService.addSong(getPosition() + 1, song); + if (getPlayingQueue().size() > 0) { + musicService.addSong(getPosition() + 1, song); + } else { + ArrayList queue = new ArrayList<>(); + queue.add(song); + openQueue(queue, 0, false); + } Toast.makeText(musicService, musicService.getResources().getString(R.string.added_title_to_playing_queue), Toast.LENGTH_SHORT).show(); return true; } @@ -289,7 +295,13 @@ public class MusicPlayerRemote { public static boolean enqueue(Song song) { if (musicService != null) { - musicService.addSong(song); + if (getPlayingQueue().size() > 0) { + musicService.addSong(song); + } else { + ArrayList queue = new ArrayList<>(); + queue.add(song); + openQueue(queue, 0, false); + } Toast.makeText(musicService, musicService.getResources().getString(R.string.added_title_to_playing_queue), Toast.LENGTH_SHORT).show(); return true; } @@ -298,7 +310,11 @@ public class MusicPlayerRemote { public static boolean enqueue(@NonNull ArrayList songs) { if (musicService != null) { - musicService.addSongs(songs); + if (getPlayingQueue().size() > 0) { + musicService.addSongs(songs); + } else { + openQueue(songs, 0, false); + } final String toast = songs.size() == 1 ? musicService.getResources().getString(R.string.added_title_to_playing_queue) : musicService.getResources().getString(R.string.added_x_titles_to_playing_queue, songs.size()); Toast.makeText(musicService, toast, Toast.LENGTH_SHORT).show(); return true; diff --git a/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java b/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java index e983925c..5caea2ff 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java +++ b/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java @@ -550,7 +550,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP } } - public void openAndPlayQueue(@Nullable final ArrayList playingQueue, final int startPosition, final boolean startPlaying) { + public void openQueue(@Nullable final ArrayList playingQueue, final int startPosition, final boolean startPlaying) { if (playingQueue != null && !playingQueue.isEmpty() && startPosition >= 0 && startPosition < playingQueue.size()) { originalPlayingQueue = playingQueue; this.playingQueue = new ArrayList<>(originalPlayingQueue); @@ -562,6 +562,8 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP } if (startPlaying) { playSongAt(position); + } else { + setPosition(position); } notifyChange(QUEUE_CHANGED); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsSlidingMusicPanelActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsSlidingMusicPanelActivity.java index 4bf4f96c..fa9de670 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsSlidingMusicPanelActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsSlidingMusicPanelActivity.java @@ -79,8 +79,8 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi protected abstract View createContentView(); @Override - public void onPlayingMetaChanged() { - super.onPlayingMetaChanged(); + public void onQueueChanged() { + super.onQueueChanged(); hideBottomBar(MusicPlayerRemote.getPlayingQueue().isEmpty()); } @@ -148,24 +148,21 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi return slidingUpPanelLayout == null || slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED; } - public void hideBottomBar(boolean hide) { - if (hide) { - slidingUpPanelLayout.setPanelHeight(0); - slidingUpPanelLayout.post(new Runnable() { - @Override - public void run() { + public void hideBottomBar(final boolean hide) { + slidingUpPanelLayout.post(new Runnable() { + @Override + public void run() { + if (hide) { slidingUpPanelLayout.setPanelHeight(0); - } - }); - } else { - slidingUpPanelLayout.setPanelHeight(getResources().getDimensionPixelSize(R.dimen.mini_player_height)); - slidingUpPanelLayout.post(new Runnable() { - @Override - public void run() { + if (slidingUpPanelLayout.getPanelState() != SlidingUpPanelLayout.PanelState.COLLAPSED) { + slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); + } + } else { slidingUpPanelLayout.setPanelHeight(getResources().getDimensionPixelSize(R.dimen.mini_player_height)); } - }); - } + + } + }); } protected View wrapSlidingMusicPanel(@LayoutRes int resId) {