From 0acbba651c47cc7ccee242fa161cbc505de2e7a3 Mon Sep 17 00:00:00 2001 From: dkanada Date: Fri, 28 May 2021 13:01:51 +0900 Subject: [PATCH] remove direct play preference dialog --- .../activities/SettingsActivity.java | 7 --- .../DirectPlayPreferenceDialog.java | 45 ---------------- .../gramophone/util/PreferenceUtil.java | 22 ++------ .../views/settings/DirectPlayPreference.java | 51 +++++++++++++++++++ app/src/main/res/xml/pref_playback.xml | 3 +- 5 files changed, 57 insertions(+), 71 deletions(-) delete mode 100644 app/src/main/java/com/dkanada/gramophone/dialogs/preferences/DirectPlayPreferenceDialog.java create mode 100644 app/src/main/java/com/dkanada/gramophone/views/settings/DirectPlayPreference.java diff --git a/app/src/main/java/com/dkanada/gramophone/activities/SettingsActivity.java b/app/src/main/java/com/dkanada/gramophone/activities/SettingsActivity.java index 700d2035..c52c39e4 100644 --- a/app/src/main/java/com/dkanada/gramophone/activities/SettingsActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/activities/SettingsActivity.java @@ -15,7 +15,6 @@ import androidx.preference.TwoStatePreference; import com.afollestad.materialdialogs.color.ColorChooserDialog; import com.dkanada.gramophone.databinding.ActivitySettingsBinding; -import com.dkanada.gramophone.dialogs.preferences.DirectPlayPreferenceDialog; import com.kabouzeid.appthemehelper.ThemeStore; import com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEColorPreference; import com.kabouzeid.appthemehelper.util.ColorUtil; @@ -113,7 +112,6 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia final TwoStatePreference coloredNotification = findPreference(PreferenceUtil.COLORED_NOTIFICATION); final TwoStatePreference colorAppShortcuts = findPreference(PreferenceUtil.COLORED_SHORTCUTS); final Preference categoryPreference = findPreference(PreferenceUtil.CATEGORIES); - final Preference directPlayPreference = findPreference(PreferenceUtil.DIRECT_PLAY_CODECS); final Preference nowPlayingPreference = findPreference(PreferenceUtil.NOW_PLAYING_SCREEN); final int primaryColor = ThemeStore.primaryColor(requireActivity()); @@ -154,11 +152,6 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia return false; }); - directPlayPreference.setOnPreferenceClickListener(preference -> { - DirectPlayPreferenceDialog.newInstance().show(getParentFragmentManager(), DirectPlayPreferenceDialog.TAG); - return false; - }); - nowPlayingPreference.setOnPreferenceClickListener(preference -> { NowPlayingPreferenceDialog.newInstance().show(getParentFragmentManager(), NowPlayingPreferenceDialog.TAG); return false; diff --git a/app/src/main/java/com/dkanada/gramophone/dialogs/preferences/DirectPlayPreferenceDialog.java b/app/src/main/java/com/dkanada/gramophone/dialogs/preferences/DirectPlayPreferenceDialog.java deleted file mode 100644 index 8633fd5b..00000000 --- a/app/src/main/java/com/dkanada/gramophone/dialogs/preferences/DirectPlayPreferenceDialog.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.dkanada.gramophone.dialogs.preferences; - -import android.app.Dialog; -import android.os.Bundle; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.fragment.app.DialogFragment; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.afollestad.materialdialogs.MaterialDialog; -import com.dkanada.gramophone.R; -import com.dkanada.gramophone.adapter.DirectPlayCodecAdapter; -import com.dkanada.gramophone.util.PreferenceUtil; - -public class DirectPlayPreferenceDialog extends DialogFragment { - public static final String TAG = DirectPlayPreferenceDialog.class.getSimpleName(); - - public static DirectPlayPreferenceDialog newInstance() { - return new DirectPlayPreferenceDialog(); - } - - private DirectPlayCodecAdapter adapter; - - @NonNull - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - View view = requireActivity().getLayoutInflater().inflate(R.layout.preference_dialog_direct_play_codecs, null); - - adapter = new DirectPlayCodecAdapter(PreferenceUtil.getInstance(getContext()).getDirectPlayCodecs()); - - RecyclerView recyclerView = view.findViewById(R.id.recycler_view); - recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); - recyclerView.setAdapter(adapter); - - return new MaterialDialog.Builder(requireActivity()) - .customView(view, false) - .title(R.string.pref_title_direct_play_codecs) - .positiveText(android.R.string.ok) - .negativeText(android.R.string.cancel) - .onPositive((dialog, action) -> PreferenceUtil.getInstance(getContext()).setDirectPlayCodecs(adapter.getCodecs())) - .build(); - } -} diff --git a/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java b/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java index 36fdc960..262f5b10 100644 --- a/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java +++ b/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java @@ -7,7 +7,6 @@ import android.os.Build; import android.preference.PreferenceManager; import com.google.gson.Gson; -import com.google.gson.JsonSyntaxException; import com.google.gson.reflect.TypeToken; import com.dkanada.gramophone.model.Theme; import com.dkanada.gramophone.R; @@ -92,7 +91,6 @@ public final class PreferenceUtil { public static final String IMAGE_CACHE_SIZE = "image_cache_size"; public static final String MEDIA_CACHE_SIZE = "media_cache_size"; - @SuppressWarnings("ConstantConditions") private static final PreferenceMigration Migration1 = new PreferenceMigration(0, 1) { @Override public void migrate(SharedPreferences preferences) { @@ -185,7 +183,6 @@ public final class PreferenceUtil { mPreferences.edit().putInt(ACCENT_COLOR, color).apply(); } - @SuppressWarnings("ConstantConditions") public final int getPageSize() { return Integer.parseInt(mPreferences.getString(PAGE_SIZE, "100")); } @@ -399,12 +396,10 @@ public final class PreferenceUtil { return mPreferences.getString(LOCATION_CACHE, mContext.getCacheDir().toString()); } - @SuppressWarnings("ConstantConditions") public final long getImageCacheSize() { return Long.parseLong(mPreferences.getString(IMAGE_CACHE_SIZE, "400")) * 100000; } - @SuppressWarnings("ConstantConditions") public final long getMediaCacheSize() { return Long.parseLong(mPreferences.getString(MEDIA_CACHE_SIZE, "400")) * 100000; } @@ -412,15 +407,7 @@ public final class PreferenceUtil { public List getCategories() { String data = mPreferences.getString(CATEGORIES, null); if (data != null) { - Gson gson = new Gson(); - Type collectionType = new TypeToken>() { - }.getType(); - - try { - return gson.fromJson(data, collectionType); - } catch (JsonSyntaxException e) { - e.printStackTrace(); - } + return new Gson().fromJson(data, new TypeToken>(){}.getType()); } return getDefaultCategories(); @@ -428,23 +415,24 @@ public final class PreferenceUtil { public void setCategories(List categories) { Gson gson = new Gson(); - Type collectionType = new TypeToken>() {}.getType(); + Type type = new TypeToken>(){}.getType(); - mPreferences.edit().putString(CATEGORIES, gson.toJson(categories, collectionType)).apply(); + mPreferences.edit().putString(CATEGORIES, gson.toJson(categories, type)).apply(); } public List getDefaultCategories() { List 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)); defaultCategories.add(new CategoryInfo(CategoryInfo.Category.FAVORITES, true)); + return defaultCategories; } - @SuppressWarnings("ConstantConditions") public List getDirectPlayCodecs() { Set defaultValues = Arrays.stream(Codec.values()).map(Enum::toString).collect(Collectors.toSet()); Set values = mPreferences.getStringSet(DIRECT_PLAY_CODECS, defaultValues); diff --git a/app/src/main/java/com/dkanada/gramophone/views/settings/DirectPlayPreference.java b/app/src/main/java/com/dkanada/gramophone/views/settings/DirectPlayPreference.java new file mode 100644 index 00000000..ae1bcc35 --- /dev/null +++ b/app/src/main/java/com/dkanada/gramophone/views/settings/DirectPlayPreference.java @@ -0,0 +1,51 @@ +package com.dkanada.gramophone.views.settings; + +import android.annotation.SuppressLint; +import android.app.Activity; +import android.content.Context; +import android.util.AttributeSet; +import android.view.View; + +import androidx.preference.Preference; +import androidx.preference.PreferenceViewHolder; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.afollestad.materialdialogs.MaterialDialog; +import com.dkanada.gramophone.R; +import com.dkanada.gramophone.adapter.DirectPlayCodecAdapter; +import com.dkanada.gramophone.util.PreferenceUtil; + +public class DirectPlayPreference extends Preference implements View.OnClickListener { + public DirectPlayPreference(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + public void onBindViewHolder(PreferenceViewHolder holder) { + super.onBindViewHolder(holder); + + holder.itemView.setOnClickListener(this); + } + + @Override + @SuppressLint("InflateParams") + public void onClick(View v) { + Activity activity = (Activity) getContext(); + View view = activity.getLayoutInflater().inflate(R.layout.preference_dialog_direct_play_codecs, null); + DirectPlayCodecAdapter adapter = new DirectPlayCodecAdapter(PreferenceUtil.getInstance(getContext()).getDirectPlayCodecs()); + RecyclerView recyclerView = view.findViewById(R.id.recycler_view); + + recyclerView.setLayoutManager(new LinearLayoutManager(activity)); + recyclerView.setAdapter(adapter); + + new MaterialDialog.Builder(activity) + .customView(view, false) + .title(R.string.pref_title_direct_play_codecs) + .positiveText(android.R.string.ok) + .negativeText(android.R.string.cancel) + .onPositive((dialog, action) -> PreferenceUtil.getInstance(getContext()).setDirectPlayCodecs(adapter.getCodecs())) + .build() + .show(); + } +} diff --git a/app/src/main/res/xml/pref_playback.xml b/app/src/main/res/xml/pref_playback.xml index 7fe3b757..b03f1131 100644 --- a/app/src/main/res/xml/pref_playback.xml +++ b/app/src/main/res/xml/pref_playback.xml @@ -14,9 +14,8 @@ android:positiveButtonText="@null" android:title="@string/pref_title_transcode_codec" /> -