inherit regular preference fragment for simplicity

This commit is contained in:
dkanada 2021-05-06 18:21:33 +09:00
commit 8c2fb62fa6
10 changed files with 30 additions and 96 deletions

View file

@ -9,25 +9,21 @@ import android.view.View;
import androidx.annotation.ColorInt; import androidx.annotation.ColorInt;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.fragment.app.DialogFragment;
import androidx.preference.ListPreference; import androidx.preference.ListPreference;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceManager; import androidx.preference.PreferenceManager;
import androidx.preference.TwoStatePreference; import androidx.preference.TwoStatePreference;
import com.afollestad.materialdialogs.color.ColorChooserDialog; import com.afollestad.materialdialogs.color.ColorChooserDialog;
import com.dkanada.gramophone.databinding.ActivitySettingsBinding; import com.dkanada.gramophone.databinding.ActivitySettingsBinding;
import com.dkanada.gramophone.preferences.DirectPlayPreference;
import com.dkanada.gramophone.preferences.DirectPlayPreferenceDialog; import com.dkanada.gramophone.preferences.DirectPlayPreferenceDialog;
import com.kabouzeid.appthemehelper.ThemeStore; import com.kabouzeid.appthemehelper.ThemeStore;
import com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEColorPreference; 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.appthemehelper.util.ColorUtil;
import com.dkanada.gramophone.R; import com.dkanada.gramophone.R;
import com.dkanada.gramophone.views.shortcuts.DynamicShortcutManager; import com.dkanada.gramophone.views.shortcuts.DynamicShortcutManager;
import com.dkanada.gramophone.preferences.CategoryPreference;
import com.dkanada.gramophone.preferences.CategoryPreferenceDialog; import com.dkanada.gramophone.preferences.CategoryPreferenceDialog;
import com.dkanada.gramophone.preferences.NowPlayingScreenPreference;
import com.dkanada.gramophone.preferences.NowPlayingScreenPreferenceDialog; import com.dkanada.gramophone.preferences.NowPlayingScreenPreferenceDialog;
import com.dkanada.gramophone.activities.base.AbsBaseActivity; import com.dkanada.gramophone.activities.base.AbsBaseActivity;
import com.dkanada.gramophone.util.PreferenceUtil; import com.dkanada.gramophone.util.PreferenceUtil;
@ -93,7 +89,7 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
return super.onOptionsItemSelected(item); return super.onOptionsItemSelected(item);
} }
public static class SettingsFragment extends ATEPreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener { public static class SettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener {
private static void setSummary(@NonNull Preference preference) { private static void setSummary(@NonNull Preference preference) {
setSummary(preference, PreferenceManager setSummary(preference, PreferenceManager
@ -124,20 +120,6 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
addPreferencesFromResource(R.xml.pref_cache); addPreferencesFromResource(R.xml.pref_cache);
} }
@Nullable
@Override
public DialogFragment onCreatePreferenceDialog(Preference preference) {
if (preference instanceof NowPlayingScreenPreference) {
return NowPlayingScreenPreferenceDialog.newInstance();
} else if (preference instanceof CategoryPreference) {
return CategoryPreferenceDialog.newInstance();
} else if (preference instanceof DirectPlayPreference) {
return DirectPlayPreferenceDialog.newInstance();
}
return super.onCreatePreferenceDialog(preference);
}
@Override @Override
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState); super.onViewCreated(view, savedInstanceState);
@ -152,6 +134,7 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
PreferenceUtil.getInstance(getActivity()).unregisterOnSharedPreferenceChangedListener(this); PreferenceUtil.getInstance(getActivity()).unregisterOnSharedPreferenceChangedListener(this);
} }
@SuppressWarnings("ConstantConditions")
private void invalidateSettings() { private void invalidateSettings() {
final Preference generalTheme = findPreference(PreferenceUtil.GENERAL_THEME); final Preference generalTheme = findPreference(PreferenceUtil.GENERAL_THEME);
setSummary(generalTheme); setSummary(generalTheme);
@ -231,6 +214,24 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
}); });
} }
final Preference categoryPreference = findPreference(PreferenceUtil.CATEGORIES);
categoryPreference.setOnPreferenceClickListener(preference -> {
CategoryPreferenceDialog.newInstance().show(getParentFragmentManager(), CategoryPreferenceDialog.TAG);
return false;
});
final Preference directPlayPreference = findPreference(PreferenceUtil.DIRECT_PLAY_CODECS);
directPlayPreference.setOnPreferenceClickListener(preference -> {
DirectPlayPreferenceDialog.newInstance().show(getParentFragmentManager(), DirectPlayPreferenceDialog.TAG);
return false;
});
final Preference nowPlayingPreference = findPreference(PreferenceUtil.NOW_PLAYING_SCREEN);
nowPlayingPreference.setOnPreferenceClickListener(preference -> {
NowPlayingScreenPreferenceDialog.newInstance().show(getParentFragmentManager(), NowPlayingScreenPreferenceDialog.TAG);
return false;
});
updateNowPlayingScreenSummary(); updateNowPlayingScreenSummary();
} }

View file

@ -1,24 +0,0 @@
package com.dkanada.gramophone.preferences;
import android.content.Context;
import android.util.AttributeSet;
import com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEDialogPreference;
public class CategoryPreference extends ATEDialogPreference {
public CategoryPreference(Context context) {
super(context);
}
public CategoryPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CategoryPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public CategoryPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
}

View file

@ -19,6 +19,8 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
public class CategoryPreferenceDialog extends DialogFragment { public class CategoryPreferenceDialog extends DialogFragment {
public static final String TAG = CategoryPreferenceDialog.class.getSimpleName();
public static CategoryPreferenceDialog newInstance() { public static CategoryPreferenceDialog newInstance() {
return new CategoryPreferenceDialog(); return new CategoryPreferenceDialog();
} }

View file

@ -1,24 +0,0 @@
package com.dkanada.gramophone.preferences;
import android.content.Context;
import android.util.AttributeSet;
import com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEDialogPreference;
public class DirectPlayPreference extends ATEDialogPreference {
public DirectPlayPreference(Context context) {
super(context);
}
public DirectPlayPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public DirectPlayPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public DirectPlayPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
}

View file

@ -15,6 +15,8 @@ import com.dkanada.gramophone.adapter.DirectPlayCodecAdapter;
import com.dkanada.gramophone.util.PreferenceUtil; import com.dkanada.gramophone.util.PreferenceUtil;
public class DirectPlayPreferenceDialog extends DialogFragment { public class DirectPlayPreferenceDialog extends DialogFragment {
public static final String TAG = DirectPlayPreferenceDialog.class.getSimpleName();
public static DirectPlayPreferenceDialog newInstance() { public static DirectPlayPreferenceDialog newInstance() {
return new DirectPlayPreferenceDialog(); return new DirectPlayPreferenceDialog();
} }

View file

@ -1,24 +0,0 @@
package com.dkanada.gramophone.preferences;
import android.content.Context;
import android.util.AttributeSet;
import com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEDialogPreference;
public class NowPlayingScreenPreference extends ATEDialogPreference {
public NowPlayingScreenPreference(Context context) {
super(context);
}
public NowPlayingScreenPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public NowPlayingScreenPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public NowPlayingScreenPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
}

View file

@ -23,6 +23,7 @@ import com.dkanada.gramophone.util.PreferenceUtil;
import com.pixelcan.inkpageindicator.InkPageIndicator; import com.pixelcan.inkpageindicator.InkPageIndicator;
public class NowPlayingScreenPreferenceDialog extends DialogFragment implements MaterialDialog.SingleButtonCallback, ViewPager.OnPageChangeListener { public class NowPlayingScreenPreferenceDialog extends DialogFragment implements MaterialDialog.SingleButtonCallback, ViewPager.OnPageChangeListener {
public static final String TAG = NowPlayingScreenPreferenceDialog.class.getSimpleName();
private DialogAction whichButtonClicked; private DialogAction whichButtonClicked;
private int viewPagerPosition; private int viewPagerPosition;

View file

@ -3,9 +3,9 @@
<com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEPreferenceCategory android:title="@string/pref_header_library"> <com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEPreferenceCategory android:title="@string/pref_header_library">
<com.dkanada.gramophone.preferences.CategoryPreference <Preference
app:iconSpaceReserved="false" app:iconSpaceReserved="false"
android:key="library_categories" android:key="categories"
android:summary="@string/pref_summary_categories" android:summary="@string/pref_summary_categories"
android:title="@string/pref_title_categories" /> android:title="@string/pref_title_categories" />

View file

@ -4,7 +4,7 @@
<com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEPreferenceCategory android:title="@string/pref_header_now_playing_screen"> <com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEPreferenceCategory android:title="@string/pref_header_now_playing_screen">
<com.dkanada.gramophone.preferences.NowPlayingScreenPreference <Preference
app:iconSpaceReserved="false" app:iconSpaceReserved="false"
android:key="now_playing_screen" android:key="now_playing_screen"
android:title="@string/pref_title_now_playing_appearance" /> android:title="@string/pref_title_now_playing_appearance" />

View file

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