mirror of
https://github.com/CappielloAntonio/tempo.git
synced 2026-02-01 07:03:35 +00:00
Implemented playlist
This commit is contained in:
@@ -45,6 +45,7 @@ public class PlaylistPageFragment extends Fragment {
|
||||
playlistPageViewModel = new ViewModelProvider(requireActivity()).get(PlaylistPageViewModel.class);
|
||||
|
||||
init();
|
||||
initBackCover();
|
||||
initSongsView();
|
||||
|
||||
return view;
|
||||
@@ -82,7 +83,13 @@ public class PlaylistPageFragment extends Fragment {
|
||||
bind.animToolbar.getNavigationIcon().setColorFilter(getResources().getColor(R.color.white, null), PorterDuff.Mode.SRC_ATOP);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void initBackCover() {
|
||||
CustomGlideRequest.Builder
|
||||
.from(requireContext(), playlistPageViewModel.getPlaylist().getPrimary(), playlistPageViewModel.getPlaylist().getBlurHash(), CustomGlideRequest.PRIMARY, CustomGlideRequest.TOP_QUALITY, CustomGlideRequest.ALBUM_PIC)
|
||||
.build()
|
||||
.into(bind.albumBackCoverImageView);
|
||||
}
|
||||
|
||||
private void initSongsView() {
|
||||
@@ -91,6 +98,8 @@ public class PlaylistPageFragment extends Fragment {
|
||||
|
||||
songResultSearchAdapter = new SongResultSearchAdapter(activity, requireContext(), getChildFragmentManager());
|
||||
bind.songRecyclerView.setAdapter(songResultSearchAdapter);
|
||||
playlistPageViewModel.getPlaylistSongList().observe(requireActivity(), songs -> songResultSearchAdapter.setItems(songs));
|
||||
playlistPageViewModel.getPlaylistSongList().observe(requireActivity(), songs -> {
|
||||
songResultSearchAdapter.setItems(songs);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -74,8 +74,8 @@ public class SettingsFragment extends PreferenceFragmentCompat {
|
||||
Preference cross_sync_button = findPreference(getString(R.string.genres_music_cross_sync));
|
||||
cross_sync_button.setOnPreferenceClickListener(preference -> {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(requireContext());
|
||||
builder.setMessage("Sync song's genres otherwise nothing will be shown in each genre category")
|
||||
.setTitle("Song's genres not synchronized")
|
||||
builder.setMessage("Force sync song's genres to display updated and correct songs in each genre category")
|
||||
.setTitle("Force sync song's genres")
|
||||
.setNegativeButton(R.string.ignore, null)
|
||||
.setPositiveButton("Sync", (dialog, id) -> {
|
||||
Bundle bundle = SyncUtil.getSyncBundle(false, false, true, false, false, true);
|
||||
@@ -84,6 +84,20 @@ public class SettingsFragment extends PreferenceFragmentCompat {
|
||||
.show();
|
||||
return true;
|
||||
});
|
||||
|
||||
Preference playlist_sync_button = findPreference(getString(R.string.playlist_song_cross_sync));
|
||||
playlist_sync_button.setOnPreferenceClickListener(preference -> {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(requireContext());
|
||||
builder.setMessage("Sync playlists' songs")
|
||||
.setTitle("Force sync playlist")
|
||||
.setNegativeButton(R.string.ignore, null)
|
||||
.setPositiveButton("Sync", (dialog, id) -> {
|
||||
Bundle bundle = SyncUtil.getSyncBundle(false, false, false, true, false, false);
|
||||
activity.goFromSettingsToSync(bundle);
|
||||
})
|
||||
.show();
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import com.cappielloantonio.play.model.AlbumArtistCross;
|
||||
import com.cappielloantonio.play.model.Artist;
|
||||
import com.cappielloantonio.play.model.Genre;
|
||||
import com.cappielloantonio.play.model.Playlist;
|
||||
import com.cappielloantonio.play.model.PlaylistSongCross;
|
||||
import com.cappielloantonio.play.model.Song;
|
||||
import com.cappielloantonio.play.model.SongArtistCross;
|
||||
import com.cappielloantonio.play.model.SongGenreCross;
|
||||
@@ -28,6 +29,7 @@ import com.cappielloantonio.play.repository.AlbumRepository;
|
||||
import com.cappielloantonio.play.repository.ArtistRepository;
|
||||
import com.cappielloantonio.play.repository.GenreRepository;
|
||||
import com.cappielloantonio.play.repository.PlaylistRepository;
|
||||
import com.cappielloantonio.play.repository.PlaylistSongRepository;
|
||||
import com.cappielloantonio.play.repository.SongArtistRepository;
|
||||
import com.cappielloantonio.play.repository.SongRepository;
|
||||
import com.cappielloantonio.play.ui.activities.MainActivity;
|
||||
@@ -54,6 +56,7 @@ public class SyncFragment extends Fragment {
|
||||
private GenreRepository genreRepository;
|
||||
private SongArtistRepository songArtistRepository;
|
||||
private AlbumArtistRepository albumArtistRepository;
|
||||
private PlaylistSongRepository playlistSongRepository;
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
@@ -71,6 +74,7 @@ public class SyncFragment extends Fragment {
|
||||
genreRepository = new GenreRepository(activity.getApplication());
|
||||
songArtistRepository = new SongArtistRepository(activity.getApplication());
|
||||
albumArtistRepository = new AlbumArtistRepository(activity.getApplication());
|
||||
playlistSongRepository = new PlaylistSongRepository(activity.getApplication());
|
||||
|
||||
init();
|
||||
syncLibraries();
|
||||
@@ -181,6 +185,7 @@ public class SyncFragment extends Fragment {
|
||||
@Override
|
||||
public void onLoadMedia(List<?> media) {
|
||||
playlistRepository.insertAll((ArrayList<Playlist>) media);
|
||||
syncSongsPerPlaylist((ArrayList<Playlist>) media);
|
||||
animateProgressBar(true);
|
||||
}
|
||||
});
|
||||
@@ -223,6 +228,22 @@ public class SyncFragment extends Fragment {
|
||||
PreferenceUtil.getInstance(requireContext()).setSongGenreSync(true);
|
||||
}
|
||||
|
||||
private void syncSongsPerPlaylist(List<Playlist> playlists) {
|
||||
for (Playlist playlist : playlists) {
|
||||
SyncUtil.getSongsPerPlaylist(requireContext(), new MediaCallback() {
|
||||
@Override
|
||||
public void onError(Exception exception) {
|
||||
Log.e(TAG, "onError: " + exception.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadMedia(List<?> media) {
|
||||
playlistSongRepository.insertAll((ArrayList<PlaylistSongCross>) media);
|
||||
}
|
||||
}, playlist.getId());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void animateProgressBar(boolean step) {
|
||||
syncViewModel.setProgress(step);
|
||||
|
||||
Reference in New Issue
Block a user