mirror of
https://github.com/antebudimir/tempus.git
synced 2026-01-03 02:41:40 +00:00
Implementation of song/album/artist page list
This commit is contained in:
parent
051ba23b58
commit
b5eaa1e523
17 changed files with 550 additions and 40 deletions
|
|
@ -0,0 +1,111 @@
|
|||
package com.cappielloantonio.play.ui.fragment;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.cappielloantonio.play.App;
|
||||
import com.cappielloantonio.play.adapter.AlbumHorizontalAdapter;
|
||||
import com.cappielloantonio.play.adapter.SongHorizontalAdapter;
|
||||
import com.cappielloantonio.play.databinding.FragmentAlbumListPageBinding;
|
||||
import com.cappielloantonio.play.databinding.FragmentSongListPageBinding;
|
||||
import com.cappielloantonio.play.model.Album;
|
||||
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.viewmodel.AlbumListPageViewModel;
|
||||
import com.cappielloantonio.play.viewmodel.SongListPageViewModel;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
public class AlbumListPageFragment extends Fragment {
|
||||
private FragmentAlbumListPageBinding bind;
|
||||
|
||||
private MainActivity activity;
|
||||
private AlbumListPageViewModel albumListPageViewModel;
|
||||
|
||||
private AlbumHorizontalAdapter albumHorizontalAdapter;
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
activity = (MainActivity) getActivity();
|
||||
|
||||
bind = FragmentAlbumListPageBinding.inflate(inflater, container, false);
|
||||
View view = bind.getRoot();
|
||||
albumListPageViewModel = new ViewModelProvider(requireActivity()).get(AlbumListPageViewModel.class);
|
||||
|
||||
init();
|
||||
initAppBar();
|
||||
initAlbumListView();
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
activity.setBottomNavigationBarVisibility(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
bind = null;
|
||||
}
|
||||
|
||||
private void init() {
|
||||
if(getArguments().getString(Album.RECENTLY_PLAYED) != null) {
|
||||
albumListPageViewModel.title = Album.RECENTLY_PLAYED;
|
||||
bind.pageTitleLabel.setText("Recently played albums");
|
||||
}
|
||||
else if(getArguments().getString(Album.MOST_PLAYED) != null) {
|
||||
albumListPageViewModel.title = Album.MOST_PLAYED;
|
||||
bind.pageTitleLabel.setText("Most played albums");
|
||||
}
|
||||
else if(getArguments().getString(Album.RECENTLY_ADDED) != null) {
|
||||
albumListPageViewModel.title = Album.RECENTLY_ADDED;
|
||||
bind.pageTitleLabel.setText("Recently added albums");
|
||||
}
|
||||
else if(getArguments().getString(Album.STARRED) != null) {
|
||||
albumListPageViewModel.title = Album.STARRED;
|
||||
bind.pageTitleLabel.setText("Starred albums");
|
||||
}
|
||||
}
|
||||
|
||||
private void initAppBar() {
|
||||
activity.setSupportActionBar(bind.toolbar);
|
||||
|
||||
if (activity.getSupportActionBar() != null) {
|
||||
activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
activity.getSupportActionBar().setDisplayShowHomeEnabled(true);
|
||||
}
|
||||
|
||||
bind.toolbar.setNavigationOnClickListener(v -> {
|
||||
activity.navController.navigateUp();
|
||||
});
|
||||
|
||||
bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> {
|
||||
if ((bind.albumInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) {
|
||||
bind.toolbar.setTitle("Albums");
|
||||
} else {
|
||||
bind.toolbar.setTitle("");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void initAlbumListView() {
|
||||
bind.albumListRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext()));
|
||||
bind.albumListRecyclerView.setHasFixedSize(true);
|
||||
|
||||
albumHorizontalAdapter = new AlbumHorizontalAdapter(activity, requireContext(), getChildFragmentManager());
|
||||
bind.albumListRecyclerView.setAdapter(albumHorizontalAdapter);
|
||||
albumListPageViewModel.getAlbumList(requireActivity()).observe(requireActivity(), albums -> albumHorizontalAdapter.setItems(albums));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,93 @@
|
|||
package com.cappielloantonio.play.ui.fragment;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.cappielloantonio.play.adapter.AlbumHorizontalAdapter;
|
||||
import com.cappielloantonio.play.adapter.ArtistHorizontalAdapter;
|
||||
import com.cappielloantonio.play.databinding.FragmentAlbumListPageBinding;
|
||||
import com.cappielloantonio.play.databinding.FragmentArtistListPageBinding;
|
||||
import com.cappielloantonio.play.model.Album;
|
||||
import com.cappielloantonio.play.ui.activity.MainActivity;
|
||||
import com.cappielloantonio.play.viewmodel.AlbumListPageViewModel;
|
||||
import com.cappielloantonio.play.viewmodel.ArtistListPageViewModel;
|
||||
|
||||
public class ArtistListPageFragment extends Fragment {
|
||||
private FragmentArtistListPageBinding bind;
|
||||
|
||||
private MainActivity activity;
|
||||
private ArtistListPageViewModel artistListPageViewModel;
|
||||
|
||||
private ArtistHorizontalAdapter artistHorizontalAdapter;
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
activity = (MainActivity) getActivity();
|
||||
|
||||
bind = FragmentArtistListPageBinding.inflate(inflater, container, false);
|
||||
View view = bind.getRoot();
|
||||
artistListPageViewModel = new ViewModelProvider(requireActivity()).get(ArtistListPageViewModel.class);
|
||||
|
||||
init();
|
||||
initAppBar();
|
||||
initArtistListView();
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
activity.setBottomNavigationBarVisibility(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
bind = null;
|
||||
}
|
||||
|
||||
private void init() {
|
||||
if(getArguments().getString(Album.STARRED) != null) {
|
||||
artistListPageViewModel.title = Album.STARRED;
|
||||
bind.pageTitleLabel.setText("Starred artists");
|
||||
}
|
||||
}
|
||||
|
||||
private void initAppBar() {
|
||||
activity.setSupportActionBar(bind.toolbar);
|
||||
|
||||
if (activity.getSupportActionBar() != null) {
|
||||
activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
activity.getSupportActionBar().setDisplayShowHomeEnabled(true);
|
||||
}
|
||||
|
||||
bind.toolbar.setNavigationOnClickListener(v -> {
|
||||
activity.navController.navigateUp();
|
||||
});
|
||||
|
||||
bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> {
|
||||
if ((bind.artistInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) {
|
||||
bind.toolbar.setTitle("Artists");
|
||||
} else {
|
||||
bind.toolbar.setTitle("");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void initArtistListView() {
|
||||
bind.artistListRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext()));
|
||||
bind.artistListRecyclerView.setHasFixedSize(true);
|
||||
|
||||
artistHorizontalAdapter = new ArtistHorizontalAdapter(activity, requireContext(), getChildFragmentManager());
|
||||
bind.artistListRecyclerView.setAdapter(artistHorizontalAdapter);
|
||||
artistListPageViewModel.getArtistList().observe(requireActivity(), artists -> artistHorizontalAdapter.setItems(artists));
|
||||
}
|
||||
}
|
||||
|
|
@ -4,7 +4,6 @@ import android.os.Bundle;
|
|||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
|
@ -25,15 +24,14 @@ import com.cappielloantonio.play.adapter.RecentMusicAdapter;
|
|||
import com.cappielloantonio.play.adapter.SongHorizontalAdapter;
|
||||
import com.cappielloantonio.play.adapter.YearAdapter;
|
||||
import com.cappielloantonio.play.databinding.FragmentHomeBinding;
|
||||
import com.cappielloantonio.play.interfaces.MediaCallback;
|
||||
import com.cappielloantonio.play.model.Album;
|
||||
import com.cappielloantonio.play.model.Artist;
|
||||
import com.cappielloantonio.play.model.Song;
|
||||
import com.cappielloantonio.play.ui.activity.MainActivity;
|
||||
import com.cappielloantonio.play.util.MappingUtil;
|
||||
import com.cappielloantonio.play.util.UIUtil;
|
||||
import com.cappielloantonio.play.viewmodel.HomeViewModel;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class HomeFragment extends Fragment {
|
||||
private static final String TAG = "CategoriesFragment";
|
||||
|
||||
|
|
@ -98,38 +96,38 @@ public class HomeFragment extends Fragment {
|
|||
private void init() {
|
||||
bind.recentlyAddedAlbumsTextViewClickable.setOnClickListener(v -> {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(Song.RECENTLY_ADDED, Song.RECENTLY_ADDED);
|
||||
activity.navController.navigate(R.id.action_homeFragment_to_songListPageFragment, bundle);
|
||||
bundle.putString(Album.RECENTLY_ADDED, Album.RECENTLY_ADDED);
|
||||
activity.navController.navigate(R.id.action_homeFragment_to_albumListPageFragment, bundle);
|
||||
});
|
||||
|
||||
bind.recentlyPlayedAlbumsTextViewClickable.setOnClickListener(v -> {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(Song.RECENTLY_PLAYED, Song.RECENTLY_PLAYED);
|
||||
activity.navController.navigate(R.id.action_homeFragment_to_songListPageFragment, bundle);
|
||||
bundle.putString(Album.RECENTLY_PLAYED, Album.RECENTLY_PLAYED);
|
||||
activity.navController.navigate(R.id.action_homeFragment_to_albumListPageFragment, bundle);
|
||||
});
|
||||
|
||||
bind.mostPlayedAlbumsTextViewClickable.setOnClickListener(v -> {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(Song.MOST_PLAYED, Song.MOST_PLAYED);
|
||||
activity.navController.navigate(R.id.action_homeFragment_to_songListPageFragment, bundle);
|
||||
bundle.putString(Album.MOST_PLAYED, Album.MOST_PLAYED);
|
||||
activity.navController.navigate(R.id.action_homeFragment_to_albumListPageFragment, bundle);
|
||||
});
|
||||
|
||||
bind.starredTracksTextViewClickable.setOnClickListener(v -> {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(Song.IS_FAVORITE, Song.IS_FAVORITE);
|
||||
bundle.putString(Song.STARRED, Song.STARRED);
|
||||
activity.navController.navigate(R.id.action_homeFragment_to_songListPageFragment, bundle);
|
||||
});
|
||||
|
||||
bind.starredAlbumsTextViewClickable.setOnClickListener(v -> {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(Song.IS_FAVORITE, Song.IS_FAVORITE);
|
||||
activity.navController.navigate(R.id.action_homeFragment_to_songListPageFragment, bundle);
|
||||
bundle.putString(Album.STARRED, Album.STARRED);
|
||||
activity.navController.navigate(R.id.action_homeFragment_to_albumListPageFragment, bundle);
|
||||
});
|
||||
|
||||
bind.starredArtistsTextViewClickable.setOnClickListener(v -> {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(Song.IS_FAVORITE, Song.IS_FAVORITE);
|
||||
activity.navController.navigate(R.id.action_homeFragment_to_songListPageFragment, bundle);
|
||||
bundle.putString(Artist.STARRED, Artist.STARRED);
|
||||
activity.navController.navigate(R.id.action_homeFragment_to_artistListPageFragment, bundle);
|
||||
});
|
||||
|
||||
bind.downloadedTracksTextViewClickable.setOnClickListener(v -> {
|
||||
|
|
@ -180,6 +178,8 @@ public class HomeFragment extends Fragment {
|
|||
}
|
||||
|
||||
private void initYearSongView() {
|
||||
if(bind != null) bind.homeFlashbackSector.setVisibility(!homeViewModel.getYearList().isEmpty() ? View.VISIBLE : View.GONE);
|
||||
|
||||
bind.yearsRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false));
|
||||
bind.yearsRecyclerView.setHasFixedSize(true);
|
||||
|
||||
|
|
|
|||
|
|
@ -60,25 +60,25 @@ public class SongListPageFragment extends Fragment {
|
|||
private void init() {
|
||||
if(getArguments().getString(Song.RECENTLY_PLAYED) != null) {
|
||||
songListPageViewModel.title = Song.RECENTLY_PLAYED;
|
||||
bind.pageTitleLabel.setText("Recently played songs");
|
||||
bind.pageTitleLabel.setText("Recently played tracks");
|
||||
}
|
||||
else if(getArguments().getString(Song.MOST_PLAYED) != null) {
|
||||
songListPageViewModel.title = Song.MOST_PLAYED;
|
||||
bind.pageTitleLabel.setText("Most played songs");
|
||||
bind.pageTitleLabel.setText("Most played tracks");
|
||||
}
|
||||
else if(getArguments().getString(Song.RECENTLY_ADDED) != null) {
|
||||
songListPageViewModel.title = Song.RECENTLY_ADDED;
|
||||
bind.pageTitleLabel.setText("Recently added song");
|
||||
bind.pageTitleLabel.setText("Recently added tracks");
|
||||
}
|
||||
else if(getArguments().getString(Song.BY_GENRE) != null) {
|
||||
songListPageViewModel.title = Song.BY_GENRE;
|
||||
songListPageViewModel.genre = getArguments().getParcelable("genre_object");
|
||||
bind.pageTitleLabel.setText(songListPageViewModel.genre.getName() + ": all songs");
|
||||
bind.pageTitleLabel.setText(songListPageViewModel.genre.getName() + ": all tracks");
|
||||
}
|
||||
else if(getArguments().getString(Song.BY_ARTIST) != null) {
|
||||
songListPageViewModel.title = Song.BY_ARTIST;
|
||||
songListPageViewModel.artist = getArguments().getParcelable("artist_object");
|
||||
bind.pageTitleLabel.setText(songListPageViewModel.artist.getName() + "'s top songs");
|
||||
bind.pageTitleLabel.setText(songListPageViewModel.artist.getName() + "'s top tracks");
|
||||
}
|
||||
else if(getArguments().getString(Song.BY_GENRES) != null) {
|
||||
songListPageViewModel.title = Song.BY_GENRES;
|
||||
|
|
@ -91,19 +91,14 @@ public class SongListPageFragment extends Fragment {
|
|||
songListPageViewModel.year = getArguments().getInt("year_object");
|
||||
bind.pageTitleLabel.setText("Year " + songListPageViewModel.year);
|
||||
}
|
||||
else if(getArguments().getString(Song.IS_FAVORITE) != null) {
|
||||
songListPageViewModel.title = Song.IS_FAVORITE;
|
||||
bind.pageTitleLabel.setText("Favourite song");
|
||||
else if(getArguments().getString(Song.STARRED) != null) {
|
||||
songListPageViewModel.title = Song.STARRED;
|
||||
bind.pageTitleLabel.setText("Starred tracks");
|
||||
}
|
||||
else if(getArguments().getString(Song.DOWNLOADED) != null) {
|
||||
songListPageViewModel.title = Song.DOWNLOADED;
|
||||
bind.pageTitleLabel.setText("Downloaded");
|
||||
}
|
||||
else if(getArguments().getString(Song.RADIO) != null) {
|
||||
songListPageViewModel.title = Song.IS_FAVORITE;
|
||||
songListPageViewModel.year = getArguments().getInt("radio_object");
|
||||
bind.pageTitleLabel.setText("Radio");
|
||||
}
|
||||
}
|
||||
|
||||
private void initAppBar() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue