From cd3ad6b5779bbe8e4ecd4242cf7ce3e55e3f443c Mon Sep 17 00:00:00 2001 From: dkanada Date: Sun, 25 Apr 2021 11:38:04 +0900 Subject: [PATCH] refactor intent extras for detail activities --- .../activities/base/AbsThemeActivity.java | 6 ----- .../details/AlbumDetailActivity.java | 18 +++++-------- .../details/ArtistDetailActivity.java | 16 +++++------- .../details/GenreDetailActivity.java | 16 ++++++------ .../details/PlaylistDetailActivity.java | 25 ++++++++----------- .../gramophone/adapter/CategoryAdapter.java | 10 ++++---- .../gramophone/adapter/GenreAdapter.java | 2 +- .../gramophone/adapter/PlaylistAdapter.java | 2 ++ .../dkanada/gramophone/util/QueryUtil.java | 3 +-- .../AppShortcutLauncherActivity.java | 9 +------ 10 files changed, 40 insertions(+), 67 deletions(-) diff --git a/app/src/main/java/com/dkanada/gramophone/activities/base/AbsThemeActivity.java b/app/src/main/java/com/dkanada/gramophone/activities/base/AbsThemeActivity.java index ae7c44f9..429d8d41 100644 --- a/app/src/main/java/com/dkanada/gramophone/activities/base/AbsThemeActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/activities/base/AbsThemeActivity.java @@ -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); diff --git a/app/src/main/java/com/dkanada/gramophone/activities/details/AlbumDetailActivity.java b/app/src/main/java/com/dkanada/gramophone/activities/details/AlbumDetailActivity.java index b4854c4a..fb64d835 100644 --- a/app/src/main/java/com/dkanada/gramophone/activities/details/AlbumDetailActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/activities/details/AlbumDetailActivity.java @@ -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)); - } + 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; - } } diff --git a/app/src/main/java/com/dkanada/gramophone/activities/details/ArtistDetailActivity.java b/app/src/main/java/com/dkanada/gramophone/activities/details/ArtistDetailActivity.java index cb31bdee..4b16e2e9 100644 --- a/app/src/main/java/com/dkanada/gramophone/activities/details/ArtistDetailActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/activities/details/ArtistDetailActivity.java @@ -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; - } } diff --git a/app/src/main/java/com/dkanada/gramophone/activities/details/GenreDetailActivity.java b/app/src/main/java/com/dkanada/gramophone/activities/details/GenreDetailActivity.java index df21e93b..b8cd168e 100644 --- a/app/src/main/java/com/dkanada/gramophone/activities/details/GenreDetailActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/activities/details/GenreDetailActivity.java @@ -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); } @@ -117,10 +117,10 @@ public class GenreDetailActivity extends AbsMusicPanelActivity implements CabHol public MaterialCab openCab(final int menu, final MaterialCab.Callback callback) { if (cab != null && cab.isActive()) cab.finish(); cab = new MaterialCab(this, R.id.cab_stub) - .setMenu(menu) - .setCloseDrawableRes(R.drawable.ic_close_white_24dp) - .setBackgroundColor(ThemeUtil.shiftBackgroundColorForLightText(ThemeStore.primaryColor(this))) - .start(callback); + .setMenu(menu) + .setCloseDrawableRes(R.drawable.ic_close_white_24dp) + .setBackgroundColor(ThemeUtil.shiftBackgroundColorForLightText(ThemeStore.primaryColor(this))) + .start(callback); return cab; } diff --git a/app/src/main/java/com/dkanada/gramophone/activities/details/PlaylistDetailActivity.java b/app/src/main/java/com/dkanada/gramophone/activities/details/PlaylistDetailActivity.java index 7c5b1ada..80375712 100644 --- a/app/src/main/java/com/dkanada/gramophone/activities/details/PlaylistDetailActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/activities/details/PlaylistDetailActivity.java @@ -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 @@ -146,10 +141,10 @@ public class PlaylistDetailActivity extends AbsMusicPanelActivity implements Cab public MaterialCab openCab(final int menu, final MaterialCab.Callback callback) { if (cab != null && cab.isActive()) cab.finish(); cab = new MaterialCab(this, R.id.cab_stub) - .setMenu(menu) - .setCloseDrawableRes(R.drawable.ic_close_white_24dp) - .setBackgroundColor(ThemeUtil.shiftBackgroundColorForLightText(ThemeStore.primaryColor(this))) - .start(callback); + .setMenu(menu) + .setCloseDrawableRes(R.drawable.ic_close_white_24dp) + .setBackgroundColor(ThemeUtil.shiftBackgroundColorForLightText(ThemeStore.primaryColor(this))) + .start(callback); return cab; } diff --git a/app/src/main/java/com/dkanada/gramophone/adapter/CategoryAdapter.java b/app/src/main/java/com/dkanada/gramophone/adapter/CategoryAdapter.java index 53fa67c1..fd31c904 100644 --- a/app/src/main/java/com/dkanada/gramophone/adapter/CategoryAdapter.java +++ b/app/src/main/java/com/dkanada/gramophone/adapter/CategoryAdapter.java @@ -55,12 +55,12 @@ public class CategoryAdapter extends RecyclerView.Adapter { - if (event.getActionMasked() == MotionEvent.ACTION_DOWN) { - touchHelper.startDrag(holder); - } + if (event.getActionMasked() == MotionEvent.ACTION_DOWN) { + touchHelper.startDrag(holder); + } - return false; - }); + return false; + }); } @Override diff --git a/app/src/main/java/com/dkanada/gramophone/adapter/GenreAdapter.java b/app/src/main/java/com/dkanada/gramophone/adapter/GenreAdapter.java index 0e544ce6..3f085abd 100644 --- a/app/src/main/java/com/dkanada/gramophone/adapter/GenreAdapter.java +++ b/app/src/main/java/com/dkanada/gramophone/adapter/GenreAdapter.java @@ -106,7 +106,7 @@ public class GenreAdapter extends RecyclerView.Adapter @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 { diff --git a/app/src/main/java/com/dkanada/gramophone/adapter/PlaylistAdapter.java b/app/src/main/java/com/dkanada/gramophone/adapter/PlaylistAdapter.java index 73408808..132dcec7 100644 --- a/app/src/main/java/com/dkanada/gramophone/adapter/PlaylistAdapter.java +++ b/app/src/main/java/com/dkanada/gramophone/adapter/PlaylistAdapter.java @@ -35,9 +35,11 @@ public class PlaylistAdapter extends AbsMultiSelectAdapter 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); } diff --git a/app/src/main/java/com/dkanada/gramophone/util/QueryUtil.java b/app/src/main/java/com/dkanada/gramophone/util/QueryUtil.java index 280f47fb..f94d2acf 100644 --- a/app/src/main/java/com/dkanada/gramophone/util/QueryUtil.java +++ b/app/src/main/java/com/dkanada/gramophone/util/QueryUtil.java @@ -33,8 +33,7 @@ public class QueryUtil { App.getApiClient().GetUserViews(id, new Response() { @Override public void onResponse(ItemsResult result) { - List libraries = new ArrayList<>(); - libraries.addAll(Arrays.asList(result.getItems())); + List libraries = new ArrayList<>(Arrays.asList(result.getItems())); callback.onLoadMedia(libraries); } diff --git a/app/src/main/java/com/dkanada/gramophone/views/shortcuts/AppShortcutLauncherActivity.java b/app/src/main/java/com/dkanada/gramophone/views/shortcuts/AppShortcutLauncherActivity.java index 1aa84ad5..d29da953 100644 --- a/app/src/main/java/com/dkanada/gramophone/views/shortcuts/AppShortcutLauncherActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/views/shortcuts/AppShortcutLauncherActivity.java @@ -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;