mirror of
https://github.com/antebudimir/tempus.git
synced 2026-01-03 02:41:40 +00:00
Implementation of album and artist catalog recovery
This commit is contained in:
parent
64cd8ed0ac
commit
98ffec9b72
15 changed files with 330 additions and 160 deletions
|
|
@ -3,6 +3,7 @@ package com.cappielloantonio.play.ui.fragment;
|
|||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
|
|
@ -36,11 +37,14 @@ public class AlbumCatalogueFragment extends Fragment {
|
|||
private AlbumCatalogueViewModel albumCatalogueViewModel;
|
||||
|
||||
private AlbumCatalogueAdapter albumAdapter;
|
||||
private GridLayoutManager gridLayoutManager;
|
||||
|
||||
@Override
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setHasOptionsMenu(true);
|
||||
|
||||
initData();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -49,7 +53,6 @@ public class AlbumCatalogueFragment extends Fragment {
|
|||
|
||||
bind = FragmentAlbumCatalogueBinding.inflate(inflater, container, false);
|
||||
View view = bind.getRoot();
|
||||
albumCatalogueViewModel = new ViewModelProvider(requireActivity()).get(AlbumCatalogueViewModel.class);
|
||||
|
||||
initAppBar();
|
||||
initAlbumCatalogueView();
|
||||
|
|
@ -69,6 +72,11 @@ public class AlbumCatalogueFragment extends Fragment {
|
|||
bind = null;
|
||||
}
|
||||
|
||||
private void initData() {
|
||||
albumCatalogueViewModel = new ViewModelProvider(requireActivity()).get(AlbumCatalogueViewModel.class);
|
||||
albumCatalogueViewModel.loadAlbums(requireContext(), 500);
|
||||
}
|
||||
|
||||
private void initAppBar() {
|
||||
activity.setSupportActionBar(bind.toolbar);
|
||||
|
||||
|
|
@ -94,13 +102,16 @@ public class AlbumCatalogueFragment extends Fragment {
|
|||
|
||||
@SuppressLint("ClickableViewAccessibility")
|
||||
private void initAlbumCatalogueView() {
|
||||
bind.albumCatalogueRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), 2));
|
||||
gridLayoutManager = new GridLayoutManager(requireContext(), 2);
|
||||
|
||||
bind.albumCatalogueRecyclerView.setLayoutManager(gridLayoutManager);
|
||||
bind.albumCatalogueRecyclerView.addItemDecoration(new GridItemDecoration(2, 20, false));
|
||||
bind.albumCatalogueRecyclerView.setHasFixedSize(true);
|
||||
|
||||
albumAdapter = new AlbumCatalogueAdapter(activity, requireContext());
|
||||
albumAdapter.setStateRestorationPolicy(RecyclerView.Adapter.StateRestorationPolicy.PREVENT_WHEN_EMPTY);
|
||||
bind.albumCatalogueRecyclerView.setAdapter(albumAdapter);
|
||||
|
||||
albumCatalogueViewModel.getAlbumList().observe(requireActivity(), albums -> {
|
||||
albumAdapter.setItems(albums);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ public class AlbumPageFragment extends Fragment {
|
|||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.action_download_album:
|
||||
DownloadUtil.getDownloadTracker(requireContext()).toggleDownload(albumPageViewModel.getAlbumSongList());
|
||||
DownloadUtil.getDownloadTracker(requireContext()).toggleDownload(albumPageViewModel.getAlbumSongLiveList().getValue());
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
|
|
@ -132,20 +132,21 @@ public class AlbumPageFragment extends Fragment {
|
|||
|
||||
private void initAlbumInfoTextButton() {
|
||||
bind.albumArtistLabel.setOnClickListener(v -> {
|
||||
Artist artist = albumPageViewModel.getArtist();
|
||||
if(artist != null) {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putParcelable("artist_object", artist);
|
||||
activity.navController.navigate(R.id.action_albumPageFragment_to_artistPageFragment, bundle);
|
||||
}
|
||||
else Toast.makeText(requireContext(), "Error retrieving artist", Toast.LENGTH_SHORT).show();
|
||||
albumPageViewModel.getArtist().observe(requireActivity(), artist -> {
|
||||
if(artist != null) {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putParcelable("artist_object", artist);
|
||||
activity.navController.navigate(R.id.action_albumPageFragment_to_artistPageFragment, bundle);
|
||||
}
|
||||
else Toast.makeText(requireContext(), "Error retrieving artist", Toast.LENGTH_SHORT).show();
|
||||
});
|
||||
});
|
||||
|
||||
bind.albumReleaseYearLabel.setOnClickListener(v -> {
|
||||
Bundle bundle = new Bundle();
|
||||
/*Bundle bundle = new Bundle();
|
||||
bundle.putString(Song.BY_YEAR, Song.BY_YEAR);
|
||||
bundle.putInt("year_object", albumPageViewModel.getAlbum().getYear());
|
||||
activity.navController.navigate(R.id.action_albumPageFragment_to_songListPageFragment, bundle);
|
||||
activity.navController.navigate(R.id.action_albumPageFragment_to_songListPageFragment, bundle);*/
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -197,22 +198,6 @@ public class AlbumPageFragment extends Fragment {
|
|||
}
|
||||
|
||||
private void initSimilarAlbumsView() {
|
||||
SyncUtil.getSimilarItems(requireContext(), new MediaCallback() {
|
||||
@Override
|
||||
public void onError(Exception exception) {
|
||||
// Toast.makeText(requireContext(), "Error retrieving similar items", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadMedia(List<?> media) {
|
||||
bind.similarAlbumSector.setVisibility(View.VISIBLE);
|
||||
|
||||
bind.similarAlbumsRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false));
|
||||
|
||||
albumArtistPageOrSimilarAdapter = new AlbumArtistPageOrSimilarAdapter(requireContext());
|
||||
bind.similarAlbumsRecyclerView.setAdapter(albumArtistPageOrSimilarAdapter);
|
||||
albumArtistPageOrSimilarAdapter.setItems((ArrayList<Album>) media);
|
||||
}
|
||||
}, SyncUtil.ALBUM, albumPageViewModel.getAlbum().getId(), PreferenceUtil.getInstance(requireContext()).getSimilarItemsNumber());
|
||||
}
|
||||
}
|
||||
|
|
@ -26,6 +26,7 @@ import com.cappielloantonio.play.adapter.ArtistCatalogueAdapter;
|
|||
import com.cappielloantonio.play.databinding.FragmentArtistCatalogueBinding;
|
||||
import com.cappielloantonio.play.helper.recyclerview.GridItemDecoration;
|
||||
import com.cappielloantonio.play.ui.activity.MainActivity;
|
||||
import com.cappielloantonio.play.viewmodel.AlbumCatalogueViewModel;
|
||||
import com.cappielloantonio.play.viewmodel.ArtistCatalogueViewModel;
|
||||
|
||||
public class ArtistCatalogueFragment extends Fragment {
|
||||
|
|
@ -41,6 +42,8 @@ public class ArtistCatalogueFragment extends Fragment {
|
|||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setHasOptionsMenu(true);
|
||||
|
||||
initData();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -49,7 +52,6 @@ public class ArtistCatalogueFragment extends Fragment {
|
|||
|
||||
bind = FragmentArtistCatalogueBinding.inflate(inflater, container, false);
|
||||
View view = bind.getRoot();
|
||||
artistCatalogueViewModel = new ViewModelProvider(requireActivity()).get(ArtistCatalogueViewModel.class);
|
||||
|
||||
initAppBar();
|
||||
initArtistCatalogueView();
|
||||
|
|
@ -69,6 +71,11 @@ public class ArtistCatalogueFragment extends Fragment {
|
|||
bind = null;
|
||||
}
|
||||
|
||||
private void initData() {
|
||||
artistCatalogueViewModel = new ViewModelProvider(requireActivity()).get(ArtistCatalogueViewModel.class);
|
||||
artistCatalogueViewModel.loadArtists(requireContext());
|
||||
}
|
||||
|
||||
private void initAppBar() {
|
||||
activity.setSupportActionBar(bind.toolbar);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
package com.cappielloantonio.play.ui.fragment;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.graphics.BlendMode;
|
||||
import android.graphics.BlendModeColorFilter;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
|
@ -9,6 +11,7 @@ import android.view.ViewGroup;
|
|||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.RequiresApi;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
|
|
@ -16,6 +19,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
|
|||
|
||||
import com.cappielloantonio.play.App;
|
||||
import com.cappielloantonio.play.R;
|
||||
import com.cappielloantonio.play.adapter.AlbumAdapter;
|
||||
import com.cappielloantonio.play.adapter.AlbumArtistPageOrSimilarAdapter;
|
||||
import com.cappielloantonio.play.adapter.ArtistSimilarAdapter;
|
||||
import com.cappielloantonio.play.adapter.SongHorizontalAdapter;
|
||||
|
|
@ -93,6 +97,7 @@ public class ArtistPageFragment extends Fragment {
|
|||
});
|
||||
}
|
||||
|
||||
@SuppressLint("NewApi")
|
||||
private void initAppBar() {
|
||||
activity.setSupportActionBar(bind.animToolbar);
|
||||
if (activity.getSupportActionBar() != null)
|
||||
|
|
@ -168,22 +173,14 @@ public class ArtistPageFragment extends Fragment {
|
|||
}
|
||||
|
||||
private void initSimilarArtistsView() {
|
||||
SyncUtil.getSimilarItems(requireContext(), new MediaCallback() {
|
||||
@Override
|
||||
public void onError(Exception exception) {
|
||||
// Toast.makeText(requireContext(), "Error retrieving similar items", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
bind.similarArtistsRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false));
|
||||
bind.similarArtistsRecyclerView.setHasFixedSize(true);
|
||||
|
||||
@Override
|
||||
public void onLoadMedia(List<?> media) {
|
||||
bind.similarArtistSector.setVisibility(View.VISIBLE);
|
||||
|
||||
bind.similarArtistsRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false));
|
||||
|
||||
artistSimilarAdapter = new ArtistSimilarAdapter(requireContext());
|
||||
bind.similarArtistsRecyclerView.setAdapter(artistSimilarAdapter);
|
||||
artistSimilarAdapter.setItems((ArrayList<Artist>) media);
|
||||
}
|
||||
}, SyncUtil.ARTIST, artistPageViewModel.getArtist().getId(), PreferenceUtil.getInstance(requireContext()).getSimilarItemsNumber());
|
||||
artistSimilarAdapter = new ArtistSimilarAdapter(requireContext());
|
||||
bind.similarArtistsRecyclerView.setAdapter(artistSimilarAdapter);
|
||||
artistPageViewModel.getArtistInfo(artistPageViewModel.getArtist().getId()).observe(requireActivity(), artist -> {
|
||||
if(bind != null) bind.similarArtistSector.setVisibility(!artist.getSimilarArtists().isEmpty() ? View.VISIBLE : View.GONE);
|
||||
artistSimilarAdapter.setItems(artist.getSimilarArtists());
|
||||
});
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue