Added download button in album page

This commit is contained in:
CappielloAntonio 2021-04-26 19:50:23 +02:00
parent bf70863f84
commit ad5ef996e3
2 changed files with 16 additions and 17 deletions

View file

@ -1,18 +1,10 @@
package com.cappielloantonio.play.ui.fragment; package com.cappielloantonio.play.ui.fragment;
import android.graphics.PorterDuff;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.core.view.ViewCompat; import androidx.core.view.ViewCompat;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
@ -20,13 +12,13 @@ import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import com.cappielloantonio.play.App; import com.cappielloantonio.play.App;
import com.cappielloantonio.play.R;
import com.cappielloantonio.play.adapter.SongResultSearchAdapter; import com.cappielloantonio.play.adapter.SongResultSearchAdapter;
import com.cappielloantonio.play.databinding.FragmentAlbumPageBinding; import com.cappielloantonio.play.databinding.FragmentAlbumPageBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.helper.MusicPlayerRemote; import com.cappielloantonio.play.helper.MusicPlayerRemote;
import com.cappielloantonio.play.repository.QueueRepository; import com.cappielloantonio.play.repository.QueueRepository;
import com.cappielloantonio.play.ui.activities.MainActivity; import com.cappielloantonio.play.ui.activities.MainActivity;
import com.cappielloantonio.play.util.DownloadUtil;
import com.cappielloantonio.play.viewmodel.AlbumPageViewModel; import com.cappielloantonio.play.viewmodel.AlbumPageViewModel;
import java.util.Collections; import java.util.Collections;
@ -56,6 +48,7 @@ public class AlbumPageFragment extends Fragment {
albumPageViewModel = new ViewModelProvider(requireActivity()).get(AlbumPageViewModel.class); albumPageViewModel = new ViewModelProvider(requireActivity()).get(AlbumPageViewModel.class);
init(); init();
initDownloadButton();
initBackCover(); initBackCover();
initSongsView(); initSongsView();
@ -78,6 +71,10 @@ public class AlbumPageFragment extends Fragment {
albumPageViewModel.setAlbum(getArguments().getParcelable("album_object")); albumPageViewModel.setAlbum(getArguments().getParcelable("album_object"));
} }
private void initDownloadButton() {
bind.downloadIconButton.setOnClickListener(v -> DownloadUtil.getDownloadTracker(requireContext()).toggleDownload(albumPageViewModel.getAlbumSongList()));
}
private void initAppBar() { private void initAppBar() {
activity.setSupportActionBar(bind.animToolbar); activity.setSupportActionBar(bind.animToolbar);
@ -90,7 +87,7 @@ public class AlbumPageFragment extends Fragment {
bind.albumArtistLabel.setText(albumPageViewModel.getAlbum().getArtistName()); bind.albumArtistLabel.setText(albumPageViewModel.getAlbum().getArtistName());
bind.albumReleaseYearLabel.setText(albumPageViewModel.getAlbum().getYear() != 0 ? String.valueOf(albumPageViewModel.getAlbum().getYear()) : ""); bind.albumReleaseYearLabel.setText(albumPageViewModel.getAlbum().getYear() != 0 ? String.valueOf(albumPageViewModel.getAlbum().getYear()) : "");
albumPageViewModel.getAlbumSongList().observe(requireActivity(), songs -> { albumPageViewModel.getAlbumSongLiveList().observe(requireActivity(), songs -> {
if(bind != null) { if(bind != null) {
bind.albumPagePlayButton.setOnClickListener(v -> { bind.albumPagePlayButton.setOnClickListener(v -> {
QueueRepository queueRepository = new QueueRepository(App.getInstance()); QueueRepository queueRepository = new QueueRepository(App.getInstance());
@ -141,7 +138,7 @@ public class AlbumPageFragment extends Fragment {
songResultSearchAdapter = new SongResultSearchAdapter(activity, requireContext(), getChildFragmentManager()); songResultSearchAdapter = new SongResultSearchAdapter(activity, requireContext(), getChildFragmentManager());
bind.songRecyclerView.setAdapter(songResultSearchAdapter); bind.songRecyclerView.setAdapter(songResultSearchAdapter);
albumPageViewModel.getAlbumSongList().observe(requireActivity(), songs -> { albumPageViewModel.getAlbumSongLiveList().observe(requireActivity(), songs -> {
songResultSearchAdapter.setItems(songs); songResultSearchAdapter.setItems(songs);
}); });
} }

View file

@ -7,9 +7,7 @@ import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData; import androidx.lifecycle.LiveData;
import com.cappielloantonio.play.model.Album; import com.cappielloantonio.play.model.Album;
import com.cappielloantonio.play.model.Artist;
import com.cappielloantonio.play.model.Song; import com.cappielloantonio.play.model.Song;
import com.cappielloantonio.play.repository.AlbumRepository;
import com.cappielloantonio.play.repository.SongRepository; import com.cappielloantonio.play.repository.SongRepository;
import java.util.List; import java.util.List;
@ -17,7 +15,7 @@ import java.util.List;
public class AlbumPageViewModel extends AndroidViewModel { public class AlbumPageViewModel extends AndroidViewModel {
private SongRepository songRepository; private SongRepository songRepository;
private LiveData<List<Song>> songList; private LiveData<List<Song>> songLiveList;
private Album album; private Album album;
@ -27,9 +25,13 @@ public class AlbumPageViewModel extends AndroidViewModel {
songRepository = new SongRepository(application); songRepository = new SongRepository(application);
} }
public LiveData<List<Song>> getAlbumSongList() { public LiveData<List<Song>> getAlbumSongLiveList() {
songList = songRepository.getAlbumListLiveSong(album.getId()); songLiveList = songRepository.getAlbumListLiveSong(album.getId());
return songList; return songLiveList;
}
public List<Song> getAlbumSongList() {
return songRepository.getAlbumListSong(album.getId(), false);
} }
public Album getAlbum() { public Album getAlbum() {