overhaul existing preferences

This commit is contained in:
dkanada 2019-07-18 03:54:31 -07:00
commit 7c83b50179
66 changed files with 98 additions and 543 deletions

View file

@ -59,9 +59,7 @@ public class AlbumCoverPagerAdapter extends CustomFragmentStatePagerAdapter {
return o;
}
/**
* Only the latest passed {@link AlbumCoverFragment.ColorReceiver} is guaranteed to receive a response
*/
// only the latest ColorReceiver is guaranteed a response
public void receiveColor(AlbumCoverFragment.ColorReceiver colorReceiver, int position) {
AlbumCoverFragment fragment = (AlbumCoverFragment) getFragment(position);
if (fragment != null) {
@ -74,7 +72,7 @@ public class AlbumCoverPagerAdapter extends CustomFragmentStatePagerAdapter {
}
}
public static class AlbumCoverFragment extends Fragment implements SharedPreferences.OnSharedPreferenceChangeListener {
public static class AlbumCoverFragment extends Fragment {
private static final String SONG_ARG = "song";
private Unbinder unbinder;
@ -112,24 +110,18 @@ public class AlbumCoverPagerAdapter extends CustomFragmentStatePagerAdapter {
@Override
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
forceSquareAlbumCover(false);
// TODO
// forceSquareAlbumCover(PreferenceUtil.getInstance(getContext()).forceSquareAlbumCover());
PreferenceUtil.getInstance(getActivity()).registerOnSharedPreferenceChangedListener(this);
loadAlbumCover();
}
@Override
public void onDestroyView() {
super.onDestroyView();
PreferenceUtil.getInstance(getActivity()).unregisterOnSharedPreferenceChangedListener(this);
unbinder.unbind();
colorReceiver = null;
}
private void loadAlbumCover() {
SongGlideRequest.Builder.from(Glide.with(this), song)
.checkIgnoreMediaStore(getActivity())
SongGlideRequest.Builder.from(Glide.with(getContext()), song)
.generatePalette(getActivity()).build()
.into(new CustomPaletteTarget(albumCover) {
@Override
@ -139,20 +131,6 @@ public class AlbumCoverPagerAdapter extends CustomFragmentStatePagerAdapter {
});
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
switch (key) {
case PreferenceUtil.FORCE_SQUARE_ALBUM_COVER:
// TODO
// forceSquareAlbumCover(PreferenceUtil.getInstance(getActivity()).forceSquareAlbumCover());
break;
}
}
public void forceSquareAlbumCover(boolean forceSquareAlbumCover) {
albumCover.setScaleType(forceSquareAlbumCover ? ImageView.ScaleType.FIT_CENTER : ImageView.ScaleType.CENTER_CROP);
}
private void setColor(int color) {
this.color = color;
isColorReady = true;

View file

@ -35,7 +35,7 @@ public class MusicLibraryPagerAdapter extends FragmentPagerAdapter {
public MusicLibraryPagerAdapter(@NonNull final Context context, final FragmentManager fragmentManager) {
super(fragmentManager);
mContext = context;
setCategoryInfos(PreferenceUtil.getInstance(context).getLibraryCategoryInfos());
setCategoryInfos(PreferenceUtil.getInstance(context).getLibraryCategories());
}
public void setCategoryInfos(@NonNull List<CategoryInfo> categoryInfos) {

View file

@ -74,7 +74,7 @@ public class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.ViewHolder
holder.title.setText(album.getTitle());
holder.text.setText(MusicUtil.getAlbumInfoString(activity, album));
SongGlideRequest.Builder.from(Glide.with(activity), album.safeGetFirstSong())
.checkIgnoreMediaStore(activity).build()
.build()
.into(holder.image);
break;
case ARTIST:

View file

@ -134,7 +134,6 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
if (holder.image == null) return;
SongGlideRequest.Builder.from(Glide.with(activity), album.safeGetFirstSong())
.checkIgnoreMediaStore(activity)
.generatePalette(activity).build()
.into(new CustomPaletteTarget(holder.image) {
@Override

View file

@ -55,7 +55,6 @@ public class HorizontalAlbumAdapter extends AlbumAdapter {
if (holder.image == null) return;
SongGlideRequest.Builder.from(Glide.with(activity), album.safeGetFirstSong())
.checkIgnoreMediaStore(activity)
.generatePalette(activity).build()
.into(new CustomPaletteTarget(holder.image) {
@Override

View file

@ -87,7 +87,7 @@ public class ArtistSongAdapter extends ArrayAdapter<Song> implements MaterialCab
songInfo.setText(song.albumName);
SongGlideRequest.Builder.from(Glide.with(activity), song)
.checkIgnoreMediaStore(activity).build()
.build()
.into(albumArt);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

View file

@ -134,7 +134,6 @@ public class SongAdapter extends AbsMultiSelectAdapter<SongAdapter.ViewHolder, S
if (holder.image == null) return;
SongGlideRequest.Builder.from(Glide.with(activity), song)
.checkIgnoreMediaStore(activity)
.generatePalette(activity).build()
.into(new CustomPaletteTarget(holder.image) {
@Override

View file

@ -17,14 +17,11 @@ import com.kabouzeid.gramophone.glide.audiocover.AudioFileCover;
import com.kabouzeid.gramophone.glide.palette.BitmapPaletteTranscoder;
import com.kabouzeid.gramophone.glide.palette.BitmapPaletteWrapper;
import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.PreferenceUtil;
/**
* @author Karim Abou Zeid (kabouzeid)
*/
public class SongGlideRequest {
public static final DiskCacheStrategy DEFAULT_DISK_CACHE_STRATEGY = DiskCacheStrategy.NONE;
public static final int DEFAULT_ERROR_IMAGE = R.drawable.default_album_art;
public static final int DEFAULT_ANIMATION = android.R.anim.fade_in;
@ -32,7 +29,6 @@ public class SongGlideRequest {
public static class Builder {
final RequestManager requestManager;
final Song song;
boolean ignoreMediaStore;
public static Builder from(@NonNull RequestManager requestManager, Song song) {
return new Builder(requestManager, song);
@ -51,18 +47,9 @@ public class SongGlideRequest {
return new BitmapBuilder(this);
}
public Builder checkIgnoreMediaStore(Context context) {
return ignoreMediaStore(PreferenceUtil.getInstance(context).ignoreMediaStoreArtwork());
}
public Builder ignoreMediaStore(boolean ignoreMediaStore) {
this.ignoreMediaStore = ignoreMediaStore;
return this;
}
public DrawableRequestBuilder<GlideDrawable> build() {
//noinspection unchecked
return createBaseRequest(requestManager, song, ignoreMediaStore)
return createBaseRequest(requestManager, song)
.diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY)
.error(DEFAULT_ERROR_IMAGE)
.animate(DEFAULT_ANIMATION)
@ -79,7 +66,7 @@ public class SongGlideRequest {
public BitmapRequestBuilder<?, Bitmap> build() {
//noinspection unchecked
return createBaseRequest(builder.requestManager, builder.song, builder.ignoreMediaStore)
return createBaseRequest(builder.requestManager, builder.song)
.asBitmap()
.diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY)
.error(DEFAULT_ERROR_IMAGE)
@ -99,7 +86,7 @@ public class SongGlideRequest {
public BitmapRequestBuilder<?, BitmapPaletteWrapper> build() {
//noinspection unchecked
return createBaseRequest(builder.requestManager, builder.song, builder.ignoreMediaStore)
return createBaseRequest(builder.requestManager, builder.song)
.asBitmap()
.transcode(new BitmapPaletteTranscoder(context), BitmapPaletteWrapper.class)
.diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY)
@ -109,12 +96,8 @@ public class SongGlideRequest {
}
}
public static DrawableTypeRequest createBaseRequest(RequestManager requestManager, Song song, boolean ignoreMediaStore) {
if (ignoreMediaStore) {
return requestManager.load(new AudioFileCover(song.data));
} else {
return requestManager.loadFromMediaStore(MusicUtil.getMediaStoreAlbumCoverUri(song.albumId));
}
public static DrawableTypeRequest createBaseRequest(RequestManager requestManager, Song song) {
return requestManager.load(new AudioFileCover(song.data));
}
public static Key createSignature(Song song) {

View file

@ -19,31 +19,25 @@ import com.bumptech.glide.Priority;
import com.bumptech.glide.load.data.DataFetcher;
import com.kabouzeid.gramophone.glide.audiocover.AudioFileCoverUtils;
import com.kabouzeid.gramophone.util.ImageUtil;
import com.kabouzeid.gramophone.util.PreferenceUtil;
/**
* @author Karim Abou Zeid (kabouzeid)
*/
public class ArtistImageFetcher implements DataFetcher<InputStream> {
private final ArtistImage model;
private ArtistImage model;
private InputStream stream;
private boolean ignoreMediaStore;
public ArtistImageFetcher(final ArtistImage model, boolean ignoreMediaStore) {
public ArtistImageFetcher(final ArtistImage model) {
this.model = model;
this.ignoreMediaStore = ignoreMediaStore;
}
@Override
public String getId() {
Log.d("MOSAIC", "get id for" + model.artistName);
// never return NULL here!
// this id is used to determine whether the image is already cached
// we use the artist name as well as the album years + file paths
return model.toIdString() + "ignoremediastore:" + ignoreMediaStore;
return model.toIdString();
}
@Override
@ -65,18 +59,7 @@ public class ArtistImageFetcher implements DataFetcher<InputStream> {
try {
for (final AlbumCover cover : albumCovers) {
byte[] picture = null;
if (!ignoreMediaStore) {
retriever.setDataSource(cover.getFilePath());
picture = retriever.getEmbeddedPicture();
}
final InputStream stream;
if (picture != null) {
stream = new ByteArrayInputStream(picture);
} else {
stream = AudioFileCoverUtils.fallback(cover.getFilePath());
}
InputStream stream = AudioFileCoverUtils.fallback(cover.getFilePath());
if (stream != null) {
images.put(stream, cover.getYear());
}
@ -120,14 +103,11 @@ public class ArtistImageFetcher implements DataFetcher<InputStream> {
final ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 0, bos);
result = new ByteArrayInputStream(bos.toByteArray());
} else if (nbImages > 0) {
// we return the last cover album of the artist
Map.Entry<InputStream, Integer> maxEntryYear = null;
for (final Map.Entry<InputStream, Integer> entry : images.entrySet()) {
if (maxEntryYear == null || entry.getValue()
.compareTo(maxEntryYear.getValue()) > 0) {
if (maxEntryYear == null || entry.getValue().compareTo(maxEntryYear.getValue()) > 0) {
maxEntryYear = entry;
}
}
@ -135,12 +115,8 @@ public class ArtistImageFetcher implements DataFetcher<InputStream> {
if (maxEntryYear != null) {
result = maxEntryYear.getKey();
} else {
result = images.entrySet()
.iterator()
.next()
.getKey();
result = images.entrySet().iterator().next().getKey();
}
}
} finally {
retriever.release();
@ -151,7 +127,6 @@ public class ArtistImageFetcher implements DataFetcher<InputStream> {
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}

View file

@ -24,12 +24,10 @@ public class ArtistImageLoader implements StreamModelLoader<ArtistImage> {
@Override
public DataFetcher<InputStream> getResourceFetcher(final ArtistImage model, int width, int height) {
return new ArtistImageFetcher(model, PreferenceUtil.getInstance(context).ignoreMediaStoreArtwork());
return new ArtistImageFetcher(model);
}
public static class Factory implements ModelLoaderFactory<ArtistImage, InputStream> {
@Override
public ModelLoader<ArtistImage, InputStream> build(Context context, GenericLoaderFactory factories) {
return new ArtistImageLoader(context);
@ -37,8 +35,6 @@ public class ArtistImageLoader implements StreamModelLoader<ArtistImage> {
@Override
public void teardown() {
}
}
}

View file

@ -178,7 +178,7 @@ public class MusicPlayerRemote {
public static void openQueue(final List<Song> queue, final int startPosition, final boolean startPlaying) {
if (!tryToHandleOpenPlayingQueue(queue, startPosition, startPlaying) && musicService != null) {
musicService.openQueue(queue, startPosition, startPlaying);
if (!PreferenceUtil.getInstance(musicService).rememberShuffle()){
if (!PreferenceUtil.getInstance(musicService).getRememberShuffle()){
setShuffleMode(MusicService.SHUFFLE_MODE_NONE);
}
}

View file

@ -34,7 +34,7 @@ public class LibraryPreferenceDialog extends DialogFragment {
if (savedInstanceState != null) {
categoryInfos = savedInstanceState.getParcelableArrayList(PreferenceUtil.LIBRARY_CATEGORIES);
} else {
categoryInfos = PreferenceUtil.getInstance(getContext()).getLibraryCategoryInfos();
categoryInfos = PreferenceUtil.getInstance(getContext()).getLibraryCategories();
}
adapter = new CategoryInfoAdapter(categoryInfos);
@ -51,7 +51,7 @@ public class LibraryPreferenceDialog extends DialogFragment {
.negativeText(android.R.string.cancel)
.neutralText(R.string.reset_action)
.autoDismiss(false)
.onNeutral((dialog, action) -> adapter.setCategoryInfos(PreferenceUtil.getInstance(getContext()).getDefaultLibraryCategoryInfos()))
.onNeutral((dialog, action) -> adapter.setCategoryInfos(PreferenceUtil.getInstance(getContext()).getDefaultLibraryCategories()))
.onNegative((dialog, action) -> dismiss())
.onPositive((dialog, action) -> {
updateCategories(adapter.getCategoryInfos());
@ -69,7 +69,7 @@ public class LibraryPreferenceDialog extends DialogFragment {
private void updateCategories(List<CategoryInfo> categories) {
if (getSelected(categories) == 0) return;
PreferenceUtil.getInstance(getContext()).setLibraryCategoryInfos(categories);
PreferenceUtil.getInstance(getContext()).setLibraryCategories(categories);
}
private int getSelected(List<CategoryInfo> categories) {

View file

@ -115,7 +115,7 @@ public class MultiPlayer implements Playback, MediaPlayer.OnErrorListener, Media
if (path == null) {
return;
}
if (PreferenceUtil.getInstance(context).gaplessPlayback()) {
if (PreferenceUtil.getInstance(context).getGaplessPlayback()) {
mNextMediaPlayer = new MediaPlayer();
mNextMediaPlayer.setWakeMode(context, PowerManager.PARTIAL_WAKE_LOCK);
mNextMediaPlayer.setAudioSessionId(getAudioSessionId());

View file

@ -587,12 +587,11 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
metaData.putLong(MediaMetadataCompat.METADATA_KEY_NUM_TRACKS, getPlayingQueue().size());
}
if (PreferenceUtil.getInstance(this).albumArtOnLockscreen()) {
if (PreferenceUtil.getInstance(this).getShowAlbumCover()) {
final Point screenSize = Util.getScreenSize(MusicService.this);
final BitmapRequestBuilder<?, Bitmap> request = SongGlideRequest.Builder.from(Glide.with(MusicService.this), song)
.checkIgnoreMediaStore(MusicService.this)
.asBitmap().build();
if (PreferenceUtil.getInstance(this).blurredAlbumArt()) {
if (PreferenceUtil.getInstance(this).getBlurAlbumCover()) {
request.transform(new BlurTransformation.Builder(MusicService.this).build());
}
runOnUiThread(new Runnable() {
@ -1118,8 +1117,8 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
playback.setNextDataSource(null);
}
break;
case PreferenceUtil.ALBUM_ART_ON_LOCKSCREEN:
case PreferenceUtil.BLURRED_ALBUM_ART:
case PreferenceUtil.SHOW_ALBUM_COVER:
case PreferenceUtil.BLUR_ALBUM_COVER:
updateMediaSessionMetaData();
break;
case PreferenceUtil.COLORED_NOTIFICATION:
@ -1162,7 +1161,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
switch (msg.what) {
case DUCK:
if (PreferenceUtil.getInstance(service).audioDucking()) {
if (PreferenceUtil.getInstance(service).getAudioDucking()) {
currentDuckVolume -= .05f;
if (currentDuckVolume > .2f) {
sendEmptyMessageDelayed(DUCK, 10);
@ -1176,7 +1175,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
break;
case UNDUCK:
if (PreferenceUtil.getInstance(service).audioDucking()) {
if (PreferenceUtil.getInstance(service).getAudioDucking()) {
currentDuckVolume += .03f;
if (currentDuckVolume < 1f) {
sendEmptyMessageDelayed(UNDUCK, 10);

View file

@ -89,7 +89,6 @@ public class PlayingNotificationImpl extends PlayingNotification {
Glide.clear(target);
}
target = SongGlideRequest.Builder.from(Glide.with(service), song)
.checkIgnoreMediaStore(service)
.generatePalette(service).build()
.into(new SimpleTarget<BitmapPaletteWrapper>(bigNotificationImageSize, bigNotificationImageSize) {
@Override

View file

@ -51,7 +51,6 @@ public class PlayingNotificationImpl24 extends PlayingNotification {
final int bigNotificationImageSize = service.getResources().getDimensionPixelSize(R.dimen.notification_big_image_size);
service.runOnUiThread(() -> SongGlideRequest.Builder.from(Glide.with(service), song)
.checkIgnoreMediaStore(service)
.generatePalette(service).build()
.into(new SimpleTarget<BitmapPaletteWrapper>(bigNotificationImageSize, bigNotificationImageSize) {
@Override

View file

@ -140,7 +140,6 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
private void loadAlbumCover() {
SongGlideRequest.Builder.from(Glide.with(this), getAlbum().safeGetFirstSong())
.checkIgnoreMediaStore(this)
.generatePalette(this).build()
.dontAnimate()
.into(new CustomPaletteTarget(albumArtImageView) {

View file

@ -112,7 +112,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
setDrawUnderStatusbar();
ButterKnife.bind(this);
usePalette = PreferenceUtil.getInstance(this).albumArtistColoredFooters();
usePalette = PreferenceUtil.getInstance(this).getAlbumArtistColoredFooters();
initViews();
setUpObservableListViewParams();

View file

@ -128,7 +128,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity {
((TextView) navigationDrawerHeader.findViewById(R.id.title)).setText(song.title);
((TextView) navigationDrawerHeader.findViewById(R.id.text)).setText(MusicUtil.getSongInfoString(song));
SongGlideRequest.Builder.from(Glide.with(this), song)
.checkIgnoreMediaStore(this).build()
.build()
.into(((ImageView) navigationDrawerHeader.findViewById(R.id.image)));
} else {
if (navigationDrawerHeader != null) {

View file

@ -1,6 +1,5 @@
package com.kabouzeid.gramophone.ui.activities;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
@ -15,14 +14,12 @@ import androidx.preference.TwoStatePreference;
import androidx.appcompat.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
import com.afollestad.materialdialogs.color.ColorChooserDialog;
import com.kabouzeid.appthemehelper.ThemeStore;
import com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEColorPreference;
import com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEPreferenceFragmentCompat;
import com.kabouzeid.appthemehelper.util.ColorUtil;
import com.kabouzeid.gramophone.App;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.shortcuts.DynamicShortcutManager;
import com.kabouzeid.gramophone.preferences.LibraryPreference;
@ -123,7 +120,6 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
addPreferencesFromResource(R.xml.pref_colors);
addPreferencesFromResource(R.xml.pref_notification);
addPreferencesFromResource(R.xml.pref_now_playing_screen);
addPreferencesFromResource(R.xml.pref_images);
addPreferencesFromResource(R.xml.pref_lockscreen);
addPreferencesFromResource(R.xml.pref_audio);
addPreferencesFromResource(R.xml.pref_playlists);
@ -172,13 +168,6 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
return true;
});
final Preference autoDownloadImagesPolicy = findPreference("auto_download_images_policy");
setSummary(autoDownloadImagesPolicy);
autoDownloadImagesPolicy.setOnPreferenceChangeListener((preference, o) -> {
setSummary(autoDownloadImagesPolicy, o);
return true;
});
final ATEColorPreference primaryColorPref = (ATEColorPreference) findPreference("primary_color");
final int primaryColor = ThemeStore.primaryColor(getActivity());
primaryColorPref.setColor(primaryColor, ColorUtil.darkenColor(primaryColor));
@ -265,7 +254,7 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
switch (key) {
case PreferenceUtil.NOW_PLAYING_SCREEN_ID:
case PreferenceUtil.NOW_PLAYING_SCREEN:
updateNowPlayingScreenSummary();
break;
case PreferenceUtil.CLASSIC_NOTIFICATION:

View file

@ -101,12 +101,12 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
public void onSharedPreferenceChanged(SharedPreferences preferences, String key) {
if (PreferenceUtil.LIBRARY_CATEGORIES.equals(key)) {
Fragment current = getCurrentFragment();
pagerAdapter.setCategoryInfos(PreferenceUtil.getInstance(getActivity()).getLibraryCategoryInfos());
pagerAdapter.setCategoryInfos(PreferenceUtil.getInstance(getActivity()).getLibraryCategories());
pager.setOffscreenPageLimit(pagerAdapter.getCount() - 1);
int position = pagerAdapter.getItemPosition(current);
if (position < 0) position = 0;
pager.setCurrentItem(position);
PreferenceUtil.getInstance(getContext()).setLastPage(position);
PreferenceUtil.getInstance(getContext()).setLastTab(position);
updateTabVisibility();
}
@ -137,8 +137,8 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
updateTabVisibility();
if (PreferenceUtil.getInstance(getContext()).rememberLastTab()) {
pager.setCurrentItem(PreferenceUtil.getInstance(getContext()).getLastPage());
if (PreferenceUtil.getInstance(getContext()).getRememberLastTab()) {
pager.setCurrentItem(PreferenceUtil.getInstance(getContext()).getLastTab());
}
pager.addOnPageChangeListener(this);
}
@ -443,7 +443,7 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
@Override
public void onPageSelected(int position) {
PreferenceUtil.getInstance(getActivity()).setLastPage(position);
PreferenceUtil.getInstance(getActivity()).setLastTab(position);
}
@Override

View file

@ -72,7 +72,7 @@ public class AlbumsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFra
@Override
public boolean loadUsePalette() {
return PreferenceUtil.getInstance(getActivity()).albumColoredFooters();
return PreferenceUtil.getInstance(getActivity()).getAlbumColoredFooters();
}
@Override

View file

@ -103,7 +103,7 @@ public class ArtistsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFr
@Override
public boolean loadUsePalette() {
return PreferenceUtil.getInstance(getActivity()).artistColoredFooters();
return PreferenceUtil.getInstance(getActivity()).getArtistColoredFooters();
}
@Override

View file

@ -114,7 +114,7 @@ public class SongsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFrag
@Override
public boolean loadUsePalette() {
return PreferenceUtil.getInstance(getActivity()).songColoredFooters();
return PreferenceUtil.getInstance(getActivity()).getSongColoredFooters();
}
@Override

View file

@ -37,13 +37,6 @@ import java.util.Locale;
* @author Karim Abou Zeid (kabouzeid)
*/
public class MusicUtil {
public static Uri getMediaStoreAlbumCoverUri(int albumId) {
final Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart");
return ContentUris.withAppendedId(sArtworkUri, albumId);
}
public static Uri getSongFileUri(int songId) {
return ContentUris.withAppendedId(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, songId);
}

View file

@ -1,10 +1,7 @@
package com.kabouzeid.gramophone.util;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.preference.PreferenceManager;
import androidx.annotation.StyleRes;
@ -22,10 +19,11 @@ import java.util.ArrayList;
import java.util.List;
public final class PreferenceUtil {
public static final String GENERAL_THEME = "general_theme";
public static final String LIBRARY_CATEGORIES = "library_categories";
public static final String REMEMBER_LAST_TAB = "remember_last_tab";
public static final String LAST_PAGE = "last_start_page";
public static final String NOW_PLAYING_SCREEN_ID = "now_playing_screen_id";
public static final String LAST_TAB = "last_tab";
public static final String NOW_PLAYING_SCREEN = "now_playing_screen";
public static final String ARTIST_SORT_ORDER = "artist_sort_order";
public static final String ARTIST_SONG_SORT_ORDER = "artist_song_sort_order";
@ -49,35 +47,25 @@ public final class PreferenceUtil {
public static final String ARTIST_COLORED_FOOTERS = "artist_colored_footers";
public static final String ALBUM_ARTIST_COLORED_FOOTERS = "album_artist_colored_footers";
public static final String FORCE_SQUARE_ALBUM_COVER = "force_square_album_art";
public static final String COLORED_NOTIFICATION = "colored_notification";
public static final String CLASSIC_NOTIFICATION = "classic_notification";
public static final String GENERAL_THEME = "general_theme";
public static final String COLORED_APP_SHORTCUTS = "colored_app_shortcuts";
public static final String AUDIO_DUCKING = "audio_ducking";
public static final String GAPLESS_PLAYBACK = "gapless_playback";
public static final String REMEMBER_SHUFFLE = "remember_shuffle";
public static final String LAST_ADDED_CUTOFF = "last_added_interval";
public static final String ALBUM_ART_ON_LOCKSCREEN = "album_art_on_lockscreen";
public static final String BLURRED_ALBUM_ART = "blurred_album_art";
public static final String SHOW_ALBUM_COVER = "show_album_cover";
public static final String BLUR_ALBUM_COVER = "blur_album_cover";
public static final String LAST_SLEEP_TIMER_VALUE = "last_sleep_timer_value";
public static final String NEXT_SLEEP_TIMER_ELAPSED_REALTIME = "next_sleep_timer_elapsed_real_time";
public static final String SLEEP_TIMER_FINISH_SONG = "sleep_timer_finish_music";
public static final String IGNORE_MEDIA_STORE_ARTWORK = "ignore_media_store_artwork";
public static final String AUTO_DOWNLOAD_IMAGES_POLICY = "auto_download_images_policy";
public static final String SYNCHRONIZED_LYRICS_SHOW = "synchronized_lyrics_show";
public static final String LIBRARY_CATEGORIES = "library_categories";
private static final String REMEMBER_SHUFFLE = "remember_shuffle";
private static PreferenceUtil sInstance;
private final SharedPreferences mPreferences;
@ -93,20 +81,6 @@ public final class PreferenceUtil {
return sInstance;
}
public static boolean isAllowedToDownloadMetadata(final Context context) {
switch (getInstance(context).autoDownloadImagesPolicy()) {
case "always":
return true;
case "only_wifi":
final ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = connectivityManager.getActiveNetworkInfo();
return netInfo != null && netInfo.getType() == ConnectivityManager.TYPE_WIFI && netInfo.isConnectedOrConnecting();
case "never":
default:
return false;
}
}
public void registerOnSharedPreferenceChangedListener(SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener) {
mPreferences.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
}
@ -120,12 +94,6 @@ public final class PreferenceUtil {
return getThemeResFromPrefValue(mPreferences.getString(GENERAL_THEME, "light"));
}
public void setGeneralTheme(String theme) {
final SharedPreferences.Editor editor = mPreferences.edit();
editor.putString(GENERAL_THEME, theme);
editor.commit();
}
@StyleRes
public static int getThemeResFromPrefValue(String themePrefValue) {
switch (themePrefValue) {
@ -139,33 +107,32 @@ public final class PreferenceUtil {
}
}
public final boolean rememberLastTab() {
public final boolean getRememberLastTab() {
return mPreferences.getBoolean(REMEMBER_LAST_TAB, true);
}
public void setLastPage(final int value) {
public final int getLastTab() {
return mPreferences.getInt(LAST_TAB, 0);
}
public void setLastTab(final int value) {
final SharedPreferences.Editor editor = mPreferences.edit();
editor.putInt(LAST_PAGE, value);
editor.putInt(LAST_TAB, value);
editor.apply();
}
public final int getLastPage() {
return mPreferences.getInt(LAST_PAGE, 0);
}
public final NowPlayingScreen getNowPlayingScreen() {
int id = mPreferences.getInt(NOW_PLAYING_SCREEN_ID, 0);
int id = mPreferences.getInt(NOW_PLAYING_SCREEN, 0);
for (NowPlayingScreen nowPlayingScreen : NowPlayingScreen.values()) {
if (nowPlayingScreen.id == id) return nowPlayingScreen;
}
return NowPlayingScreen.CARD;
}
@SuppressLint("CommitPrefEdits")
public void setNowPlayingScreen(NowPlayingScreen nowPlayingScreen) {
final SharedPreferences.Editor editor = mPreferences.edit();
editor.putInt(NOW_PLAYING_SCREEN_ID, nowPlayingScreen.id);
editor.commit();
editor.putInt(NOW_PLAYING_SCREEN, nowPlayingScreen.id);
editor.apply();
}
public final boolean getColoredNotification() {
@ -198,24 +165,20 @@ public final class PreferenceUtil {
editor.apply();
}
public final boolean gaplessPlayback() {
public final boolean getGaplessPlayback() {
return mPreferences.getBoolean(GAPLESS_PLAYBACK, true);
}
public final boolean audioDucking() {
public final boolean getAudioDucking() {
return mPreferences.getBoolean(AUDIO_DUCKING, true);
}
public final boolean albumArtOnLockscreen() {
return mPreferences.getBoolean(ALBUM_ART_ON_LOCKSCREEN, true);
public final boolean getShowAlbumCover() {
return mPreferences.getBoolean(SHOW_ALBUM_COVER, true);
}
public final boolean blurredAlbumArt() {
return mPreferences.getBoolean(BLURRED_ALBUM_ART, true);
}
public final boolean ignoreMediaStoreArtwork() {
return mPreferences.getBoolean(IGNORE_MEDIA_STORE_ARTWORK, false);
public final boolean getBlurAlbumCover() {
return mPreferences.getBoolean(BLUR_ALBUM_COVER, true);
}
public final String getArtistSortOrder() {
@ -267,34 +230,27 @@ public final class PreferenceUtil {
public long getLastAddedCutoff() {
final CalendarUtil calendarUtil = new CalendarUtil();
long interval;
switch (mPreferences.getString(LAST_ADDED_CUTOFF, "")) {
case "today":
interval = calendarUtil.getElapsedToday();
break;
case "this_week":
interval = calendarUtil.getElapsedWeek();
break;
case "past_seven_days":
interval = calendarUtil.getElapsedDays(7);
break;
case "past_three_months":
interval = calendarUtil.getElapsedMonths(3);
break;
case "this_year":
interval = calendarUtil.getElapsedYear();
break;
case "this_month":
default:
interval = calendarUtil.getElapsedMonth();
break;
}
return (System.currentTimeMillis() - interval) / 1000;
}
@ -328,14 +284,18 @@ public final class PreferenceUtil {
editor.apply();
}
public final int getAlbumGridSize(Context context) {
return mPreferences.getInt(ALBUM_GRID_SIZE, context.getResources().getInteger(R.integer.default_grid_columns));
}
public void setAlbumGridSize(final int gridSize) {
final SharedPreferences.Editor editor = mPreferences.edit();
editor.putInt(ALBUM_GRID_SIZE, gridSize);
editor.apply();
}
public final int getAlbumGridSize(Context context) {
return mPreferences.getInt(ALBUM_GRID_SIZE, context.getResources().getInteger(R.integer.default_grid_columns));
public final int getSongGridSize(Context context) {
return mPreferences.getInt(SONG_GRID_SIZE, context.getResources().getInteger(R.integer.default_list_columns));
}
public void setSongGridSize(final int gridSize) {
@ -344,8 +304,8 @@ public final class PreferenceUtil {
editor.apply();
}
public final int getSongGridSize(Context context) {
return mPreferences.getInt(SONG_GRID_SIZE, context.getResources().getInteger(R.integer.default_list_columns));
public final int getArtistGridSize(Context context) {
return mPreferences.getInt(ARTIST_GRID_SIZE, context.getResources().getInteger(R.integer.default_list_columns));
}
public void setArtistGridSize(final int gridSize) {
@ -354,8 +314,8 @@ public final class PreferenceUtil {
editor.apply();
}
public final int getArtistGridSize(Context context) {
return mPreferences.getInt(ARTIST_GRID_SIZE, context.getResources().getInteger(R.integer.default_list_columns));
public final int getAlbumGridSizeLand(Context context) {
return mPreferences.getInt(ALBUM_GRID_SIZE_LAND, context.getResources().getInteger(R.integer.default_grid_columns_land));
}
public void setAlbumGridSizeLand(final int gridSize) {
@ -364,8 +324,8 @@ public final class PreferenceUtil {
editor.apply();
}
public final int getAlbumGridSizeLand(Context context) {
return mPreferences.getInt(ALBUM_GRID_SIZE_LAND, context.getResources().getInteger(R.integer.default_grid_columns_land));
public final int getSongGridSizeLand(Context context) {
return mPreferences.getInt(SONG_GRID_SIZE_LAND, context.getResources().getInteger(R.integer.default_list_columns_land));
}
public void setSongGridSizeLand(final int gridSize) {
@ -374,8 +334,8 @@ public final class PreferenceUtil {
editor.apply();
}
public final int getSongGridSizeLand(Context context) {
return mPreferences.getInt(SONG_GRID_SIZE_LAND, context.getResources().getInteger(R.integer.default_list_columns_land));
public final int getArtistGridSizeLand(Context context) {
return mPreferences.getInt(ARTIST_GRID_SIZE_LAND, context.getResources().getInteger(R.integer.default_list_columns_land));
}
public void setArtistGridSizeLand(final int gridSize) {
@ -384,8 +344,8 @@ public final class PreferenceUtil {
editor.apply();
}
public final int getArtistGridSizeLand(Context context) {
return mPreferences.getInt(ARTIST_GRID_SIZE_LAND, context.getResources().getInteger(R.integer.default_list_columns_land));
public final boolean getAlbumColoredFooters() {
return mPreferences.getBoolean(ALBUM_COLORED_FOOTERS, true);
}
public void setAlbumColoredFooters(final boolean value) {
@ -394,8 +354,8 @@ public final class PreferenceUtil {
editor.apply();
}
public final boolean albumColoredFooters() {
return mPreferences.getBoolean(ALBUM_COLORED_FOOTERS, true);
public final boolean getAlbumArtistColoredFooters() {
return mPreferences.getBoolean(ALBUM_ARTIST_COLORED_FOOTERS, true);
}
public void setAlbumArtistColoredFooters(final boolean value) {
@ -404,8 +364,8 @@ public final class PreferenceUtil {
editor.apply();
}
public final boolean albumArtistColoredFooters() {
return mPreferences.getBoolean(ALBUM_ARTIST_COLORED_FOOTERS, true);
public final boolean getSongColoredFooters() {
return mPreferences.getBoolean(SONG_COLORED_FOOTERS, true);
}
public void setSongColoredFooters(final boolean value) {
@ -414,8 +374,8 @@ public final class PreferenceUtil {
editor.apply();
}
public final boolean songColoredFooters() {
return mPreferences.getBoolean(SONG_COLORED_FOOTERS, true);
public final boolean getArtistColoredFooters() {
return mPreferences.getBoolean(ARTIST_COLORED_FOOTERS, true);
}
public void setArtistColoredFooters(final boolean value) {
@ -424,23 +384,11 @@ public final class PreferenceUtil {
editor.apply();
}
public final boolean artistColoredFooters() {
return mPreferences.getBoolean(ARTIST_COLORED_FOOTERS, true);
}
public final boolean rememberShuffle() {
public final boolean getRememberShuffle() {
return mPreferences.getBoolean(REMEMBER_SHUFFLE, true);
}
public final String autoDownloadImagesPolicy() {
return mPreferences.getString(AUTO_DOWNLOAD_IMAGES_POLICY, "only_wifi");
}
public final boolean synchronizedLyricsShow() {
return mPreferences.getBoolean(SYNCHRONIZED_LYRICS_SHOW, true);
}
public void setLibraryCategoryInfos(List<CategoryInfo> categories) {
public void setLibraryCategories(List<CategoryInfo> categories) {
Gson gson = new Gson();
Type collectionType = new TypeToken<List<CategoryInfo>>() {
}.getType();
@ -450,7 +398,7 @@ public final class PreferenceUtil {
editor.apply();
}
public List<CategoryInfo> getLibraryCategoryInfos() {
public List<CategoryInfo> getLibraryCategories() {
String data = mPreferences.getString(LIBRARY_CATEGORIES, null);
if (data != null) {
Gson gson = new Gson();
@ -464,16 +412,16 @@ public final class PreferenceUtil {
}
}
return getDefaultLibraryCategoryInfos();
return getDefaultLibraryCategories();
}
public List<CategoryInfo> getDefaultLibraryCategoryInfos() {
List<CategoryInfo> defaultCategoryInfos = new ArrayList<>(5);
defaultCategoryInfos.add(new CategoryInfo(CategoryInfo.Category.SONGS, true));
defaultCategoryInfos.add(new CategoryInfo(CategoryInfo.Category.ALBUMS, true));
defaultCategoryInfos.add(new CategoryInfo(CategoryInfo.Category.ARTISTS, true));
defaultCategoryInfos.add(new CategoryInfo(CategoryInfo.Category.GENRES, true));
defaultCategoryInfos.add(new CategoryInfo(CategoryInfo.Category.PLAYLISTS, true));
return defaultCategoryInfos;
public List<CategoryInfo> getDefaultLibraryCategories() {
List<CategoryInfo> defaultCategories = new ArrayList<>(5);
defaultCategories.add(new CategoryInfo(CategoryInfo.Category.SONGS, true));
defaultCategories.add(new CategoryInfo(CategoryInfo.Category.ALBUMS, true));
defaultCategories.add(new CategoryInfo(CategoryInfo.Category.ARTISTS, true));
defaultCategories.add(new CategoryInfo(CategoryInfo.Category.GENRES, true));
defaultCategories.add(new CategoryInfo(CategoryInfo.Category.PLAYLISTS, true));
return defaultCategories;
}
}

View file

@ -96,7 +96,6 @@ public class AppWidgetBig extends BaseAppWidget {
Glide.clear(target);
}
target = SongGlideRequest.Builder.from(Glide.with(appContext), song)
.checkIgnoreMediaStore(appContext)
.asBitmap().build()
.into(new SimpleTarget<Bitmap>(widgetImageSize, widgetImageSize) {
@Override

View file

@ -100,7 +100,6 @@ public class AppWidgetCard extends BaseAppWidget {
Glide.clear(target);
}
target = SongGlideRequest.Builder.from(Glide.with(service), song)
.checkIgnoreMediaStore(service)
.generatePalette(service).build()
.centerCrop()
.into(new SimpleTarget<BitmapPaletteWrapper>(imageSize, imageSize) {

View file

@ -93,7 +93,6 @@ public class AppWidgetClassic extends BaseAppWidget {
Glide.clear(target);
}
target = SongGlideRequest.Builder.from(Glide.with(appContext), song)
.checkIgnoreMediaStore(appContext)
.generatePalette(service).build()
.centerCrop()
.into(new SimpleTarget<BitmapPaletteWrapper>(imageSize, imageSize) {

View file

@ -99,7 +99,6 @@ public class AppWidgetSmall extends BaseAppWidget {
Glide.clear(target);
}
target = SongGlideRequest.Builder.from(Glide.with(appContext), song)
.checkIgnoreMediaStore(appContext)
.generatePalette(service).build()
.centerCrop()
.into(new SimpleTarget<BitmapPaletteWrapper>(imageSize, imageSize) {