pass items between activities to improve load times
This commit is contained in:
parent
fee5e5704c
commit
35f7c0cb2a
11 changed files with 90 additions and 32 deletions
|
|
@ -147,12 +147,12 @@ public class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.ViewHolder
|
||||||
switch (getItemViewType()) {
|
switch (getItemViewType()) {
|
||||||
case ALBUM:
|
case ALBUM:
|
||||||
NavigationUtil.goToAlbum(activity,
|
NavigationUtil.goToAlbum(activity,
|
||||||
((Album) item).getId(),
|
(Album) item,
|
||||||
Pair.create(image, activity.getResources().getString(R.string.transition_album_art)));
|
Pair.create(image, activity.getResources().getString(R.string.transition_album_art)));
|
||||||
break;
|
break;
|
||||||
case ARTIST:
|
case ARTIST:
|
||||||
NavigationUtil.goToArtist(activity,
|
NavigationUtil.goToArtist(activity,
|
||||||
((Artist) item).getId(),
|
(Artist) item,
|
||||||
Pair.create(image, activity.getResources().getString(R.string.transition_artist_image)));
|
Pair.create(image, activity.getResources().getString(R.string.transition_artist_image)));
|
||||||
break;
|
break;
|
||||||
case SONG:
|
case SONG:
|
||||||
|
|
|
||||||
|
|
@ -217,7 +217,7 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
|
||||||
toggleChecked(getAdapterPosition());
|
toggleChecked(getAdapterPosition());
|
||||||
} else {
|
} else {
|
||||||
Pair[] albumPairs = new Pair[]{Pair.create(image, activity.getResources().getString(R.string.transition_album_art))};
|
Pair[] albumPairs = new Pair[]{Pair.create(image, activity.getResources().getString(R.string.transition_album_art))};
|
||||||
NavigationUtil.goToAlbum(activity, dataSet.get(getAdapterPosition()).getId(), albumPairs);
|
NavigationUtil.goToAlbum(activity, dataSet.get(getAdapterPosition()), albumPairs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -202,7 +202,7 @@ public class ArtistAdapter extends AbsMultiSelectAdapter<ArtistAdapter.ViewHolde
|
||||||
toggleChecked(getAdapterPosition());
|
toggleChecked(getAdapterPosition());
|
||||||
} else {
|
} else {
|
||||||
Pair[] artistPairs = new Pair[]{Pair.create(image, activity.getResources().getString(R.string.transition_artist_image))};
|
Pair[] artistPairs = new Pair[]{Pair.create(image, activity.getResources().getString(R.string.transition_artist_image))};
|
||||||
NavigationUtil.goToArtist(activity, dataSet.get(getAdapterPosition()).getId(), artistPairs);
|
NavigationUtil.goToArtist(activity, dataSet.get(getAdapterPosition()), artistPairs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,8 @@ public class AudioFileCover {
|
||||||
public AudioFileCover(String item) {
|
public AudioFileCover(String item) {
|
||||||
ImageOptions options = new ImageOptions();
|
ImageOptions options = new ImageOptions();
|
||||||
options.setImageType(ImageType.Primary);
|
options.setImageType(ImageType.Primary);
|
||||||
|
options.setQuality(60);
|
||||||
|
options.setMaxHeight(800);
|
||||||
|
|
||||||
this.location = App.getApiClient().GetImageUrl(item, options);
|
this.location = App.getApiClient().GetImageUrl(item, options);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -84,11 +84,23 @@ public class Album implements Parcelable {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeToParcel(Parcel dest, int flags) {
|
public void writeToParcel(Parcel dest, int flags) {
|
||||||
dest.writeTypedList(songs);
|
dest.writeString(id);
|
||||||
|
dest.writeString(title);
|
||||||
|
dest.writeInt(year);
|
||||||
|
|
||||||
|
dest.writeString(artistId);
|
||||||
|
dest.writeString(artistName);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Album(Parcel in) {
|
protected Album(Parcel in) {
|
||||||
this.songs = in.createTypedArrayList(Song.CREATOR);
|
this.songs = new ArrayList<>();
|
||||||
|
|
||||||
|
this.id = in.readString();
|
||||||
|
this.title = in.readString();
|
||||||
|
this.year = in.readInt();
|
||||||
|
|
||||||
|
this.artistId = in.readString();
|
||||||
|
this.artistName = in.readString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final Creator<Album> CREATOR = new Creator<Album>() {
|
public static final Creator<Album> CREATOR = new Creator<Album>() {
|
||||||
|
|
|
||||||
|
|
@ -85,11 +85,19 @@ public class Artist implements Parcelable {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeToParcel(Parcel dest, int flags) {
|
public void writeToParcel(Parcel dest, int flags) {
|
||||||
dest.writeTypedList(this.albums);
|
dest.writeString(id);
|
||||||
|
dest.writeString(name);
|
||||||
|
dest.writeLong(duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Artist(Parcel in) {
|
protected Artist(Parcel in) {
|
||||||
this.albums = in.createTypedArrayList(Album.CREATOR);
|
this.genres = new ArrayList<>();
|
||||||
|
this.albums = new ArrayList<>();
|
||||||
|
this.songs = new ArrayList<>();
|
||||||
|
|
||||||
|
this.id = in.readString();
|
||||||
|
this.name = in.readString();
|
||||||
|
this.duration = in.readLong();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final Parcelable.Creator<Artist> CREATOR = new Parcelable.Creator<Artist>() {
|
public static final Parcelable.Creator<Artist> CREATOR = new Parcelable.Creator<Artist>() {
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,7 @@ import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
|
|
||||||
public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements PaletteColorHolder, CabHolder {
|
public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements PaletteColorHolder, CabHolder {
|
||||||
|
public static final String EXTRA_ALBUM = "extra_album";
|
||||||
public static final String EXTRA_ALBUM_ID = "extra_album_id";
|
public static final String EXTRA_ALBUM_ID = "extra_album_id";
|
||||||
|
|
||||||
private Album album;
|
private Album album;
|
||||||
|
|
@ -93,7 +94,15 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
|
||||||
setUpToolBar();
|
setUpToolBar();
|
||||||
setUpViews();
|
setUpViews();
|
||||||
|
|
||||||
QueryUtil.getAlbum(getIntent().getExtras().getString(EXTRA_ALBUM_ID), new MediaCallback() {
|
Album album = getIntent().getExtras().getParcelable(EXTRA_ALBUM);
|
||||||
|
String id = getIntent().getExtras().getString(EXTRA_ALBUM_ID);
|
||||||
|
|
||||||
|
if (album != null) {
|
||||||
|
setAlbum(album);
|
||||||
|
id = album.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryUtil.getAlbum(id, new MediaCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onLoadMedia(List<?> media) {
|
public void onLoadMedia(List<?> media) {
|
||||||
Album album = (Album) media.get(0);
|
Album album = (Album) media.get(0);
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@ import com.kabouzeid.gramophone.util.QueryUtil;
|
||||||
import org.jellyfin.apiclient.model.querying.ItemQuery;
|
import org.jellyfin.apiclient.model.querying.ItemQuery;
|
||||||
|
|
||||||
public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implements PaletteColorHolder, CabHolder {
|
public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implements PaletteColorHolder, CabHolder {
|
||||||
|
public static final String EXTRA_ARTIST = "extra_artist";
|
||||||
public static final String EXTRA_ARTIST_ID = "extra_artist_id";
|
public static final String EXTRA_ARTIST_ID = "extra_artist_id";
|
||||||
|
|
||||||
@BindView(R.id.list)
|
@BindView(R.id.list)
|
||||||
|
|
@ -114,7 +115,15 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
||||||
setUpToolbar();
|
setUpToolbar();
|
||||||
setUpViews();
|
setUpViews();
|
||||||
|
|
||||||
QueryUtil.getArtist(getIntent().getExtras().getString(EXTRA_ARTIST_ID), new MediaCallback() {
|
Artist artist = getIntent().getExtras().getParcelable(EXTRA_ARTIST);
|
||||||
|
String id = getIntent().getExtras().getString(EXTRA_ARTIST_ID);
|
||||||
|
|
||||||
|
if (artist != null) {
|
||||||
|
setArtist(artist);
|
||||||
|
id = artist.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryUtil.getArtist(id, new MediaCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onLoadMedia(List<?> media) {
|
public void onLoadMedia(List<?> media) {
|
||||||
Artist artist = (Artist) media.get(0);
|
Artist artist = (Artist) media.get(0);
|
||||||
|
|
@ -240,7 +249,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
||||||
|
|
||||||
private void setUpToolbar() {
|
private void setUpToolbar() {
|
||||||
setSupportActionBar(toolbar);
|
setSupportActionBar(toolbar);
|
||||||
//noinspection ConstantConditions
|
// noinspection ConstantConditions
|
||||||
getSupportActionBar().setTitle(null);
|
getSupportActionBar().setTitle(null);
|
||||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
@ -339,8 +348,10 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
||||||
albumCountTextView.setText(MusicUtil.getAlbumCountString(this, artist.getAlbumCount()));
|
albumCountTextView.setText(MusicUtil.getAlbumCountString(this, artist.getAlbumCount()));
|
||||||
durationTextView.setText(MusicUtil.getReadableDurationString(MusicUtil.getTotalDuration(this, artist.getSongs())));
|
durationTextView.setText(MusicUtil.getReadableDurationString(MusicUtil.getTotalDuration(this, artist.getSongs())));
|
||||||
|
|
||||||
songAdapter.swapDataSet(artist.getSongs());
|
// TODO this activity will crash when an artist is passed with an empty album array
|
||||||
albumAdapter.swapDataSet(artist.albums);
|
// something in the album adapter is causing the issue
|
||||||
|
if (artist.albums.size() != 0) songAdapter.swapDataSet(artist.songs);
|
||||||
|
if (artist.albums.size() != 0) albumAdapter.swapDataSet(artist.albums);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Artist getArtist() {
|
private Artist getArtist() {
|
||||||
|
|
|
||||||
|
|
@ -103,7 +103,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setCurrentFragment(@SuppressWarnings("NullableProblems") Fragment fragment) {
|
private void setCurrentFragment(Fragment fragment) {
|
||||||
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment, null).commit();
|
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment, null).commit();
|
||||||
currentFragment = (MainActivityFragmentCallbacks) fragment;
|
currentFragment = (MainActivityFragmentCallbacks) fragment;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -139,6 +139,7 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
|
||||||
if (PreferenceUtil.getInstance(getContext()).getRememberLastTab()) {
|
if (PreferenceUtil.getInstance(getContext()).getRememberLastTab()) {
|
||||||
pager.setCurrentItem(PreferenceUtil.getInstance(getContext()).getLastTab());
|
pager.setCurrentItem(PreferenceUtil.getInstance(getContext()).getLastTab());
|
||||||
}
|
}
|
||||||
|
|
||||||
pager.addOnPageChangeListener(this);
|
pager.addOnPageChangeListener(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,8 @@ import androidx.annotation.Nullable;
|
||||||
import androidx.core.app.ActivityOptionsCompat;
|
import androidx.core.app.ActivityOptionsCompat;
|
||||||
import androidx.core.util.Pair;
|
import androidx.core.util.Pair;
|
||||||
|
|
||||||
|
import com.kabouzeid.gramophone.model.Album;
|
||||||
|
import com.kabouzeid.gramophone.model.Artist;
|
||||||
import com.kabouzeid.gramophone.model.Genre;
|
import com.kabouzeid.gramophone.model.Genre;
|
||||||
import com.kabouzeid.gramophone.model.Playlist;
|
import com.kabouzeid.gramophone.model.Playlist;
|
||||||
import com.kabouzeid.gramophone.ui.activities.AlbumDetailActivity;
|
import com.kabouzeid.gramophone.ui.activities.AlbumDetailActivity;
|
||||||
|
|
@ -16,41 +18,54 @@ import com.kabouzeid.gramophone.ui.activities.PlaylistDetailActivity;
|
||||||
|
|
||||||
public class NavigationUtil {
|
public class NavigationUtil {
|
||||||
|
|
||||||
public static void goToArtist(@NonNull final Activity activity, final String artistId, @Nullable Pair... sharedElements) {
|
public static void goToArtist(@NonNull final Activity activity, final Artist artist, @Nullable Pair... sharedElements) {
|
||||||
final Intent intent = new Intent(activity, ArtistDetailActivity.class);
|
final Intent intent = new Intent(activity, ArtistDetailActivity.class);
|
||||||
intent.putExtra(ArtistDetailActivity.EXTRA_ARTIST_ID, artistId);
|
intent.putExtra(ArtistDetailActivity.EXTRA_ARTIST, artist);
|
||||||
|
|
||||||
if (sharedElements != null && sharedElements.length > 0) {
|
startActivitySharedElements(activity, intent, sharedElements);
|
||||||
// noinspection unchecked
|
|
||||||
activity.startActivity(intent, ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements).toBundle());
|
|
||||||
} else {
|
|
||||||
activity.startActivity(intent);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void goToAlbum(@NonNull final Activity activity, final String albumId, @Nullable Pair... sharedElements) {
|
public static void goToAlbum(@NonNull final Activity activity, final Album album, @Nullable Pair... sharedElements) {
|
||||||
final Intent intent = new Intent(activity, AlbumDetailActivity.class);
|
final Intent intent = new Intent(activity, AlbumDetailActivity.class);
|
||||||
intent.putExtra(AlbumDetailActivity.EXTRA_ALBUM_ID, albumId);
|
intent.putExtra(AlbumDetailActivity.EXTRA_ALBUM, album);
|
||||||
|
|
||||||
if (sharedElements != null && sharedElements.length > 0) {
|
startActivitySharedElements(activity, intent, sharedElements);
|
||||||
// noinspection unchecked
|
|
||||||
activity.startActivity(intent, ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements).toBundle());
|
|
||||||
} else {
|
|
||||||
activity.startActivity(intent);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void goToGenre(@NonNull final Activity activity, final Genre genre, @Nullable Pair... sharedElements) {
|
public static void goToGenre(@NonNull final Activity activity, final Genre genre, @Nullable Pair... sharedElements) {
|
||||||
final Intent intent = new Intent(activity, GenreDetailActivity.class);
|
final Intent intent = new Intent(activity, GenreDetailActivity.class);
|
||||||
intent.putExtra(GenreDetailActivity.EXTRA_GENRE, genre);
|
intent.putExtra(GenreDetailActivity.EXTRA_GENRE, genre);
|
||||||
|
|
||||||
activity.startActivity(intent);
|
startActivitySharedElements(activity, intent, sharedElements);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void goToPlaylist(@NonNull final Activity activity, final Playlist playlist, @Nullable Pair... sharedElements) {
|
public static void goToPlaylist(@NonNull final Activity activity, final Playlist playlist, @Nullable Pair... sharedElements) {
|
||||||
final Intent intent = new Intent(activity, PlaylistDetailActivity.class);
|
final Intent intent = new Intent(activity, PlaylistDetailActivity.class);
|
||||||
intent.putExtra(PlaylistDetailActivity.EXTRA_PLAYLIST, playlist);
|
intent.putExtra(PlaylistDetailActivity.EXTRA_PLAYLIST, playlist);
|
||||||
|
|
||||||
activity.startActivity(intent);
|
startActivitySharedElements(activity, intent, sharedElements);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void goToArtist(@NonNull final Activity activity, final String artist, @Nullable Pair... sharedElements) {
|
||||||
|
final Intent intent = new Intent(activity, ArtistDetailActivity.class);
|
||||||
|
intent.putExtra(ArtistDetailActivity.EXTRA_ARTIST_ID, artist);
|
||||||
|
|
||||||
|
startActivitySharedElements(activity, intent, sharedElements);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void goToAlbum(@NonNull final Activity activity, final String album, @Nullable Pair... sharedElements) {
|
||||||
|
final Intent intent = new Intent(activity, AlbumDetailActivity.class);
|
||||||
|
intent.putExtra(AlbumDetailActivity.EXTRA_ALBUM_ID, album);
|
||||||
|
|
||||||
|
startActivitySharedElements(activity, intent, sharedElements);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void startActivitySharedElements(@NonNull final Activity activity, Intent intent, @Nullable Pair... sharedElements) {
|
||||||
|
if (sharedElements != null && sharedElements.length > 0) {
|
||||||
|
// noinspection unchecked
|
||||||
|
activity.startActivity(intent, ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements).toBundle());
|
||||||
|
} else {
|
||||||
|
activity.startActivity(intent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue