Implement barebones logic to list songs in the downloads page.

This commit is contained in:
天クマ 2026-01-26 16:51:58 -03:00
commit 1943344585
3 changed files with 19 additions and 15 deletions

View file

@ -46,7 +46,7 @@ public class DownloadsAdapter extends RecyclerView.Adapter<DownloadsAdapter.View
holder.title.setText(song.title);
holder.artist.setText(song.artistName);
// TODO: Load album cover into holder.cover using a library like Glide or Picasso
// TODO: Load album cover into holder.cover using Glide
}
@Override

View file

@ -14,6 +14,9 @@ public interface CacheDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertCache(Cache cache);
@Query("SELECT * FROM cache")
List<Cache> getAll();
@Query("SELECT * FROM songs LEFT JOIN cache USING(id) WHERE songs.id IN (:ids)")
List<Song> getSongs(List<String> ids);

View file

@ -3,9 +3,10 @@ package org.adrianvictor.geleia.fragments.library;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.GridLayoutManager;
import org.adrianvictor.geleia.App;
import org.adrianvictor.geleia.adapter.DownloadsAdapter;
import org.adrianvictor.geleia.database.Cache;
import org.adrianvictor.geleia.model.Song;
import org.adrianvictor.geleia.model.SortMethod;
import org.adrianvictor.geleia.model.SortOrder;
@ -34,24 +35,24 @@ public class DownloadsFragment extends AbsLibraryPagerRecyclerViewCustomGridSize
@Override
protected void loadItems(int index) {
List<Song> dummySongs = new ArrayList<>();
new Thread(() -> {
List<Cache> cachedEntries = App.getDatabase().cacheDao().getAll();
Song song1 = new Song();
song1.title = "Dummy Song Title";
song1.artistName = "A. Dummy Artist";
List<String> songIds = new ArrayList<>();
dummySongs.add(song1);
Song song2 = new Song();
song2.title = "Another Test Song";
song2.artistName = "The Testers";
dummySongs.add(song2);
getActivity().runOnUiThread(() -> {
getAdapter().swapDataSet(dummySongs);
});
for (Cache entry : cachedEntries) {
songIds.add(entry.id);
}
final List<Song> downloadedSongs = App.getDatabase().cacheDao().getSongs(songIds);
if (getActivity() != null) {
getActivity().runOnUiThread(() -> {
getAdapter().swapDataSet(downloadedSongs);
});
}
}).start();
}
@Override
protected int loadGridSize() {
return 1;