feat: rating dialog added to album page

This commit is contained in:
eddyizm 2025-08-23 17:57:45 -07:00
parent 698ca3b22b
commit 1bbcf6c790
No known key found for this signature in database
GPG key ID: CF5F671829E8158A
4 changed files with 24 additions and 1 deletions

View file

@ -63,7 +63,11 @@ public class RatingDialog extends DialogFragment {
bind.ratingBar.setRating(song.getUserRating() != null ? song.getUserRating() : 0); bind.ratingBar.setRating(song.getUserRating() != null ? song.getUserRating() : 0);
}); });
} else if (ratingViewModel.getAlbum() != null) { } else if (ratingViewModel.getAlbum() != null) {
ratingViewModel.getLiveAlbum().observe(this, album -> bind.ratingBar.setRating(/*album.getRating()*/ 0)); ratingViewModel.getLiveAlbum().observe(this, album -> {
if (album != null) {
bind.ratingBar.setRating(album.getUserRating() != null ? album.getUserRating() : 0);
}
});
} else if (ratingViewModel.getArtist() != null) { } else if (ratingViewModel.getArtist() != null) {
ratingViewModel.getLiveArtist().observe(this, artist -> bind.ratingBar.setRating(/*artist.getRating()*/ 0)); ratingViewModel.getLiveArtist().observe(this, artist -> bind.ratingBar.setRating(/*artist.getRating()*/ 0));
} }

View file

@ -4,6 +4,7 @@ import android.content.ComponentName;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.Parcelable;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
@ -27,11 +28,13 @@ import com.cappielloantonio.tempo.databinding.FragmentAlbumPageBinding;
import com.cappielloantonio.tempo.glide.CustomGlideRequest; import com.cappielloantonio.tempo.glide.CustomGlideRequest;
import com.cappielloantonio.tempo.interfaces.ClickCallback; import com.cappielloantonio.tempo.interfaces.ClickCallback;
import com.cappielloantonio.tempo.model.Download; import com.cappielloantonio.tempo.model.Download;
import com.cappielloantonio.tempo.subsonic.models.AlbumID3;
import com.cappielloantonio.tempo.service.MediaManager; import com.cappielloantonio.tempo.service.MediaManager;
import com.cappielloantonio.tempo.service.MediaService; import com.cappielloantonio.tempo.service.MediaService;
import com.cappielloantonio.tempo.ui.activity.MainActivity; import com.cappielloantonio.tempo.ui.activity.MainActivity;
import com.cappielloantonio.tempo.ui.adapter.SongHorizontalAdapter; import com.cappielloantonio.tempo.ui.adapter.SongHorizontalAdapter;
import com.cappielloantonio.tempo.ui.dialog.PlaylistChooserDialog; import com.cappielloantonio.tempo.ui.dialog.PlaylistChooserDialog;
import com.cappielloantonio.tempo.ui.dialog.RatingDialog;
import com.cappielloantonio.tempo.util.Constants; import com.cappielloantonio.tempo.util.Constants;
import com.cappielloantonio.tempo.util.DownloadUtil; import com.cappielloantonio.tempo.util.DownloadUtil;
import com.cappielloantonio.tempo.util.MappingUtil; import com.cappielloantonio.tempo.util.MappingUtil;
@ -104,6 +107,16 @@ public class AlbumPageFragment extends Fragment implements ClickCallback {
@Override @Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) { public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == R.id.action_rate_album) {
Bundle bundle = new Bundle();
AlbumID3 album = albumPageViewModel.getAlbum().getValue();
bundle.putParcelable(Constants.ALBUM_OBJECT, (Parcelable) album);
RatingDialog dialog = new RatingDialog();
dialog.setArguments(bundle);
dialog.show(requireActivity().getSupportFragmentManager(), null);
return true;
}
if (item.getItemId() == R.id.action_download_album) { if (item.getItemId() == R.id.action_download_album) {
albumPageViewModel.getAlbumSongLiveList().observe(getViewLifecycleOwner(), songs -> { albumPageViewModel.getAlbumSongLiveList().observe(getViewLifecycleOwner(), songs -> {
DownloadUtil.getDownloadTracker(requireContext()).download(MappingUtil.mapDownloads(songs), songs.stream().map(Download::new).collect(Collectors.toList())); DownloadUtil.getDownloadTracker(requireContext()).download(MappingUtil.mapDownloads(songs), songs.stream().map(Download::new).collect(Collectors.toList()));

View file

@ -11,4 +11,9 @@
android:icon="@drawable/ic_add" android:icon="@drawable/ic_add"
android:title="@string/menu_add_to_playlist_button" android:title="@string/menu_add_to_playlist_button"
app:showAsAction="never" /> app:showAsAction="never" />
<item
android:id="@+id/action_rate_album"
android:icon="@drawable/ic_add"
android:title="@string/menu_rate_album"
app:showAsAction="never" />
</menu> </menu>

View file

@ -164,6 +164,7 @@
<string name="menu_add_button">Add</string> <string name="menu_add_button">Add</string>
<string name="menu_add_to_playlist_button">Add to playlist</string> <string name="menu_add_to_playlist_button">Add to playlist</string>
<string name="menu_download_all_button">Download all</string> <string name="menu_download_all_button">Download all</string>
<string name="menu_rate_album">Rate album</string>
<string name="menu_download_label">Download</string> <string name="menu_download_label">Download</string>
<string name="menu_filter_all">All</string> <string name="menu_filter_all">All</string>
<string name="menu_filter_download">Downloaded</string> <string name="menu_filter_download">Downloaded</string>