Deleted all references from the adapters and dialogs to the old queue management system

This commit is contained in:
CappielloAntonio 2021-12-29 10:22:10 +01:00
parent 4e968a8c4b
commit a32c39867f
18 changed files with 286 additions and 292 deletions

View file

@ -19,7 +19,6 @@ import com.cappielloantonio.play.interfaces.MediaCallback;
import com.cappielloantonio.play.model.Song;
import com.cappielloantonio.play.repository.QueueRepository;
import com.cappielloantonio.play.repository.SongRepository;
import com.cappielloantonio.play.service.MusicPlayerRemote;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.util.MusicUtil;
@ -97,13 +96,13 @@ public class DiscoverSongAdapter extends RecyclerView.Adapter<DiscoverSongAdapte
public void onClick(View view) {
List<Song> opener = new ArrayList<>();
opener.add(songs.get(getBindingAdapterPosition()));
MusicPlayerRemote.openQueue(opener, 0, true);
// MusicPlayerRemote.openQueue(opener, 0, true);
QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(opener);
activity.setBottomSheetInPeek(true);
activity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition()));
// activity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition()));
SongRepository songRepository = new SongRepository(App.getInstance());
songRepository.getInstantMix(songs.get(getBindingAdapterPosition()), 20, new MediaCallback() {
@ -114,7 +113,7 @@ public class DiscoverSongAdapter extends RecyclerView.Adapter<DiscoverSongAdapte
@Override
public void onLoadMedia(List<?> media) {
MusicPlayerRemote.enqueue((List<Song>) media);
//MusicPlayerRemote.enqueue((List<Song>) media);
}
});
}

View file

@ -8,18 +8,22 @@ import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.media3.session.MediaBrowser;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.cappielloantonio.play.R;
import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.model.Song;
import com.cappielloantonio.play.service.MusicPlayerRemote;
import com.cappielloantonio.play.ui.fragment.PlayerBottomSheetFragment;
import com.cappielloantonio.play.util.MappingUtil;
import com.cappielloantonio.play.util.MusicUtil;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.MoreExecutors;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;
public class PlayerSongQueueAdapter extends RecyclerView.Adapter<PlayerSongQueueAdapter.ViewHolder> {
private static final String TAG = "SongResultSearchAdapter";
@ -57,10 +61,10 @@ public class PlayerSongQueueAdapter extends RecyclerView.Adapter<PlayerSongQueue
.transform(new RoundedCorners(CustomGlideRequest.CORNER_RADIUS))
.into(holder.cover);
if (position < MusicPlayerRemote.getPosition()) {
/* if (position < MusicPlayerRemote.getPosition()) {
holder.songTitle.setTextColor(context.getResources().getColor(R.color.songToPlayTextColor, null));
holder.songSubtitle.setTextColor(context.getResources().getColor(R.color.songToPlayTextColor, null));
}
} */
}
@Override
@ -101,8 +105,8 @@ public class PlayerSongQueueAdapter extends RecyclerView.Adapter<PlayerSongQueue
@Override
public void onClick(View view) {
playerBottomSheetFragment.setSongInfo(songs.get(getBindingAdapterPosition()));
MusicPlayerRemote.openQueue(songs, getBindingAdapterPosition(), true);
// playerBottomSheetFragment.setSongInfo(songs.get(getBindingAdapterPosition()));
// MusicPlayerRemote.openQueue(songs, getBindingAdapterPosition(), true);
}
}
}

View file

@ -1,5 +1,6 @@
package com.cappielloantonio.play.adapter;
import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
@ -10,20 +11,18 @@ import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.media3.session.MediaController;
import androidx.navigation.Navigation;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.cappielloantonio.play.App;
import com.cappielloantonio.play.R;
import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.interfaces.MediaCallback;
import com.cappielloantonio.play.model.Song;
import com.cappielloantonio.play.repository.QueueRepository;
import com.cappielloantonio.play.repository.SongRepository;
import com.cappielloantonio.play.service.MusicPlayerRemote;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.util.MappingUtil;
import com.cappielloantonio.play.util.MusicUtil;
import com.google.common.util.concurrent.MoreExecutors;
import java.util.ArrayList;
import java.util.List;
@ -74,6 +73,7 @@ public class SimilarTrackAdapter extends RecyclerView.Adapter<SimilarTrackAdapte
notifyDataSetChanged();
}
@SuppressLint("UnsafeOptInUsageError")
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
TextView textTitle;
ImageView cover;
@ -90,17 +90,31 @@ public class SimilarTrackAdapter extends RecyclerView.Adapter<SimilarTrackAdapte
@Override
public void onClick(View view) {
List<Song> opener = new ArrayList<>();
opener.add(songs.get(getBindingAdapterPosition()));
MusicPlayerRemote.openQueue(opener, 0, true);
// List<Song> opener = new ArrayList<>();
// opener.add(songs.get(getBindingAdapterPosition()));
// MusicPlayerRemote.openQueue(opener, 0, true);
QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(opener);
// MediaManager.startQueue(mainActivity.getMediaControllerInstance(), MappingUtil.mapMediaItem(context, opener), opener);
mainActivity.mediaControllerListenableFuture.addListener(() -> {
try {
if (mainActivity.mediaControllerListenableFuture.isDone()) {
MediaController mediaController = mainActivity.mediaControllerListenableFuture.get();
mediaController.setMediaItem(MappingUtil.mapMediaItem(context, songs.get(getBindingAdapterPosition())));
}
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
}, MoreExecutors.directExecutor());
// QueueRepository queueRepository = new QueueRepository(App.getInstance());
// queueRepository.insertAllAndStartNew(opener);
mainActivity.setBottomSheetInPeek(true);
mainActivity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition()));
// mainActivity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition()));
SongRepository songRepository = new SongRepository(App.getInstance());
/*SongRepository songRepository = new SongRepository(App.getInstance());
songRepository.getInstantMix(songs.get(getBindingAdapterPosition()), 20, new MediaCallback() {
@Override
public void onError(Exception exception) {
@ -109,9 +123,10 @@ public class SimilarTrackAdapter extends RecyclerView.Adapter<SimilarTrackAdapte
@Override
public void onLoadMedia(List<?> media) {
MusicPlayerRemote.enqueue((List<Song>) media);
// MusicPlayerRemote.enqueue((List<Song>) media);
MediaManager.enqueue(mainActivity.getMediaControllerInstance(), MappingUtil.mapMediaItem(context, (List<Song>) media), (List<Song>) media);
}
});
});*/
}
@Override

View file

@ -18,7 +18,6 @@ import com.cappielloantonio.play.R;
import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.model.Song;
import com.cappielloantonio.play.repository.QueueRepository;
import com.cappielloantonio.play.service.MusicPlayerRemote;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.util.DownloadUtil;
import com.cappielloantonio.play.util.MusicUtil;
@ -59,11 +58,11 @@ public class SongHorizontalAdapter extends RecyclerView.Adapter<SongHorizontalAd
holder.songSubtitle.setText(context.getString(R.string.song_subtitle_formatter, MusicUtil.getReadableString(song.getArtistName()), MusicUtil.getReadableDurationString(song.getDuration(), false)));
holder.trackNumber.setText(String.valueOf(song.getTrackNumber()));
if (DownloadUtil.getDownloadTracker(context).isDownloaded(song)) {
/*if (DownloadUtil.getDownloadTracker(context).isDownloaded(song)) {
holder.downloadIndicator.setVisibility(View.VISIBLE);
} else {
holder.downloadIndicator.setVisibility(View.GONE);
}
}*/
if (isCoverVisible) CustomGlideRequest.Builder
.from(context, song.getPrimary(), CustomGlideRequest.SONG_PIC, null)
@ -125,9 +124,9 @@ public class SongHorizontalAdapter extends RecyclerView.Adapter<SongHorizontalAd
queueRepository.insertAllAndStartNew(songs);
mainActivity.setBottomSheetInPeek(true);
mainActivity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition()));
// mainActivity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition()));
MusicPlayerRemote.openQueue(songs, getBindingAdapterPosition(), true);
// MusicPlayerRemote.openQueue(songs, getBindingAdapterPosition(), true);
}
@Override

View file

@ -18,7 +18,6 @@ import com.cappielloantonio.play.R;
import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.model.Song;
import com.cappielloantonio.play.repository.QueueRepository;
import com.cappielloantonio.play.service.MusicPlayerRemote;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.util.MusicUtil;
@ -97,9 +96,9 @@ public class TrackAdapter extends RecyclerView.Adapter<TrackAdapter.ViewHolder>
queueRepository.insertAllAndStartNew(songs);
mainActivity.setBottomSheetInPeek(true);
mainActivity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition()));
// mainActivity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition()));
MusicPlayerRemote.openQueue(songs, getBindingAdapterPosition(), true);
// MusicPlayerRemote.openQueue(songs, getBindingAdapterPosition(), true);
}

View file

@ -5,7 +5,9 @@ import android.app.Application;
import androidx.lifecycle.LiveData;
import com.cappielloantonio.play.database.AppDatabase;
import com.cappielloantonio.play.database.dao.DownloadDao;
import com.cappielloantonio.play.database.dao.QueueDao;
import com.cappielloantonio.play.model.Download;
import com.cappielloantonio.play.model.Queue;
import com.cappielloantonio.play.model.Song;
import com.cappielloantonio.play.util.MappingUtil;
@ -46,6 +48,12 @@ public class QueueRepository {
return songs;
}
public void insertAll(List<Song> songs) {
InsertAllThreadSafe insertAll = new InsertAllThreadSafe(queueDao, songs);
Thread thread = new Thread(insertAll);
thread.start();
}
public void insertAllAndStartNew(List<Song> songs) {
try {
final Thread delete = new Thread(new DeleteAllThreadSafe(queueDao));

View file

@ -12,15 +12,12 @@ import androidx.lifecycle.ViewModelProvider;
import androidx.navigation.NavController;
import androidx.navigation.fragment.NavHostFragment;
import androidx.navigation.ui.NavigationUI;
import androidx.viewpager2.widget.ViewPager2;
import com.cappielloantonio.play.App;
import com.cappielloantonio.play.R;
import com.cappielloantonio.play.broadcast.receiver.ConnectivityStatusBroadcastReceiver;
import com.cappielloantonio.play.databinding.ActivityMainBinding;
import com.cappielloantonio.play.model.Song;
import com.cappielloantonio.play.repository.QueueRepository;
import com.cappielloantonio.play.service.MusicPlayerRemote;
import com.cappielloantonio.play.ui.activity.base.BaseActivity;
import com.cappielloantonio.play.ui.dialog.ConnectionAlertDialog;
import com.cappielloantonio.play.ui.dialog.ServerUnreachableDialog;
@ -76,6 +73,14 @@ public class MainActivity extends BaseActivity {
bind = null;
}
@Override
public void onBackPressed() {
if (bottomSheetBehavior.getState() == BottomSheetBehavior.STATE_EXPANDED)
collapseBottomSheet();
else
super.onBackPressed();
}
public void init() {
fragmentManager = getSupportFragmentManager();
@ -159,7 +164,7 @@ public class MainActivity extends BaseActivity {
switch (state) {
case BottomSheetBehavior.STATE_HIDDEN:
MusicPlayerRemote.quitPlaying();
resetMusicSession();
break;
case BottomSheetBehavior.STATE_COLLAPSED:
if (playerBottomSheetFragment != null) {
@ -193,17 +198,6 @@ public class MainActivity extends BaseActivity {
}
};
/*
* Scroll on top del bottom sheet quando chiudo
* In questo modo non mi ritrovo al posto dell'header una parte centrale del player
*/
public void setBottomSheetMusicInfo(Song song) {
PlayerBottomSheetFragment playerBottomSheetFragment = (PlayerBottomSheetFragment) getSupportFragmentManager().findFragmentByTag("PlayerBottomSheet");
if (playerBottomSheetFragment == null) return;
playerBottomSheetFragment.setSongInfo(song);
}
public void collapseBottomSheet() {
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
}
@ -255,21 +249,13 @@ public class MainActivity extends BaseActivity {
private void resetMusicSession() {
QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.deleteAll();
MusicPlayerRemote.quitPlaying();
// MusicPlayerRemote.quitPlaying();
}
private void resetViewModel() {
this.getViewModelStore().clear();
}
@Override
public void onBackPressed() {
if (bottomSheetBehavior.getState() == BottomSheetBehavior.STATE_EXPANDED)
collapseBottomSheet();
else
super.onBackPressed();
}
// CONNECTION
private void connectivityStatusReceiverManager(boolean isActive) {
if (isActive) {

View file

@ -60,7 +60,7 @@ public class StarredSyncDialog extends DialogFragment {
((AlertDialog) Objects.requireNonNull(getDialog())).getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(v -> {
starredSyncViewModel.getStarredTracks(requireActivity()).observe(requireActivity(), songs -> {
if (songs != null) {
DownloadUtil.getDownloadTracker(context).download(songs, null, null);
// DownloadUtil.getDownloadTracker(context).download(songs, null, null);
}
});

View file

@ -22,7 +22,6 @@ import com.cappielloantonio.play.adapter.SongHorizontalAdapter;
import com.cappielloantonio.play.databinding.FragmentAlbumPageBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.repository.QueueRepository;
import com.cappielloantonio.play.service.MusicPlayerRemote;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.util.DownloadUtil;
import com.cappielloantonio.play.util.MusicUtil;
@ -87,7 +86,7 @@ public class AlbumPageFragment extends Fragment {
if (item.getItemId() == R.id.action_download_album) {
albumPageViewModel.getAlbumSongLiveList(requireActivity()).observe(requireActivity(), songs -> {
if (isVisible() && getActivity() != null) {
DownloadUtil.getDownloadTracker(requireContext()).download(songs, null, null);
// DownloadUtil.getDownloadTracker(requireContext()).download(songs, null, null);
}
});
return true;
@ -139,9 +138,9 @@ public class AlbumPageFragment extends Fragment {
queueRepository.insertAllAndStartNew(songs);
activity.setBottomSheetInPeek(true);
activity.setBottomSheetMusicInfo(songs.get(0));
// activity.setBottomSheetMusicInfo(songs.get(0));
MusicPlayerRemote.openQueue(songs, 0, true);
// MusicPlayerRemote.openQueue(songs, 0, true);
});
bind.albumPageShuffleButton.setOnClickListener(v -> {
@ -151,9 +150,9 @@ public class AlbumPageFragment extends Fragment {
queueRepository.insertAllAndStartNew(songs);
activity.setBottomSheetInPeek(true);
activity.setBottomSheetMusicInfo(songs.get(0));
// activity.setBottomSheetMusicInfo(songs.get(0));
MusicPlayerRemote.openQueue(songs, 0, true);
// MusicPlayerRemote.openQueue(songs, 0, true);
});
}

View file

@ -30,7 +30,6 @@ import com.cappielloantonio.play.interfaces.MediaCallback;
import com.cappielloantonio.play.model.Song;
import com.cappielloantonio.play.repository.ArtistRepository;
import com.cappielloantonio.play.repository.QueueRepository;
import com.cappielloantonio.play.service.MusicPlayerRemote;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.viewmodel.ArtistPageViewModel;
@ -148,7 +147,7 @@ public class ArtistPageFragment extends Fragment {
QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(songs);
MusicPlayerRemote.openQueue(songs, 0, true);
// MusicPlayerRemote.openQueue(songs, 0, true);
activity.setBottomSheetInPeek(true);
} else {
Toast.makeText(requireContext(), getString(R.string.artist_error_retrieving_tracks), Toast.LENGTH_SHORT).show();
@ -171,9 +170,9 @@ public class ArtistPageFragment extends Fragment {
queueRepository.insertAllAndStartNew((ArrayList<Song>) media);
activity.setBottomSheetInPeek(true);
activity.setBottomSheetMusicInfo((Song) media.get(0));
// activity.setBottomSheetMusicInfo((Song) media.get(0));
MusicPlayerRemote.openQueue((List<Song>) media, 0, true);
// MusicPlayerRemote.openQueue((List<Song>) media, 0, true);
} else {
Toast.makeText(requireContext(), getString(R.string.artist_error_retrieving_radio), Toast.LENGTH_SHORT).show();
}

View file

@ -1,16 +1,26 @@
package com.cappielloantonio.play.ui.fragment;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ScrollView;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.ToggleButton;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.cardview.widget.CardView;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import androidx.media3.common.MediaItem;
import androidx.media3.common.MediaMetadata;
import androidx.media3.common.Player;
import androidx.media3.session.MediaController;
import androidx.navigation.fragment.NavHostFragment;
import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.LinearLayoutManager;
@ -22,40 +32,37 @@ import com.cappielloantonio.play.R;
import com.cappielloantonio.play.adapter.PlayerNowPlayingSongAdapter;
import com.cappielloantonio.play.adapter.PlayerSongQueueAdapter;
import com.cappielloantonio.play.databinding.FragmentPlayerBottomSheetBinding;
import com.cappielloantonio.play.databinding.PlayerBodyBottomSheetBinding;
import com.cappielloantonio.play.databinding.PlayerHeaderBottomSheetBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.helper.MusicProgressViewUpdateHelper;
import com.cappielloantonio.play.interfaces.MusicServiceEventListener;
import com.cappielloantonio.play.model.Song;
import com.cappielloantonio.play.service.MusicPlayerRemote;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.dialog.RatingDialog;
import com.cappielloantonio.play.util.MappingUtil;
import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel;
import com.google.common.util.concurrent.MoreExecutors;
import java.util.Collections;
import java.util.Objects;
public class PlayerBottomSheetFragment extends Fragment implements MusicServiceEventListener, MusicProgressViewUpdateHelper.Callback {
public class PlayerBottomSheetFragment extends Fragment {
private static final String TAG = "PlayerBottomSheetFragment";
private FragmentPlayerBottomSheetBinding bind;
private PlayerHeaderBottomSheetBinding headerBind;
private PlayerBodyBottomSheetBinding bodyBind;
private ImageView playerMoveDownBottomSheet;
private ViewPager2 playerSongCoverViewPager;
private RecyclerView playerQueueRecyclerView;
private ToggleButton buttonFavorite;
private ImageButton playerCommandUnfoldButton;
private CardView playerCommandCardview;
private TextView playerSongTitleLabel;
private TextView playerArtistNameLabel;
private MainActivity activity;
private PlayerBottomSheetViewModel playerBottomSheetViewModel;
private PlayerSongQueueAdapter playerSongQueueAdapter;
private MusicProgressViewUpdateHelper progressViewUpdateHelper;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
progressViewUpdateHelper = new MusicProgressViewUpdateHelper(this);
}
@Nullable
@ -66,9 +73,6 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
bind = FragmentPlayerBottomSheetBinding.inflate(inflater, container, false);
View view = bind.getRoot();
headerBind = bind.playerHeaderLayout;
bodyBind = bind.playerBodyLayout;
playerBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(PlayerBottomSheetViewModel.class);
init();
@ -76,58 +80,131 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
initQueueRecyclerView();
initFavoriteButtonClick();
initMusicCommandUnfoldButton();
initMusicCommandButton();
initArtistLabelButton();
return view;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
activity.addMusicServiceEventListener(this);
setUpMusicControllers();
}
@Override
public void onResume() {
super.onResume();
progressViewUpdateHelper.start();
}
@Override
public void onPause() {
super.onPause();
progressViewUpdateHelper.stop();
bindMediaController();
}
@Override
public void onDestroy() {
super.onDestroy();
activity.removeMusicServiceEventListener(this);
}
@Override
public void onDestroyView() {
super.onDestroyView();
headerBind = null;
bodyBind = null;
bind = null;
}
@SuppressLint("UnsafeOptInUsageError")
private void init() {
bodyBind.playerMoveDownBottomSheet.setOnClickListener(view -> activity.collapseBottomSheet());
playerMoveDownBottomSheet = bind.getRoot().findViewById(R.id.player_move_down_bottom_sheet);
playerSongCoverViewPager = bind.getRoot().findViewById(R.id.player_song_cover_view_pager);
playerQueueRecyclerView = bind.getRoot().findViewById(R.id.player_queue_recycler_view);
buttonFavorite = bind.getRoot().findViewById(R.id.button_favorite);
playerCommandUnfoldButton = bind.getRoot().findViewById(R.id.player_command_unfold_button);
playerCommandCardview = bind.getRoot().findViewById(R.id.player_command_cardview);
playerSongTitleLabel = bind.getRoot().findViewById(R.id.player_song_title_label);
playerArtistNameLabel = bind.getRoot().findViewById(R.id.player_artist_name_label);
playerMoveDownBottomSheet.setOnClickListener(view -> activity.collapseBottomSheet());
bind.playerBodyLayout.setProgressUpdateListener((position, bufferedPosition) -> bind.playerHeaderLayout.playerHeaderSeekBar.setProgress((int) (position / 1000), true));
}
@SuppressLint("UnsafeOptInUsageError")
private void bindMediaController() {
activity.mediaControllerListenableFuture.addListener(() -> {
try {
MediaController mediaController = activity.mediaControllerListenableFuture.get();
bind.playerBodyLayout.setPlayer(mediaController);
setMediaControllerListener(mediaController);
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
}, MoreExecutors.directExecutor());
}
@SuppressLint("UnsafeOptInUsageError")
private void setMediaControllerListener(MediaController mediaController) {
setMetadata(mediaController.getMediaMetadata());
setContentDuration(mediaController.getContentDuration());
setPlayingState(mediaController.isPlaying());
setHeaderMediaController();
setHeaderNextButtonState(mediaController.hasNextMediaItem());
mediaController.addListener(new Player.Listener() {
@Override
public void onMediaMetadataChanged(@NonNull MediaMetadata mediaMetadata) {
setMetadata(mediaMetadata);
setContentDuration(mediaController.getContentDuration());
}
@Override
public void onIsPlayingChanged(boolean isPlaying) {
setPlayingState(isPlaying);
}
@Override
public void onMediaItemTransition(@Nullable MediaItem mediaItem, int reason) {
setHeaderNextButtonState(mediaController.hasNextMediaItem());
}
});
}
private void setMetadata(MediaMetadata mediaMetadata) {
bind.playerHeaderLayout.playerHeaderSongTitleLabel.setText(mediaMetadata.title);
bind.playerHeaderLayout.playerHeaderSongArtistLabel.setText(mediaMetadata.artist);
playerSongTitleLabel.setText(mediaMetadata.title);
playerArtistNameLabel.setText(mediaMetadata.artist);
CustomGlideRequest.Builder
.from(requireContext(), mediaMetadata.extras != null ? mediaMetadata.extras.getString("id") : null, CustomGlideRequest.SONG_PIC, null)
.build()
.transform(new RoundedCorners(CustomGlideRequest.CORNER_RADIUS))
.into(bind.playerHeaderLayout.playerHeaderSongCoverImage);
}
private void setContentDuration(long duration) {
bind.playerHeaderLayout.playerHeaderSeekBar.setMax((int) (duration / 1000));
}
private void setPlayingState(boolean isPlaying) {
bind.playerHeaderLayout.playerHeaderButton.setChecked(isPlaying);
}
@SuppressLint("UnsafeOptInUsageError")
private void setHeaderMediaController() {
bind.playerHeaderLayout.playerHeaderButton.setOnClickListener(view -> {
if (bind.playerHeaderLayout.playerHeaderButton.isChecked()) {
bind.getRoot().findViewById(R.id.exo_play).performClick();
} else {
bind.getRoot().findViewById(R.id.exo_pause).performClick();
}
});
bind.playerHeaderLayout.playerHeaderNextSongButton.setOnClickListener(view -> bind.getRoot().findViewById(R.id.exo_next).performClick());
}
private void setHeaderNextButtonState(boolean isEnabled) {
bind.playerHeaderLayout.playerHeaderNextSongButton.setEnabled(isEnabled);
bind.playerHeaderLayout.playerHeaderNextSongButton.setAlpha(isEnabled ? (float) 1.0 : (float) 0.3);
}
private void initCoverLyricsSlideView() {
bodyBind.playerSongCoverViewPager.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL);
bodyBind.playerSongCoverViewPager.setAdapter(new PlayerNowPlayingSongAdapter(this));
playerSongCoverViewPager.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL);
playerSongCoverViewPager.setAdapter(new PlayerNowPlayingSongAdapter(this));
bodyBind.playerSongCoverViewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
playerSongCoverViewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
@ -142,11 +219,11 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
}
private void initQueueRecyclerView() {
bodyBind.playerQueueRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext()));
bodyBind.playerQueueRecyclerView.setHasFixedSize(true);
playerQueueRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext()));
playerQueueRecyclerView.setHasFixedSize(true);
playerSongQueueAdapter = new PlayerSongQueueAdapter(requireContext(), this);
bodyBind.playerQueueRecyclerView.setAdapter(playerSongQueueAdapter);
playerQueueRecyclerView.setAdapter(playerSongQueueAdapter);
playerBottomSheetViewModel.getQueueSong().observe(requireActivity(), queue -> playerSongQueueAdapter.setItems(MappingUtil.mapQueue(queue)));
new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP | ItemTouchHelper.DOWN, ItemTouchHelper.LEFT) {
@ -187,9 +264,9 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
* Qui vado a riscivere tutta la table Queue, quando teoricamente potrei solo swappare l'ordine degli elementi interessati
* Nel caso la coda contenesse parecchi brani, potrebbero verificarsi rallentamenti pesanti
*/
playerBottomSheetViewModel.orderSongAfterSwap(playerSongQueueAdapter.getItems());
MusicPlayerRemote.moveSong(originalPosition, toPosition);
bodyBind.playerSongCoverViewPager.setCurrentItem(MusicPlayerRemote.getPosition(), false);
// playerBottomSheetViewModel.orderSongAfterSwap(playerSongQueueAdapter.getItems());
// MusicPlayerRemote.moveSong(originalPosition, toPosition);
// playerSongCoverViewPager.setCurrentItem(MusicPlayerRemote.getPosition(), false);
originalPosition = -1;
fromPosition = -1;
@ -198,22 +275,22 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
if (!(viewHolder.getBindingAdapterPosition() == MusicPlayerRemote.getPosition()) && !(MusicPlayerRemote.getPlayingQueue().size() <= 1)) {
/*if (!(viewHolder.getBindingAdapterPosition() == MusicPlayerRemote.getPosition()) && !(MusicPlayerRemote.getPlayingQueue().size() <= 1)) {
MusicPlayerRemote.removeFromQueue(viewHolder.getBindingAdapterPosition());
playerBottomSheetViewModel.removeSong(viewHolder.getBindingAdapterPosition());
Objects.requireNonNull(bodyBind.playerQueueRecyclerView.getAdapter()).notifyItemRemoved(viewHolder.getBindingAdapterPosition());
bodyBind.playerSongCoverViewPager.setCurrentItem(MusicPlayerRemote.getPosition(), false);
Objects.requireNonNull(playerQueueRecyclerView.getAdapter()).notifyItemRemoved(viewHolder.getBindingAdapterPosition());
playerSongCoverViewPager.setCurrentItem(MusicPlayerRemote.getPosition(), false);
} else {
bodyBind.playerQueueRecyclerView.getAdapter().notifyDataSetChanged();
}
playerQueueRecyclerView.getAdapter().notifyDataSetChanged();
}*/
}
}
).attachToRecyclerView(bodyBind.playerQueueRecyclerView);
).attachToRecyclerView(playerQueueRecyclerView);
}
private void initFavoriteButtonClick() {
bodyBind.buttonFavorite.setOnClickListener(v -> playerBottomSheetViewModel.setFavorite(requireContext()));
bodyBind.buttonFavorite.setOnLongClickListener(v -> {
buttonFavorite.setOnClickListener(v -> playerBottomSheetViewModel.setFavorite(requireContext()));
buttonFavorite.setOnLongClickListener(v -> {
Bundle bundle = new Bundle();
bundle.putParcelable("song_object", playerBottomSheetViewModel.getCurrentSong());
@ -226,42 +303,17 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
}
private void initMusicCommandUnfoldButton() {
bodyBind.playerCommandUnfoldButton.setOnClickListener(view -> {
if (bodyBind.playerCommandCardview.getVisibility() == View.INVISIBLE || bodyBind.playerCommandCardview.getVisibility() == View.GONE) {
bodyBind.playerCommandCardview.setVisibility(View.VISIBLE);
playerCommandUnfoldButton.setOnClickListener(view -> {
if (playerCommandCardview.getVisibility() == View.INVISIBLE || playerCommandCardview.getVisibility() == View.GONE) {
playerCommandCardview.setVisibility(View.VISIBLE);
} else {
bodyBind.playerCommandCardview.setVisibility(View.GONE);
playerCommandCardview.setVisibility(View.GONE);
}
});
}
private void initMusicCommandButton() {
// Header
headerBind.playerHeaderButton.setOnClickListener(v -> {
if (MusicPlayerRemote.isPlaying()) {
MusicPlayerRemote.pauseSong();
} else {
MusicPlayerRemote.resumePlaying();
}
});
headerBind.playerHeaderNextSongButton.setOnClickListener(v -> MusicPlayerRemote.playNextSong());
// Body
bodyBind.playerBigPlayPauseButton.setOnClickListener(v -> {
if (MusicPlayerRemote.isPlaying()) {
MusicPlayerRemote.pauseSong();
} else {
MusicPlayerRemote.resumePlaying();
}
});
bodyBind.playerBigNextButton.setOnClickListener(v -> MusicPlayerRemote.playNextSong());
bodyBind.playerBigPreviousButton.setOnClickListener(v -> MusicPlayerRemote.playPreviousSong());
}
private void initArtistLabelButton() {
bodyBind.playerArtistNameLabel.setOnClickListener(view -> playerBottomSheetViewModel.getArtist().observe(requireActivity(), artist -> {
playerArtistNameLabel.setOnClickListener(view -> playerBottomSheetViewModel.getArtist().observe(requireActivity(), artist -> {
Bundle bundle = new Bundle();
bundle.putParcelable("artist_object", artist);
NavHostFragment.findNavController(this).navigate(R.id.artistPageFragment, bundle);
@ -269,55 +321,6 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
}));
}
private void initSeekBar() {
bodyBind.playerBigSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (fromUser) {
MusicPlayerRemote.seekTo(progress);
onUpdateProgressViews(MusicPlayerRemote.getSongProgressMillis(), MusicPlayerRemote.getSongDurationMillis());
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
public void setSongInfo(Song song) {
playerBottomSheetViewModel.refreshSongInfo(requireActivity(), song);
bodyBind.playerSongTitleLabel.setText(MusicUtil.getReadableString(song.getTitle()));
bodyBind.playerArtistNameLabel.setText(MusicUtil.getReadableString(song.getArtistName()));
headerBind.playerHeaderSongTitleLabel.setText(MusicUtil.getReadableString(song.getTitle()));
headerBind.playerHeaderSongArtistLabel.setText(MusicUtil.getReadableString(song.getArtistName()));
CustomGlideRequest.Builder
.from(requireContext(), song.getPrimary(), CustomGlideRequest.SONG_PIC, null)
.build()
.transform(new RoundedCorners(CustomGlideRequest.CORNER_RADIUS))
.into(headerBind.playerHeaderSongCoverImage);
bodyBind.buttonFavorite.setChecked(song.isFavorite());
}
protected void updatePlayPauseState() {
headerBind.playerHeaderButton.setChecked(!MusicPlayerRemote.isPlaying());
bodyBind.playerBigPlayPauseButton.setChecked(!MusicPlayerRemote.isPlaying());
}
private void setUpMusicControllers() {
initSeekBar();
}
public View getPlayerHeader() {
return requireView().findViewById(R.id.player_header_layout);
}
@ -327,53 +330,10 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
}
public void goBackToFirstPage() {
bodyBind.playerSongCoverViewPager.setCurrentItem(0);
playerSongCoverViewPager.setCurrentItem(0);
}
public boolean isViewPagerInFirstPage() {
return bodyBind.playerSongCoverViewPager.getCurrentItem() == 0;
}
@Override
public void onServiceConnected() {
setSongInfo(Objects.requireNonNull(MusicPlayerRemote.getCurrentSong()));
updatePlayPauseState();
}
@Override
public void onServiceDisconnected() {
}
@Override
public void onQueueChanged() {
}
@Override
public void onPlayMetadataChanged() {
setSongInfo(Objects.requireNonNull(MusicPlayerRemote.getCurrentSong()));
}
@Override
public void onPlayStateChanged() {
updatePlayPauseState();
}
@Override
public void onRepeatModeChanged() {
}
@Override
public void onUpdateProgressViews(int progress, int total) {
headerBind.playerHeaderSeekBar.setMax(total);
headerBind.playerHeaderSeekBar.setProgress(progress);
bodyBind.playerBigSeekBar.setMax(total);
bodyBind.playerBigSeekBar.setProgress(progress);
bodyBind.playerBigSongTimeIn.setText(MusicUtil.getReadableDurationString(progress, true));
bodyBind.playerBigSongDuration.setText(MusicUtil.getReadableDurationString(total, true));
return playerSongCoverViewPager.getCurrentItem() == 0;
}
}

View file

@ -1,19 +1,25 @@
package com.cappielloantonio.play.ui.fragment;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import androidx.media3.common.MediaMetadata;
import androidx.media3.common.Player;
import androidx.media3.session.MediaController;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.cappielloantonio.play.databinding.FragmentPlayerCoverBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel;
import com.google.common.util.concurrent.MoreExecutors;
public class PlayerCoverFragment extends Fragment {
private static final String TAG = "PlayerCoverFragment";
@ -21,20 +27,25 @@ public class PlayerCoverFragment extends Fragment {
private FragmentPlayerCoverBinding bind;
private PlayerBottomSheetViewModel playerBottomSheetViewModel;
private MainActivity activity;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
activity = (MainActivity) requireActivity();
bind = FragmentPlayerCoverBinding.inflate(inflater, container, false);
View view = bind.getRoot();
playerBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(PlayerBottomSheetViewModel.class);
return view;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
public void onResume() {
super.onResume();
init();
bindMediaController();
}
@Override
@ -43,15 +54,35 @@ public class PlayerCoverFragment extends Fragment {
bind = null;
}
private void init() {
playerBottomSheetViewModel.getLiveSong().observe(requireActivity(), song -> {
if (song != null) {
CustomGlideRequest.Builder
.from(requireContext(), song.getId(), CustomGlideRequest.SONG_PIC, null)
.build()
.transform(new RoundedCorners(CustomGlideRequest.CORNER_RADIUS))
.into(bind.nowPlayingSongCoverImageView);
private void bindMediaController() {
activity.mediaControllerListenableFuture.addListener(() -> {
try {
MediaController mediaController = activity.mediaControllerListenableFuture.get();
setMediaControllerListener(mediaController);
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
}, MoreExecutors.directExecutor());
}
@SuppressLint("UnsafeOptInUsageError")
private void setMediaControllerListener(MediaController mediaController) {
setCover(mediaController.getMediaMetadata());
mediaController.addListener(new Player.Listener() {
@Override
public void onMediaMetadataChanged(@NonNull MediaMetadata mediaMetadata) {
setCover(mediaMetadata);
}
});
}
private void setCover(MediaMetadata mediaMetadata) {
CustomGlideRequest.Builder
.from(requireContext(), mediaMetadata.extras != null ? mediaMetadata.extras.getString("id") : null, CustomGlideRequest.SONG_PIC, null)
.build()
.transform(new RoundedCorners(CustomGlideRequest.CORNER_RADIUS))
.into(bind.nowPlayingSongCoverImageView);
}
}

View file

@ -21,7 +21,6 @@ import com.cappielloantonio.play.adapter.SongHorizontalAdapter;
import com.cappielloantonio.play.databinding.FragmentPlaylistPageBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.repository.QueueRepository;
import com.cappielloantonio.play.service.MusicPlayerRemote;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.util.DownloadUtil;
import com.cappielloantonio.play.util.MusicUtil;
@ -85,7 +84,7 @@ public class PlaylistPageFragment extends Fragment {
if (item.getItemId() == R.id.action_download_playlist) {
playlistPageViewModel.getPlaylistSongLiveList(requireActivity()).observe(requireActivity(), songs -> {
if (isVisible() && getActivity() != null) {
DownloadUtil.getDownloadTracker(requireContext()).download(songs, playlistPageViewModel.getPlaylist().getId(), playlistPageViewModel.getPlaylist().getName());
// DownloadUtil.getDownloadTracker(requireContext()).download(songs, playlistPageViewModel.getPlaylist().getId(), playlistPageViewModel.getPlaylist().getName());
}
});
return true;
@ -144,9 +143,9 @@ public class PlaylistPageFragment extends Fragment {
queueRepository.insertAllAndStartNew(songs);
activity.setBottomSheetInPeek(true);
activity.setBottomSheetMusicInfo(songs.get(0));
// activity.setBottomSheetMusicInfo(songs.get(0));
MusicPlayerRemote.openQueue(songs, 0, true);
// MusicPlayerRemote.openQueue(songs, 0, true);
});
bind.playlistPageShuffleButton.setOnClickListener(v -> {
@ -156,9 +155,9 @@ public class PlaylistPageFragment extends Fragment {
queueRepository.insertAllAndStartNew(songs);
activity.setBottomSheetInPeek(true);
activity.setBottomSheetMusicInfo(songs.get(0));
// activity.setBottomSheetMusicInfo(songs.get(0));
MusicPlayerRemote.openQueue(songs, 0, true);
// MusicPlayerRemote.openQueue(songs, 0, true);
});
}
});

View file

@ -17,7 +17,6 @@ import com.cappielloantonio.play.adapter.SongHorizontalAdapter;
import com.cappielloantonio.play.databinding.FragmentSongListPageBinding;
import com.cappielloantonio.play.model.Song;
import com.cappielloantonio.play.repository.QueueRepository;
import com.cappielloantonio.play.service.MusicPlayerRemote;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.viewmodel.SongListPageViewModel;
@ -139,9 +138,9 @@ public class SongListPageFragment extends Fragment {
queueRepository.insertAllAndStartNew(songs);
activity.setBottomSheetInPeek(true);
activity.setBottomSheetMusicInfo(songs.get(0));
// activity.setBottomSheetMusicInfo(songs.get(0));
MusicPlayerRemote.openQueue(songs, 0, true);
// MusicPlayerRemote.openQueue(songs, 0, true);
});
}
});

View file

@ -23,7 +23,6 @@ import com.cappielloantonio.play.model.Album;
import com.cappielloantonio.play.model.Song;
import com.cappielloantonio.play.repository.AlbumRepository;
import com.cappielloantonio.play.repository.QueueRepository;
import com.cappielloantonio.play.service.MusicPlayerRemote;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.util.DownloadUtil;
import com.cappielloantonio.play.util.MusicUtil;
@ -95,9 +94,9 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements
queueRepository.insertAllAndStartNew((ArrayList<Song>) media);
((MainActivity) requireActivity()).setBottomSheetInPeek(true);
((MainActivity) requireActivity()).setBottomSheetMusicInfo((Song) media.get(0));
// ((MainActivity) requireActivity()).setBottomSheetMusicInfo((Song) media.get(0));
MusicPlayerRemote.openQueue((List<Song>) media, 0, true);
// MusicPlayerRemote.openQueue((List<Song>) media, 0, true);
} else {
Toast.makeText(requireContext(), getString(R.string.album_error_retrieving_radio), Toast.LENGTH_SHORT).show();
}
@ -116,7 +115,7 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements
QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(songs);
MusicPlayerRemote.openQueue(songs, 0, true);
// MusicPlayerRemote.openQueue(songs, 0, true);
((MainActivity) requireActivity()).setBottomSheetInPeek(true);
dismissBottomSheet();
@ -125,14 +124,14 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements
TextView playNext = view.findViewById(R.id.play_next_text_view);
playNext.setOnClickListener(v -> albumBottomSheetViewModel.getAlbumTracks().observe(requireActivity(), songs -> {
MusicPlayerRemote.playNext(songs);
// MusicPlayerRemote.playNext(songs);
((MainActivity) requireActivity()).setBottomSheetInPeek(true);
dismissBottomSheet();
}));
TextView addToQueue = view.findViewById(R.id.add_to_queue_text_view);
addToQueue.setOnClickListener(v -> albumBottomSheetViewModel.getAlbumTracks().observe(requireActivity(), songs -> {
MusicPlayerRemote.enqueue(songs);
// MusicPlayerRemote.enqueue(songs);
dismissBottomSheet();
}));
@ -141,18 +140,18 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements
albumBottomSheetViewModel.getAlbumTracks().observe(requireActivity(), songs -> {
downloadAll.setOnClickListener(v -> {
DownloadUtil.getDownloadTracker(requireContext()).download(songs, null, null);
// DownloadUtil.getDownloadTracker(requireContext()).download(songs, null, null);
dismissBottomSheet();
});
if (DownloadUtil.getDownloadTracker(requireContext()).isDownloaded(songs)) {
/*if (DownloadUtil.getDownloadTracker(requireContext()).isDownloaded(songs)) {
removeAll.setOnClickListener(v -> {
DownloadUtil.getDownloadTracker(requireContext()).remove(songs);
dismissBottomSheet();
});
} else {
removeAll.setVisibility(View.GONE);
}
}*/
});
TextView goToArtist = view.findViewById(R.id.go_to_artist_text_view);

View file

@ -22,7 +22,6 @@ import com.cappielloantonio.play.model.Artist;
import com.cappielloantonio.play.model.Song;
import com.cappielloantonio.play.repository.ArtistRepository;
import com.cappielloantonio.play.repository.QueueRepository;
import com.cappielloantonio.play.service.MusicPlayerRemote;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.viewmodel.ArtistBottomSheetViewModel;
@ -89,9 +88,9 @@ public class ArtistBottomSheetDialog extends BottomSheetDialogFragment implement
queueRepository.insertAllAndStartNew((ArrayList<Song>) media);
((MainActivity) requireActivity()).setBottomSheetInPeek(true);
((MainActivity) requireActivity()).setBottomSheetMusicInfo((Song) media.get(0));
// ((MainActivity) requireActivity()).setBottomSheetMusicInfo((Song) media.get(0));
MusicPlayerRemote.openQueue((List<Song>) media, 0, true);
// MusicPlayerRemote.openQueue((List<Song>) media, 0, true);
} else {
Toast.makeText(requireContext(), getString(R.string.artist_error_retrieving_radio), Toast.LENGTH_SHORT).show();
}
@ -109,7 +108,7 @@ public class ArtistBottomSheetDialog extends BottomSheetDialogFragment implement
QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(songs);
MusicPlayerRemote.openQueue(songs, 0, true);
// MusicPlayerRemote.openQueue(songs, 0, true);
((MainActivity) requireActivity()).setBottomSheetInPeek(true);
} else {
Toast.makeText(requireContext(), getString(R.string.artist_error_retrieving_tracks), Toast.LENGTH_SHORT).show();

View file

@ -22,7 +22,6 @@ import com.cappielloantonio.play.interfaces.MediaCallback;
import com.cappielloantonio.play.model.Song;
import com.cappielloantonio.play.repository.QueueRepository;
import com.cappielloantonio.play.repository.SongRepository;
import com.cappielloantonio.play.service.MusicPlayerRemote;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.dialog.PlaylistChooserDialog;
import com.cappielloantonio.play.ui.dialog.RatingDialog;
@ -94,13 +93,13 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
playRadio.setOnClickListener(v -> {
List<Song> opener = new ArrayList<>();
opener.add(song);
MusicPlayerRemote.openQueue(opener, 0, true);
// MusicPlayerRemote.openQueue(opener, 0, true);
QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(opener);
((MainActivity) requireActivity()).setBottomSheetInPeek(true);
((MainActivity) requireActivity()).setBottomSheetMusicInfo(song);
// ((MainActivity) requireActivity()).setBottomSheetMusicInfo(song);
SongRepository songRepository = new SongRepository(App.getInstance());
songRepository.getInstantMix(song, 20, new MediaCallback() {
@ -111,7 +110,7 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
@Override
public void onLoadMedia(List<?> media) {
MusicPlayerRemote.enqueue((List<Song>) media);
// MusicPlayerRemote.enqueue((List<Song>) media);
}
});
@ -120,14 +119,14 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
TextView playNext = view.findViewById(R.id.play_next_text_view);
playNext.setOnClickListener(v -> {
MusicPlayerRemote.playNext(song);
// MusicPlayerRemote.playNext(song);
((MainActivity) requireActivity()).setBottomSheetInPeek(true);
dismissBottomSheet();
});
TextView addToQueue = view.findViewById(R.id.add_to_queue_text_view);
addToQueue.setOnClickListener(v -> {
MusicPlayerRemote.enqueue(song);
// MusicPlayerRemote.enqueue(song);
((MainActivity) requireActivity()).setBottomSheetInPeek(true);
dismissBottomSheet();
});
@ -146,13 +145,13 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
TextView download = view.findViewById(R.id.download_text_view);
download.setOnClickListener(v -> {
DownloadUtil.getDownloadTracker(requireContext()).download(Collections.singletonList(song), null, null);
// DownloadUtil.getDownloadTracker(requireContext()).download(Collections.singletonList(song), null, null);
dismissBottomSheet();
});
TextView remove = view.findViewById(R.id.remove_text_view);
remove.setOnClickListener(v -> {
DownloadUtil.getDownloadTracker(requireContext()).remove(Collections.singletonList(song));
// DownloadUtil.getDownloadTracker(requireContext()).remove(Collections.singletonList(song));
dismissBottomSheet();
});
@ -205,12 +204,12 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
}
private void initDownloadUI(TextView download, TextView remove) {
if (DownloadUtil.getDownloadTracker(requireContext()).isDownloaded(song)) {
/*if (DownloadUtil.getDownloadTracker(requireContext()).isDownloaded(song)) {
download.setVisibility(View.GONE);
remove.setVisibility(View.VISIBLE);
} else {
download.setVisibility(View.VISIBLE);
remove.setVisibility(View.GONE);
}
}*/
}
}

View file

@ -51,7 +51,7 @@ public class SongBottomSheetViewModel extends AndroidViewModel {
song.setFavorite(true);
if(PreferenceUtil.getInstance(context).isStarredSyncEnabled()) {
DownloadUtil.getDownloadTracker(context).download(Collections.singletonList(song), null, null);
// DownloadUtil.getDownloadTracker(context).download(Collections.singletonList(song), null, null);
}
}
}