TESTING - Queue changing (enqueue/play_next)

This commit is contained in:
CappielloAntonio 2021-04-17 11:23:53 +02:00
parent a2770daaa8
commit 4696474db5
11 changed files with 158 additions and 53 deletions

View file

@ -3,6 +3,7 @@ package com.cappielloantonio.play.ui.activities;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
@ -169,7 +170,8 @@ public class MainActivity extends BaseActivity {
@Override
public void onStateChanged(@NonNull View view, int state) {
switch (state) {
case BottomSheetBehavior.STATE_SETTLING:
case BottomSheetBehavior.STATE_SETTLING | BottomSheetBehavior.STATE_COLLAPSED:
Log.i(TAG, "onStateChanged: IS_SETTLING | IS_COLLAPSING");
PlayerBottomSheetFragment playerBottomSheetFragment = (PlayerBottomSheetFragment) getSupportFragmentManager().findFragmentByTag("PlayerBottomSheet");
if (playerBottomSheetFragment == null) break;
@ -179,17 +181,22 @@ public class MainActivity extends BaseActivity {
MusicPlayerRemote.quitPlaying();
mainViewModel.deleteQueue();
break;
}
}
@Override
public void onSlide(@NonNull View view, float slideOffset) {
PlayerBottomSheetFragment playerBottomSheetFragment = (PlayerBottomSheetFragment) getSupportFragmentManager().findFragmentByTag("PlayerBottomSheet");
if (playerBottomSheetFragment == null) return;
if (playerBottomSheetFragment == null) {
return;
}
else {
float condensedSlideOffset = Math.max(0.0f, Math.min(0.2f, slideOffset - 0.2f)) / 0.2f;
playerBottomSheetFragment.getPlayerHeader().setAlpha(1 - condensedSlideOffset);
playerBottomSheetFragment.getPlayerHeader().setVisibility(condensedSlideOffset > 0.99 ? View.GONE : View.VISIBLE);
float condensedSlideOffset = Math.max(0.0f, Math.min(0.2f, slideOffset - 0.2f)) / 0.2f;
playerBottomSheetFragment.getPlayerHeader().setAlpha(1 - condensedSlideOffset);
playerBottomSheetFragment.getPlayerHeader().setVisibility(condensedSlideOffset > 0.99 ? View.GONE : View.VISIBLE);
}
}
};

View file

@ -182,7 +182,7 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
*/
playerBottomSheetViewModel.orderSongAfterSwap(playerSongQueueAdapter.getItems());
MusicPlayerRemote.moveSong(originalPosition, toPosition);
bind.playerBodyLayout.playerSongCoverViewPager.setCurrentItem(MusicPlayerRemote.getPosition(), true);
bind.playerBodyLayout.playerSongCoverViewPager.setCurrentItem(MusicPlayerRemote.getPosition(), false);
originalPosition = -1;
fromPosition = -1;
@ -195,7 +195,7 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
MusicPlayerRemote.removeFromQueue(viewHolder.getBindingAdapterPosition());
playerBottomSheetViewModel.removeSong(viewHolder.getBindingAdapterPosition());
bind.playerBodyLayout.playerQueueRecyclerView.getAdapter().notifyItemRemoved(viewHolder.getBindingAdapterPosition());
bind.playerBodyLayout.playerSongCoverViewPager.setCurrentItem(MusicPlayerRemote.getPosition(), true);
bind.playerBodyLayout.playerSongCoverViewPager.setCurrentItem(MusicPlayerRemote.getPosition(), false);
}
else {
bind.playerBodyLayout.playerQueueRecyclerView.getAdapter().notifyDataSetChanged();
@ -296,10 +296,6 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
setSongInfo(song);
}
private void setCurrentItemInSlideView(boolean smoothScroll) {
}
@Override
public void onServiceConnected() {
setSongInfo(MusicPlayerRemote.getCurrentSong());

View file

@ -12,17 +12,26 @@ import androidx.annotation.Nullable;
import androidx.lifecycle.ViewModelProvider;
import androidx.navigation.fragment.NavHostFragment;
import com.cappielloantonio.play.App;
import com.cappielloantonio.play.R;
import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.helper.MusicPlayerRemote;
import com.cappielloantonio.play.model.Album;
import com.cappielloantonio.play.model.Artist;
import com.cappielloantonio.play.model.Song;
import com.cappielloantonio.play.repository.QueueRepository;
import com.cappielloantonio.play.repository.SongRepository;
import com.cappielloantonio.play.ui.activities.MainActivity;
import com.cappielloantonio.play.viewmodel.AlbumBottomSheetViewModel;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import java.util.List;
public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements View.OnClickListener {
private static final String TAG = "AlbumBottomSheetDialog";
private AlbumBottomSheetViewModel albumBottomSheetViewModel;
private SongRepository songRepository;
private Album album;
private ImageView coverAlbum;
@ -47,6 +56,8 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements
albumBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(AlbumBottomSheetViewModel.class);
albumBottomSheetViewModel.setAlbum(album);
songRepository = new SongRepository(App.getInstance());
init(view);
return view;
@ -74,19 +85,26 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements
playRandom = view.findViewById(R.id.play_random_text_view);
playRandom.setOnClickListener(v -> {
Toast.makeText(requireContext(), "Play next", Toast.LENGTH_SHORT).show();
List<Song> songs = songRepository.getAlbumListSong(album.getId(), true);
QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(songs);
MusicPlayerRemote.openQueue(songs, 0, true);
((MainActivity) requireActivity()).isBottomSheetInPeek(true);
dismissBottomSheet();
});
playNext = view.findViewById(R.id.play_next_text_view);
playNext.setOnClickListener(v -> {
Toast.makeText(requireContext(), "Play next", Toast.LENGTH_SHORT).show();
MusicPlayerRemote.playNext(songRepository.getAlbumListSong(album.getId(), false));
((MainActivity) requireActivity()).isBottomSheetInPeek(true);
dismissBottomSheet();
});
addToQueue = view.findViewById(R.id.add_to_queue_text_view);
addToQueue.setOnClickListener(v -> {
Toast.makeText(requireContext(), "Add to queue", Toast.LENGTH_SHORT).show();
MusicPlayerRemote.enqueue(songRepository.getAlbumListSong(album.getId(), false));
dismissBottomSheet();
});

View file

@ -15,12 +15,17 @@ import androidx.navigation.fragment.NavHostFragment;
import com.cappielloantonio.play.R;
import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.helper.MusicPlayerRemote;
import com.cappielloantonio.play.model.Album;
import com.cappielloantonio.play.model.Artist;
import com.cappielloantonio.play.model.Song;
import com.cappielloantonio.play.ui.activities.MainActivity;
import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel;
import com.cappielloantonio.play.viewmodel.SongBottomSheetViewModel;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import java.util.Objects;
public class SongBottomSheetDialog extends BottomSheetDialogFragment implements View.OnClickListener {
private static final String TAG = "SongBottomSheetDialog";
@ -84,13 +89,15 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
playNext = view.findViewById(R.id.play_next_text_view);
playNext.setOnClickListener(v -> {
Toast.makeText(requireContext(), "Play next", Toast.LENGTH_SHORT).show();
MusicPlayerRemote.playNext(song);
((MainActivity) requireActivity()).isBottomSheetInPeek(true);
dismissBottomSheet();
});
addToQueue = view.findViewById(R.id.add_to_queue_text_view);
addToQueue.setOnClickListener(v -> {
Toast.makeText(requireContext(), "Add to queue", Toast.LENGTH_SHORT).show();
MusicPlayerRemote.enqueue(song);
((MainActivity) requireActivity()).isBottomSheetInPeek(true);
dismissBottomSheet();
});