mirror of
https://github.com/antebudimir/tempus.git
synced 2026-01-01 18:03:33 +00:00
Implemented playlist
This commit is contained in:
parent
d72b37725c
commit
3addc3b561
14 changed files with 255 additions and 5 deletions
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue