diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumPageFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumPageFragment.java index 82a03cdd..e286f89f 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumPageFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumPageFragment.java @@ -8,12 +8,15 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; +import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.view.ViewCompat; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; +import androidx.navigation.Navigation; +import androidx.navigation.fragment.NavHostFragment; import androidx.recyclerview.widget.LinearLayoutManager; import com.cappielloantonio.play.App; @@ -21,6 +24,8 @@ import com.cappielloantonio.play.R; import com.cappielloantonio.play.adapter.SongResultSearchAdapter; import com.cappielloantonio.play.databinding.FragmentAlbumPageBinding; import com.cappielloantonio.play.glide.CustomGlideRequest; +import com.cappielloantonio.play.model.Artist; +import com.cappielloantonio.play.model.Song; import com.cappielloantonio.play.service.MusicPlayerRemote; import com.cappielloantonio.play.repository.QueueRepository; import com.cappielloantonio.play.ui.activity.MainActivity; @@ -28,6 +33,7 @@ import com.cappielloantonio.play.util.DownloadUtil; import com.cappielloantonio.play.viewmodel.AlbumPageViewModel; import java.util.Collections; +import java.util.Objects; public class AlbumPageFragment extends Fragment { private static final String TAG = "AlbumPageFragment"; @@ -55,6 +61,7 @@ public class AlbumPageFragment extends Fragment { super.onActivityCreated(savedInstanceState); initAppBar(); + initAlbumInfoTextButton(); initMusicButton(); } @@ -125,6 +132,25 @@ public class AlbumPageFragment extends Fragment { bind.animToolbar.setNavigationOnClickListener(v -> activity.navController.navigateUp()); } + 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.artistPageFragment, bundle); + } + else Toast.makeText(requireContext(), "Error retrieving artist", Toast.LENGTH_SHORT).show(); + }); + + bind.albumReleaseYearLabel.setOnClickListener(v -> { + Bundle bundle = new Bundle(); + bundle.putString(Song.BY_YEAR, Song.BY_YEAR); + bundle.putInt("year_object", albumPageViewModel.getAlbum().getYear()); + activity.navController.navigate(R.id.songListPageFragment, bundle); + }); + } + private void initMusicButton() { albumPageViewModel.getAlbumSongLiveList().observe(requireActivity(), songs -> { if(bind != null) { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumPageViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumPageViewModel.java index 2dbd4d3c..825c7d0c 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumPageViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumPageViewModel.java @@ -7,13 +7,16 @@ import androidx.lifecycle.AndroidViewModel; import androidx.lifecycle.LiveData; import com.cappielloantonio.play.model.Album; +import com.cappielloantonio.play.model.Artist; import com.cappielloantonio.play.model.Song; +import com.cappielloantonio.play.repository.ArtistRepository; import com.cappielloantonio.play.repository.SongRepository; import java.util.List; public class AlbumPageViewModel extends AndroidViewModel { private SongRepository songRepository; + private ArtistRepository artistRepository; private LiveData> songLiveList; @@ -23,6 +26,7 @@ public class AlbumPageViewModel extends AndroidViewModel { super(application); songRepository = new SongRepository(application); + artistRepository = new ArtistRepository(application); } public LiveData> getAlbumSongLiveList() { @@ -41,4 +45,8 @@ public class AlbumPageViewModel extends AndroidViewModel { public void setAlbum(Album album) { this.album = album; } + + public Artist getArtist() { + return artistRepository.getArtistByID(album.getArtistId()); + } } diff --git a/app/src/main/res/layout/fragment_album_page.xml b/app/src/main/res/layout/fragment_album_page.xml index 7626e0b6..7f07ba93 100644 --- a/app/src/main/res/layout/fragment_album_page.xml +++ b/app/src/main/res/layout/fragment_album_page.xml @@ -50,7 +50,6 @@ android:ellipsize="end" android:maxLines="2" android:singleLine="false" - android:text="American Idiot" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/album_cover_image_view" app:layout_constraintTop_toTopOf="@+id/album_cover_image_view" /> @@ -64,7 +63,6 @@ android:layout_marginEnd="16dp" android:ellipsize="end" android:maxLines="1" - android:text="Green Day" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/album_cover_image_view" app:layout_constraintTop_toBottomOf="@+id/album_name_label" /> @@ -76,7 +74,6 @@ android:layout_height="wrap_content" android:layout_marginStart="12dp" android:layout_marginEnd="16dp" - android:text="2004" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/album_cover_image_view" app:layout_constraintTop_toBottomOf="@+id/album_artist_label" /> diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 46df1ce6..a07bad44 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -106,13 +106,13 @@