diff --git a/.idea/misc.xml b/.idea/misc.xml
index 311314b1..0de3292c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -28,6 +28,7 @@
+
diff --git a/app/src/main/java/com/cappielloantonio/play/model/Playlist.java b/app/src/main/java/com/cappielloantonio/play/model/Playlist.java
index 4124950e..221827cb 100644
--- a/app/src/main/java/com/cappielloantonio/play/model/Playlist.java
+++ b/app/src/main/java/com/cappielloantonio/play/model/Playlist.java
@@ -4,12 +4,12 @@ import android.os.Parcel;
import android.os.Parcelable;
public class Playlist implements Parcelable {
- public String id;
- public String name;
- public String primary;
- public String blurHash;
- public int songCount;
- public int duration;
+ private String id;
+ private String name;
+ private String primary;
+ private String blurHash;
+ private int songCount;
+ private long duration;
public Playlist(com.cappielloantonio.play.subsonic.models.Playlist playlist) {
this.id = playlist.getId();
@@ -40,7 +40,7 @@ public class Playlist implements Parcelable {
return songCount;
}
- public int getDuration() {
+ public long getDuration() {
return duration;
}
diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java
index ca4036f6..20d62623 100644
--- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java
+++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java
@@ -16,6 +16,7 @@ import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
+import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.cappielloantonio.play.App;
import com.cappielloantonio.play.R;
import com.cappielloantonio.play.adapter.SongHorizontalAdapter;
@@ -25,6 +26,7 @@ import com.cappielloantonio.play.repository.QueueRepository;
import com.cappielloantonio.play.service.MusicPlayerRemote;
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 java.util.Collections;
@@ -59,8 +61,8 @@ public class PlaylistPageFragment extends Fragment {
init();
initAppBar();
- initBackCover();
initMusicButton();
+ initBackCover();
initSongsView();
return view;
@@ -97,20 +99,19 @@ public class PlaylistPageFragment extends Fragment {
private void initAppBar() {
activity.setSupportActionBar(bind.animToolbar);
- if (activity.getSupportActionBar() != null)
+
+ if (activity.getSupportActionBar() != null) {
activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+ activity.getSupportActionBar().setDisplayShowHomeEnabled(true);
+ }
+
+ bind.animToolbar.setTitle(MusicUtil.getReadableString(playlistPageViewModel.getPlaylist().getName()));
+
+ bind.playlistNameLabel.setText(playlistPageViewModel.getPlaylist().getName());
+ bind.playlistSongCountLabel.setText("Song count: " + playlistPageViewModel.getPlaylist().getSongCount());
+ bind.playlistDurationLabel.setText("Playlist duration: " + MusicUtil.getReadableDurationString(playlistPageViewModel.getPlaylist().getDuration(), false));
- bind.collapsingToolbar.setTitle(playlistPageViewModel.getPlaylist().getName());
bind.animToolbar.setNavigationOnClickListener(v -> activity.navController.navigateUp());
- bind.collapsingToolbar.setCollapsedTitleTextColor(getResources().getColor(R.color.titleTextColor, null));
-
- bind.appbar.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> {
- if ((bind.collapsingToolbar.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.collapsingToolbar))) {
- bind.animToolbar.getNavigationIcon().setColorFilter(getResources().getColor(R.color.titleTextColor, null), PorterDuff.Mode.SRC_ATOP);
- } else {
- bind.animToolbar.getNavigationIcon().setColorFilter(getResources().getColor(R.color.white, null), PorterDuff.Mode.SRC_ATOP);
- }
- });
}
private void initMusicButton() {
@@ -143,17 +144,19 @@ public class PlaylistPageFragment extends Fragment {
private void initBackCover() {
CustomGlideRequest.Builder
- .from(requireContext(), playlistPageViewModel.getPlaylist().getPrimary(), CustomGlideRequest.ALBUM_PIC, null)
+ .from(requireContext(), playlistPageViewModel.getPlaylist().getPrimary(), CustomGlideRequest.PLAYLIST_PIC, null)
.build()
- .into(bind.albumBackCoverImageView);
+ .transform(new RoundedCorners(CustomGlideRequest.CORNER_RADIUS))
+ .into(bind.playlistCoverImageView);
}
private void initSongsView() {
- bind.playlistRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext()));
- bind.playlistRecyclerView.setHasFixedSize(true);
+ bind.songRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext()));
+ bind.songRecyclerView.setHasFixedSize(true);
songHorizontalAdapter = new SongHorizontalAdapter(activity, requireContext(), getChildFragmentManager());
- bind.playlistRecyclerView.setAdapter(songHorizontalAdapter);
+ bind.songRecyclerView.setAdapter(songHorizontalAdapter);
+
playlistPageViewModel.getPlaylistSongLiveList().observe(requireActivity(), songs -> {
songHorizontalAdapter.setItems(songs);
});
diff --git a/app/src/main/res/layout/fragment_album_page.xml b/app/src/main/res/layout/fragment_album_page.xml
index d4bb1fdc..7598e484 100644
--- a/app/src/main/res/layout/fragment_album_page.xml
+++ b/app/src/main/res/layout/fragment_album_page.xml
@@ -34,13 +34,13 @@
android:id="@+id/album_cover_image_view"
android:layout_width="0dp"
android:layout_height="0dp"
- app:layout_constraintDimensionRatio="H,1:1"
android:layout_marginLeft="64dp"
- android:layout_marginRight="64dp"
android:layout_marginTop="8dp"
+ android:layout_marginRight="64dp"
android:layout_marginBottom="8dp"
- app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintDimensionRatio="H,1:1"
app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
-
+ android:layout_height="match_parent"
+ android:orientation="vertical">
-
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_height="?attr/actionBarSize"
+ app:layout_collapseMode="pin"
+ app:navigationIcon="@drawable/ic_arrow_back"
+ app:popupTheme="@style/ThemeOverlay.MaterialComponents.Light"
+ app:titleTextColor="@color/titleTextColor" />
+ android:layout_height="wrap_content">
+ android:orientation="vertical">
-
-
-
+ android:clipChildren="false"
+ android:paddingTop="8dp">
-
+
+
+ android:layout_marginStart="18dp"
+ android:layout_marginEnd="18dp"
+ android:ellipsize="end"
+ android:maxLines="2"
+ android:paddingTop="8dp"
+ android:singleLine="false"
+ android:text="@string/label_placeholder"
+ android:textAlignment="center"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/playlist_cover_image_view" />
-
-
+ android:layout_marginStart="18dp"
+ android:layout_marginEnd="18dp"
+ android:ellipsize="end"
+ android:maxLines="1"
+ android:text="@string/label_placeholder"
+ android:textAlignment="center"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/playlist_name_label" />
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:paddingTop="8dp"
+ android:paddingBottom="@dimen/global_padding_bottom"/>
+
-
\ No newline at end of file
+
\ No newline at end of file