Reimplemented a basic track download functionality

This commit is contained in:
CappielloAntonio
2022-01-01 21:55:15 +01:00
parent b7a77cf32b
commit dee845ebff
17 changed files with 154 additions and 214 deletions

View File

@@ -27,6 +27,8 @@ import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.service.MediaManager;
import com.cappielloantonio.play.service.MediaService;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.util.DownloadUtil;
import com.cappielloantonio.play.util.MappingUtil;
import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.viewmodel.AlbumPageViewModel;
import com.google.common.util.concurrent.ListenableFuture;
@@ -106,7 +108,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(MappingUtil.mapMediaItems(requireContext(), songs, false));
}
});
return true;

View File

@@ -19,16 +19,13 @@ import androidx.media3.session.SessionToken;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.bumptech.glide.load.resource.bitmap.GranularRoundedCorners;
import com.cappielloantonio.play.App;
import com.cappielloantonio.play.R;
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.MediaManager;
import com.cappielloantonio.play.service.MediaService;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.util.DownloadUtil;
import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.viewmodel.PlaylistPageViewModel;
import com.google.common.util.concurrent.ListenableFuture;

View File

@@ -14,6 +14,7 @@ import android.widget.ToggleButton;
import androidx.annotation.Nullable;
import androidx.lifecycle.ViewModelProvider;
import androidx.media3.common.MediaItem;
import androidx.media3.session.MediaBrowser;
import androidx.media3.session.SessionToken;
import androidx.navigation.fragment.NavHostFragment;
@@ -29,6 +30,8 @@ import com.cappielloantonio.play.repository.AlbumRepository;
import com.cappielloantonio.play.service.MediaManager;
import com.cappielloantonio.play.service.MediaService;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.util.DownloadUtil;
import com.cappielloantonio.play.util.MappingUtil;
import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.viewmodel.AlbumBottomSheetViewModel;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
@@ -153,19 +156,21 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements
TextView removeAll = view.findViewById(R.id.remove_all_text_view);
albumBottomSheetViewModel.getAlbumTracks().observe(requireActivity(), songs -> {
List<MediaItem> mediaItems = MappingUtil.mapMediaItems(requireContext(), songs, false);
downloadAll.setOnClickListener(v -> {
// DownloadUtil.getDownloadTracker(requireContext()).download(songs, null, null);
DownloadUtil.getDownloadTracker(requireContext()).download(mediaItems);
dismissBottomSheet();
});
/*if (DownloadUtil.getDownloadTracker(requireContext()).isDownloaded(songs)) {
if (DownloadUtil.getDownloadTracker(requireContext()).areDownloaded(mediaItems)) {
removeAll.setOnClickListener(v -> {
DownloadUtil.getDownloadTracker(requireContext()).remove(songs);
DownloadUtil.getDownloadTracker(requireContext()).remove(mediaItems);
dismissBottomSheet();
});
} else {
removeAll.setVisibility(View.GONE);
}*/
}
});
TextView goToArtist = view.findViewById(R.id.go_to_artist_text_view);

View File

@@ -30,6 +30,8 @@ import com.cappielloantonio.play.service.MediaService;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.dialog.PlaylistChooserDialog;
import com.cappielloantonio.play.ui.dialog.RatingDialog;
import com.cappielloantonio.play.util.DownloadUtil;
import com.cappielloantonio.play.util.MappingUtil;
import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.viewmodel.SongBottomSheetViewModel;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
@@ -155,13 +157,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(MappingUtil.mapMediaItem(requireContext(), song, false));
dismissBottomSheet();
});
TextView remove = view.findViewById(R.id.remove_text_view);
remove.setOnClickListener(v -> {
// DownloadUtil.getDownloadTracker(requireContext()).remove(Collections.singletonList(song));
DownloadUtil.getDownloadTracker(requireContext()).remove(MappingUtil.mapMediaItem(requireContext(), song, false));
dismissBottomSheet();
});
@@ -214,13 +216,13 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
}
private void initDownloadUI(TextView download, TextView remove) {
/*if (DownloadUtil.getDownloadTracker(requireContext()).isDownloaded(song)) {
if (DownloadUtil.getDownloadTracker(requireContext()).isDownloaded(MappingUtil.mapMediaItem(requireContext(), song, false))) {
download.setVisibility(View.GONE);
remove.setVisibility(View.VISIBLE);
} else {
download.setVisibility(View.VISIBLE);
remove.setVisibility(View.GONE);
}*/
}
}
@SuppressLint("UnsafeOptInUsageError")