Removed almost all hardcoded constants

This commit is contained in:
antonio 2023-03-10 16:56:53 +01:00
parent d16db8e36d
commit e98429503b
57 changed files with 345 additions and 374 deletions

View file

@ -1,23 +0,0 @@
package com.cappielloantonio.play.model
import android.os.Parcelable
import androidx.annotation.Keep
import kotlinx.android.parcel.Parcelize
@Keep
@Parcelize
class Album : Parcelable {
companion object {
const val RECENTLY_PLAYED = "RECENTLY_PLAYED"
const val MOST_PLAYED = "MOST_PLAYED"
const val RECENTLY_ADDED = "RECENTLY_ADDED"
const val DOWNLOADED = "DOWNLOADED"
const val STARRED = "STARRED"
const val FROM_ARTIST = "FROM_ARTIST"
const val NEW_RELEASES = "NEW_RELEASES"
const val ORDER_BY_NAME = "ORDER_BY_NAME"
const val ORDER_BY_ARTIST = "ORDER_BY_ARTIST"
const val ORDER_BY_YEAR = "ORDER_BY_YEAR"
const val ORDER_BY_RANDOM = "ORDER_BY_RANDOM"
}
}

View file

@ -1,16 +0,0 @@
package com.cappielloantonio.play.model
import android.os.Parcelable
import androidx.annotation.Keep
import kotlinx.android.parcel.Parcelize
@Keep
@Parcelize
class Artist : Parcelable {
companion object {
const val DOWNLOADED = "DOWNLOADED"
const val STARRED = "STARRED"
const val ORDER_BY_NAME = "ORDER_BY_NAME"
const val ORDER_BY_RANDOM = "ORDER_BY_RANDOM"
}
}

View file

@ -1,14 +0,0 @@
package com.cappielloantonio.play.model
import android.os.Parcelable
import androidx.annotation.Keep
import kotlinx.android.parcel.Parcelize
@Keep
@Parcelize
class Genre : Parcelable {
companion object {
const val ORDER_BY_NAME = "ORDER_BY_NAME"
const val ORDER_BY_RANDOM = "ORDER_BY_RANDOM"
}
}

View file

@ -1,34 +0,0 @@
package com.cappielloantonio.play.model
import android.os.Parcelable
import androidx.annotation.Keep
import kotlinx.android.parcel.Parcelize
@Keep
@Parcelize
class Media : Parcelable {
companion object {
const val MEDIA_TYPE_MUSIC = "music"
const val MEDIA_TYPE_PODCAST = "podcast"
const val MEDIA_TYPE_AUDIOBOOK = "audiobook"
const val MEDIA_TYPE_VIDEO = "video"
const val MEDIA_PLAYBACK_SPEED_080 = 0.8f
const val MEDIA_PLAYBACK_SPEED_100 = 1.0f
const val MEDIA_PLAYBACK_SPEED_125 = 1.25f
const val MEDIA_PLAYBACK_SPEED_150 = 1.50f
const val MEDIA_PLAYBACK_SPEED_175 = 1.75f
const val MEDIA_PLAYBACK_SPEED_200 = 2.0f
const val RECENTLY_PLAYED = "RECENTLY_PLAYED"
const val MOST_PLAYED = "MOST_PLAYED"
const val RECENTLY_ADDED = "RECENTLY_ADDED"
const val BY_GENRE = "BY_GENRE"
const val BY_GENRES = "BY_GENRES"
const val BY_ARTIST = "BY_ARTIST"
const val BY_YEAR = "BY_YEAR"
const val STARRED = "STARRED"
const val DOWNLOADED = "DOWNLOADED"
const val FROM_ALBUM = "FROM_ALBUM"
}
}

View file

@ -1,16 +0,0 @@
package com.cappielloantonio.play.model
import android.os.Parcelable
import androidx.annotation.Keep
import kotlinx.android.parcel.Parcelize
@Keep
@Parcelize
class Playlist : Parcelable {
companion object {
const val ALL = "ALL"
const val DOWNLOADED = "DOWNLOADED"
const val ORDER_BY_NAME = "ORDER_BY_NAME"
const val ORDER_BY_RANDOM = "ORDER_BY_RANDOM"
}
}

View file

@ -15,8 +15,8 @@ import androidx.media3.exoplayer.source.DefaultMediaSourceFactory
import androidx.media3.session.* import androidx.media3.session.*
import androidx.media3.session.MediaSession.ControllerInfo import androidx.media3.session.MediaSession.ControllerInfo
import com.cappielloantonio.play.R import com.cappielloantonio.play.R
import com.cappielloantonio.play.model.Media
import com.cappielloantonio.play.ui.activity.MainActivity import com.cappielloantonio.play.ui.activity.MainActivity
import com.cappielloantonio.play.util.Constants
import com.cappielloantonio.play.util.DownloadUtil import com.cappielloantonio.play.util.DownloadUtil
import com.cappielloantonio.play.util.UIUtil import com.cappielloantonio.play.util.UIUtil
import com.google.android.gms.cast.framework.CastContext import com.google.android.gms.cast.framework.CastContext
@ -234,7 +234,7 @@ class MediaService : MediaLibraryService(), SessionAvailabilityListener {
override fun onMediaItemTransition(mediaItem: MediaItem?, reason: Int) { override fun onMediaItemTransition(mediaItem: MediaItem?, reason: Int) {
if (mediaItem == null) return if (mediaItem == null) return
if (mediaItem.mediaMetadata.extras?.getString("type") == Media.MEDIA_TYPE_MUSIC) { if (mediaItem.mediaMetadata.extras?.getString("type") == Constants.MEDIA_TYPE_MUSIC) {
MediaManager.scrobble(mediaItem) MediaManager.scrobble(mediaItem)
MediaManager.saveChronology(mediaItem) MediaManager.saveChronology(mediaItem)
} }

View file

@ -13,6 +13,7 @@ import com.cappielloantonio.play.databinding.ItemLibraryAlbumBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.subsonic.models.AlbumID3; import com.cappielloantonio.play.subsonic.models.AlbumID3;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import java.util.Collections; import java.util.Collections;
@ -80,14 +81,14 @@ public class AlbumAdapter extends RecyclerView.Adapter<AlbumAdapter.ViewHolder>
private void onClick() { private void onClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("album_object", albums.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.ALBUM_OBJECT, albums.get(getBindingAdapterPosition()));
click.onAlbumClick(bundle); click.onAlbumClick(bundle);
} }
private boolean onLongClick() { private boolean onLongClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("album_object", albums.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.ALBUM_OBJECT, albums.get(getBindingAdapterPosition()));
click.onAlbumLongClick(bundle); click.onAlbumLongClick(bundle);

View file

@ -13,6 +13,7 @@ import com.cappielloantonio.play.databinding.ItemLibraryArtistPageOrSimilarAlbum
import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.subsonic.models.AlbumID3; import com.cappielloantonio.play.subsonic.models.AlbumID3;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import java.util.Collections; import java.util.Collections;
@ -80,14 +81,14 @@ public class AlbumArtistPageOrSimilarAdapter extends RecyclerView.Adapter<AlbumA
private void onClick() { private void onClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("album_object", albums.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.ALBUM_OBJECT, albums.get(getBindingAdapterPosition()));
click.onAlbumClick(bundle); click.onAlbumClick(bundle);
} }
private boolean onLongClick() { private boolean onLongClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("album_object", albums.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.ALBUM_OBJECT, albums.get(getBindingAdapterPosition()));
click.onAlbumLongClick(bundle); click.onAlbumLongClick(bundle);

View file

@ -14,8 +14,8 @@ import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.cappielloantonio.play.databinding.ItemLibraryCatalogueAlbumBinding; import com.cappielloantonio.play.databinding.ItemLibraryCatalogueAlbumBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Album;
import com.cappielloantonio.play.subsonic.models.AlbumID3; import com.cappielloantonio.play.subsonic.models.AlbumID3;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import java.util.ArrayList; import java.util.ArrayList;
@ -132,14 +132,14 @@ public class AlbumCatalogueAdapter extends RecyclerView.Adapter<AlbumCatalogueAd
private void onClick() { private void onClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("album_object", albums.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.ALBUM_OBJECT, albums.get(getBindingAdapterPosition()));
click.onAlbumClick(bundle); click.onAlbumClick(bundle);
} }
private boolean onLongClick() { private boolean onLongClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("album_object", albums.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.ALBUM_OBJECT, albums.get(getBindingAdapterPosition()));
click.onAlbumLongClick(bundle); click.onAlbumLongClick(bundle);
@ -149,16 +149,16 @@ public class AlbumCatalogueAdapter extends RecyclerView.Adapter<AlbumCatalogueAd
public void sort(String order) { public void sort(String order) {
switch (order) { switch (order) {
case Album.ORDER_BY_NAME: case Constants.ALBUM_ORDER_BY_NAME:
albums.sort(Comparator.comparing(AlbumID3::getName)); albums.sort(Comparator.comparing(AlbumID3::getName));
break; break;
case Album.ORDER_BY_ARTIST: case Constants.ALBUM_ORDER_BY_ARTIST:
albums.sort(Comparator.comparing(AlbumID3::getArtist)); albums.sort(Comparator.comparing(AlbumID3::getArtist));
break; break;
case Album.ORDER_BY_YEAR: case Constants.ALBUM_ORDER_BY_YEAR:
albums.sort(Comparator.comparing(AlbumID3::getYear)); albums.sort(Comparator.comparing(AlbumID3::getYear));
break; break;
case Album.ORDER_BY_RANDOM: case Constants.ALBUM_ORDER_BY_RANDOM:
Collections.shuffle(albums); Collections.shuffle(albums);
break; break;
} }

View file

@ -13,6 +13,7 @@ import com.cappielloantonio.play.databinding.ItemHorizontalAlbumBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.subsonic.models.AlbumID3; import com.cappielloantonio.play.subsonic.models.AlbumID3;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import java.util.Collections; import java.util.Collections;
@ -83,14 +84,14 @@ public class AlbumHorizontalAdapter extends RecyclerView.Adapter<AlbumHorizontal
private void onClick() { private void onClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("album_object", albums.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.ALBUM_OBJECT, albums.get(getBindingAdapterPosition()));
click.onAlbumClick(bundle); click.onAlbumClick(bundle);
} }
private boolean onLongClick() { private boolean onLongClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("album_object", albums.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.ALBUM_OBJECT, albums.get(getBindingAdapterPosition()));
click.onAlbumLongClick(bundle); click.onAlbumLongClick(bundle);

View file

@ -14,6 +14,7 @@ import com.cappielloantonio.play.databinding.ItemLibraryArtistBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.subsonic.models.ArtistID3; import com.cappielloantonio.play.subsonic.models.ArtistID3;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import java.util.Collections; import java.util.Collections;
@ -94,7 +95,7 @@ public class ArtistAdapter extends RecyclerView.Adapter<ArtistAdapter.ViewHolder
public void onClick() { public void onClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("artist_object", artists.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.ARTIST_OBJECT, artists.get(getBindingAdapterPosition()));
bundle.putBoolean("is_mix", mix); bundle.putBoolean("is_mix", mix);
bundle.putBoolean("is_best_of", bestOf); bundle.putBoolean("is_best_of", bestOf);
@ -103,7 +104,7 @@ public class ArtistAdapter extends RecyclerView.Adapter<ArtistAdapter.ViewHolder
public boolean onLongClick() { public boolean onLongClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("artist_object", artists.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.ARTIST_OBJECT, artists.get(getBindingAdapterPosition()));
click.onArtistLongClick(bundle); click.onArtistLongClick(bundle);

View file

@ -14,8 +14,8 @@ import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.cappielloantonio.play.databinding.ItemLibraryCatalogueArtistBinding; import com.cappielloantonio.play.databinding.ItemLibraryCatalogueArtistBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Artist;
import com.cappielloantonio.play.subsonic.models.ArtistID3; import com.cappielloantonio.play.subsonic.models.ArtistID3;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import java.util.ArrayList; import java.util.ArrayList;
@ -131,14 +131,14 @@ public class ArtistCatalogueAdapter extends RecyclerView.Adapter<ArtistCatalogue
public void onClick() { public void onClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("artist_object", artists.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.ARTIST_OBJECT, artists.get(getBindingAdapterPosition()));
click.onArtistClick(bundle); click.onArtistClick(bundle);
} }
public boolean onLongClick() { public boolean onLongClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("artist_object", artists.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.ARTIST_OBJECT, artists.get(getBindingAdapterPosition()));
click.onArtistLongClick(bundle); click.onArtistLongClick(bundle);
@ -148,10 +148,10 @@ public class ArtistCatalogueAdapter extends RecyclerView.Adapter<ArtistCatalogue
public void sort(String order) { public void sort(String order) {
switch (order) { switch (order) {
case Artist.ORDER_BY_NAME: case Constants.ARTIST_ORDER_BY_NAME:
artists.sort(Comparator.comparing(ArtistID3::getName)); artists.sort(Comparator.comparing(ArtistID3::getName));
break; break;
case Artist.ORDER_BY_RANDOM: case Constants.ARTIST_ORDER_BY_RANDOM:
Collections.shuffle(artists); Collections.shuffle(artists);
break; break;
} }

View file

@ -14,6 +14,7 @@ import com.cappielloantonio.play.databinding.ItemHorizontalArtistBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.subsonic.models.ArtistID3; import com.cappielloantonio.play.subsonic.models.ArtistID3;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import java.util.Collections; import java.util.Collections;
@ -97,14 +98,14 @@ public class ArtistHorizontalAdapter extends RecyclerView.Adapter<ArtistHorizont
private void onClick() { private void onClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("artist_object", artists.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.ARTIST_OBJECT, artists.get(getBindingAdapterPosition()));
click.onArtistClick(bundle); click.onArtistClick(bundle);
} }
public boolean onLongClick() { public boolean onLongClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("artist_object", artists.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.ARTIST_OBJECT, artists.get(getBindingAdapterPosition()));
click.onArtistLongClick(bundle); click.onArtistLongClick(bundle);

View file

@ -13,6 +13,7 @@ import com.cappielloantonio.play.databinding.ItemLibrarySimilarArtistBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.subsonic.models.SimilarArtistID3; import com.cappielloantonio.play.subsonic.models.SimilarArtistID3;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import java.util.Collections; import java.util.Collections;
@ -88,14 +89,14 @@ public class ArtistSimilarAdapter extends RecyclerView.Adapter<ArtistSimilarAdap
public void onClick() { public void onClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("artist_object", artists.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.ARTIST_OBJECT, artists.get(getBindingAdapterPosition()));
click.onArtistClick(bundle); click.onArtistClick(bundle);
} }
public boolean onLongClick() { public boolean onLongClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("artist_object", artists.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.ARTIST_OBJECT, artists.get(getBindingAdapterPosition()));
click.onArtistLongClick(bundle); click.onArtistLongClick(bundle);

View file

@ -12,6 +12,7 @@ import com.cappielloantonio.play.databinding.ItemHomeDiscoverSongBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.subsonic.models.Child; import com.cappielloantonio.play.subsonic.models.Child;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import java.util.Collections; import java.util.Collections;
@ -76,7 +77,7 @@ public class DiscoverSongAdapter extends RecyclerView.Adapter<DiscoverSongAdapte
public void onClick() { public void onClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("song_object", songs.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.TRACK_OBJECT, songs.get(getBindingAdapterPosition()));
bundle.putBoolean("is_mix", true); bundle.putBoolean("is_mix", true);
click.onMediaClick(bundle); click.onMediaClick(bundle);

View file

@ -13,6 +13,7 @@ import com.cappielloantonio.play.R;
import com.cappielloantonio.play.databinding.ItemHorizontalDownloadBinding; import com.cappielloantonio.play.databinding.ItemHorizontalDownloadBinding;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.subsonic.models.Child; import com.cappielloantonio.play.subsonic.models.Child;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import java.util.ArrayList; import java.util.ArrayList;
@ -86,15 +87,15 @@ public class DownloadHorizontalAdapter extends RecyclerView.Adapter<DownloadHori
public void onClick() { public void onClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelableArrayList("songs_object", new ArrayList<>(songs)); bundle.putParcelableArrayList(Constants.TRACKS_OBJECT, new ArrayList<>(songs));
bundle.putInt("position", getBindingAdapterPosition()); bundle.putInt(Constants.ITEM_POSITION, getBindingAdapterPosition());
click.onMediaClick(bundle); click.onMediaClick(bundle);
} }
private boolean onLongClick() { private boolean onLongClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("song_object", songs.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.TRACK_OBJECT, songs.get(getBindingAdapterPosition()));
click.onMediaLongClick(bundle); click.onMediaLongClick(bundle);

View file

@ -9,8 +9,8 @@ import androidx.recyclerview.widget.RecyclerView;
import com.cappielloantonio.play.databinding.ItemLibraryGenreBinding; import com.cappielloantonio.play.databinding.ItemLibraryGenreBinding;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Media;
import com.cappielloantonio.play.subsonic.models.Genre; import com.cappielloantonio.play.subsonic.models.Genre;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import java.util.Collections; import java.util.Collections;
@ -67,8 +67,8 @@ public class GenreAdapter extends RecyclerView.Adapter<GenreAdapter.ViewHolder>
private void onClick() { private void onClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putString(Media.BY_GENRE, Media.BY_GENRE); bundle.putString(Constants.MEDIA_BY_GENRES, Constants.MEDIA_BY_GENRE);
bundle.putParcelable("genre_object", genres.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.GENRE_OBJECT, genres.get(getBindingAdapterPosition()));
click.onGenreClick(bundle); click.onGenreClick(bundle);
} }

View file

@ -11,8 +11,8 @@ import androidx.recyclerview.widget.RecyclerView;
import com.cappielloantonio.play.databinding.ItemLibraryCatalogueGenreBinding; import com.cappielloantonio.play.databinding.ItemLibraryCatalogueGenreBinding;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Media;
import com.cappielloantonio.play.subsonic.models.Genre; import com.cappielloantonio.play.subsonic.models.Genre;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import java.util.ArrayList; import java.util.ArrayList;
@ -106,8 +106,8 @@ public class GenreCatalogueAdapter extends RecyclerView.Adapter<GenreCatalogueAd
itemView.setOnClickListener(v -> { itemView.setOnClickListener(v -> {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putString(Media.BY_GENRE, Media.BY_GENRE); bundle.putString(Constants.MEDIA_BY_GENRE, Constants.MEDIA_BY_GENRE);
bundle.putParcelable("genre_object", genres.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.GENRE_OBJECT, genres.get(getBindingAdapterPosition()));
click.onGenreClick(bundle); click.onGenreClick(bundle);
}); });
@ -116,10 +116,10 @@ public class GenreCatalogueAdapter extends RecyclerView.Adapter<GenreCatalogueAd
public void sort(String order) { public void sort(String order) {
switch (order) { switch (order) {
case com.cappielloantonio.play.model.Genre.ORDER_BY_NAME: case Constants.GENRE_ORDER_BY_NAME:
genres.sort(Comparator.comparing(Genre::getGenre)); genres.sort(Comparator.comparing(Genre::getGenre));
break; break;
case com.cappielloantonio.play.model.Genre.ORDER_BY_RANDOM: case Constants.GENRE_ORDER_BY_RANDOM:
Collections.shuffle(genres); Collections.shuffle(genres);
break; break;
} }

View file

@ -13,6 +13,7 @@ import com.cappielloantonio.play.databinding.ItemHomeGridTrackBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Chronology; import com.cappielloantonio.play.model.Chronology;
import com.cappielloantonio.play.util.Constants;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@ -73,9 +74,9 @@ public class GridTrackAdapter extends RecyclerView.Adapter<GridTrackAdapter.View
public void onClick() { public void onClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelableArrayList("songs_object", new ArrayList<>(items)); bundle.putParcelableArrayList(Constants.TRACKS_OBJECT, new ArrayList<>(items));
bundle.putBoolean("is_chronology", true); bundle.putBoolean("is_chronology", true);
bundle.putInt("position", getBindingAdapterPosition()); bundle.putInt(Constants.ITEM_POSITION, getBindingAdapterPosition());
click.onMediaClick(bundle); click.onMediaClick(bundle);
} }

View file

@ -17,6 +17,7 @@ import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.service.MediaManager; import com.cappielloantonio.play.service.MediaManager;
import com.cappielloantonio.play.subsonic.models.Child; import com.cappielloantonio.play.subsonic.models.Child;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListenableFuture;
@ -98,8 +99,8 @@ public class PlayerSongQueueAdapter extends RecyclerView.Adapter<PlayerSongQueue
public void onClick() { public void onClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelableArrayList("songs_object", new ArrayList<>(songs)); bundle.putParcelableArrayList(Constants.TRACKS_OBJECT, new ArrayList<>(songs));
bundle.putInt("position", getBindingAdapterPosition()); bundle.putInt(Constants.ITEM_POSITION, getBindingAdapterPosition());
click.onMediaClick(bundle); click.onMediaClick(bundle);
} }

View file

@ -11,6 +11,7 @@ import com.cappielloantonio.play.R;
import com.cappielloantonio.play.databinding.ItemHorizontalPlaylistDialogBinding; import com.cappielloantonio.play.databinding.ItemHorizontalPlaylistDialogBinding;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.subsonic.models.Playlist; import com.cappielloantonio.play.subsonic.models.Playlist;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import java.util.Collections; import java.util.Collections;
@ -71,7 +72,7 @@ public class PlaylistDialogHorizontalAdapter extends RecyclerView.Adapter<Playli
public void onClick() { public void onClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("playlist_object", playlists.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.PLAYLIST_OBJECT, playlists.get(getBindingAdapterPosition()));
click.onPlaylistClick(bundle); click.onPlaylistClick(bundle);
} }

View file

@ -13,6 +13,7 @@ import com.cappielloantonio.play.R;
import com.cappielloantonio.play.databinding.ItemHorizontalPlaylistBinding; import com.cappielloantonio.play.databinding.ItemHorizontalPlaylistBinding;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.subsonic.models.Playlist; import com.cappielloantonio.play.subsonic.models.Playlist;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import java.util.ArrayList; import java.util.ArrayList;
@ -114,14 +115,14 @@ public class PlaylistHorizontalAdapter extends RecyclerView.Adapter<PlaylistHori
public void onClick() { public void onClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("playlist_object", playlists.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.PLAYLIST_OBJECT, playlists.get(getBindingAdapterPosition()));
click.onPlaylistClick(bundle); click.onPlaylistClick(bundle);
} }
public boolean onLongClick() { public boolean onLongClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("playlist_object", playlists.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.PLAYLIST_OBJECT, playlists.get(getBindingAdapterPosition()));
click.onPlaylistLongClick(bundle); click.onPlaylistLongClick(bundle);
@ -131,10 +132,10 @@ public class PlaylistHorizontalAdapter extends RecyclerView.Adapter<PlaylistHori
public void sort(String order) { public void sort(String order) {
switch (order) { switch (order) {
case com.cappielloantonio.play.model.Playlist.ORDER_BY_NAME: case Constants.PLAYLIST_ORDER_BY_NAME:
playlists.sort(Comparator.comparing(Playlist::getName)); playlists.sort(Comparator.comparing(Playlist::getName));
break; break;
case com.cappielloantonio.play.model.Playlist.ORDER_BY_RANDOM: case Constants.PLAYLIST_ORDER_BY_RANDOM:
Collections.shuffle(playlists); Collections.shuffle(playlists);
break; break;
} }

View file

@ -13,6 +13,7 @@ import com.cappielloantonio.play.databinding.ItemHomeSimilarTrackBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.subsonic.models.Child; import com.cappielloantonio.play.subsonic.models.Child;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import java.util.Collections; import java.util.Collections;
@ -76,7 +77,7 @@ public class SimilarTrackAdapter extends RecyclerView.Adapter<SimilarTrackAdapte
public void onClick() { public void onClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("song_object", songs.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.TRACK_OBJECT, songs.get(getBindingAdapterPosition()));
bundle.putBoolean("is_mix", true); bundle.putBoolean("is_mix", true);
click.onMediaClick(bundle); click.onMediaClick(bundle);
@ -84,7 +85,7 @@ public class SimilarTrackAdapter extends RecyclerView.Adapter<SimilarTrackAdapte
public boolean onLongClick() { public boolean onLongClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("song_object", songs.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.TRACK_OBJECT, songs.get(getBindingAdapterPosition()));
click.onMediaLongClick(bundle); click.onMediaLongClick(bundle);

View file

@ -16,6 +16,7 @@ import com.cappielloantonio.play.databinding.ItemHorizontalTrackBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.subsonic.models.Child; import com.cappielloantonio.play.subsonic.models.Child;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.DownloadUtil; import com.cappielloantonio.play.util.DownloadUtil;
import com.cappielloantonio.play.util.MappingUtil; import com.cappielloantonio.play.util.MappingUtil;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
@ -106,15 +107,15 @@ public class SongHorizontalAdapter extends RecyclerView.Adapter<SongHorizontalAd
public void onClick() { public void onClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelableArrayList("songs_object", new ArrayList<>(songs)); bundle.putParcelableArrayList(Constants.TRACKS_OBJECT, new ArrayList<>(songs));
bundle.putInt("position", getBindingAdapterPosition()); bundle.putInt(Constants.ITEM_POSITION, getBindingAdapterPosition());
click.onMediaClick(bundle); click.onMediaClick(bundle);
} }
private boolean onLongClick() { private boolean onLongClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("song_object", songs.get(getBindingAdapterPosition())); bundle.putParcelable(Constants.TRACK_OBJECT, songs.get(getBindingAdapterPosition()));
click.onMediaLongClick(bundle); click.onMediaLongClick(bundle);

View file

@ -9,7 +9,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.cappielloantonio.play.databinding.ItemHomeYearBinding; import com.cappielloantonio.play.databinding.ItemHomeYearBinding;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Media; import com.cappielloantonio.play.util.Constants;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@ -65,7 +65,7 @@ public class YearAdapter extends RecyclerView.Adapter<YearAdapter.ViewHolder> {
public void onClick() { public void onClick() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putString(Media.BY_YEAR, Media.BY_YEAR); bundle.putString(Constants.MEDIA_BY_YEAR, Constants.MEDIA_BY_YEAR);
bundle.putInt("year_object", years.get(getBindingAdapterPosition())); bundle.putInt("year_object", years.get(getBindingAdapterPosition()));
click.onYearClick(bundle); click.onYearClick(bundle);

View file

@ -12,10 +12,11 @@ import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import com.cappielloantonio.play.R; import com.cappielloantonio.play.R;
import com.cappielloantonio.play.ui.adapter.PlaylistDialogHorizontalAdapter;
import com.cappielloantonio.play.databinding.DialogPlaylistChooserBinding; import com.cappielloantonio.play.databinding.DialogPlaylistChooserBinding;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.subsonic.models.Playlist; import com.cappielloantonio.play.subsonic.models.Playlist;
import com.cappielloantonio.play.ui.adapter.PlaylistDialogHorizontalAdapter;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.viewmodel.PlaylistChooserViewModel; import com.cappielloantonio.play.viewmodel.PlaylistChooserViewModel;
import java.util.Objects; import java.util.Objects;
@ -59,13 +60,13 @@ public class PlaylistChooserDialog extends DialogFragment implements ClickCallba
} }
private void setSongInfo() { private void setSongInfo() {
playlistChooserViewModel.setSongToAdd(requireArguments().getParcelable("song_object")); playlistChooserViewModel.setSongToAdd(requireArguments().getParcelable(Constants.TRACK_OBJECT));
} }
private void setButtonAction() { private void setButtonAction() {
((AlertDialog) Objects.requireNonNull(getDialog())).getButton(AlertDialog.BUTTON_NEUTRAL).setOnClickListener(v -> { ((AlertDialog) Objects.requireNonNull(getDialog())).getButton(AlertDialog.BUTTON_NEUTRAL).setOnClickListener(v -> {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("song_object", playlistChooserViewModel.getSongToAdd()); bundle.putParcelable(Constants.TRACK_OBJECT, playlistChooserViewModel.getSongToAdd());
PlaylistEditorDialog dialog = new PlaylistEditorDialog(); PlaylistEditorDialog dialog = new PlaylistEditorDialog();
dialog.setArguments(bundle); dialog.setArguments(bundle);
@ -98,7 +99,7 @@ public class PlaylistChooserDialog extends DialogFragment implements ClickCallba
@Override @Override
public void onPlaylistClick(Bundle bundle) { public void onPlaylistClick(Bundle bundle) {
Playlist playlist = bundle.getParcelable("playlist_object"); Playlist playlist = bundle.getParcelable(Constants.PLAYLIST_OBJECT);
playlistChooserViewModel.addSongToPlaylist(playlist.getId()); playlistChooserViewModel.addSongToPlaylist(playlist.getId());
dismiss(); dismiss();
} }

View file

@ -14,8 +14,9 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.cappielloantonio.play.R; import com.cappielloantonio.play.R;
import com.cappielloantonio.play.ui.adapter.PlaylistDialogSongHorizontalAdapter;
import com.cappielloantonio.play.databinding.DialogPlaylistEditorBinding; import com.cappielloantonio.play.databinding.DialogPlaylistEditorBinding;
import com.cappielloantonio.play.ui.adapter.PlaylistDialogSongHorizontalAdapter;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.viewmodel.PlaylistEditorViewModel; import com.cappielloantonio.play.viewmodel.PlaylistEditorViewModel;
@ -63,12 +64,12 @@ public class PlaylistEditorDialog extends DialogFragment {
} }
private void setParameterInfo() { private void setParameterInfo() {
if (requireArguments().getParcelable("song_object") != null) { if (requireArguments().getParcelable(Constants.TRACK_OBJECT) != null) {
playlistEditorViewModel.setSongToAdd(requireArguments().getParcelable("song_object")); playlistEditorViewModel.setSongToAdd(requireArguments().getParcelable(Constants.TRACK_OBJECT));
playlistEditorViewModel.setPlaylistToEdit(null); playlistEditorViewModel.setPlaylistToEdit(null);
} else if (requireArguments().getParcelable("playlist_object") != null) { } else if (requireArguments().getParcelable(Constants.PLAYLIST_OBJECT) != null) {
playlistEditorViewModel.setSongToAdd(null); playlistEditorViewModel.setSongToAdd(null);
playlistEditorViewModel.setPlaylistToEdit(requireArguments().getParcelable("playlist_object")); playlistEditorViewModel.setPlaylistToEdit(requireArguments().getParcelable(Constants.PLAYLIST_OBJECT));
if (playlistEditorViewModel.getPlaylistToEdit() != null) { if (playlistEditorViewModel.getPlaylistToEdit() != null) {
bind.playlistNameTextView.setText(MusicUtil.getReadableString(playlistEditorViewModel.getPlaylistToEdit().getName())); bind.playlistNameTextView.setText(MusicUtil.getReadableString(playlistEditorViewModel.getPlaylistToEdit().getName()));

View file

@ -11,6 +11,7 @@ import androidx.lifecycle.ViewModelProvider;
import com.cappielloantonio.play.R; import com.cappielloantonio.play.R;
import com.cappielloantonio.play.databinding.DialogRatingBinding; import com.cappielloantonio.play.databinding.DialogRatingBinding;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.viewmodel.RatingViewModel; import com.cappielloantonio.play.viewmodel.RatingViewModel;
public class RatingDialog extends DialogFragment { public class RatingDialog extends DialogFragment {
@ -50,12 +51,12 @@ public class RatingDialog extends DialogFragment {
} }
private void setElementInfo() { private void setElementInfo() {
if (requireArguments().getParcelable("song_object") != null) { if (requireArguments().getParcelable(Constants.TRACK_OBJECT) != null) {
ratingViewModel.setSong(requireArguments().getParcelable("song_object")); ratingViewModel.setSong(requireArguments().getParcelable(Constants.TRACK_OBJECT));
} else if (requireArguments().getParcelable("album_object") != null) { } else if (requireArguments().getParcelable(Constants.ALBUM_OBJECT) != null) {
ratingViewModel.setAlbum(requireArguments().getParcelable("album_object")); ratingViewModel.setAlbum(requireArguments().getParcelable(Constants.ALBUM_OBJECT));
} else if (requireArguments().getParcelable("artist_object") != null) { } else if (requireArguments().getParcelable(Constants.ARTIST_OBJECT) != null) {
ratingViewModel.setArtist(requireArguments().getParcelable("artist_object")); ratingViewModel.setArtist(requireArguments().getParcelable(Constants.ARTIST_OBJECT));
} }
} }

View file

@ -29,9 +29,9 @@ import com.cappielloantonio.play.R;
import com.cappielloantonio.play.databinding.FragmentAlbumCatalogueBinding; import com.cappielloantonio.play.databinding.FragmentAlbumCatalogueBinding;
import com.cappielloantonio.play.helper.recyclerview.GridItemDecoration; import com.cappielloantonio.play.helper.recyclerview.GridItemDecoration;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Album;
import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.adapter.AlbumCatalogueAdapter; import com.cappielloantonio.play.ui.adapter.AlbumCatalogueAdapter;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.viewmodel.AlbumCatalogueViewModel; import com.cappielloantonio.play.viewmodel.AlbumCatalogueViewModel;
@OptIn(markerClass = UnstableApi.class) @OptIn(markerClass = UnstableApi.class)
@ -154,16 +154,16 @@ public class AlbumCatalogueFragment extends Fragment implements ClickCallback {
popup.setOnMenuItemClickListener(menuItem -> { popup.setOnMenuItemClickListener(menuItem -> {
if (menuItem.getItemId() == R.id.menu_album_sort_name) { if (menuItem.getItemId() == R.id.menu_album_sort_name) {
albumAdapter.sort(Album.ORDER_BY_NAME); albumAdapter.sort(Constants.ALBUM_ORDER_BY_NAME);
return true; return true;
} else if (menuItem.getItemId() == R.id.menu_album_sort_artist) { } else if (menuItem.getItemId() == R.id.menu_album_sort_artist) {
albumAdapter.sort(Album.ORDER_BY_ARTIST); albumAdapter.sort(Constants.ALBUM_ORDER_BY_ARTIST);
return true; return true;
} else if (menuItem.getItemId() == R.id.menu_album_sort_year) { } else if (menuItem.getItemId() == R.id.menu_album_sort_year) {
albumAdapter.sort(Album.ORDER_BY_YEAR); albumAdapter.sort(Constants.ALBUM_ORDER_BY_YEAR);
return true; return true;
} else if (menuItem.getItemId() == R.id.menu_album_sort_random) { } else if (menuItem.getItemId() == R.id.menu_album_sort_random) {
albumAdapter.sort(Album.ORDER_BY_RANDOM); albumAdapter.sort(Constants.ALBUM_ORDER_BY_RANDOM);
return true; return true;
} }

View file

@ -15,11 +15,11 @@ import androidx.navigation.Navigation;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import com.cappielloantonio.play.R; import com.cappielloantonio.play.R;
import com.cappielloantonio.play.ui.adapter.AlbumHorizontalAdapter;
import com.cappielloantonio.play.databinding.FragmentAlbumListPageBinding; import com.cappielloantonio.play.databinding.FragmentAlbumListPageBinding;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Album;
import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.adapter.AlbumHorizontalAdapter;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.viewmodel.AlbumListPageViewModel; import com.cappielloantonio.play.viewmodel.AlbumListPageViewModel;
@ -53,27 +53,27 @@ public class AlbumListPageFragment extends Fragment implements ClickCallback {
} }
private void init() { private void init() {
if (requireArguments().getString(Album.RECENTLY_PLAYED) != null) { if (requireArguments().getString(Constants.ALBUM_RECENTLY_PLAYED) != null) {
albumListPageViewModel.title = Album.RECENTLY_PLAYED; albumListPageViewModel.title = Constants.ALBUM_RECENTLY_PLAYED;
bind.pageTitleLabel.setText(R.string.album_list_page_recently_played); bind.pageTitleLabel.setText(R.string.album_list_page_recently_played);
} else if (requireArguments().getString(Album.MOST_PLAYED) != null) { } else if (requireArguments().getString(Constants.ALBUM_MOST_PLAYED) != null) {
albumListPageViewModel.title = Album.MOST_PLAYED; albumListPageViewModel.title = Constants.ALBUM_MOST_PLAYED;
bind.pageTitleLabel.setText(R.string.album_list_page_most_played); bind.pageTitleLabel.setText(R.string.album_list_page_most_played);
} else if (requireArguments().getString(Album.RECENTLY_ADDED) != null) { } else if (requireArguments().getString(Constants.ALBUM_RECENTLY_ADDED) != null) {
albumListPageViewModel.title = Album.RECENTLY_ADDED; albumListPageViewModel.title = Constants.ALBUM_RECENTLY_ADDED;
bind.pageTitleLabel.setText(R.string.album_list_page_recently_added); bind.pageTitleLabel.setText(R.string.album_list_page_recently_added);
} else if (requireArguments().getString(Album.STARRED) != null) { } else if (requireArguments().getString(Constants.ALBUM_STARRED) != null) {
albumListPageViewModel.title = Album.STARRED; albumListPageViewModel.title = Constants.ALBUM_STARRED;
bind.pageTitleLabel.setText(R.string.album_list_page_starred); bind.pageTitleLabel.setText(R.string.album_list_page_starred);
} else if (requireArguments().getString(Album.NEW_RELEASES) != null) { } else if (requireArguments().getString(Constants.ALBUM_NEW_RELEASES) != null) {
albumListPageViewModel.title = Album.NEW_RELEASES; albumListPageViewModel.title = Constants.ALBUM_NEW_RELEASES;
bind.pageTitleLabel.setText(R.string.album_list_page_new_releases); bind.pageTitleLabel.setText(R.string.album_list_page_new_releases);
} else if (requireArguments().getString(Album.DOWNLOADED) != null) { } else if (requireArguments().getString(Constants.ALBUM_DOWNLOADED) != null) {
albumListPageViewModel.title = Album.DOWNLOADED; albumListPageViewModel.title = Constants.ALBUM_DOWNLOADED;
bind.pageTitleLabel.setText(R.string.album_list_page_downloaded); bind.pageTitleLabel.setText(R.string.album_list_page_downloaded);
} else if (requireArguments().getParcelable("artist_object") != null) { } else if (requireArguments().getParcelable(Constants.ARTIST_OBJECT) != null) {
albumListPageViewModel.artist = requireArguments().getParcelable("artist_object"); albumListPageViewModel.artist = requireArguments().getParcelable(Constants.ARTIST_OBJECT);
albumListPageViewModel.title = Album.FROM_ARTIST; albumListPageViewModel.title = Constants.ALBUM_FROM_ARTIST;
bind.pageTitleLabel.setText(MusicUtil.getReadableString(albumListPageViewModel.artist.getName())); bind.pageTitleLabel.setText(MusicUtil.getReadableString(albumListPageViewModel.artist.getName()));
} }
} }
@ -103,7 +103,7 @@ public class AlbumListPageFragment extends Fragment implements ClickCallback {
albumHorizontalAdapter = new AlbumHorizontalAdapter( albumHorizontalAdapter = new AlbumHorizontalAdapter(
this, this,
(albumListPageViewModel.title.equals(Album.DOWNLOADED) || albumListPageViewModel.title.equals(Album.FROM_ARTIST)) (albumListPageViewModel.title.equals(Constants.ALBUM_DOWNLOADED) || albumListPageViewModel.title.equals(Constants.ALBUM_FROM_ARTIST))
); );
bind.albumListRecyclerView.setAdapter(albumHorizontalAdapter); bind.albumListRecyclerView.setAdapter(albumHorizontalAdapter);

View file

@ -23,7 +23,6 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import com.bumptech.glide.load.resource.bitmap.CenterCrop; import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.cappielloantonio.play.R; import com.cappielloantonio.play.R;
import com.cappielloantonio.play.ui.adapter.SongHorizontalAdapter;
import com.cappielloantonio.play.databinding.FragmentAlbumPageBinding; import com.cappielloantonio.play.databinding.FragmentAlbumPageBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
@ -31,6 +30,8 @@ import com.cappielloantonio.play.model.Download;
import com.cappielloantonio.play.service.MediaManager; import com.cappielloantonio.play.service.MediaManager;
import com.cappielloantonio.play.service.MediaService; import com.cappielloantonio.play.service.MediaService;
import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.adapter.SongHorizontalAdapter;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.DownloadUtil; import com.cappielloantonio.play.util.DownloadUtil;
import com.cappielloantonio.play.util.MappingUtil; import com.cappielloantonio.play.util.MappingUtil;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
@ -116,7 +117,7 @@ public class AlbumPageFragment extends Fragment implements ClickCallback {
} }
private void init() { private void init() {
albumPageViewModel.setAlbum(requireArguments().getParcelable("album_object")); albumPageViewModel.setAlbum(requireArguments().getParcelable(Constants.ALBUM_OBJECT));
} }
private void initAppBar() { private void initAppBar() {
@ -142,7 +143,7 @@ public class AlbumPageFragment extends Fragment implements ClickCallback {
bind.albumArtistLabel.setOnClickListener(v -> albumPageViewModel.getArtist().observe(getViewLifecycleOwner(), artist -> { bind.albumArtistLabel.setOnClickListener(v -> albumPageViewModel.getArtist().observe(getViewLifecycleOwner(), artist -> {
if (artist != null) { if (artist != null) {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("artist_object", artist); bundle.putParcelable(Constants.ARTIST_OBJECT, artist);
activity.navController.navigate(R.id.action_albumPageFragment_to_artistPageFragment, bundle); activity.navController.navigate(R.id.action_albumPageFragment_to_artistPageFragment, bundle);
} else } else
Toast.makeText(requireContext(), getString(R.string.album_error_retrieving_artist), Toast.LENGTH_SHORT).show(); Toast.makeText(requireContext(), getString(R.string.album_error_retrieving_artist), Toast.LENGTH_SHORT).show();
@ -199,7 +200,7 @@ public class AlbumPageFragment extends Fragment implements ClickCallback {
@Override @Override
public void onMediaClick(Bundle bundle) { public void onMediaClick(Bundle bundle) {
MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), bundle.getParcelableArrayList("songs_object"), bundle.getInt("position")); MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), bundle.getParcelableArrayList(Constants.TRACKS_OBJECT), bundle.getInt(Constants.ITEM_POSITION));
activity.setBottomSheetInPeek(true); activity.setBottomSheetInPeek(true);
} }

View file

@ -25,12 +25,12 @@ import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.cappielloantonio.play.R; import com.cappielloantonio.play.R;
import com.cappielloantonio.play.ui.adapter.ArtistCatalogueAdapter;
import com.cappielloantonio.play.databinding.FragmentArtistCatalogueBinding; import com.cappielloantonio.play.databinding.FragmentArtistCatalogueBinding;
import com.cappielloantonio.play.helper.recyclerview.GridItemDecoration; import com.cappielloantonio.play.helper.recyclerview.GridItemDecoration;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Artist;
import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.adapter.ArtistCatalogueAdapter;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.viewmodel.ArtistCatalogueViewModel; import com.cappielloantonio.play.viewmodel.ArtistCatalogueViewModel;
@UnstableApi @UnstableApi
@ -153,10 +153,10 @@ public class ArtistCatalogueFragment extends Fragment implements ClickCallback {
popup.setOnMenuItemClickListener(menuItem -> { popup.setOnMenuItemClickListener(menuItem -> {
if (menuItem.getItemId() == R.id.menu_artist_sort_name) { if (menuItem.getItemId() == R.id.menu_artist_sort_name) {
artistAdapter.sort(Artist.ORDER_BY_NAME); artistAdapter.sort(Constants.ARTIST_ORDER_BY_NAME);
return true; return true;
} else if (menuItem.getItemId() == R.id.menu_artist_sort_random) { } else if (menuItem.getItemId() == R.id.menu_artist_sort_random) {
artistAdapter.sort(Artist.ORDER_BY_RANDOM); artistAdapter.sort(Constants.ARTIST_ORDER_BY_RANDOM);
return true; return true;
} }

View file

@ -14,11 +14,11 @@ import androidx.navigation.Navigation;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import com.cappielloantonio.play.R; import com.cappielloantonio.play.R;
import com.cappielloantonio.play.ui.adapter.ArtistHorizontalAdapter;
import com.cappielloantonio.play.databinding.FragmentArtistListPageBinding; import com.cappielloantonio.play.databinding.FragmentArtistListPageBinding;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Artist;
import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.adapter.ArtistHorizontalAdapter;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.viewmodel.ArtistListPageViewModel; import com.cappielloantonio.play.viewmodel.ArtistListPageViewModel;
@UnstableApi @UnstableApi
@ -52,11 +52,11 @@ public class ArtistListPageFragment extends Fragment implements ClickCallback {
} }
private void init() { private void init() {
if (requireArguments().getString(Artist.STARRED) != null) { if (requireArguments().getString(Constants.ARTIST_STARRED) != null) {
artistListPageViewModel.title = Artist.STARRED; artistListPageViewModel.title = Constants.ARTIST_STARRED;
bind.pageTitleLabel.setText(R.string.artist_list_page_starred); bind.pageTitleLabel.setText(R.string.artist_list_page_starred);
} else if (requireArguments().getString(Artist.DOWNLOADED) != null) { } else if (requireArguments().getString(Constants.ARTIST_DOWNLOADED) != null) {
artistListPageViewModel.title = Artist.DOWNLOADED; artistListPageViewModel.title = Constants.ARTIST_DOWNLOADED;
bind.pageTitleLabel.setText(R.string.artist_list_page_downloaded); bind.pageTitleLabel.setText(R.string.artist_list_page_downloaded);
} }
} }

View file

@ -23,13 +23,13 @@ import com.cappielloantonio.play.databinding.FragmentArtistPageBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.helper.recyclerview.CustomLinearSnapHelper; import com.cappielloantonio.play.helper.recyclerview.CustomLinearSnapHelper;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Media;
import com.cappielloantonio.play.service.MediaManager; import com.cappielloantonio.play.service.MediaManager;
import com.cappielloantonio.play.service.MediaService; import com.cappielloantonio.play.service.MediaService;
import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.adapter.AlbumArtistPageOrSimilarAdapter; import com.cappielloantonio.play.ui.adapter.AlbumArtistPageOrSimilarAdapter;
import com.cappielloantonio.play.ui.adapter.ArtistSimilarAdapter; import com.cappielloantonio.play.ui.adapter.ArtistSimilarAdapter;
import com.cappielloantonio.play.ui.adapter.SongHorizontalAdapter; import com.cappielloantonio.play.ui.adapter.SongHorizontalAdapter;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.viewmodel.ArtistPageViewModel; import com.cappielloantonio.play.viewmodel.ArtistPageViewModel;
import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListenableFuture;
@ -85,12 +85,12 @@ public class ArtistPageFragment extends Fragment implements ClickCallback {
} }
private void init() { private void init() {
artistPageViewModel.setArtist(requireArguments().getParcelable("artist_object")); artistPageViewModel.setArtist(requireArguments().getParcelable(Constants.ARTIST_OBJECT));
bind.mostStreamedSongTextViewClickable.setOnClickListener(v -> { bind.mostStreamedSongTextViewClickable.setOnClickListener(v -> {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putString(Media.BY_ARTIST, Media.BY_ARTIST); bundle.putString(Constants.MEDIA_BY_ARTIST, Constants.MEDIA_BY_ARTIST);
bundle.putParcelable("artist_object", artistPageViewModel.getArtist()); bundle.putParcelable(Constants.ARTIST_OBJECT, artistPageViewModel.getArtist());
activity.navController.navigate(R.id.action_artistPageFragment_to_songListPageFragment, bundle); activity.navController.navigate(R.id.action_artistPageFragment_to_songListPageFragment, bundle);
}); });
} }
@ -211,7 +211,7 @@ public class ArtistPageFragment extends Fragment implements ClickCallback {
@Override @Override
public void onMediaClick(Bundle bundle) { public void onMediaClick(Bundle bundle) {
MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), bundle.getParcelableArrayList("songs_object"), bundle.getInt("position")); MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), bundle.getParcelableArrayList(Constants.TRACKS_OBJECT), bundle.getInt(Constants.ITEM_POSITION));
activity.setBottomSheetInPeek(true); activity.setBottomSheetInPeek(true);
} }

View file

@ -20,12 +20,13 @@ import androidx.navigation.Navigation;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import com.cappielloantonio.play.R; import com.cappielloantonio.play.R;
import com.cappielloantonio.play.ui.adapter.DownloadHorizontalAdapter;
import com.cappielloantonio.play.databinding.FragmentDownloadBinding; import com.cappielloantonio.play.databinding.FragmentDownloadBinding;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.service.MediaManager; import com.cappielloantonio.play.service.MediaManager;
import com.cappielloantonio.play.service.MediaService; import com.cappielloantonio.play.service.MediaService;
import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.adapter.DownloadHorizontalAdapter;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.viewmodel.DownloadViewModel; import com.cappielloantonio.play.viewmodel.DownloadViewModel;
import com.google.android.gms.cast.framework.CastButtonFactory; import com.google.android.gms.cast.framework.CastButtonFactory;
import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListenableFuture;
@ -153,7 +154,7 @@ public class DownloadFragment extends Fragment implements ClickCallback {
@Override @Override
public void onMediaClick(Bundle bundle) { public void onMediaClick(Bundle bundle) {
MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), bundle.getParcelableArrayList("songs_object"), bundle.getInt("position")); MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), bundle.getParcelableArrayList(Constants.TRACKS_OBJECT), bundle.getInt(Constants.ITEM_POSITION));
activity.setBottomSheetInPeek(true); activity.setBottomSheetInPeek(true);
} }

View file

@ -16,9 +16,9 @@ import androidx.media3.common.util.UnstableApi;
import com.cappielloantonio.play.R; import com.cappielloantonio.play.R;
import com.cappielloantonio.play.databinding.FragmentFilterBinding; import com.cappielloantonio.play.databinding.FragmentFilterBinding;
import com.cappielloantonio.play.model.Media;
import com.cappielloantonio.play.subsonic.models.Genre; import com.cappielloantonio.play.subsonic.models.Genre;
import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.viewmodel.FilterViewModel; import com.cappielloantonio.play.viewmodel.FilterViewModel;
import com.google.android.material.chip.Chip; import com.google.android.material.chip.Chip;
@ -54,7 +54,7 @@ public class FilterFragment extends Fragment {
private void init() { private void init() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putString(Media.BY_GENRES, Media.BY_GENRES); bundle.putString(Constants.MEDIA_BY_GENRES, Constants.MEDIA_BY_GENRES);
bundle.putStringArrayList("filters_list", filterViewModel.getFilters()); bundle.putStringArrayList("filters_list", filterViewModel.getFilters());
bundle.putStringArrayList("filter_name_list", filterViewModel.getFilterNames()); bundle.putStringArrayList("filter_name_list", filterViewModel.getFilterNames());
bind.finishFilteringTextViewClickable.setOnClickListener(v -> { bind.finishFilteringTextViewClickable.setOnClickListener(v -> {

View file

@ -26,12 +26,12 @@ import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.cappielloantonio.play.R; import com.cappielloantonio.play.R;
import com.cappielloantonio.play.ui.adapter.GenreCatalogueAdapter;
import com.cappielloantonio.play.databinding.FragmentGenreCatalogueBinding; import com.cappielloantonio.play.databinding.FragmentGenreCatalogueBinding;
import com.cappielloantonio.play.helper.recyclerview.GridItemDecoration; import com.cappielloantonio.play.helper.recyclerview.GridItemDecoration;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Genre;
import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.adapter.GenreCatalogueAdapter;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.viewmodel.GenreCatalogueViewModel; import com.cappielloantonio.play.viewmodel.GenreCatalogueViewModel;
@OptIn(markerClass = UnstableApi.class) @OptIn(markerClass = UnstableApi.class)
@ -151,10 +151,10 @@ public class GenreCatalogueFragment extends Fragment implements ClickCallback {
popup.setOnMenuItemClickListener(menuItem -> { popup.setOnMenuItemClickListener(menuItem -> {
if (menuItem.getItemId() == R.id.menu_genre_sort_name) { if (menuItem.getItemId() == R.id.menu_genre_sort_name) {
genreCatalogueAdapter.sort(Genre.ORDER_BY_NAME); genreCatalogueAdapter.sort(Constants.GENRE_ORDER_BY_NAME);
return true; return true;
} else if (menuItem.getItemId() == R.id.menu_genre_sort_random) { } else if (menuItem.getItemId() == R.id.menu_genre_sort_random) {
genreCatalogueAdapter.sort(Genre.ORDER_BY_RANDOM); genreCatalogueAdapter.sort(Constants.GENRE_ORDER_BY_RANDOM);
return true; return true;
} }

View file

@ -27,6 +27,16 @@ import androidx.recyclerview.widget.SnapHelper;
import androidx.viewpager2.widget.ViewPager2; import androidx.viewpager2.widget.ViewPager2;
import com.cappielloantonio.play.R; import com.cappielloantonio.play.R;
import com.cappielloantonio.play.databinding.FragmentHomeBinding;
import com.cappielloantonio.play.helper.recyclerview.CustomLinearSnapHelper;
import com.cappielloantonio.play.helper.recyclerview.DotsIndicatorDecoration;
import com.cappielloantonio.play.helper.recyclerview.GridItemDecoration;
import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.service.MediaManager;
import com.cappielloantonio.play.service.MediaService;
import com.cappielloantonio.play.subsonic.models.Child;
import com.cappielloantonio.play.subsonic.models.Playlist;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.adapter.AlbumAdapter; import com.cappielloantonio.play.ui.adapter.AlbumAdapter;
import com.cappielloantonio.play.ui.adapter.AlbumHorizontalAdapter; import com.cappielloantonio.play.ui.adapter.AlbumHorizontalAdapter;
import com.cappielloantonio.play.ui.adapter.ArtistAdapter; import com.cappielloantonio.play.ui.adapter.ArtistAdapter;
@ -37,19 +47,7 @@ import com.cappielloantonio.play.ui.adapter.PodcastEpisodeAdapter;
import com.cappielloantonio.play.ui.adapter.SimilarTrackAdapter; import com.cappielloantonio.play.ui.adapter.SimilarTrackAdapter;
import com.cappielloantonio.play.ui.adapter.SongHorizontalAdapter; import com.cappielloantonio.play.ui.adapter.SongHorizontalAdapter;
import com.cappielloantonio.play.ui.adapter.YearAdapter; import com.cappielloantonio.play.ui.adapter.YearAdapter;
import com.cappielloantonio.play.databinding.FragmentHomeBinding; import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.helper.recyclerview.CustomLinearSnapHelper;
import com.cappielloantonio.play.helper.recyclerview.DotsIndicatorDecoration;
import com.cappielloantonio.play.helper.recyclerview.GridItemDecoration;
import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Album;
import com.cappielloantonio.play.model.Artist;
import com.cappielloantonio.play.model.Media;
import com.cappielloantonio.play.service.MediaManager;
import com.cappielloantonio.play.service.MediaService;
import com.cappielloantonio.play.subsonic.models.Child;
import com.cappielloantonio.play.subsonic.models.Playlist;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.util.UIUtil; import com.cappielloantonio.play.util.UIUtil;
import com.cappielloantonio.play.viewmodel.HomeViewModel; import com.cappielloantonio.play.viewmodel.HomeViewModel;
@ -191,37 +189,37 @@ public class HomeFragment extends Fragment implements ClickCallback {
bind.starredTracksTextViewClickable.setOnClickListener(v -> { bind.starredTracksTextViewClickable.setOnClickListener(v -> {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putString(Media.STARRED, Media.STARRED); bundle.putString(Constants.MEDIA_STARRED, Constants.MEDIA_STARRED);
activity.navController.navigate(R.id.action_homeFragment_to_songListPageFragment, bundle); activity.navController.navigate(R.id.action_homeFragment_to_songListPageFragment, bundle);
}); });
bind.starredAlbumsTextViewClickable.setOnClickListener(v -> { bind.starredAlbumsTextViewClickable.setOnClickListener(v -> {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putString(Album.STARRED, Album.STARRED); bundle.putString(Constants.ALBUM_STARRED, Constants.ALBUM_STARRED);
activity.navController.navigate(R.id.action_homeFragment_to_albumListPageFragment, bundle); activity.navController.navigate(R.id.action_homeFragment_to_albumListPageFragment, bundle);
}); });
bind.starredArtistsTextViewClickable.setOnClickListener(v -> { bind.starredArtistsTextViewClickable.setOnClickListener(v -> {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putString(Artist.STARRED, Artist.STARRED); bundle.putString(Constants.ARTIST_STARRED, Constants.ARTIST_STARRED);
activity.navController.navigate(R.id.action_homeFragment_to_artistListPageFragment, bundle); activity.navController.navigate(R.id.action_homeFragment_to_artistListPageFragment, bundle);
}); });
bind.recentlyAddedAlbumsTextViewClickable.setOnClickListener(v -> { bind.recentlyAddedAlbumsTextViewClickable.setOnClickListener(v -> {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putString(Album.RECENTLY_ADDED, Album.RECENTLY_ADDED); bundle.putString(Constants.ALBUM_RECENTLY_ADDED, Constants.ALBUM_RECENTLY_ADDED);
activity.navController.navigate(R.id.action_homeFragment_to_albumListPageFragment, bundle); activity.navController.navigate(R.id.action_homeFragment_to_albumListPageFragment, bundle);
}); });
bind.recentlyPlayedAlbumsTextViewClickable.setOnClickListener(v -> { bind.recentlyPlayedAlbumsTextViewClickable.setOnClickListener(v -> {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putString(Album.RECENTLY_PLAYED, Album.RECENTLY_PLAYED); bundle.putString(Constants.ALBUM_RECENTLY_PLAYED, Constants.ALBUM_RECENTLY_PLAYED);
activity.navController.navigate(R.id.action_homeFragment_to_albumListPageFragment, bundle); activity.navController.navigate(R.id.action_homeFragment_to_albumListPageFragment, bundle);
}); });
bind.mostPlayedAlbumsTextViewClickable.setOnClickListener(v -> { bind.mostPlayedAlbumsTextViewClickable.setOnClickListener(v -> {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putString(Album.MOST_PLAYED, Album.MOST_PLAYED); bundle.putString(Constants.ALBUM_MOST_PLAYED, Constants.ALBUM_MOST_PLAYED);
activity.navController.navigate(R.id.action_homeFragment_to_albumListPageFragment, bundle); activity.navController.navigate(R.id.action_homeFragment_to_albumListPageFragment, bundle);
}); });
@ -632,7 +630,7 @@ public class HomeFragment extends Fragment implements ClickCallback {
genericPlaylistCickableTextView.setOnClickListener(view -> { genericPlaylistCickableTextView.setOnClickListener(view -> {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("playlist_object", playlist); bundle.putParcelable(Constants.PLAYLIST_OBJECT, playlist);
bundle.putBoolean("is_offline", false); bundle.putBoolean("is_offline", false);
activity.navController.navigate(R.id.action_homeFragment_to_playlistPageFragment, bundle); activity.navController.navigate(R.id.action_homeFragment_to_playlistPageFragment, bundle);
}); });
@ -743,22 +741,22 @@ public class HomeFragment extends Fragment implements ClickCallback {
@Override @Override
public void onMediaClick(Bundle bundle) { public void onMediaClick(Bundle bundle) {
if (bundle.containsKey("is_mix")) { if (bundle.containsKey("is_mix")) {
MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), bundle.getParcelable("song_object")); MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), bundle.getParcelable(Constants.TRACK_OBJECT));
activity.setBottomSheetInPeek(true); activity.setBottomSheetInPeek(true);
if (mediaBrowserListenableFuture != null) { if (mediaBrowserListenableFuture != null) {
homeViewModel.getMediaInstantMix(getViewLifecycleOwner(), bundle.getParcelable("song_object")).observe(getViewLifecycleOwner(), songs -> { homeViewModel.getMediaInstantMix(getViewLifecycleOwner(), bundle.getParcelable(Constants.TRACK_OBJECT)).observe(getViewLifecycleOwner(), songs -> {
if (songs.size() > 0) { if (songs.size() > 0) {
MediaManager.enqueue(mediaBrowserListenableFuture, requireContext(), songs, true); MediaManager.enqueue(mediaBrowserListenableFuture, requireContext(), songs, true);
} }
}); });
} }
} else if (bundle.containsKey("is_chronology")) { } else if (bundle.containsKey("is_chronology")) {
List<Child> media = bundle.getParcelableArrayList("songs_object"); List<Child> media = bundle.getParcelableArrayList(Constants.TRACKS_OBJECT);
MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), media, bundle.getInt("position")); MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), media, bundle.getInt(Constants.ITEM_POSITION));
activity.setBottomSheetInPeek(true); activity.setBottomSheetInPeek(true);
} else { } else {
MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), bundle.getParcelableArrayList("songs_object"), bundle.getInt("position")); MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), bundle.getParcelableArrayList(Constants.TRACKS_OBJECT), bundle.getInt(Constants.ITEM_POSITION));
activity.setBottomSheetInPeek(true); activity.setBottomSheetInPeek(true);
} }
} }
@ -786,7 +784,7 @@ public class HomeFragment extends Fragment implements ClickCallback {
.show(); .show();
if (mediaBrowserListenableFuture != null) { if (mediaBrowserListenableFuture != null) {
homeViewModel.getArtistInstantMix(bundle.getParcelable("artist_object")).observe(getViewLifecycleOwner(), songs -> { homeViewModel.getArtistInstantMix(bundle.getParcelable(Constants.ARTIST_OBJECT)).observe(getViewLifecycleOwner(), songs -> {
if (songs.size() > 0) { if (songs.size() > 0) {
MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), songs, 0); MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), songs, 0);
activity.setBottomSheetInPeek(true); activity.setBottomSheetInPeek(true);
@ -795,7 +793,7 @@ public class HomeFragment extends Fragment implements ClickCallback {
} }
} else if (bundle.containsKey("is_best_of") && bundle.getBoolean("is_best_of")) { } else if (bundle.containsKey("is_best_of") && bundle.getBoolean("is_best_of")) {
if (mediaBrowserListenableFuture != null) { if (mediaBrowserListenableFuture != null) {
homeViewModel.getArtistBestOf(bundle.getParcelable("artist_object")).observe(getViewLifecycleOwner(), songs -> { homeViewModel.getArtistBestOf(bundle.getParcelable(Constants.ARTIST_OBJECT)).observe(getViewLifecycleOwner(), songs -> {
if (songs.size() > 0) { if (songs.size() > 0) {
MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), songs, 0); MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), songs, 0);
activity.setBottomSheetInPeek(true); activity.setBottomSheetInPeek(true);

View file

@ -18,16 +18,16 @@ import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import com.cappielloantonio.play.R; import com.cappielloantonio.play.R;
import com.cappielloantonio.play.databinding.FragmentLibraryBinding;
import com.cappielloantonio.play.helper.recyclerview.CustomLinearSnapHelper;
import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.adapter.AlbumAdapter; import com.cappielloantonio.play.ui.adapter.AlbumAdapter;
import com.cappielloantonio.play.ui.adapter.ArtistAdapter; import com.cappielloantonio.play.ui.adapter.ArtistAdapter;
import com.cappielloantonio.play.ui.adapter.GenreAdapter; import com.cappielloantonio.play.ui.adapter.GenreAdapter;
import com.cappielloantonio.play.ui.adapter.PlaylistHorizontalAdapter; import com.cappielloantonio.play.ui.adapter.PlaylistHorizontalAdapter;
import com.cappielloantonio.play.databinding.FragmentLibraryBinding;
import com.cappielloantonio.play.helper.recyclerview.CustomLinearSnapHelper;
import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Playlist;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.dialog.PlaylistEditorDialog; import com.cappielloantonio.play.ui.dialog.PlaylistEditorDialog;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.viewmodel.LibraryViewModel; import com.cappielloantonio.play.viewmodel.LibraryViewModel;
import com.google.android.gms.cast.framework.CastButtonFactory; import com.google.android.gms.cast.framework.CastButtonFactory;
@ -114,7 +114,7 @@ public class LibraryFragment extends Fragment implements ClickCallback {
bind.genreCatalogueTextViewClickable.setOnClickListener(v -> activity.navController.navigate(R.id.action_libraryFragment_to_genreCatalogueFragment)); bind.genreCatalogueTextViewClickable.setOnClickListener(v -> activity.navController.navigate(R.id.action_libraryFragment_to_genreCatalogueFragment));
bind.playlistCatalogueTextViewClickable.setOnClickListener(v -> { bind.playlistCatalogueTextViewClickable.setOnClickListener(v -> {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putString(Playlist.ALL, Playlist.ALL); bundle.putString(Constants.PLAYLIST_ALL, Constants.PLAYLIST_ALL);
activity.navController.navigate(R.id.action_libraryFragment_to_playlistCatalogueFragment, bundle); activity.navController.navigate(R.id.action_libraryFragment_to_playlistCatalogueFragment, bundle);
}); });

View file

@ -25,9 +25,9 @@ import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.cappielloantonio.play.R; import com.cappielloantonio.play.R;
import com.cappielloantonio.play.databinding.FragmentPlayerBottomSheetBinding; import com.cappielloantonio.play.databinding.FragmentPlayerBottomSheetBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.model.Media;
import com.cappielloantonio.play.service.MediaService; import com.cappielloantonio.play.service.MediaService;
import com.cappielloantonio.play.ui.fragment.pager.PlayerControllerVerticalPager; import com.cappielloantonio.play.ui.fragment.pager.PlayerControllerVerticalPager;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel; import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel;
import com.google.android.material.elevation.SurfaceColors; import com.google.android.material.elevation.SurfaceColors;
@ -159,13 +159,13 @@ public class PlayerBottomSheetFragment extends Fragment {
private void setMediaControllerUI(MediaBrowser mediaBrowser) { private void setMediaControllerUI(MediaBrowser mediaBrowser) {
if (mediaBrowser.getMediaMetadata().extras != null) { if (mediaBrowser.getMediaMetadata().extras != null) {
switch (mediaBrowser.getMediaMetadata().extras.getString("type", Media.MEDIA_TYPE_MUSIC)) { switch (mediaBrowser.getMediaMetadata().extras.getString("type", Constants.MEDIA_TYPE_MUSIC)) {
case Media.MEDIA_TYPE_PODCAST: case Constants.MEDIA_TYPE_PODCAST:
bind.playerHeaderLayout.playerHeaderFastForwardMediaButton.setVisibility(View.VISIBLE); bind.playerHeaderLayout.playerHeaderFastForwardMediaButton.setVisibility(View.VISIBLE);
bind.playerHeaderLayout.playerHeaderRewindMediaButton.setVisibility(View.VISIBLE); bind.playerHeaderLayout.playerHeaderRewindMediaButton.setVisibility(View.VISIBLE);
bind.playerHeaderLayout.playerHeaderNextMediaButton.setVisibility(View.GONE); bind.playerHeaderLayout.playerHeaderNextMediaButton.setVisibility(View.GONE);
break; break;
case Media.MEDIA_TYPE_MUSIC: case Constants.MEDIA_TYPE_MUSIC:
default: default:
bind.playerHeaderLayout.playerHeaderFastForwardMediaButton.setVisibility(View.GONE); bind.playerHeaderLayout.playerHeaderFastForwardMediaButton.setVisibility(View.GONE);
bind.playerHeaderLayout.playerHeaderRewindMediaButton.setVisibility(View.GONE); bind.playerHeaderLayout.playerHeaderRewindMediaButton.setVisibility(View.GONE);

View file

@ -25,11 +25,11 @@ import androidx.viewpager2.widget.ViewPager2;
import com.cappielloantonio.play.R; import com.cappielloantonio.play.R;
import com.cappielloantonio.play.databinding.InnerFragmentPlayerControllerBinding; import com.cappielloantonio.play.databinding.InnerFragmentPlayerControllerBinding;
import com.cappielloantonio.play.model.Media;
import com.cappielloantonio.play.service.MediaService; import com.cappielloantonio.play.service.MediaService;
import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.dialog.RatingDialog; import com.cappielloantonio.play.ui.dialog.RatingDialog;
import com.cappielloantonio.play.ui.fragment.pager.PlayerControllerHorizontalPager; import com.cappielloantonio.play.ui.fragment.pager.PlayerControllerHorizontalPager;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.util.Preferences; import com.cappielloantonio.play.util.Preferences;
import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel; import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel;
@ -190,8 +190,8 @@ public class PlayerControllerFragment extends Fragment {
initPlaybackSpeedButton(mediaBrowser); initPlaybackSpeedButton(mediaBrowser);
if (mediaBrowser.getMediaMetadata().extras != null) { if (mediaBrowser.getMediaMetadata().extras != null) {
switch (mediaBrowser.getMediaMetadata().extras.getString("type", Media.MEDIA_TYPE_MUSIC)) { switch (mediaBrowser.getMediaMetadata().extras.getString("type", Constants.MEDIA_TYPE_MUSIC)) {
case Media.MEDIA_TYPE_PODCAST: case Constants.MEDIA_TYPE_PODCAST:
bind.getRoot().setShowShuffleButton(false); bind.getRoot().setShowShuffleButton(false);
bind.getRoot().setShowRewindButton(true); bind.getRoot().setShowRewindButton(true);
bind.getRoot().setShowPreviousButton(false); bind.getRoot().setShowPreviousButton(false);
@ -202,7 +202,7 @@ public class PlayerControllerFragment extends Fragment {
bind.getRoot().findViewById(R.id.player_skip_silence_toggle_button).setVisibility(View.VISIBLE); bind.getRoot().findViewById(R.id.player_skip_silence_toggle_button).setVisibility(View.VISIBLE);
setPlaybackParameters(mediaBrowser); setPlaybackParameters(mediaBrowser);
break; break;
case Media.MEDIA_TYPE_MUSIC: case Constants.MEDIA_TYPE_MUSIC:
default: default:
bind.getRoot().setShowShuffleButton(true); bind.getRoot().setShowShuffleButton(true);
bind.getRoot().setShowRewindButton(false); bind.getRoot().setShowRewindButton(false);
@ -243,7 +243,7 @@ public class PlayerControllerFragment extends Fragment {
buttonFavorite.setOnClickListener(v -> playerBottomSheetViewModel.setFavorite(requireContext(), media)); buttonFavorite.setOnClickListener(v -> playerBottomSheetViewModel.setFavorite(requireContext(), media));
buttonFavorite.setOnLongClickListener(v -> { buttonFavorite.setOnLongClickListener(v -> {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("song_object", media); bundle.putParcelable(Constants.TRACK_OBJECT, media);
RatingDialog dialog = new RatingDialog(); RatingDialog dialog = new RatingDialog();
dialog.setArguments(bundle); dialog.setArguments(bundle);
@ -264,7 +264,7 @@ public class PlayerControllerFragment extends Fragment {
if (artist != null) { if (artist != null) {
playerArtistNameLabel.setOnClickListener(view -> { playerArtistNameLabel.setOnClickListener(view -> {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("artist_object", artist); bundle.putParcelable(Constants.ARTIST_OBJECT, artist);
NavHostFragment.findNavController(this).navigate(R.id.artistPageFragment, bundle); NavHostFragment.findNavController(this).navigate(R.id.artistPageFragment, bundle);
activity.collapseBottomSheet(); activity.collapseBottomSheet();
}); });
@ -276,30 +276,30 @@ public class PlayerControllerFragment extends Fragment {
playbackSpeedButton.setOnClickListener(view -> { playbackSpeedButton.setOnClickListener(view -> {
float currentSpeed = Preferences.getPlaybackSpeed(); float currentSpeed = Preferences.getPlaybackSpeed();
if (currentSpeed == Media.MEDIA_PLAYBACK_SPEED_080) { if (currentSpeed == Constants.MEDIA_PLAYBACK_SPEED_080) {
mediaBrowser.setPlaybackParameters(new PlaybackParameters(Media.MEDIA_PLAYBACK_SPEED_100)); mediaBrowser.setPlaybackParameters(new PlaybackParameters(Constants.MEDIA_PLAYBACK_SPEED_100));
playbackSpeedButton.setText(getString(R.string.player_playback_speed, Media.MEDIA_PLAYBACK_SPEED_100)); playbackSpeedButton.setText(getString(R.string.player_playback_speed, Constants.MEDIA_PLAYBACK_SPEED_100));
Preferences.setPlaybackSpeed(Media.MEDIA_PLAYBACK_SPEED_100); Preferences.setPlaybackSpeed(Constants.MEDIA_PLAYBACK_SPEED_100);
} else if (currentSpeed == Media.MEDIA_PLAYBACK_SPEED_100) { } else if (currentSpeed == Constants.MEDIA_PLAYBACK_SPEED_100) {
mediaBrowser.setPlaybackParameters(new PlaybackParameters(Media.MEDIA_PLAYBACK_SPEED_125)); mediaBrowser.setPlaybackParameters(new PlaybackParameters(Constants.MEDIA_PLAYBACK_SPEED_125));
playbackSpeedButton.setText(getString(R.string.player_playback_speed, Media.MEDIA_PLAYBACK_SPEED_125)); playbackSpeedButton.setText(getString(R.string.player_playback_speed, Constants.MEDIA_PLAYBACK_SPEED_125));
Preferences.setPlaybackSpeed(Media.MEDIA_PLAYBACK_SPEED_125); Preferences.setPlaybackSpeed(Constants.MEDIA_PLAYBACK_SPEED_125);
} else if (currentSpeed == Media.MEDIA_PLAYBACK_SPEED_125) { } else if (currentSpeed == Constants.MEDIA_PLAYBACK_SPEED_125) {
mediaBrowser.setPlaybackParameters(new PlaybackParameters(Media.MEDIA_PLAYBACK_SPEED_150)); mediaBrowser.setPlaybackParameters(new PlaybackParameters(Constants.MEDIA_PLAYBACK_SPEED_150));
playbackSpeedButton.setText(getString(R.string.player_playback_speed, Media.MEDIA_PLAYBACK_SPEED_150)); playbackSpeedButton.setText(getString(R.string.player_playback_speed, Constants.MEDIA_PLAYBACK_SPEED_150));
Preferences.setPlaybackSpeed(Media.MEDIA_PLAYBACK_SPEED_150); Preferences.setPlaybackSpeed(Constants.MEDIA_PLAYBACK_SPEED_150);
} else if (currentSpeed == Media.MEDIA_PLAYBACK_SPEED_150) { } else if (currentSpeed == Constants.MEDIA_PLAYBACK_SPEED_150) {
mediaBrowser.setPlaybackParameters(new PlaybackParameters(Media.MEDIA_PLAYBACK_SPEED_175)); mediaBrowser.setPlaybackParameters(new PlaybackParameters(Constants.MEDIA_PLAYBACK_SPEED_175));
playbackSpeedButton.setText(getString(R.string.player_playback_speed, Media.MEDIA_PLAYBACK_SPEED_175)); playbackSpeedButton.setText(getString(R.string.player_playback_speed, Constants.MEDIA_PLAYBACK_SPEED_175));
Preferences.setPlaybackSpeed(Media.MEDIA_PLAYBACK_SPEED_175); Preferences.setPlaybackSpeed(Constants.MEDIA_PLAYBACK_SPEED_175);
} else if (currentSpeed == Media.MEDIA_PLAYBACK_SPEED_175) { } else if (currentSpeed == Constants.MEDIA_PLAYBACK_SPEED_175) {
mediaBrowser.setPlaybackParameters(new PlaybackParameters(Media.MEDIA_PLAYBACK_SPEED_200)); mediaBrowser.setPlaybackParameters(new PlaybackParameters(Constants.MEDIA_PLAYBACK_SPEED_200));
playbackSpeedButton.setText(getString(R.string.player_playback_speed, Media.MEDIA_PLAYBACK_SPEED_200)); playbackSpeedButton.setText(getString(R.string.player_playback_speed, Constants.MEDIA_PLAYBACK_SPEED_200));
Preferences.setPlaybackSpeed(Media.MEDIA_PLAYBACK_SPEED_200); Preferences.setPlaybackSpeed(Constants.MEDIA_PLAYBACK_SPEED_200);
} else if (currentSpeed == Media.MEDIA_PLAYBACK_SPEED_200) { } else if (currentSpeed == Constants.MEDIA_PLAYBACK_SPEED_200) {
mediaBrowser.setPlaybackParameters(new PlaybackParameters(Media.MEDIA_PLAYBACK_SPEED_080)); mediaBrowser.setPlaybackParameters(new PlaybackParameters(Constants.MEDIA_PLAYBACK_SPEED_080));
playbackSpeedButton.setText(getString(R.string.player_playback_speed, Media.MEDIA_PLAYBACK_SPEED_080)); playbackSpeedButton.setText(getString(R.string.player_playback_speed, Constants.MEDIA_PLAYBACK_SPEED_080));
Preferences.setPlaybackSpeed(Media.MEDIA_PLAYBACK_SPEED_080); Preferences.setPlaybackSpeed(Constants.MEDIA_PLAYBACK_SPEED_080);
} }
}); });
@ -329,7 +329,7 @@ public class PlayerControllerFragment extends Fragment {
} }
private void resetPlaybackParameters(MediaBrowser mediaBrowser) { private void resetPlaybackParameters(MediaBrowser mediaBrowser) {
mediaBrowser.setPlaybackParameters(new PlaybackParameters(Media.MEDIA_PLAYBACK_SPEED_100)); mediaBrowser.setPlaybackParameters(new PlaybackParameters(Constants.MEDIA_PLAYBACK_SPEED_100));
// TODO Resettare lo skip del silenzio // TODO Resettare lo skip del silenzio
} }
} }

View file

@ -26,6 +26,7 @@ import com.cappielloantonio.play.model.Download;
import com.cappielloantonio.play.service.MediaManager; import com.cappielloantonio.play.service.MediaManager;
import com.cappielloantonio.play.service.MediaService; import com.cappielloantonio.play.service.MediaService;
import com.cappielloantonio.play.ui.dialog.PlaylistChooserDialog; import com.cappielloantonio.play.ui.dialog.PlaylistChooserDialog;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.DownloadUtil; import com.cappielloantonio.play.util.DownloadUtil;
import com.cappielloantonio.play.util.MappingUtil; import com.cappielloantonio.play.util.MappingUtil;
import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel; import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel;
@ -97,7 +98,7 @@ public class PlayerCoverFragment extends Fragment {
bind.innerButtonTopRight.setOnClickListener(view -> { bind.innerButtonTopRight.setOnClickListener(view -> {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("song_object", song); bundle.putParcelable(Constants.TRACK_OBJECT, song);
PlaylistChooserDialog dialog = new PlaylistChooserDialog(); PlaylistChooserDialog dialog = new PlaylistChooserDialog();
dialog.setArguments(bundle); dialog.setArguments(bundle);

View file

@ -16,12 +16,13 @@ import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.cappielloantonio.play.ui.adapter.PlayerSongQueueAdapter;
import com.cappielloantonio.play.databinding.InnerFragmentPlayerQueueBinding; import com.cappielloantonio.play.databinding.InnerFragmentPlayerQueueBinding;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.service.MediaManager; import com.cappielloantonio.play.service.MediaManager;
import com.cappielloantonio.play.service.MediaService; import com.cappielloantonio.play.service.MediaService;
import com.cappielloantonio.play.subsonic.models.Child; import com.cappielloantonio.play.subsonic.models.Child;
import com.cappielloantonio.play.ui.adapter.PlayerSongQueueAdapter;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel; import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel;
import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListenableFuture;
@ -151,6 +152,6 @@ public class PlayerQueueFragment extends Fragment implements ClickCallback {
@Override @Override
public void onMediaClick(Bundle bundle) { public void onMediaClick(Bundle bundle) {
MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), bundle.getParcelableArrayList("songs_object"), bundle.getInt("position")); MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), bundle.getParcelableArrayList(Constants.TRACKS_OBJECT), bundle.getInt(Constants.ITEM_POSITION));
} }
} }

View file

@ -24,13 +24,13 @@ import androidx.navigation.Navigation;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import com.cappielloantonio.play.R; import com.cappielloantonio.play.R;
import com.cappielloantonio.play.ui.adapter.PlaylistHorizontalAdapter;
import com.cappielloantonio.play.databinding.FragmentPlaylistCatalogueBinding; import com.cappielloantonio.play.databinding.FragmentPlaylistCatalogueBinding;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Genre;
import com.cappielloantonio.play.subsonic.models.Playlist; import com.cappielloantonio.play.subsonic.models.Playlist;
import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.adapter.PlaylistHorizontalAdapter;
import com.cappielloantonio.play.ui.dialog.PlaylistEditorDialog; import com.cappielloantonio.play.ui.dialog.PlaylistEditorDialog;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.viewmodel.PlaylistCatalogueViewModel; import com.cappielloantonio.play.viewmodel.PlaylistCatalogueViewModel;
import java.util.ArrayList; import java.util.ArrayList;
@ -72,10 +72,10 @@ public class PlaylistCatalogueFragment extends Fragment implements ClickCallback
} }
private void init() { private void init() {
if (requireArguments().getString(com.cappielloantonio.play.model.Playlist.ALL) != null) { if (requireArguments().getString(Constants.PLAYLIST_ALL) != null) {
playlistCatalogueViewModel.setType(com.cappielloantonio.play.model.Playlist.ALL); playlistCatalogueViewModel.setType(Constants.PLAYLIST_ALL);
} else if (requireArguments().getString(com.cappielloantonio.play.model.Playlist.DOWNLOADED) != null) { } else if (requireArguments().getString(Constants.PLAYLIST_DOWNLOADED) != null) {
playlistCatalogueViewModel.setType(com.cappielloantonio.play.model.Playlist.DOWNLOADED); playlistCatalogueViewModel.setType(Constants.PLAYLIST_DOWNLOADED);
} }
} }
@ -183,10 +183,10 @@ public class PlaylistCatalogueFragment extends Fragment implements ClickCallback
popup.setOnMenuItemClickListener(menuItem -> { popup.setOnMenuItemClickListener(menuItem -> {
if (menuItem.getItemId() == R.id.menu_playlist_sort_name) { if (menuItem.getItemId() == R.id.menu_playlist_sort_name) {
playlistHorizontalAdapter.sort(Genre.ORDER_BY_NAME); playlistHorizontalAdapter.sort(Constants.GENRE_ORDER_BY_NAME);
return true; return true;
} else if (menuItem.getItemId() == R.id.menu_playlist_sort_random) { } else if (menuItem.getItemId() == R.id.menu_playlist_sort_random) {
playlistHorizontalAdapter.sort(Genre.ORDER_BY_RANDOM); playlistHorizontalAdapter.sort(Constants.GENRE_ORDER_BY_RANDOM);
return true; return true;
} }

View file

@ -22,7 +22,6 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import com.bumptech.glide.load.resource.bitmap.CenterCrop; import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.bumptech.glide.load.resource.bitmap.GranularRoundedCorners; import com.bumptech.glide.load.resource.bitmap.GranularRoundedCorners;
import com.cappielloantonio.play.R; import com.cappielloantonio.play.R;
import com.cappielloantonio.play.ui.adapter.SongHorizontalAdapter;
import com.cappielloantonio.play.databinding.FragmentPlaylistPageBinding; import com.cappielloantonio.play.databinding.FragmentPlaylistPageBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
@ -30,6 +29,8 @@ import com.cappielloantonio.play.model.Download;
import com.cappielloantonio.play.service.MediaManager; import com.cappielloantonio.play.service.MediaManager;
import com.cappielloantonio.play.service.MediaService; import com.cappielloantonio.play.service.MediaService;
import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.adapter.SongHorizontalAdapter;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.DownloadUtil; import com.cappielloantonio.play.util.DownloadUtil;
import com.cappielloantonio.play.util.MappingUtil; import com.cappielloantonio.play.util.MappingUtil;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
@ -128,7 +129,7 @@ public class PlaylistPageFragment extends Fragment implements ClickCallback {
} }
private void init() { private void init() {
playlistPageViewModel.setPlaylist(requireArguments().getParcelable("playlist_object")); playlistPageViewModel.setPlaylist(requireArguments().getParcelable(Constants.PLAYLIST_OBJECT));
playlistPageViewModel.setOffline(requireArguments().getBoolean("is_offline")); playlistPageViewModel.setOffline(requireArguments().getBoolean("is_offline"));
} }
@ -236,7 +237,7 @@ public class PlaylistPageFragment extends Fragment implements ClickCallback {
@Override @Override
public void onMediaClick(Bundle bundle) { public void onMediaClick(Bundle bundle) {
MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), bundle.getParcelableArrayList("songs_object"), bundle.getInt("position")); MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), bundle.getParcelableArrayList(Constants.TRACKS_OBJECT), bundle.getInt(Constants.ITEM_POSITION));
activity.setBottomSheetInPeek(true); activity.setBottomSheetInPeek(true);
} }

View file

@ -18,15 +18,16 @@ import androidx.navigation.Navigation;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import com.cappielloantonio.play.R; import com.cappielloantonio.play.R;
import com.cappielloantonio.play.ui.adapter.AlbumAdapter;
import com.cappielloantonio.play.ui.adapter.ArtistAdapter;
import com.cappielloantonio.play.ui.adapter.SongHorizontalAdapter;
import com.cappielloantonio.play.databinding.FragmentSearchBinding; import com.cappielloantonio.play.databinding.FragmentSearchBinding;
import com.cappielloantonio.play.helper.recyclerview.CustomLinearSnapHelper; import com.cappielloantonio.play.helper.recyclerview.CustomLinearSnapHelper;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.service.MediaManager; import com.cappielloantonio.play.service.MediaManager;
import com.cappielloantonio.play.service.MediaService; import com.cappielloantonio.play.service.MediaService;
import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.adapter.AlbumAdapter;
import com.cappielloantonio.play.ui.adapter.ArtistAdapter;
import com.cappielloantonio.play.ui.adapter.SongHorizontalAdapter;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.viewmodel.SearchViewModel; import com.cappielloantonio.play.viewmodel.SearchViewModel;
import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListenableFuture;
@ -228,7 +229,7 @@ public class SearchFragment extends Fragment implements ClickCallback {
@Override @Override
public void onMediaClick(Bundle bundle) { public void onMediaClick(Bundle bundle) {
MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), bundle.getParcelableArrayList("songs_object"), bundle.getInt("position")); MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), bundle.getParcelableArrayList(Constants.TRACKS_OBJECT), bundle.getInt(Constants.ITEM_POSITION));
activity.setBottomSheetInPeek(true); activity.setBottomSheetInPeek(true);
} }

View file

@ -17,13 +17,13 @@ import androidx.navigation.Navigation;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import com.cappielloantonio.play.R; import com.cappielloantonio.play.R;
import com.cappielloantonio.play.ui.adapter.SongHorizontalAdapter;
import com.cappielloantonio.play.databinding.FragmentSongListPageBinding; import com.cappielloantonio.play.databinding.FragmentSongListPageBinding;
import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Media;
import com.cappielloantonio.play.service.MediaManager; import com.cappielloantonio.play.service.MediaManager;
import com.cappielloantonio.play.service.MediaService; import com.cappielloantonio.play.service.MediaService;
import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.adapter.SongHorizontalAdapter;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.viewmodel.SongListPageViewModel; import com.cappielloantonio.play.viewmodel.SongListPageViewModel;
import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListenableFuture;
@ -75,50 +75,50 @@ public class SongListPageFragment extends Fragment implements ClickCallback {
} }
private void init() { private void init() {
if (requireArguments().getString(Media.RECENTLY_PLAYED) != null) { if (requireArguments().getString(Constants.MEDIA_RECENTLY_PLAYED) != null) {
songListPageViewModel.title = Media.RECENTLY_PLAYED; songListPageViewModel.title = Constants.MEDIA_RECENTLY_PLAYED;
songListPageViewModel.toolbarTitle = getString(R.string.song_list_page_recently_played); songListPageViewModel.toolbarTitle = getString(R.string.song_list_page_recently_played);
bind.pageTitleLabel.setText(R.string.song_list_page_recently_played); bind.pageTitleLabel.setText(R.string.song_list_page_recently_played);
} else if (requireArguments().getString(Media.MOST_PLAYED) != null) { } else if (requireArguments().getString(Constants.MEDIA_MOST_PLAYED) != null) {
songListPageViewModel.title = Media.MOST_PLAYED; songListPageViewModel.title = Constants.MEDIA_MOST_PLAYED;
songListPageViewModel.toolbarTitle = getString(R.string.song_list_page_most_played); songListPageViewModel.toolbarTitle = getString(R.string.song_list_page_most_played);
bind.pageTitleLabel.setText(R.string.song_list_page_most_played); bind.pageTitleLabel.setText(R.string.song_list_page_most_played);
} else if (requireArguments().getString(Media.RECENTLY_ADDED) != null) { } else if (requireArguments().getString(Constants.MEDIA_RECENTLY_ADDED) != null) {
songListPageViewModel.title = Media.RECENTLY_ADDED; songListPageViewModel.title = Constants.MEDIA_RECENTLY_ADDED;
songListPageViewModel.toolbarTitle = getString(R.string.song_list_page_recently_added); songListPageViewModel.toolbarTitle = getString(R.string.song_list_page_recently_added);
bind.pageTitleLabel.setText(R.string.song_list_page_recently_added); bind.pageTitleLabel.setText(R.string.song_list_page_recently_added);
} else if (requireArguments().getString(Media.BY_GENRE) != null) { } else if (requireArguments().getString(Constants.MEDIA_BY_GENRE) != null) {
songListPageViewModel.title = Media.BY_GENRE; songListPageViewModel.title = Constants.MEDIA_BY_GENRE;
songListPageViewModel.genre = requireArguments().getParcelable("genre_object"); songListPageViewModel.genre = requireArguments().getParcelable(Constants.GENRE_OBJECT);
songListPageViewModel.toolbarTitle = MusicUtil.getReadableString(songListPageViewModel.genre.getGenre()); songListPageViewModel.toolbarTitle = MusicUtil.getReadableString(songListPageViewModel.genre.getGenre());
bind.pageTitleLabel.setText(MusicUtil.getReadableString(songListPageViewModel.genre.getGenre())); bind.pageTitleLabel.setText(MusicUtil.getReadableString(songListPageViewModel.genre.getGenre()));
} else if (requireArguments().getString(Media.BY_ARTIST) != null) { } else if (requireArguments().getString(Constants.MEDIA_BY_ARTIST) != null) {
songListPageViewModel.title = Media.BY_ARTIST; songListPageViewModel.title = Constants.MEDIA_BY_ARTIST;
songListPageViewModel.artist = requireArguments().getParcelable("artist_object"); songListPageViewModel.artist = requireArguments().getParcelable(Constants.ARTIST_OBJECT);
songListPageViewModel.toolbarTitle = getString(R.string.song_list_page_top, MusicUtil.getReadableString(songListPageViewModel.artist.getName())); songListPageViewModel.toolbarTitle = getString(R.string.song_list_page_top, MusicUtil.getReadableString(songListPageViewModel.artist.getName()));
bind.pageTitleLabel.setText(getString(R.string.song_list_page_top, MusicUtil.getReadableString(songListPageViewModel.artist.getName()))); bind.pageTitleLabel.setText(getString(R.string.song_list_page_top, MusicUtil.getReadableString(songListPageViewModel.artist.getName())));
} else if (requireArguments().getString(Media.BY_GENRES) != null) { } else if (requireArguments().getString(Constants.MEDIA_BY_GENRES) != null) {
songListPageViewModel.title = Media.BY_GENRES; songListPageViewModel.title = Constants.MEDIA_BY_GENRES;
songListPageViewModel.filters = requireArguments().getStringArrayList("filters_list"); songListPageViewModel.filters = requireArguments().getStringArrayList("filters_list");
songListPageViewModel.filterNames = requireArguments().getStringArrayList("filter_name_list"); songListPageViewModel.filterNames = requireArguments().getStringArrayList("filter_name_list");
songListPageViewModel.toolbarTitle = songListPageViewModel.getFiltersTitle(); songListPageViewModel.toolbarTitle = songListPageViewModel.getFiltersTitle();
bind.pageTitleLabel.setText(songListPageViewModel.getFiltersTitle()); bind.pageTitleLabel.setText(songListPageViewModel.getFiltersTitle());
} else if (requireArguments().getString(Media.BY_YEAR) != null) { } else if (requireArguments().getString(Constants.MEDIA_BY_YEAR) != null) {
songListPageViewModel.title = Media.BY_YEAR; songListPageViewModel.title = Constants.MEDIA_BY_YEAR;
songListPageViewModel.year = requireArguments().getInt("year_object"); songListPageViewModel.year = requireArguments().getInt("year_object");
songListPageViewModel.toolbarTitle = getString(R.string.song_list_page_year, songListPageViewModel.year); songListPageViewModel.toolbarTitle = getString(R.string.song_list_page_year, songListPageViewModel.year);
bind.pageTitleLabel.setText(getString(R.string.song_list_page_year, songListPageViewModel.year)); bind.pageTitleLabel.setText(getString(R.string.song_list_page_year, songListPageViewModel.year));
} else if (requireArguments().getString(Media.STARRED) != null) { } else if (requireArguments().getString(Constants.MEDIA_STARRED) != null) {
songListPageViewModel.title = Media.STARRED; songListPageViewModel.title = Constants.MEDIA_STARRED;
songListPageViewModel.toolbarTitle = getString(R.string.song_list_page_starred); songListPageViewModel.toolbarTitle = getString(R.string.song_list_page_starred);
bind.pageTitleLabel.setText(R.string.song_list_page_starred); bind.pageTitleLabel.setText(R.string.song_list_page_starred);
} else if (requireArguments().getString(Media.DOWNLOADED) != null) { } else if (requireArguments().getString(Constants.MEDIA_DOWNLOADED) != null) {
songListPageViewModel.title = Media.DOWNLOADED; songListPageViewModel.title = Constants.MEDIA_DOWNLOADED;
songListPageViewModel.toolbarTitle = getString(R.string.song_list_page_downloaded); songListPageViewModel.toolbarTitle = getString(R.string.song_list_page_downloaded);
bind.pageTitleLabel.setText(getString(R.string.song_list_page_downloaded)); bind.pageTitleLabel.setText(getString(R.string.song_list_page_downloaded));
} else if (requireArguments().getParcelable("album_object") != null) { } else if (requireArguments().getParcelable(Constants.ALBUM_OBJECT) != null) {
songListPageViewModel.album = requireArguments().getParcelable("album_object"); songListPageViewModel.album = requireArguments().getParcelable(Constants.ALBUM_OBJECT);
songListPageViewModel.title = Media.FROM_ALBUM; songListPageViewModel.title = Constants.MEDIA_FROM_ALBUM;
songListPageViewModel.toolbarTitle = MusicUtil.getReadableString(songListPageViewModel.album.getName()); songListPageViewModel.toolbarTitle = MusicUtil.getReadableString(songListPageViewModel.album.getName());
bind.pageTitleLabel.setText(MusicUtil.getReadableString(songListPageViewModel.album.getName())); bind.pageTitleLabel.setText(MusicUtil.getReadableString(songListPageViewModel.album.getName()));
} }
@ -176,7 +176,7 @@ public class SongListPageFragment extends Fragment implements ClickCallback {
@Override @Override
public void onMediaClick(Bundle bundle) { public void onMediaClick(Bundle bundle) {
MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), bundle.getParcelableArrayList("songs_object"), bundle.getInt("position")); MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), bundle.getParcelableArrayList(Constants.TRACKS_OBJECT), bundle.getInt(Constants.ITEM_POSITION));
activity.setBottomSheetInPeek(true); activity.setBottomSheetInPeek(true);
} }

View file

@ -30,6 +30,7 @@ import com.cappielloantonio.play.service.MediaService;
import com.cappielloantonio.play.subsonic.models.AlbumID3; import com.cappielloantonio.play.subsonic.models.AlbumID3;
import com.cappielloantonio.play.subsonic.models.Child; import com.cappielloantonio.play.subsonic.models.Child;
import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.DownloadUtil; import com.cappielloantonio.play.util.DownloadUtil;
import com.cappielloantonio.play.util.MappingUtil; import com.cappielloantonio.play.util.MappingUtil;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
@ -54,7 +55,7 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.bottom_sheet_album_dialog, container, false); View view = inflater.inflate(R.layout.bottom_sheet_album_dialog, container, false);
album = this.requireArguments().getParcelable("album_object"); album = this.requireArguments().getParcelable(Constants.ALBUM_OBJECT);
albumBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(AlbumBottomSheetViewModel.class); albumBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(AlbumBottomSheetViewModel.class);
albumBottomSheetViewModel.setAlbum(album); albumBottomSheetViewModel.setAlbum(album);
@ -175,7 +176,7 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements
goToArtist.setOnClickListener(v -> albumBottomSheetViewModel.getArtist().observe(getViewLifecycleOwner(), artist -> { goToArtist.setOnClickListener(v -> albumBottomSheetViewModel.getArtist().observe(getViewLifecycleOwner(), artist -> {
if (artist != null) { if (artist != null) {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("artist_object", artist); bundle.putParcelable(Constants.ARTIST_OBJECT, artist);
NavHostFragment.findNavController(this).navigate(R.id.artistPageFragment, bundle); NavHostFragment.findNavController(this).navigate(R.id.artistPageFragment, bundle);
} else { } else {
Toast.makeText(requireContext(), getString(R.string.album_error_retrieving_artist), Toast.LENGTH_SHORT).show(); Toast.makeText(requireContext(), getString(R.string.album_error_retrieving_artist), Toast.LENGTH_SHORT).show();

View file

@ -25,6 +25,7 @@ import com.cappielloantonio.play.service.MediaManager;
import com.cappielloantonio.play.service.MediaService; import com.cappielloantonio.play.service.MediaService;
import com.cappielloantonio.play.subsonic.models.ArtistID3; import com.cappielloantonio.play.subsonic.models.ArtistID3;
import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.viewmodel.ArtistBottomSheetViewModel; import com.cappielloantonio.play.viewmodel.ArtistBottomSheetViewModel;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment; import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
@ -44,7 +45,7 @@ public class ArtistBottomSheetDialog extends BottomSheetDialogFragment implement
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.bottom_sheet_artist_dialog, container, false); View view = inflater.inflate(R.layout.bottom_sheet_artist_dialog, container, false);
artist = this.requireArguments().getParcelable("artist_object"); artist = this.requireArguments().getParcelable(Constants.ARTIST_OBJECT);
artistBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(ArtistBottomSheetViewModel.class); artistBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(ArtistBottomSheetViewModel.class);
artistBottomSheetViewModel.setArtist(artist); artistBottomSheetViewModel.setArtist(artist);

View file

@ -28,6 +28,7 @@ import com.cappielloantonio.play.subsonic.models.Child;
import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.dialog.PlaylistChooserDialog; import com.cappielloantonio.play.ui.dialog.PlaylistChooserDialog;
import com.cappielloantonio.play.ui.dialog.RatingDialog; import com.cappielloantonio.play.ui.dialog.RatingDialog;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.DownloadUtil; import com.cappielloantonio.play.util.DownloadUtil;
import com.cappielloantonio.play.util.MappingUtil; import com.cappielloantonio.play.util.MappingUtil;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
@ -35,8 +36,6 @@ import com.cappielloantonio.play.viewmodel.SongBottomSheetViewModel;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment; import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListenableFuture;
import java.util.List;
@UnstableApi @UnstableApi
public class SongBottomSheetDialog extends BottomSheetDialogFragment implements View.OnClickListener { public class SongBottomSheetDialog extends BottomSheetDialogFragment implements View.OnClickListener {
private static final String TAG = "SongBottomSheetDialog"; private static final String TAG = "SongBottomSheetDialog";
@ -51,7 +50,7 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.bottom_sheet_song_dialog, container, false); View view = inflater.inflate(R.layout.bottom_sheet_song_dialog, container, false);
song = requireArguments().getParcelable("song_object"); song = requireArguments().getParcelable(Constants.TRACK_OBJECT);
songBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(SongBottomSheetViewModel.class); songBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(SongBottomSheetViewModel.class);
songBottomSheetViewModel.setSong(song); songBottomSheetViewModel.setSong(song);
@ -98,7 +97,7 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
}); });
favoriteToggle.setOnLongClickListener(v -> { favoriteToggle.setOnLongClickListener(v -> {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("song_object", song); bundle.putParcelable(Constants.TRACK_OBJECT, song);
RatingDialog dialog = new RatingDialog(); RatingDialog dialog = new RatingDialog();
dialog.setArguments(bundle); dialog.setArguments(bundle);
@ -143,7 +142,7 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
TextView rate = view.findViewById(R.id.rate_text_view); TextView rate = view.findViewById(R.id.rate_text_view);
rate.setOnClickListener(v -> { rate.setOnClickListener(v -> {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("song_object", song); bundle.putParcelable(Constants.TRACK_OBJECT, song);
RatingDialog dialog = new RatingDialog(); RatingDialog dialog = new RatingDialog();
dialog.setArguments(bundle); dialog.setArguments(bundle);
@ -175,7 +174,7 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
TextView addToPlaylist = view.findViewById(R.id.add_to_playlist_text_view); TextView addToPlaylist = view.findViewById(R.id.add_to_playlist_text_view);
addToPlaylist.setOnClickListener(v -> { addToPlaylist.setOnClickListener(v -> {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("song_object", song); bundle.putParcelable(Constants.TRACK_OBJECT, song);
PlaylistChooserDialog dialog = new PlaylistChooserDialog(); PlaylistChooserDialog dialog = new PlaylistChooserDialog();
dialog.setArguments(bundle); dialog.setArguments(bundle);
@ -188,7 +187,7 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
goToAlbum.setOnClickListener(v -> songBottomSheetViewModel.getAlbum().observe(getViewLifecycleOwner(), album -> { goToAlbum.setOnClickListener(v -> songBottomSheetViewModel.getAlbum().observe(getViewLifecycleOwner(), album -> {
if (album != null) { if (album != null) {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("album_object", album); bundle.putParcelable(Constants.ALBUM_OBJECT, album);
NavHostFragment.findNavController(this).navigate(R.id.albumPageFragment, bundle); NavHostFragment.findNavController(this).navigate(R.id.albumPageFragment, bundle);
} else } else
Toast.makeText(requireContext(), getString(R.string.song_bottom_sheet_error_retrieving_album), Toast.LENGTH_SHORT).show(); Toast.makeText(requireContext(), getString(R.string.song_bottom_sheet_error_retrieving_album), Toast.LENGTH_SHORT).show();
@ -200,7 +199,7 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
goToArtist.setOnClickListener(v -> songBottomSheetViewModel.getArtist().observe(getViewLifecycleOwner(), artist -> { goToArtist.setOnClickListener(v -> songBottomSheetViewModel.getArtist().observe(getViewLifecycleOwner(), artist -> {
if (artist != null) { if (artist != null) {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("artist_object", artist); bundle.putParcelable(Constants.ARTIST_OBJECT, artist);
NavHostFragment.findNavController(this).navigate(R.id.artistPageFragment, bundle); NavHostFragment.findNavController(this).navigate(R.id.artistPageFragment, bundle);
} else } else
Toast.makeText(requireContext(), getString(R.string.song_bottom_sheet_error_retrieving_artist), Toast.LENGTH_SHORT).show(); Toast.makeText(requireContext(), getString(R.string.song_bottom_sheet_error_retrieving_artist), Toast.LENGTH_SHORT).show();

View file

@ -2,4 +2,61 @@ package com.cappielloantonio.play.util
object Constants { object Constants {
const val SHARED_PREF_KEY = "play-shared-preferences" const val SHARED_PREF_KEY = "play-shared-preferences"
const val ITEM_POSITION = "ITEM_POSITION"
const val TRACK_OBJECT = "TRACK_OBJECT"
const val TRACKS_OBJECT = "TRACKS_OBJECT"
const val ALBUM_OBJECT = "ALBUM_OBJECT"
const val ALBUM_RECENTLY_PLAYED = "ALBUM_RECENTLY_PLAYED"
const val ALBUM_MOST_PLAYED = "ALBUM_MOST_PLAYED"
const val ALBUM_RECENTLY_ADDED = "ALBUM_RECENTLY_ADDED"
const val ALBUM_DOWNLOADED = "ALBUM_DOWNLOADED"
const val ALBUM_STARRED = "ALBUM_STARRED"
const val ALBUM_FROM_ARTIST = "ALBUM_FROM_ARTIST"
const val ALBUM_NEW_RELEASES = "ALBUM_NEW_RELEASES"
const val ALBUM_ORDER_BY_NAME = "ALBUM_ORDER_BY_NAME"
const val ALBUM_ORDER_BY_ARTIST = "ALBUM_ORDER_BY_ARTIST"
const val ALBUM_ORDER_BY_YEAR = "ALBUM_ORDER_BY_YEAR"
const val ALBUM_ORDER_BY_RANDOM = "ALBUM_ORDER_BY_RANDOM"
const val ARTIST_OBJECT = "ARTIST_OBJECT"
const val ARTIST_DOWNLOADED = "ARTIST_DOWNLOADED"
const val ARTIST_STARRED = "ARTIST_STARRED"
const val ARTIST_ORDER_BY_NAME = "ARTIST_ORDER_BY_NAME"
const val ARTIST_ORDER_BY_RANDOM = "ARTIST_ORDER_BY_RANDOM"
const val GENRE_OBJECT = "GENRE_OBJECT"
const val GENRE_ORDER_BY_NAME = "GENRE_ORDER_BY_NAME"
const val GENRE_ORDER_BY_RANDOM = "GENRE_ORDER_BY_RANDOM"
const val PLAYLIST_OBJECT = "PLAYLIST_OBJECT"
const val PLAYLIST_ALL = "ALL"
const val PLAYLIST_DOWNLOADED = "DOWNLOADED"
const val PLAYLIST_ORDER_BY_NAME = "ORDER_BY_NAME"
const val PLAYLIST_ORDER_BY_RANDOM = "ORDER_BY_RANDOM"
const val MEDIA_TYPE_MUSIC = "music"
const val MEDIA_TYPE_PODCAST = "podcast"
const val MEDIA_TYPE_AUDIOBOOK = "audiobook"
const val MEDIA_TYPE_VIDEO = "video"
const val MEDIA_PLAYBACK_SPEED_080 = 0.8f
const val MEDIA_PLAYBACK_SPEED_100 = 1.0f
const val MEDIA_PLAYBACK_SPEED_125 = 1.25f
const val MEDIA_PLAYBACK_SPEED_150 = 1.50f
const val MEDIA_PLAYBACK_SPEED_175 = 1.75f
const val MEDIA_PLAYBACK_SPEED_200 = 2.0f
const val MEDIA_RECENTLY_PLAYED = "MEDIA_RECENTLY_PLAYED"
const val MEDIA_MOST_PLAYED = "MEDIA_MOST_PLAYED"
const val MEDIA_RECENTLY_ADDED = "MEDIA_RECENTLY_ADDED"
const val MEDIA_BY_GENRE = "MEDIA_BY_GENRE"
const val MEDIA_BY_GENRES = "MEDIA_BY_GENRES"
const val MEDIA_BY_ARTIST = "MEDIA_BY_ARTIST"
const val MEDIA_BY_YEAR = "MEDIA_BY_YEAR"
const val MEDIA_STARRED = "MEDIA_STARRED"
const val MEDIA_DOWNLOADED = "MEDIA_DOWNLOADED"
const val MEDIA_FROM_ALBUM = "MEDIA_FROM_ALBUM"
} }

View file

@ -8,11 +8,11 @@ import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LiveData; import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.MutableLiveData;
import com.cappielloantonio.play.model.Album;
import com.cappielloantonio.play.repository.AlbumRepository; import com.cappielloantonio.play.repository.AlbumRepository;
import com.cappielloantonio.play.repository.DownloadRepository; import com.cappielloantonio.play.repository.DownloadRepository;
import com.cappielloantonio.play.subsonic.models.AlbumID3; import com.cappielloantonio.play.subsonic.models.AlbumID3;
import com.cappielloantonio.play.subsonic.models.ArtistID3; import com.cappielloantonio.play.subsonic.models.ArtistID3;
import com.cappielloantonio.play.util.Constants;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
@ -39,19 +39,19 @@ public class AlbumListPageViewModel extends AndroidViewModel {
albumList = new MutableLiveData<>(new ArrayList<>()); albumList = new MutableLiveData<>(new ArrayList<>());
switch (title) { switch (title) {
case Album.RECENTLY_PLAYED: case Constants.ALBUM_RECENTLY_PLAYED:
albumRepository.getAlbums("recent", 500, null, null).observe(owner, albums -> albumList.setValue(albums)); albumRepository.getAlbums("recent", 500, null, null).observe(owner, albums -> albumList.setValue(albums));
break; break;
case Album.MOST_PLAYED: case Constants.ALBUM_MOST_PLAYED:
albumRepository.getAlbums("frequent", 500, null, null).observe(owner, albums -> albumList.setValue(albums)); albumRepository.getAlbums("frequent", 500, null, null).observe(owner, albums -> albumList.setValue(albums));
break; break;
case Album.RECENTLY_ADDED: case Constants.ALBUM_RECENTLY_ADDED:
albumRepository.getAlbums("newest", 500, null, null).observe(owner, albums -> albumList.setValue(albums)); albumRepository.getAlbums("newest", 500, null, null).observe(owner, albums -> albumList.setValue(albums));
break; break;
case Album.STARRED: case Constants.ALBUM_STARRED:
albumList = albumRepository.getStarredAlbums(false, -1); albumList = albumRepository.getStarredAlbums(false, -1);
break; break;
case Album.NEW_RELEASES: case Constants.ALBUM_NEW_RELEASES:
int currentYear = Calendar.getInstance().get(Calendar.YEAR); int currentYear = Calendar.getInstance().get(Calendar.YEAR);
albumRepository.getAlbums("byYear", 500, currentYear, currentYear).observe(owner, albums -> { albumRepository.getAlbums("byYear", 500, currentYear, currentYear).observe(owner, albums -> {
albums.sort(Comparator.comparing(AlbumID3::getCreated).reversed()); albums.sort(Comparator.comparing(AlbumID3::getCreated).reversed());

View file

@ -8,11 +8,11 @@ import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LiveData; import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.MutableLiveData;
import com.cappielloantonio.play.model.Artist;
import com.cappielloantonio.play.model.Download; import com.cappielloantonio.play.model.Download;
import com.cappielloantonio.play.repository.ArtistRepository; import com.cappielloantonio.play.repository.ArtistRepository;
import com.cappielloantonio.play.repository.DownloadRepository; import com.cappielloantonio.play.repository.DownloadRepository;
import com.cappielloantonio.play.subsonic.models.ArtistID3; import com.cappielloantonio.play.subsonic.models.ArtistID3;
import com.cappielloantonio.play.util.Constants;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
@ -39,10 +39,10 @@ public class ArtistListPageViewModel extends AndroidViewModel {
artistList = new MutableLiveData<>(new ArrayList<>()); artistList = new MutableLiveData<>(new ArrayList<>());
switch (title) { switch (title) {
case Artist.STARRED: case Constants.ARTIST_STARRED:
artistList = artistRepository.getStarredArtists(false, -1); artistList = artistRepository.getStarredArtists(false, -1);
break; break;
case Artist.DOWNLOADED: case Constants.ARTIST_DOWNLOADED:
downloadRepository.getLiveDownload().observe(owner, downloads -> { downloadRepository.getLiveDownload().observe(owner, downloads -> {
List<Download> unique = downloads List<Download> unique = downloads
.stream() .stream()

View file

@ -8,10 +8,7 @@ import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LiveData; import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.MutableLiveData;
import com.cappielloantonio.play.model.Playlist;
import com.cappielloantonio.play.repository.DownloadRepository; import com.cappielloantonio.play.repository.DownloadRepository;
import com.cappielloantonio.play.subsonic.models.AlbumID3;
import com.cappielloantonio.play.subsonic.models.ArtistID3;
import com.cappielloantonio.play.subsonic.models.Child; import com.cappielloantonio.play.subsonic.models.Child;
import java.util.List; import java.util.List;
@ -22,10 +19,7 @@ public class DownloadViewModel extends AndroidViewModel {
private final DownloadRepository downloadRepository; private final DownloadRepository downloadRepository;
private final MutableLiveData<List<ArtistID3>> downloadedArtistSample = new MutableLiveData<>(null);
private final MutableLiveData<List<AlbumID3>> downloadedAlbumSample = new MutableLiveData<>(null);
private final MutableLiveData<List<Child>> downloadedTrackSample = new MutableLiveData<>(null); private final MutableLiveData<List<Child>> downloadedTrackSample = new MutableLiveData<>(null);
private final MutableLiveData<List<Playlist>> downloadedPlaylistSample = new MutableLiveData<>(null);
public DownloadViewModel(@NonNull Application application) { public DownloadViewModel(@NonNull Application application) {
super(application); super(application);

View file

@ -11,13 +11,13 @@ import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.MutableLiveData;
import androidx.media3.common.util.UnstableApi; import androidx.media3.common.util.UnstableApi;
import com.cappielloantonio.play.model.Media;
import com.cappielloantonio.play.model.Queue; import com.cappielloantonio.play.model.Queue;
import com.cappielloantonio.play.repository.ArtistRepository; import com.cappielloantonio.play.repository.ArtistRepository;
import com.cappielloantonio.play.repository.QueueRepository; import com.cappielloantonio.play.repository.QueueRepository;
import com.cappielloantonio.play.repository.SongRepository; import com.cappielloantonio.play.repository.SongRepository;
import com.cappielloantonio.play.subsonic.models.ArtistID3; import com.cappielloantonio.play.subsonic.models.ArtistID3;
import com.cappielloantonio.play.subsonic.models.Child; import com.cappielloantonio.play.subsonic.models.Child;
import com.cappielloantonio.play.util.Constants;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
@ -85,10 +85,10 @@ public class PlayerBottomSheetViewModel extends AndroidViewModel {
public void setLiveMedia(LifecycleOwner owner, String mediaType, String mediaId) { public void setLiveMedia(LifecycleOwner owner, String mediaType, String mediaId) {
if (mediaType != null) { if (mediaType != null) {
switch (mediaType) { switch (mediaType) {
case Media.MEDIA_TYPE_MUSIC: case Constants.MEDIA_TYPE_MUSIC:
songRepository.getSong(mediaId).observe(owner, liveMedia::postValue); songRepository.getSong(mediaId).observe(owner, liveMedia::postValue);
break; break;
case Media.MEDIA_TYPE_PODCAST: case Constants.MEDIA_TYPE_PODCAST:
liveMedia.postValue(null); liveMedia.postValue(null);
break; break;
} }
@ -102,10 +102,10 @@ public class PlayerBottomSheetViewModel extends AndroidViewModel {
public void setLiveArtist(LifecycleOwner owner, String mediaType, String ArtistId) { public void setLiveArtist(LifecycleOwner owner, String mediaType, String ArtistId) {
if (mediaType != null) { if (mediaType != null) {
switch (mediaType) { switch (mediaType) {
case Media.MEDIA_TYPE_MUSIC: case Constants.MEDIA_TYPE_MUSIC:
artistRepository.getArtist(ArtistId).observe(owner, liveArtist::postValue); artistRepository.getArtist(ArtistId).observe(owner, liveArtist::postValue);
break; break;
case Media.MEDIA_TYPE_PODCAST: case Constants.MEDIA_TYPE_PODCAST:
liveArtist.postValue(null); liveArtist.postValue(null);
break; break;
} }

View file

@ -11,6 +11,7 @@ import androidx.lifecycle.MutableLiveData;
import com.cappielloantonio.play.repository.DownloadRepository; import com.cappielloantonio.play.repository.DownloadRepository;
import com.cappielloantonio.play.repository.PlaylistRepository; import com.cappielloantonio.play.repository.PlaylistRepository;
import com.cappielloantonio.play.subsonic.models.Playlist; import com.cappielloantonio.play.subsonic.models.Playlist;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.Preferences; import com.cappielloantonio.play.util.Preferences;
import java.util.ArrayList; import java.util.ArrayList;
@ -36,10 +37,10 @@ public class PlaylistCatalogueViewModel extends AndroidViewModel {
playlistList = new MutableLiveData<>(new ArrayList<>()); playlistList = new MutableLiveData<>(new ArrayList<>());
switch (type) { switch (type) {
case com.cappielloantonio.play.model.Playlist.ALL: case Constants.PLAYLIST_ALL:
playlistRepository.getPlaylists(false, -1).observe(owner, playlists -> playlistList.postValue(playlists)); playlistRepository.getPlaylists(false, -1).observe(owner, playlists -> playlistList.postValue(playlists));
break; break;
case com.cappielloantonio.play.model.Playlist.DOWNLOADED: case Constants.PLAYLIST_DOWNLOADED:
// TODO // TODO
//downloadRepository.getLivePlaylist().observe(owner, downloads -> playlistList.setValue(MappingUtil.mapDownloadToPlaylist(downloads))); //downloadRepository.getLivePlaylist().observe(owner, downloads -> playlistList.setValue(MappingUtil.mapDownloadToPlaylist(downloads)));
break; break;
@ -57,7 +58,7 @@ public class PlaylistCatalogueViewModel extends AndroidViewModel {
} }
public void unpinPlaylist(List<Playlist> playlists) { public void unpinPlaylist(List<Playlist> playlists) {
if (type.equals(com.cappielloantonio.play.model.Playlist.ALL)) { if (type.equals(Constants.PLAYLIST_ALL)) {
for (Playlist playlist : playlists) { for (Playlist playlist : playlists) {
playlistRepository.delete(playlist); playlistRepository.delete(playlist);
} }

View file

@ -9,7 +9,6 @@ import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LiveData; import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.MutableLiveData;
import com.cappielloantonio.play.model.Media;
import com.cappielloantonio.play.repository.ArtistRepository; import com.cappielloantonio.play.repository.ArtistRepository;
import com.cappielloantonio.play.repository.DownloadRepository; import com.cappielloantonio.play.repository.DownloadRepository;
import com.cappielloantonio.play.repository.SongRepository; import com.cappielloantonio.play.repository.SongRepository;
@ -17,6 +16,7 @@ import com.cappielloantonio.play.subsonic.models.AlbumID3;
import com.cappielloantonio.play.subsonic.models.ArtistID3; import com.cappielloantonio.play.subsonic.models.ArtistID3;
import com.cappielloantonio.play.subsonic.models.Child; import com.cappielloantonio.play.subsonic.models.Child;
import com.cappielloantonio.play.subsonic.models.Genre; import com.cappielloantonio.play.subsonic.models.Genre;
import com.cappielloantonio.play.util.Constants;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -51,19 +51,19 @@ public class SongListPageViewModel extends AndroidViewModel {
songList = new MutableLiveData<>(new ArrayList<>()); songList = new MutableLiveData<>(new ArrayList<>());
switch (title) { switch (title) {
case Media.BY_GENRE: case Constants.MEDIA_BY_GENRE:
songList = songRepository.getSongsByGenre(genre.getGenre()); songList = songRepository.getSongsByGenre(genre.getGenre());
break; break;
case Media.BY_ARTIST: case Constants.MEDIA_BY_ARTIST:
songList = artistRepository.getTopSongs(artist.getName(), 50); songList = artistRepository.getTopSongs(artist.getName(), 50);
break; break;
case Media.BY_GENRES: case Constants.MEDIA_BY_GENRES:
songList = songRepository.getSongsByGenres(filters); songList = songRepository.getSongsByGenres(filters);
break; break;
case Media.BY_YEAR: case Constants.MEDIA_BY_YEAR:
songList = songRepository.getRandomSample(500, year, year + 10); songList = songRepository.getRandomSample(500, year, year + 10);
break; break;
case Media.STARRED: case Constants.MEDIA_STARRED:
songList = songRepository.getStarredSongs(false, -1); songList = songRepository.getStarredSongs(false, -1);
break; break;
} }