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.MediaSession.ControllerInfo
import com.cappielloantonio.play.R
import com.cappielloantonio.play.model.Media
import com.cappielloantonio.play.ui.activity.MainActivity
import com.cappielloantonio.play.util.Constants
import com.cappielloantonio.play.util.DownloadUtil
import com.cappielloantonio.play.util.UIUtil
import com.google.android.gms.cast.framework.CastContext
@ -234,7 +234,7 @@ class MediaService : MediaLibraryService(), SessionAvailabilityListener {
override fun onMediaItemTransition(mediaItem: MediaItem?, reason: Int) {
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.saveChronology(mediaItem)
}

View file

@ -13,6 +13,7 @@ import com.cappielloantonio.play.databinding.ItemLibraryAlbumBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.subsonic.models.AlbumID3;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil;
import java.util.Collections;
@ -80,14 +81,14 @@ public class AlbumAdapter extends RecyclerView.Adapter<AlbumAdapter.ViewHolder>
private void onClick() {
Bundle bundle = new Bundle();
bundle.putParcelable("album_object", albums.get(getBindingAdapterPosition()));
bundle.putParcelable(Constants.ALBUM_OBJECT, albums.get(getBindingAdapterPosition()));
click.onAlbumClick(bundle);
}
private boolean onLongClick() {
Bundle bundle = new Bundle();
bundle.putParcelable("album_object", albums.get(getBindingAdapterPosition()));
bundle.putParcelable(Constants.ALBUM_OBJECT, albums.get(getBindingAdapterPosition()));
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.interfaces.ClickCallback;
import com.cappielloantonio.play.subsonic.models.AlbumID3;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil;
import java.util.Collections;
@ -80,14 +81,14 @@ public class AlbumArtistPageOrSimilarAdapter extends RecyclerView.Adapter<AlbumA
private void onClick() {
Bundle bundle = new Bundle();
bundle.putParcelable("album_object", albums.get(getBindingAdapterPosition()));
bundle.putParcelable(Constants.ALBUM_OBJECT, albums.get(getBindingAdapterPosition()));
click.onAlbumClick(bundle);
}
private boolean onLongClick() {
Bundle bundle = new Bundle();
bundle.putParcelable("album_object", albums.get(getBindingAdapterPosition()));
bundle.putParcelable(Constants.ALBUM_OBJECT, albums.get(getBindingAdapterPosition()));
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.glide.CustomGlideRequest;
import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Album;
import com.cappielloantonio.play.subsonic.models.AlbumID3;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil;
import java.util.ArrayList;
@ -132,14 +132,14 @@ public class AlbumCatalogueAdapter extends RecyclerView.Adapter<AlbumCatalogueAd
private void onClick() {
Bundle bundle = new Bundle();
bundle.putParcelable("album_object", albums.get(getBindingAdapterPosition()));
bundle.putParcelable(Constants.ALBUM_OBJECT, albums.get(getBindingAdapterPosition()));
click.onAlbumClick(bundle);
}
private boolean onLongClick() {
Bundle bundle = new Bundle();
bundle.putParcelable("album_object", albums.get(getBindingAdapterPosition()));
bundle.putParcelable(Constants.ALBUM_OBJECT, albums.get(getBindingAdapterPosition()));
click.onAlbumLongClick(bundle);
@ -149,16 +149,16 @@ public class AlbumCatalogueAdapter extends RecyclerView.Adapter<AlbumCatalogueAd
public void sort(String order) {
switch (order) {
case Album.ORDER_BY_NAME:
case Constants.ALBUM_ORDER_BY_NAME:
albums.sort(Comparator.comparing(AlbumID3::getName));
break;
case Album.ORDER_BY_ARTIST:
case Constants.ALBUM_ORDER_BY_ARTIST:
albums.sort(Comparator.comparing(AlbumID3::getArtist));
break;
case Album.ORDER_BY_YEAR:
case Constants.ALBUM_ORDER_BY_YEAR:
albums.sort(Comparator.comparing(AlbumID3::getYear));
break;
case Album.ORDER_BY_RANDOM:
case Constants.ALBUM_ORDER_BY_RANDOM:
Collections.shuffle(albums);
break;
}

View file

@ -13,6 +13,7 @@ import com.cappielloantonio.play.databinding.ItemHorizontalAlbumBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.subsonic.models.AlbumID3;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil;
import java.util.Collections;
@ -83,14 +84,14 @@ public class AlbumHorizontalAdapter extends RecyclerView.Adapter<AlbumHorizontal
private void onClick() {
Bundle bundle = new Bundle();
bundle.putParcelable("album_object", albums.get(getBindingAdapterPosition()));
bundle.putParcelable(Constants.ALBUM_OBJECT, albums.get(getBindingAdapterPosition()));
click.onAlbumClick(bundle);
}
private boolean onLongClick() {
Bundle bundle = new Bundle();
bundle.putParcelable("album_object", albums.get(getBindingAdapterPosition()));
bundle.putParcelable(Constants.ALBUM_OBJECT, albums.get(getBindingAdapterPosition()));
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.interfaces.ClickCallback;
import com.cappielloantonio.play.subsonic.models.ArtistID3;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil;
import java.util.Collections;
@ -94,7 +95,7 @@ public class ArtistAdapter extends RecyclerView.Adapter<ArtistAdapter.ViewHolder
public void onClick() {
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_best_of", bestOf);
@ -103,7 +104,7 @@ public class ArtistAdapter extends RecyclerView.Adapter<ArtistAdapter.ViewHolder
public boolean onLongClick() {
Bundle bundle = new Bundle();
bundle.putParcelable("artist_object", artists.get(getBindingAdapterPosition()));
bundle.putParcelable(Constants.ARTIST_OBJECT, artists.get(getBindingAdapterPosition()));
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.glide.CustomGlideRequest;
import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Artist;
import com.cappielloantonio.play.subsonic.models.ArtistID3;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil;
import java.util.ArrayList;
@ -131,14 +131,14 @@ public class ArtistCatalogueAdapter extends RecyclerView.Adapter<ArtistCatalogue
public void onClick() {
Bundle bundle = new Bundle();
bundle.putParcelable("artist_object", artists.get(getBindingAdapterPosition()));
bundle.putParcelable(Constants.ARTIST_OBJECT, artists.get(getBindingAdapterPosition()));
click.onArtistClick(bundle);
}
public boolean onLongClick() {
Bundle bundle = new Bundle();
bundle.putParcelable("artist_object", artists.get(getBindingAdapterPosition()));
bundle.putParcelable(Constants.ARTIST_OBJECT, artists.get(getBindingAdapterPosition()));
click.onArtistLongClick(bundle);
@ -148,10 +148,10 @@ public class ArtistCatalogueAdapter extends RecyclerView.Adapter<ArtistCatalogue
public void sort(String order) {
switch (order) {
case Artist.ORDER_BY_NAME:
case Constants.ARTIST_ORDER_BY_NAME:
artists.sort(Comparator.comparing(ArtistID3::getName));
break;
case Artist.ORDER_BY_RANDOM:
case Constants.ARTIST_ORDER_BY_RANDOM:
Collections.shuffle(artists);
break;
}

View file

@ -14,6 +14,7 @@ import com.cappielloantonio.play.databinding.ItemHorizontalArtistBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.subsonic.models.ArtistID3;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil;
import java.util.Collections;
@ -97,14 +98,14 @@ public class ArtistHorizontalAdapter extends RecyclerView.Adapter<ArtistHorizont
private void onClick() {
Bundle bundle = new Bundle();
bundle.putParcelable("artist_object", artists.get(getBindingAdapterPosition()));
bundle.putParcelable(Constants.ARTIST_OBJECT, artists.get(getBindingAdapterPosition()));
click.onArtistClick(bundle);
}
public boolean onLongClick() {
Bundle bundle = new Bundle();
bundle.putParcelable("artist_object", artists.get(getBindingAdapterPosition()));
bundle.putParcelable(Constants.ARTIST_OBJECT, artists.get(getBindingAdapterPosition()));
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.interfaces.ClickCallback;
import com.cappielloantonio.play.subsonic.models.SimilarArtistID3;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil;
import java.util.Collections;
@ -88,14 +89,14 @@ public class ArtistSimilarAdapter extends RecyclerView.Adapter<ArtistSimilarAdap
public void onClick() {
Bundle bundle = new Bundle();
bundle.putParcelable("artist_object", artists.get(getBindingAdapterPosition()));
bundle.putParcelable(Constants.ARTIST_OBJECT, artists.get(getBindingAdapterPosition()));
click.onArtistClick(bundle);
}
public boolean onLongClick() {
Bundle bundle = new Bundle();
bundle.putParcelable("artist_object", artists.get(getBindingAdapterPosition()));
bundle.putParcelable(Constants.ARTIST_OBJECT, artists.get(getBindingAdapterPosition()));
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.interfaces.ClickCallback;
import com.cappielloantonio.play.subsonic.models.Child;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil;
import java.util.Collections;
@ -76,7 +77,7 @@ public class DiscoverSongAdapter extends RecyclerView.Adapter<DiscoverSongAdapte
public void onClick() {
Bundle bundle = new Bundle();
bundle.putParcelable("song_object", songs.get(getBindingAdapterPosition()));
bundle.putParcelable(Constants.TRACK_OBJECT, songs.get(getBindingAdapterPosition()));
bundle.putBoolean("is_mix", true);
click.onMediaClick(bundle);

View file

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

View file

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

View file

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

View file

@ -13,6 +13,7 @@ import com.cappielloantonio.play.databinding.ItemHomeGridTrackBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Chronology;
import com.cappielloantonio.play.util.Constants;
import java.util.ArrayList;
import java.util.Collections;
@ -73,9 +74,9 @@ public class GridTrackAdapter extends RecyclerView.Adapter<GridTrackAdapter.View
public void onClick() {
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.putInt("position", getBindingAdapterPosition());
bundle.putInt(Constants.ITEM_POSITION, getBindingAdapterPosition());
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.service.MediaManager;
import com.cappielloantonio.play.subsonic.models.Child;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil;
import com.google.common.util.concurrent.ListenableFuture;
@ -98,8 +99,8 @@ public class PlayerSongQueueAdapter extends RecyclerView.Adapter<PlayerSongQueue
public void onClick() {
Bundle bundle = new Bundle();
bundle.putParcelableArrayList("songs_object", new ArrayList<>(songs));
bundle.putInt("position", getBindingAdapterPosition());
bundle.putParcelableArrayList(Constants.TRACKS_OBJECT, new ArrayList<>(songs));
bundle.putInt(Constants.ITEM_POSITION, getBindingAdapterPosition());
click.onMediaClick(bundle);
}

View file

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

View file

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

View file

@ -13,6 +13,7 @@ import com.cappielloantonio.play.databinding.ItemHomeSimilarTrackBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.subsonic.models.Child;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil;
import java.util.Collections;
@ -76,7 +77,7 @@ public class SimilarTrackAdapter extends RecyclerView.Adapter<SimilarTrackAdapte
public void onClick() {
Bundle bundle = new Bundle();
bundle.putParcelable("song_object", songs.get(getBindingAdapterPosition()));
bundle.putParcelable(Constants.TRACK_OBJECT, songs.get(getBindingAdapterPosition()));
bundle.putBoolean("is_mix", true);
click.onMediaClick(bundle);
@ -84,7 +85,7 @@ public class SimilarTrackAdapter extends RecyclerView.Adapter<SimilarTrackAdapte
public boolean onLongClick() {
Bundle bundle = new Bundle();
bundle.putParcelable("song_object", songs.get(getBindingAdapterPosition()));
bundle.putParcelable(Constants.TRACK_OBJECT, songs.get(getBindingAdapterPosition()));
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.interfaces.ClickCallback;
import com.cappielloantonio.play.subsonic.models.Child;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.DownloadUtil;
import com.cappielloantonio.play.util.MappingUtil;
import com.cappielloantonio.play.util.MusicUtil;
@ -106,15 +107,15 @@ public class SongHorizontalAdapter extends RecyclerView.Adapter<SongHorizontalAd
public void onClick() {
Bundle bundle = new Bundle();
bundle.putParcelableArrayList("songs_object", new ArrayList<>(songs));
bundle.putInt("position", getBindingAdapterPosition());
bundle.putParcelableArrayList(Constants.TRACKS_OBJECT, new ArrayList<>(songs));
bundle.putInt(Constants.ITEM_POSITION, getBindingAdapterPosition());
click.onMediaClick(bundle);
}
private boolean onLongClick() {
Bundle bundle = new Bundle();
bundle.putParcelable("song_object", songs.get(getBindingAdapterPosition()));
bundle.putParcelable(Constants.TRACK_OBJECT, songs.get(getBindingAdapterPosition()));
click.onMediaLongClick(bundle);

View file

@ -9,7 +9,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.cappielloantonio.play.databinding.ItemHomeYearBinding;
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.List;
@ -65,7 +65,7 @@ public class YearAdapter extends RecyclerView.Adapter<YearAdapter.ViewHolder> {
public void onClick() {
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()));
click.onYearClick(bundle);

View file

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

View file

@ -14,8 +14,9 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.cappielloantonio.play.R;
import com.cappielloantonio.play.ui.adapter.PlaylistDialogSongHorizontalAdapter;
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.viewmodel.PlaylistEditorViewModel;
@ -63,12 +64,12 @@ public class PlaylistEditorDialog extends DialogFragment {
}
private void setParameterInfo() {
if (requireArguments().getParcelable("song_object") != null) {
playlistEditorViewModel.setSongToAdd(requireArguments().getParcelable("song_object"));
if (requireArguments().getParcelable(Constants.TRACK_OBJECT) != null) {
playlistEditorViewModel.setSongToAdd(requireArguments().getParcelable(Constants.TRACK_OBJECT));
playlistEditorViewModel.setPlaylistToEdit(null);
} else if (requireArguments().getParcelable("playlist_object") != null) {
} else if (requireArguments().getParcelable(Constants.PLAYLIST_OBJECT) != null) {
playlistEditorViewModel.setSongToAdd(null);
playlistEditorViewModel.setPlaylistToEdit(requireArguments().getParcelable("playlist_object"));
playlistEditorViewModel.setPlaylistToEdit(requireArguments().getParcelable(Constants.PLAYLIST_OBJECT));
if (playlistEditorViewModel.getPlaylistToEdit() != null) {
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.databinding.DialogRatingBinding;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.viewmodel.RatingViewModel;
public class RatingDialog extends DialogFragment {
@ -50,12 +51,12 @@ public class RatingDialog extends DialogFragment {
}
private void setElementInfo() {
if (requireArguments().getParcelable("song_object") != null) {
ratingViewModel.setSong(requireArguments().getParcelable("song_object"));
} else if (requireArguments().getParcelable("album_object") != null) {
ratingViewModel.setAlbum(requireArguments().getParcelable("album_object"));
} else if (requireArguments().getParcelable("artist_object") != null) {
ratingViewModel.setArtist(requireArguments().getParcelable("artist_object"));
if (requireArguments().getParcelable(Constants.TRACK_OBJECT) != null) {
ratingViewModel.setSong(requireArguments().getParcelable(Constants.TRACK_OBJECT));
} else if (requireArguments().getParcelable(Constants.ALBUM_OBJECT) != null) {
ratingViewModel.setAlbum(requireArguments().getParcelable(Constants.ALBUM_OBJECT));
} else if (requireArguments().getParcelable(Constants.ARTIST_OBJECT) != null) {
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.helper.recyclerview.GridItemDecoration;
import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Album;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.adapter.AlbumCatalogueAdapter;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.viewmodel.AlbumCatalogueViewModel;
@OptIn(markerClass = UnstableApi.class)
@ -154,16 +154,16 @@ public class AlbumCatalogueFragment extends Fragment implements ClickCallback {
popup.setOnMenuItemClickListener(menuItem -> {
if (menuItem.getItemId() == R.id.menu_album_sort_name) {
albumAdapter.sort(Album.ORDER_BY_NAME);
albumAdapter.sort(Constants.ALBUM_ORDER_BY_NAME);
return true;
} 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;
} 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;
} 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;
}

View file

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

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.RoundedCorners;
import com.cappielloantonio.play.R;
import com.cappielloantonio.play.ui.adapter.SongHorizontalAdapter;
import com.cappielloantonio.play.databinding.FragmentAlbumPageBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest;
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.MediaService;
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.MappingUtil;
import com.cappielloantonio.play.util.MusicUtil;
@ -116,7 +117,7 @@ public class AlbumPageFragment extends Fragment implements ClickCallback {
}
private void init() {
albumPageViewModel.setAlbum(requireArguments().getParcelable("album_object"));
albumPageViewModel.setAlbum(requireArguments().getParcelable(Constants.ALBUM_OBJECT));
}
private void initAppBar() {
@ -142,7 +143,7 @@ public class AlbumPageFragment extends Fragment implements ClickCallback {
bind.albumArtistLabel.setOnClickListener(v -> albumPageViewModel.getArtist().observe(getViewLifecycleOwner(), artist -> {
if (artist != null) {
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);
} else
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
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);
}

View file

@ -25,12 +25,12 @@ import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.cappielloantonio.play.R;
import com.cappielloantonio.play.ui.adapter.ArtistCatalogueAdapter;
import com.cappielloantonio.play.databinding.FragmentArtistCatalogueBinding;
import com.cappielloantonio.play.helper.recyclerview.GridItemDecoration;
import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Artist;
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;
@UnstableApi
@ -153,10 +153,10 @@ public class ArtistCatalogueFragment extends Fragment implements ClickCallback {
popup.setOnMenuItemClickListener(menuItem -> {
if (menuItem.getItemId() == R.id.menu_artist_sort_name) {
artistAdapter.sort(Artist.ORDER_BY_NAME);
artistAdapter.sort(Constants.ARTIST_ORDER_BY_NAME);
return true;
} 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;
}

View file

@ -14,11 +14,11 @@ import androidx.navigation.Navigation;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.cappielloantonio.play.R;
import com.cappielloantonio.play.ui.adapter.ArtistHorizontalAdapter;
import com.cappielloantonio.play.databinding.FragmentArtistListPageBinding;
import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Artist;
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;
@UnstableApi
@ -52,11 +52,11 @@ public class ArtistListPageFragment extends Fragment implements ClickCallback {
}
private void init() {
if (requireArguments().getString(Artist.STARRED) != null) {
artistListPageViewModel.title = Artist.STARRED;
if (requireArguments().getString(Constants.ARTIST_STARRED) != null) {
artistListPageViewModel.title = Constants.ARTIST_STARRED;
bind.pageTitleLabel.setText(R.string.artist_list_page_starred);
} else if (requireArguments().getString(Artist.DOWNLOADED) != null) {
artistListPageViewModel.title = Artist.DOWNLOADED;
} else if (requireArguments().getString(Constants.ARTIST_DOWNLOADED) != null) {
artistListPageViewModel.title = Constants.ARTIST_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.helper.recyclerview.CustomLinearSnapHelper;
import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Media;
import com.cappielloantonio.play.service.MediaManager;
import com.cappielloantonio.play.service.MediaService;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.adapter.AlbumArtistPageOrSimilarAdapter;
import com.cappielloantonio.play.ui.adapter.ArtistSimilarAdapter;
import com.cappielloantonio.play.ui.adapter.SongHorizontalAdapter;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.viewmodel.ArtistPageViewModel;
import com.google.common.util.concurrent.ListenableFuture;
@ -85,12 +85,12 @@ public class ArtistPageFragment extends Fragment implements ClickCallback {
}
private void init() {
artistPageViewModel.setArtist(requireArguments().getParcelable("artist_object"));
artistPageViewModel.setArtist(requireArguments().getParcelable(Constants.ARTIST_OBJECT));
bind.mostStreamedSongTextViewClickable.setOnClickListener(v -> {
Bundle bundle = new Bundle();
bundle.putString(Media.BY_ARTIST, Media.BY_ARTIST);
bundle.putParcelable("artist_object", artistPageViewModel.getArtist());
bundle.putString(Constants.MEDIA_BY_ARTIST, Constants.MEDIA_BY_ARTIST);
bundle.putParcelable(Constants.ARTIST_OBJECT, artistPageViewModel.getArtist());
activity.navController.navigate(R.id.action_artistPageFragment_to_songListPageFragment, bundle);
});
}
@ -211,7 +211,7 @@ public class ArtistPageFragment extends Fragment implements ClickCallback {
@Override
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);
}

View file

@ -20,12 +20,13 @@ import androidx.navigation.Navigation;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.cappielloantonio.play.R;
import com.cappielloantonio.play.ui.adapter.DownloadHorizontalAdapter;
import com.cappielloantonio.play.databinding.FragmentDownloadBinding;
import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.service.MediaManager;
import com.cappielloantonio.play.service.MediaService;
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.google.android.gms.cast.framework.CastButtonFactory;
import com.google.common.util.concurrent.ListenableFuture;
@ -153,7 +154,7 @@ public class DownloadFragment extends Fragment implements ClickCallback {
@Override
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);
}

View file

@ -16,9 +16,9 @@ import androidx.media3.common.util.UnstableApi;
import com.cappielloantonio.play.R;
import com.cappielloantonio.play.databinding.FragmentFilterBinding;
import com.cappielloantonio.play.model.Media;
import com.cappielloantonio.play.subsonic.models.Genre;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.viewmodel.FilterViewModel;
import com.google.android.material.chip.Chip;
@ -54,7 +54,7 @@ public class FilterFragment extends Fragment {
private void init() {
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("filter_name_list", filterViewModel.getFilterNames());
bind.finishFilteringTextViewClickable.setOnClickListener(v -> {

View file

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

View file

@ -27,6 +27,16 @@ import androidx.recyclerview.widget.SnapHelper;
import androidx.viewpager2.widget.ViewPager2;
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.AlbumHorizontalAdapter;
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.SongHorizontalAdapter;
import com.cappielloantonio.play.ui.adapter.YearAdapter;
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.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.Constants;
import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.util.UIUtil;
import com.cappielloantonio.play.viewmodel.HomeViewModel;
@ -191,37 +189,37 @@ public class HomeFragment extends Fragment implements ClickCallback {
bind.starredTracksTextViewClickable.setOnClickListener(v -> {
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);
});
bind.starredAlbumsTextViewClickable.setOnClickListener(v -> {
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);
});
bind.starredArtistsTextViewClickable.setOnClickListener(v -> {
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);
});
bind.recentlyAddedAlbumsTextViewClickable.setOnClickListener(v -> {
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);
});
bind.recentlyPlayedAlbumsTextViewClickable.setOnClickListener(v -> {
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);
});
bind.mostPlayedAlbumsTextViewClickable.setOnClickListener(v -> {
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);
});
@ -632,7 +630,7 @@ public class HomeFragment extends Fragment implements ClickCallback {
genericPlaylistCickableTextView.setOnClickListener(view -> {
Bundle bundle = new Bundle();
bundle.putParcelable("playlist_object", playlist);
bundle.putParcelable(Constants.PLAYLIST_OBJECT, playlist);
bundle.putBoolean("is_offline", false);
activity.navController.navigate(R.id.action_homeFragment_to_playlistPageFragment, bundle);
});
@ -743,22 +741,22 @@ public class HomeFragment extends Fragment implements ClickCallback {
@Override
public void onMediaClick(Bundle bundle) {
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);
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) {
MediaManager.enqueue(mediaBrowserListenableFuture, requireContext(), songs, true);
}
});
}
} else if (bundle.containsKey("is_chronology")) {
List<Child> media = bundle.getParcelableArrayList("songs_object");
MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), media, bundle.getInt("position"));
List<Child> media = bundle.getParcelableArrayList(Constants.TRACKS_OBJECT);
MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), media, bundle.getInt(Constants.ITEM_POSITION));
activity.setBottomSheetInPeek(true);
} 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);
}
}
@ -786,7 +784,7 @@ public class HomeFragment extends Fragment implements ClickCallback {
.show();
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) {
MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), songs, 0);
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")) {
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) {
MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), songs, 0);
activity.setBottomSheetInPeek(true);

View file

@ -18,16 +18,16 @@ import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
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.ArtistAdapter;
import com.cappielloantonio.play.ui.adapter.GenreAdapter;
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.util.Constants;
import com.cappielloantonio.play.viewmodel.LibraryViewModel;
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.playlistCatalogueTextViewClickable.setOnClickListener(v -> {
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);
});

View file

@ -25,9 +25,9 @@ import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.cappielloantonio.play.R;
import com.cappielloantonio.play.databinding.FragmentPlayerBottomSheetBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest;
import com.cappielloantonio.play.model.Media;
import com.cappielloantonio.play.service.MediaService;
import com.cappielloantonio.play.ui.fragment.pager.PlayerControllerVerticalPager;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel;
import com.google.android.material.elevation.SurfaceColors;
@ -159,13 +159,13 @@ public class PlayerBottomSheetFragment extends Fragment {
private void setMediaControllerUI(MediaBrowser mediaBrowser) {
if (mediaBrowser.getMediaMetadata().extras != null) {
switch (mediaBrowser.getMediaMetadata().extras.getString("type", Media.MEDIA_TYPE_MUSIC)) {
case Media.MEDIA_TYPE_PODCAST:
switch (mediaBrowser.getMediaMetadata().extras.getString("type", Constants.MEDIA_TYPE_MUSIC)) {
case Constants.MEDIA_TYPE_PODCAST:
bind.playerHeaderLayout.playerHeaderFastForwardMediaButton.setVisibility(View.VISIBLE);
bind.playerHeaderLayout.playerHeaderRewindMediaButton.setVisibility(View.VISIBLE);
bind.playerHeaderLayout.playerHeaderNextMediaButton.setVisibility(View.GONE);
break;
case Media.MEDIA_TYPE_MUSIC:
case Constants.MEDIA_TYPE_MUSIC:
default:
bind.playerHeaderLayout.playerHeaderFastForwardMediaButton.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.databinding.InnerFragmentPlayerControllerBinding;
import com.cappielloantonio.play.model.Media;
import com.cappielloantonio.play.service.MediaService;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.dialog.RatingDialog;
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.Preferences;
import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel;
@ -190,8 +190,8 @@ public class PlayerControllerFragment extends Fragment {
initPlaybackSpeedButton(mediaBrowser);
if (mediaBrowser.getMediaMetadata().extras != null) {
switch (mediaBrowser.getMediaMetadata().extras.getString("type", Media.MEDIA_TYPE_MUSIC)) {
case Media.MEDIA_TYPE_PODCAST:
switch (mediaBrowser.getMediaMetadata().extras.getString("type", Constants.MEDIA_TYPE_MUSIC)) {
case Constants.MEDIA_TYPE_PODCAST:
bind.getRoot().setShowShuffleButton(false);
bind.getRoot().setShowRewindButton(true);
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);
setPlaybackParameters(mediaBrowser);
break;
case Media.MEDIA_TYPE_MUSIC:
case Constants.MEDIA_TYPE_MUSIC:
default:
bind.getRoot().setShowShuffleButton(true);
bind.getRoot().setShowRewindButton(false);
@ -243,7 +243,7 @@ public class PlayerControllerFragment extends Fragment {
buttonFavorite.setOnClickListener(v -> playerBottomSheetViewModel.setFavorite(requireContext(), media));
buttonFavorite.setOnLongClickListener(v -> {
Bundle bundle = new Bundle();
bundle.putParcelable("song_object", media);
bundle.putParcelable(Constants.TRACK_OBJECT, media);
RatingDialog dialog = new RatingDialog();
dialog.setArguments(bundle);
@ -264,7 +264,7 @@ public class PlayerControllerFragment extends Fragment {
if (artist != null) {
playerArtistNameLabel.setOnClickListener(view -> {
Bundle bundle = new Bundle();
bundle.putParcelable("artist_object", artist);
bundle.putParcelable(Constants.ARTIST_OBJECT, artist);
NavHostFragment.findNavController(this).navigate(R.id.artistPageFragment, bundle);
activity.collapseBottomSheet();
});
@ -276,30 +276,30 @@ public class PlayerControllerFragment extends Fragment {
playbackSpeedButton.setOnClickListener(view -> {
float currentSpeed = Preferences.getPlaybackSpeed();
if (currentSpeed == Media.MEDIA_PLAYBACK_SPEED_080) {
mediaBrowser.setPlaybackParameters(new PlaybackParameters(Media.MEDIA_PLAYBACK_SPEED_100));
playbackSpeedButton.setText(getString(R.string.player_playback_speed, Media.MEDIA_PLAYBACK_SPEED_100));
Preferences.setPlaybackSpeed(Media.MEDIA_PLAYBACK_SPEED_100);
} else if (currentSpeed == Media.MEDIA_PLAYBACK_SPEED_100) {
mediaBrowser.setPlaybackParameters(new PlaybackParameters(Media.MEDIA_PLAYBACK_SPEED_125));
playbackSpeedButton.setText(getString(R.string.player_playback_speed, Media.MEDIA_PLAYBACK_SPEED_125));
Preferences.setPlaybackSpeed(Media.MEDIA_PLAYBACK_SPEED_125);
} else if (currentSpeed == Media.MEDIA_PLAYBACK_SPEED_125) {
mediaBrowser.setPlaybackParameters(new PlaybackParameters(Media.MEDIA_PLAYBACK_SPEED_150));
playbackSpeedButton.setText(getString(R.string.player_playback_speed, Media.MEDIA_PLAYBACK_SPEED_150));
Preferences.setPlaybackSpeed(Media.MEDIA_PLAYBACK_SPEED_150);
} else if (currentSpeed == Media.MEDIA_PLAYBACK_SPEED_150) {
mediaBrowser.setPlaybackParameters(new PlaybackParameters(Media.MEDIA_PLAYBACK_SPEED_175));
playbackSpeedButton.setText(getString(R.string.player_playback_speed, Media.MEDIA_PLAYBACK_SPEED_175));
Preferences.setPlaybackSpeed(Media.MEDIA_PLAYBACK_SPEED_175);
} else if (currentSpeed == Media.MEDIA_PLAYBACK_SPEED_175) {
mediaBrowser.setPlaybackParameters(new PlaybackParameters(Media.MEDIA_PLAYBACK_SPEED_200));
playbackSpeedButton.setText(getString(R.string.player_playback_speed, Media.MEDIA_PLAYBACK_SPEED_200));
Preferences.setPlaybackSpeed(Media.MEDIA_PLAYBACK_SPEED_200);
} else if (currentSpeed == Media.MEDIA_PLAYBACK_SPEED_200) {
mediaBrowser.setPlaybackParameters(new PlaybackParameters(Media.MEDIA_PLAYBACK_SPEED_080));
playbackSpeedButton.setText(getString(R.string.player_playback_speed, Media.MEDIA_PLAYBACK_SPEED_080));
Preferences.setPlaybackSpeed(Media.MEDIA_PLAYBACK_SPEED_080);
if (currentSpeed == Constants.MEDIA_PLAYBACK_SPEED_080) {
mediaBrowser.setPlaybackParameters(new PlaybackParameters(Constants.MEDIA_PLAYBACK_SPEED_100));
playbackSpeedButton.setText(getString(R.string.player_playback_speed, Constants.MEDIA_PLAYBACK_SPEED_100));
Preferences.setPlaybackSpeed(Constants.MEDIA_PLAYBACK_SPEED_100);
} else if (currentSpeed == Constants.MEDIA_PLAYBACK_SPEED_100) {
mediaBrowser.setPlaybackParameters(new PlaybackParameters(Constants.MEDIA_PLAYBACK_SPEED_125));
playbackSpeedButton.setText(getString(R.string.player_playback_speed, Constants.MEDIA_PLAYBACK_SPEED_125));
Preferences.setPlaybackSpeed(Constants.MEDIA_PLAYBACK_SPEED_125);
} else if (currentSpeed == Constants.MEDIA_PLAYBACK_SPEED_125) {
mediaBrowser.setPlaybackParameters(new PlaybackParameters(Constants.MEDIA_PLAYBACK_SPEED_150));
playbackSpeedButton.setText(getString(R.string.player_playback_speed, Constants.MEDIA_PLAYBACK_SPEED_150));
Preferences.setPlaybackSpeed(Constants.MEDIA_PLAYBACK_SPEED_150);
} else if (currentSpeed == Constants.MEDIA_PLAYBACK_SPEED_150) {
mediaBrowser.setPlaybackParameters(new PlaybackParameters(Constants.MEDIA_PLAYBACK_SPEED_175));
playbackSpeedButton.setText(getString(R.string.player_playback_speed, Constants.MEDIA_PLAYBACK_SPEED_175));
Preferences.setPlaybackSpeed(Constants.MEDIA_PLAYBACK_SPEED_175);
} else if (currentSpeed == Constants.MEDIA_PLAYBACK_SPEED_175) {
mediaBrowser.setPlaybackParameters(new PlaybackParameters(Constants.MEDIA_PLAYBACK_SPEED_200));
playbackSpeedButton.setText(getString(R.string.player_playback_speed, Constants.MEDIA_PLAYBACK_SPEED_200));
Preferences.setPlaybackSpeed(Constants.MEDIA_PLAYBACK_SPEED_200);
} else if (currentSpeed == Constants.MEDIA_PLAYBACK_SPEED_200) {
mediaBrowser.setPlaybackParameters(new PlaybackParameters(Constants.MEDIA_PLAYBACK_SPEED_080));
playbackSpeedButton.setText(getString(R.string.player_playback_speed, Constants.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) {
mediaBrowser.setPlaybackParameters(new PlaybackParameters(Media.MEDIA_PLAYBACK_SPEED_100));
mediaBrowser.setPlaybackParameters(new PlaybackParameters(Constants.MEDIA_PLAYBACK_SPEED_100));
// 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.MediaService;
import com.cappielloantonio.play.ui.dialog.PlaylistChooserDialog;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.DownloadUtil;
import com.cappielloantonio.play.util.MappingUtil;
import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel;
@ -97,7 +98,7 @@ public class PlayerCoverFragment extends Fragment {
bind.innerButtonTopRight.setOnClickListener(view -> {
Bundle bundle = new Bundle();
bundle.putParcelable("song_object", song);
bundle.putParcelable(Constants.TRACK_OBJECT, song);
PlaylistChooserDialog dialog = new PlaylistChooserDialog();
dialog.setArguments(bundle);

View file

@ -16,12 +16,13 @@ import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.cappielloantonio.play.ui.adapter.PlayerSongQueueAdapter;
import com.cappielloantonio.play.databinding.InnerFragmentPlayerQueueBinding;
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.ui.adapter.PlayerSongQueueAdapter;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel;
import com.google.common.util.concurrent.ListenableFuture;
@ -151,6 +152,6 @@ public class PlayerQueueFragment extends Fragment implements ClickCallback {
@Override
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 com.cappielloantonio.play.R;
import com.cappielloantonio.play.ui.adapter.PlaylistHorizontalAdapter;
import com.cappielloantonio.play.databinding.FragmentPlaylistCatalogueBinding;
import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Genre;
import com.cappielloantonio.play.subsonic.models.Playlist;
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.util.Constants;
import com.cappielloantonio.play.viewmodel.PlaylistCatalogueViewModel;
import java.util.ArrayList;
@ -72,10 +72,10 @@ public class PlaylistCatalogueFragment extends Fragment implements ClickCallback
}
private void init() {
if (requireArguments().getString(com.cappielloantonio.play.model.Playlist.ALL) != null) {
playlistCatalogueViewModel.setType(com.cappielloantonio.play.model.Playlist.ALL);
} else if (requireArguments().getString(com.cappielloantonio.play.model.Playlist.DOWNLOADED) != null) {
playlistCatalogueViewModel.setType(com.cappielloantonio.play.model.Playlist.DOWNLOADED);
if (requireArguments().getString(Constants.PLAYLIST_ALL) != null) {
playlistCatalogueViewModel.setType(Constants.PLAYLIST_ALL);
} else if (requireArguments().getString(Constants.PLAYLIST_DOWNLOADED) != null) {
playlistCatalogueViewModel.setType(Constants.PLAYLIST_DOWNLOADED);
}
}
@ -183,10 +183,10 @@ public class PlaylistCatalogueFragment extends Fragment implements ClickCallback
popup.setOnMenuItemClickListener(menuItem -> {
if (menuItem.getItemId() == R.id.menu_playlist_sort_name) {
playlistHorizontalAdapter.sort(Genre.ORDER_BY_NAME);
playlistHorizontalAdapter.sort(Constants.GENRE_ORDER_BY_NAME);
return true;
} 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;
}

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.GranularRoundedCorners;
import com.cappielloantonio.play.R;
import com.cappielloantonio.play.ui.adapter.SongHorizontalAdapter;
import com.cappielloantonio.play.databinding.FragmentPlaylistPageBinding;
import com.cappielloantonio.play.glide.CustomGlideRequest;
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.MediaService;
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.MappingUtil;
import com.cappielloantonio.play.util.MusicUtil;
@ -128,7 +129,7 @@ public class PlaylistPageFragment extends Fragment implements ClickCallback {
}
private void init() {
playlistPageViewModel.setPlaylist(requireArguments().getParcelable("playlist_object"));
playlistPageViewModel.setPlaylist(requireArguments().getParcelable(Constants.PLAYLIST_OBJECT));
playlistPageViewModel.setOffline(requireArguments().getBoolean("is_offline"));
}
@ -236,7 +237,7 @@ public class PlaylistPageFragment extends Fragment implements ClickCallback {
@Override
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);
}

View file

@ -18,15 +18,16 @@ import androidx.navigation.Navigation;
import androidx.recyclerview.widget.LinearLayoutManager;
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.helper.recyclerview.CustomLinearSnapHelper;
import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.service.MediaManager;
import com.cappielloantonio.play.service.MediaService;
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.viewmodel.SearchViewModel;
import com.google.common.util.concurrent.ListenableFuture;
@ -228,7 +229,7 @@ public class SearchFragment extends Fragment implements ClickCallback {
@Override
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);
}

View file

@ -17,13 +17,13 @@ import androidx.navigation.Navigation;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.cappielloantonio.play.R;
import com.cappielloantonio.play.ui.adapter.SongHorizontalAdapter;
import com.cappielloantonio.play.databinding.FragmentSongListPageBinding;
import com.cappielloantonio.play.interfaces.ClickCallback;
import com.cappielloantonio.play.model.Media;
import com.cappielloantonio.play.service.MediaManager;
import com.cappielloantonio.play.service.MediaService;
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.viewmodel.SongListPageViewModel;
import com.google.common.util.concurrent.ListenableFuture;
@ -75,50 +75,50 @@ public class SongListPageFragment extends Fragment implements ClickCallback {
}
private void init() {
if (requireArguments().getString(Media.RECENTLY_PLAYED) != null) {
songListPageViewModel.title = Media.RECENTLY_PLAYED;
if (requireArguments().getString(Constants.MEDIA_RECENTLY_PLAYED) != null) {
songListPageViewModel.title = Constants.MEDIA_RECENTLY_PLAYED;
songListPageViewModel.toolbarTitle = getString(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) {
songListPageViewModel.title = Media.MOST_PLAYED;
} else if (requireArguments().getString(Constants.MEDIA_MOST_PLAYED) != null) {
songListPageViewModel.title = Constants.MEDIA_MOST_PLAYED;
songListPageViewModel.toolbarTitle = getString(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) {
songListPageViewModel.title = Media.RECENTLY_ADDED;
} else if (requireArguments().getString(Constants.MEDIA_RECENTLY_ADDED) != null) {
songListPageViewModel.title = Constants.MEDIA_RECENTLY_ADDED;
songListPageViewModel.toolbarTitle = getString(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) {
songListPageViewModel.title = Media.BY_GENRE;
songListPageViewModel.genre = requireArguments().getParcelable("genre_object");
} else if (requireArguments().getString(Constants.MEDIA_BY_GENRE) != null) {
songListPageViewModel.title = Constants.MEDIA_BY_GENRE;
songListPageViewModel.genre = requireArguments().getParcelable(Constants.GENRE_OBJECT);
songListPageViewModel.toolbarTitle = MusicUtil.getReadableString(songListPageViewModel.genre.getGenre());
bind.pageTitleLabel.setText(MusicUtil.getReadableString(songListPageViewModel.genre.getGenre()));
} else if (requireArguments().getString(Media.BY_ARTIST) != null) {
songListPageViewModel.title = Media.BY_ARTIST;
songListPageViewModel.artist = requireArguments().getParcelable("artist_object");
} else if (requireArguments().getString(Constants.MEDIA_BY_ARTIST) != null) {
songListPageViewModel.title = Constants.MEDIA_BY_ARTIST;
songListPageViewModel.artist = requireArguments().getParcelable(Constants.ARTIST_OBJECT);
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())));
} else if (requireArguments().getString(Media.BY_GENRES) != null) {
songListPageViewModel.title = Media.BY_GENRES;
} else if (requireArguments().getString(Constants.MEDIA_BY_GENRES) != null) {
songListPageViewModel.title = Constants.MEDIA_BY_GENRES;
songListPageViewModel.filters = requireArguments().getStringArrayList("filters_list");
songListPageViewModel.filterNames = requireArguments().getStringArrayList("filter_name_list");
songListPageViewModel.toolbarTitle = songListPageViewModel.getFiltersTitle();
bind.pageTitleLabel.setText(songListPageViewModel.getFiltersTitle());
} else if (requireArguments().getString(Media.BY_YEAR) != null) {
songListPageViewModel.title = Media.BY_YEAR;
} else if (requireArguments().getString(Constants.MEDIA_BY_YEAR) != null) {
songListPageViewModel.title = Constants.MEDIA_BY_YEAR;
songListPageViewModel.year = requireArguments().getInt("year_object");
songListPageViewModel.toolbarTitle = 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) {
songListPageViewModel.title = Media.STARRED;
} else if (requireArguments().getString(Constants.MEDIA_STARRED) != null) {
songListPageViewModel.title = Constants.MEDIA_STARRED;
songListPageViewModel.toolbarTitle = getString(R.string.song_list_page_starred);
bind.pageTitleLabel.setText(R.string.song_list_page_starred);
} else if (requireArguments().getString(Media.DOWNLOADED) != null) {
songListPageViewModel.title = Media.DOWNLOADED;
} else if (requireArguments().getString(Constants.MEDIA_DOWNLOADED) != null) {
songListPageViewModel.title = Constants.MEDIA_DOWNLOADED;
songListPageViewModel.toolbarTitle = getString(R.string.song_list_page_downloaded);
bind.pageTitleLabel.setText(getString(R.string.song_list_page_downloaded));
} else if (requireArguments().getParcelable("album_object") != null) {
songListPageViewModel.album = requireArguments().getParcelable("album_object");
songListPageViewModel.title = Media.FROM_ALBUM;
} else if (requireArguments().getParcelable(Constants.ALBUM_OBJECT) != null) {
songListPageViewModel.album = requireArguments().getParcelable(Constants.ALBUM_OBJECT);
songListPageViewModel.title = Constants.MEDIA_FROM_ALBUM;
songListPageViewModel.toolbarTitle = 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
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);
}

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.Child;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.DownloadUtil;
import com.cappielloantonio.play.util.MappingUtil;
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) {
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.setAlbum(album);
@ -175,7 +176,7 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements
goToArtist.setOnClickListener(v -> albumBottomSheetViewModel.getArtist().observe(getViewLifecycleOwner(), artist -> {
if (artist != null) {
Bundle bundle = new Bundle();
bundle.putParcelable("artist_object", artist);
bundle.putParcelable(Constants.ARTIST_OBJECT, artist);
NavHostFragment.findNavController(this).navigate(R.id.artistPageFragment, bundle);
} else {
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.subsonic.models.ArtistID3;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.viewmodel.ArtistBottomSheetViewModel;
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) {
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.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.dialog.PlaylistChooserDialog;
import com.cappielloantonio.play.ui.dialog.RatingDialog;
import com.cappielloantonio.play.util.Constants;
import com.cappielloantonio.play.util.DownloadUtil;
import com.cappielloantonio.play.util.MappingUtil;
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.common.util.concurrent.ListenableFuture;
import java.util.List;
@UnstableApi
public class SongBottomSheetDialog extends BottomSheetDialogFragment implements View.OnClickListener {
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) {
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.setSong(song);
@ -98,7 +97,7 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
});
favoriteToggle.setOnLongClickListener(v -> {
Bundle bundle = new Bundle();
bundle.putParcelable("song_object", song);
bundle.putParcelable(Constants.TRACK_OBJECT, song);
RatingDialog dialog = new RatingDialog();
dialog.setArguments(bundle);
@ -143,7 +142,7 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
TextView rate = view.findViewById(R.id.rate_text_view);
rate.setOnClickListener(v -> {
Bundle bundle = new Bundle();
bundle.putParcelable("song_object", song);
bundle.putParcelable(Constants.TRACK_OBJECT, song);
RatingDialog dialog = new RatingDialog();
dialog.setArguments(bundle);
@ -175,7 +174,7 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
TextView addToPlaylist = view.findViewById(R.id.add_to_playlist_text_view);
addToPlaylist.setOnClickListener(v -> {
Bundle bundle = new Bundle();
bundle.putParcelable("song_object", song);
bundle.putParcelable(Constants.TRACK_OBJECT, song);
PlaylistChooserDialog dialog = new PlaylistChooserDialog();
dialog.setArguments(bundle);
@ -188,7 +187,7 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
goToAlbum.setOnClickListener(v -> songBottomSheetViewModel.getAlbum().observe(getViewLifecycleOwner(), album -> {
if (album != null) {
Bundle bundle = new Bundle();
bundle.putParcelable("album_object", album);
bundle.putParcelable(Constants.ALBUM_OBJECT, album);
NavHostFragment.findNavController(this).navigate(R.id.albumPageFragment, bundle);
} else
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 -> {
if (artist != null) {
Bundle bundle = new Bundle();
bundle.putParcelable("artist_object", artist);
bundle.putParcelable(Constants.ARTIST_OBJECT, artist);
NavHostFragment.findNavController(this).navigate(R.id.artistPageFragment, bundle);
} else
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 {
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.MutableLiveData;
import com.cappielloantonio.play.model.Album;
import com.cappielloantonio.play.repository.AlbumRepository;
import com.cappielloantonio.play.repository.DownloadRepository;
import com.cappielloantonio.play.subsonic.models.AlbumID3;
import com.cappielloantonio.play.subsonic.models.ArtistID3;
import com.cappielloantonio.play.util.Constants;
import java.util.ArrayList;
import java.util.Calendar;
@ -39,19 +39,19 @@ public class AlbumListPageViewModel extends AndroidViewModel {
albumList = new MutableLiveData<>(new ArrayList<>());
switch (title) {
case Album.RECENTLY_PLAYED:
case Constants.ALBUM_RECENTLY_PLAYED:
albumRepository.getAlbums("recent", 500, null, null).observe(owner, albums -> albumList.setValue(albums));
break;
case Album.MOST_PLAYED:
case Constants.ALBUM_MOST_PLAYED:
albumRepository.getAlbums("frequent", 500, null, null).observe(owner, albums -> albumList.setValue(albums));
break;
case Album.RECENTLY_ADDED:
case Constants.ALBUM_RECENTLY_ADDED:
albumRepository.getAlbums("newest", 500, null, null).observe(owner, albums -> albumList.setValue(albums));
break;
case Album.STARRED:
case Constants.ALBUM_STARRED:
albumList = albumRepository.getStarredAlbums(false, -1);
break;
case Album.NEW_RELEASES:
case Constants.ALBUM_NEW_RELEASES:
int currentYear = Calendar.getInstance().get(Calendar.YEAR);
albumRepository.getAlbums("byYear", 500, currentYear, currentYear).observe(owner, albums -> {
albums.sort(Comparator.comparing(AlbumID3::getCreated).reversed());

View file

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

View file

@ -8,10 +8,7 @@ import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import com.cappielloantonio.play.model.Playlist;
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 java.util.List;
@ -22,10 +19,7 @@ public class DownloadViewModel extends AndroidViewModel {
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<Playlist>> downloadedPlaylistSample = new MutableLiveData<>(null);
public DownloadViewModel(@NonNull Application application) {
super(application);

View file

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

View file

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

View file

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