From 159123f51f5e13c496499c393e922007140ae681 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sun, 25 Jan 2015 21:55:25 +0100 Subject: [PATCH] Fixed playing queue rearranging --- ...layListAdapter.java => PlayingQueueAdapter.java} | 4 ++-- .../materialmusic/helper/MusicPlayerRemote.java | 13 +++++++++++++ .../helper/PlayingQueueDialogHelper.java | 12 +++++------- 3 files changed, 20 insertions(+), 9 deletions(-) rename app/src/main/java/com/kabouzeid/materialmusic/adapter/{PlayListAdapter.java => PlayingQueueAdapter.java} (91%) diff --git a/app/src/main/java/com/kabouzeid/materialmusic/adapter/PlayListAdapter.java b/app/src/main/java/com/kabouzeid/materialmusic/adapter/PlayingQueueAdapter.java similarity index 91% rename from app/src/main/java/com/kabouzeid/materialmusic/adapter/PlayListAdapter.java rename to app/src/main/java/com/kabouzeid/materialmusic/adapter/PlayingQueueAdapter.java index 9d0f9837..dfcf697a 100644 --- a/app/src/main/java/com/kabouzeid/materialmusic/adapter/PlayListAdapter.java +++ b/app/src/main/java/com/kabouzeid/materialmusic/adapter/PlayingQueueAdapter.java @@ -17,11 +17,11 @@ import java.util.List; /** * Created by karim on 24.01.15. */ -public class PlayListAdapter extends ArrayAdapter { +public class PlayingQueueAdapter extends ArrayAdapter { private Context context; private App app; - public PlayListAdapter(Context context, List playList) { + public PlayingQueueAdapter(Context context, List playList) { super(context, R.layout.item_playlist, playList); this.context = context; app = (App) context.getApplicationContext(); diff --git a/app/src/main/java/com/kabouzeid/materialmusic/helper/MusicPlayerRemote.java b/app/src/main/java/com/kabouzeid/materialmusic/helper/MusicPlayerRemote.java index 35a09bbd..f1969b84 100644 --- a/app/src/main/java/com/kabouzeid/materialmusic/helper/MusicPlayerRemote.java +++ b/app/src/main/java/com/kabouzeid/materialmusic/helper/MusicPlayerRemote.java @@ -227,6 +227,19 @@ public class MusicPlayerRemote implements OnMusicRemoteEventListener { return false; } + public void moveSong(int from, int to){ + final int currentPosition = getPosition(); + Song songToMove = getPlayingQueue().remove(from); + getPlayingQueue().add(to, songToMove); + if(from > currentPosition && to <= currentPosition){ + setPosition(getPosition() + 1); + } else if(from < currentPosition && to >= currentPosition){ + setPosition(getPosition() - 1); + } else if(from == currentPosition){ + setPosition(to); + } + } + @Override public void onMusicRemoteEvent(MusicRemoteEvent event) { notifyOnMusicRemoteEventListeners(event.getAction()); diff --git a/app/src/main/java/com/kabouzeid/materialmusic/helper/PlayingQueueDialogHelper.java b/app/src/main/java/com/kabouzeid/materialmusic/helper/PlayingQueueDialogHelper.java index 93523ed4..9c9e5bc6 100644 --- a/app/src/main/java/com/kabouzeid/materialmusic/helper/PlayingQueueDialogHelper.java +++ b/app/src/main/java/com/kabouzeid/materialmusic/helper/PlayingQueueDialogHelper.java @@ -5,7 +5,7 @@ import android.content.Context; import com.afollestad.materialdialogs.MaterialDialog; import com.kabouzeid.materialmusic.App; import com.kabouzeid.materialmusic.R; -import com.kabouzeid.materialmusic.adapter.PlayListAdapter; +import com.kabouzeid.materialmusic.adapter.PlayingQueueAdapter; import com.kabouzeid.materialmusic.model.Song; import com.mobeta.android.dslv.DragSortListView; @@ -34,15 +34,13 @@ public class PlayingQueueDialogHelper { }) .build(); final DragSortListView dragSortListView = (DragSortListView) dialog.getCustomView().findViewById(R.id.dragSortListView); - final PlayListAdapter playListAdapter = new PlayListAdapter(context, app.getMusicPlayerRemote().getPlayingQueue()); - dragSortListView.setAdapter(playListAdapter); + final PlayingQueueAdapter playingQueueAdapter = new PlayingQueueAdapter(context, app.getMusicPlayerRemote().getPlayingQueue()); + dragSortListView.setAdapter(playingQueueAdapter); dragSortListView.setDropListener(new DragSortListView.DropListener() { @Override public void drop(int from, int to) { - Song songToMove = app.getMusicPlayerRemote().getPlayingQueue().get(from); - app.getMusicPlayerRemote().getPlayingQueue().remove(from); - app.getMusicPlayerRemote().getPlayingQueue().add(to, songToMove); - playListAdapter.notifyDataSetChanged(); + app.getMusicPlayerRemote().moveSong(from, to); + playingQueueAdapter.notifyDataSetChanged(); } }); return dialog;