remove direct play preference dialog

This commit is contained in:
dkanada 2021-05-28 13:01:51 +09:00
commit 0acbba651c
5 changed files with 57 additions and 71 deletions

View file

@ -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;

View file

@ -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();
}
}

View file

@ -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<CategoryInfo> getCategories() {
String data = mPreferences.getString(CATEGORIES, null);
if (data != null) {
Gson gson = new Gson();
Type collectionType = new TypeToken<List<CategoryInfo>>() {
}.getType();
try {
return gson.fromJson(data, collectionType);
} catch (JsonSyntaxException e) {
e.printStackTrace();
}
return new Gson().fromJson(data, new TypeToken<List<CategoryInfo>>(){}.getType());
}
return getDefaultCategories();
@ -428,23 +415,24 @@ public final class PreferenceUtil {
public void setCategories(List<CategoryInfo> categories) {
Gson gson = new Gson();
Type collectionType = new TypeToken<List<CategoryInfo>>() {}.getType();
Type type = new TypeToken<List<CategoryInfo>>(){}.getType();
mPreferences.edit().putString(CATEGORIES, gson.toJson(categories, collectionType)).apply();
mPreferences.edit().putString(CATEGORIES, gson.toJson(categories, type)).apply();
}
public List<CategoryInfo> getDefaultCategories() {
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));
defaultCategories.add(new CategoryInfo(CategoryInfo.Category.FAVORITES, true));
return defaultCategories;
}
@SuppressWarnings("ConstantConditions")
public List<Codec> getDirectPlayCodecs() {
Set<String> defaultValues = Arrays.stream(Codec.values()).map(Enum::toString).collect(Collectors.toSet());
Set<String> values = mPreferences.getStringSet(DIRECT_PLAY_CODECS, defaultValues);

View file

@ -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();
}
}

View file

@ -14,9 +14,8 @@
android:positiveButtonText="@null"
android:title="@string/pref_title_transcode_codec" />
<Preference
<com.dkanada.gramophone.views.settings.DirectPlayPreference
app:iconSpaceReserved="false"
android:key="direct_play_codecs"
android:summary="@string/pref_summary_direct_play_codecs"
android:title="@string/pref_title_direct_play_codecs" />