refactor intent extras for detail activities

This commit is contained in:
dkanada 2021-04-25 11:38:04 +09:00
commit cd3ad6b577
10 changed files with 40 additions and 67 deletions

View file

@ -35,12 +35,6 @@ public abstract class AbsThemeActivity extends ATHToolbarActivity {
}
}
/**
* This will set the color of the view with the id "status_bar" on KitKat and Lollipop.
* On Lollipop if no such view is found it will set the statusbar color using the native method.
*
* @param color the new statusbar color (will be shifted down on Lollipop and above)
*/
public void setStatusbarColor(int color) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
final View statusBar = getWindow().getDecorView().getRootView().findViewById(R.id.status_bar);

View file

@ -12,6 +12,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.afollestad.materialcab.MaterialCab;
import com.afollestad.materialdialogs.util.DialogUtils;
import com.dkanada.gramophone.BuildConfig;
import com.dkanada.gramophone.databinding.ActivityAlbumDetailBinding;
import com.google.android.material.appbar.AppBarLayout;
import com.kabouzeid.appthemehelper.util.ColorUtil;
@ -39,7 +40,7 @@ import org.jellyfin.apiclient.model.querying.ItemQuery;
import java.util.List;
public class AlbumDetailActivity extends AbsMusicPanelActivity implements PaletteColorHolder, CabHolder, AppBarLayout.OnOffsetChangedListener {
public static final String EXTRA_ALBUM = "extra_album";
public static final String EXTRA_ALBUM = BuildConfig.APPLICATION_ID + ".extra.album";
private ActivityAlbumDetailBinding binding;
@ -52,6 +53,8 @@ public class AlbumDetailActivity extends AbsMusicPanelActivity implements Palett
@Override
protected void onCreate(Bundle savedInstanceState) {
album = getIntent().getParcelableExtra(EXTRA_ALBUM);
super.onCreate(savedInstanceState);
setDrawUnderStatusbar();
@ -59,7 +62,6 @@ public class AlbumDetailActivity extends AbsMusicPanelActivity implements Palett
setUpToolbar();
setUpViews();
Album album = getIntent().getExtras().getParcelable(EXTRA_ALBUM);
loadAlbumCover(album);
setAlbum(album);
@ -94,9 +96,7 @@ public class AlbumDetailActivity extends AbsMusicPanelActivity implements Palett
setUpRecyclerView();
setUpSongsAdapter();
binding.artistText.setOnClickListener(v -> {
if (album != null) {
NavigationUtil.goToArtist(AlbumDetailActivity.this, new Artist(album));
}
});
setColors(DialogUtils.resolveColor(this, R.attr.defaultFooterColor));
@ -149,13 +149,12 @@ public class AlbumDetailActivity extends AbsMusicPanelActivity implements Palett
private void setUpToolbar() {
setSupportActionBar(binding.toolbar);
// noinspection ConstantConditions
binding.toolbar.setTitle(null);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
private void setUpSongsAdapter() {
adapter = new AlbumSongAdapter(this, getAlbum().songs, R.layout.item_list, false, this);
adapter = new AlbumSongAdapter(this, album.songs, R.layout.item_list, false, this);
binding.list.setLayoutManager(new GridLayoutManager(this, 1));
binding.list.setAdapter(adapter);
adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
@ -258,9 +257,4 @@ public class AlbumDetailActivity extends AbsMusicPanelActivity implements Palett
if (album.songs.size() != 0) adapter.swapDataSet(album.songs);
}
private Album getAlbum() {
if (album == null) album = new Album();
return album;
}
}

View file

@ -13,6 +13,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.afollestad.materialcab.MaterialCab;
import com.afollestad.materialdialogs.util.DialogUtils;
import com.dkanada.gramophone.BuildConfig;
import com.dkanada.gramophone.adapter.song.SongAdapter;
import com.dkanada.gramophone.databinding.ActivityArtistDetailBinding;
import com.google.android.material.appbar.AppBarLayout;
@ -40,7 +41,7 @@ import org.jellyfin.apiclient.model.querying.ItemQuery;
import java.util.List;
public class ArtistDetailActivity extends AbsMusicPanelActivity implements PaletteColorHolder, CabHolder, AppBarLayout.OnOffsetChangedListener {
public static final String EXTRA_ARTIST = "extra_artist";
public static final String EXTRA_ARTIST = BuildConfig.APPLICATION_ID + ".extra.artist";
private ActivityArtistDetailBinding binding;
@ -54,6 +55,8 @@ public class ArtistDetailActivity extends AbsMusicPanelActivity implements Palet
@Override
protected void onCreate(Bundle savedInstanceState) {
artist = getIntent().getParcelableExtra(EXTRA_ARTIST);
super.onCreate(savedInstanceState);
// must be loaded before album adapter
@ -64,7 +67,6 @@ public class ArtistDetailActivity extends AbsMusicPanelActivity implements Palet
setUpToolbar();
setUpViews();
Artist artist = getIntent().getExtras().getParcelable(EXTRA_ARTIST);
loadArtistImage(artist);
setArtist(artist);
@ -111,7 +113,7 @@ public class ArtistDetailActivity extends AbsMusicPanelActivity implements Palet
private void setUpSongListView() {
binding.appBarLayout.addOnOffsetChangedListener(this);
songAdapter = new SongAdapter(this, getArtist().songs, R.layout.item_list, false, this);
songAdapter = new SongAdapter(this, artist.songs, R.layout.item_list, false, this);
binding.songs.setLayoutManager(new GridLayoutManager(this, 1));
binding.songs.setAdapter(songAdapter);
@ -121,7 +123,7 @@ public class ArtistDetailActivity extends AbsMusicPanelActivity implements Palet
private void setUpAlbumRecyclerView() {
binding.albums.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
albumAdapter = new HorizontalAlbumAdapter(this, getArtist().albums, usePalette, this);
albumAdapter = new HorizontalAlbumAdapter(this, artist.albums, usePalette, this);
binding.albums.setAdapter(albumAdapter);
// NestedScrollView will ignore horizontal RecyclerView without this line
@ -183,7 +185,6 @@ public class ArtistDetailActivity extends AbsMusicPanelActivity implements Palet
private void setUpToolbar() {
setSupportActionBar(binding.toolbar);
// noinspection ConstantConditions
binding.toolbar.setTitle(null);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@ -281,9 +282,4 @@ public class ArtistDetailActivity extends AbsMusicPanelActivity implements Palet
if (artist.songs.size() != 0) songAdapter.swapDataSet(artist.songs);
if (artist.albums.size() != 0) albumAdapter.swapDataSet(artist.albums);
}
private Artist getArtist() {
if (artist == null) artist = new Artist();
return artist;
}
}

View file

@ -10,6 +10,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.afollestad.materialcab.MaterialCab;
import com.dkanada.gramophone.BuildConfig;
import com.dkanada.gramophone.databinding.ActivityGenreDetailBinding;
import com.kabouzeid.appthemehelper.ThemeStore;
import com.dkanada.gramophone.R;
@ -28,7 +29,7 @@ import org.jellyfin.apiclient.model.querying.ItemQuery;
import java.util.ArrayList;
public class GenreDetailActivity extends AbsMusicPanelActivity implements CabHolder {
public static final String EXTRA_GENRE = "extra_genre";
public static final String EXTRA_GENRE = BuildConfig.APPLICATION_ID + ".extra.genre";
private ActivityGenreDetailBinding binding;
@ -39,6 +40,8 @@ public class GenreDetailActivity extends AbsMusicPanelActivity implements CabHol
@Override
protected void onCreate(Bundle savedInstanceState) {
genre = getIntent().getParcelableExtra(EXTRA_GENRE);
super.onCreate(savedInstanceState);
setDrawUnderStatusbar();
@ -47,8 +50,6 @@ public class GenreDetailActivity extends AbsMusicPanelActivity implements CabHol
setNavigationbarColorAuto();
setTaskDescriptionColorAuto();
genre = getIntent().getExtras().getParcelable(EXTRA_GENRE);
setUpRecyclerView();
setUpToolBar();
@ -86,7 +87,6 @@ public class GenreDetailActivity extends AbsMusicPanelActivity implements CabHol
private void setUpToolBar() {
binding.toolbar.setBackgroundColor(ThemeStore.primaryColor(this));
setSupportActionBar(binding.toolbar);
// noinspection ConstantConditions
binding.toolbar.setTitle(genre.name);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

View file

@ -10,6 +10,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.afollestad.materialcab.MaterialCab;
import com.dkanada.gramophone.BuildConfig;
import com.dkanada.gramophone.databinding.ActivityPlaylistDetailBinding;
import com.h6ah4i.android.widget.advrecyclerview.animator.GeneralItemAnimator;
import com.h6ah4i.android.widget.advrecyclerview.animator.RefactoredDefaultItemAnimator;
@ -29,14 +30,13 @@ import com.dkanada.gramophone.activities.base.AbsMusicPanelActivity;
import com.dkanada.gramophone.util.ThemeUtil;
import com.dkanada.gramophone.util.PlaylistUtil;
import com.dkanada.gramophone.util.ViewUtil;
import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView;
import org.jellyfin.apiclient.model.playlists.PlaylistItemQuery;
import java.util.ArrayList;
public class PlaylistDetailActivity extends AbsMusicPanelActivity implements CabHolder {
public static String EXTRA_PLAYLIST = "extra_playlist";
public static String EXTRA_PLAYLIST = BuildConfig.APPLICATION_ID + ".extra.playlist";
private ActivityPlaylistDetailBinding binding;
@ -50,6 +50,8 @@ public class PlaylistDetailActivity extends AbsMusicPanelActivity implements Cab
@Override
protected void onCreate(Bundle savedInstanceState) {
playlist = getIntent().getParcelableExtra(EXTRA_PLAYLIST);
super.onCreate(savedInstanceState);
setDrawUnderStatusbar();
@ -58,8 +60,6 @@ public class PlaylistDetailActivity extends AbsMusicPanelActivity implements Cab
setNavigationbarColorAuto();
setTaskDescriptionColorAuto();
playlist = getIntent().getExtras().getParcelable(EXTRA_PLAYLIST);
setUpRecyclerView();
setUpToolbar();
@ -79,7 +79,7 @@ public class PlaylistDetailActivity extends AbsMusicPanelActivity implements Cab
}
private void setUpRecyclerView() {
ViewUtil.setUpFastScrollRecyclerViewColor(this, ((FastScrollRecyclerView) binding.recyclerView), ThemeStore.accentColor(this));
ViewUtil.setUpFastScrollRecyclerViewColor(this, binding.recyclerView, ThemeStore.accentColor(this));
binding.recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerViewDragDropManager = new RecyclerViewDragDropManager();
@ -108,16 +108,11 @@ public class PlaylistDetailActivity extends AbsMusicPanelActivity implements Cab
}
private void setUpToolbar() {
binding.toolbar.setTitle(playlist.name);
binding.toolbar.setBackgroundColor(ThemeStore.primaryColor(this));
setSupportActionBar(binding.toolbar);
// noinspection ConstantConditions
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
setToolbarTitle(playlist.name);
}
private void setToolbarTitle(String title) {
// noinspection ConstantConditions
binding.toolbar.setTitle(title);
}
@Override

View file

@ -106,7 +106,7 @@ public class GenreAdapter extends RecyclerView.Adapter<GenreAdapter.ViewHolder>
@Override
public String getSectionName(int position) {
final Genre genre = dataSet.get(position);
return genre.id.hashCode() == -1 ? "" : MusicUtil.getSectionName(dataSet.get(position).name);
return MusicUtil.getSectionName(genre.name);
}
public class ViewHolder extends MediaEntryViewHolder {

View file

@ -35,9 +35,11 @@ public class PlaylistAdapter extends AbsMultiSelectAdapter<PlaylistAdapter.ViewH
public PlaylistAdapter(AppCompatActivity activity, List<Playlist> dataSet, @LayoutRes int itemLayoutRes, @Nullable CabHolder cabHolder) {
super(activity, cabHolder, R.menu.menu_playlists_selection);
this.activity = activity;
this.dataSet = dataSet;
this.itemLayoutRes = itemLayoutRes;
setHasStableIds(true);
}

View file

@ -33,8 +33,7 @@ public class QueryUtil {
App.getApiClient().GetUserViews(id, new Response<ItemsResult>() {
@Override
public void onResponse(ItemsResult result) {
List<BaseItemDto> libraries = new ArrayList<>();
libraries.addAll(Arrays.asList(result.getItems()));
List<BaseItemDto> libraries = new ArrayList<>(Arrays.asList(result.getItems()));
callback.onLoadMedia(libraries);
}

View file

@ -23,14 +23,7 @@ public class AppShortcutLauncherActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int shortcutType = SHORTCUT_TYPE_DEFAULT;
Bundle extras = getIntent().getExtras();
if (extras != null) {
shortcutType = extras.getInt(EXTRA_SHORTCUT, SHORTCUT_TYPE_DEFAULT);
}
switch (shortcutType) {
switch (getIntent().getIntExtra(EXTRA_SHORTCUT, SHORTCUT_TYPE_DEFAULT)) {
case SHORTCUT_TYPE_SHUFFLE:
DynamicShortcutManager.reportShortcutUsed(this, ShuffleShortcutType.getId());
break;