package com.fastbootmobile.encore.providers.bassboost; import android.app.Activity; import android.app.FragmentManager; import android.content.Context; import android.content.SharedPreferences; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v17.leanback.app.GuidedStepFragment; import android.support.v17.leanback.widget.GuidanceStylist; import android.support.v17.leanback.widget.GuidedAction; import com.fastbootmobile.encore.app.R; import java.util.List; public class LeanbackSettingsActivity extends Activity { private static final int ACTION_FREQUENCY = 0; private static final int ACTION_STRENGTH = 1; private static final int OPTION_CHECK_SET_ID = 10; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (null == savedInstanceState) { GuidedStepFragment.add(getFragmentManager(), new FirstStepFragment()); } } private static void addAction(List<GuidedAction> actions, long id, String title, String desc) { actions.add(new GuidedAction.Builder() .id(id) .title(title) .description(desc) .build()); } private static void addCheckedAction(List<GuidedAction> actions, int iconResId, Context context, String title, String desc, boolean checked) { GuidedAction.Builder guidedActionBuilder = new GuidedAction.Builder() .title(title) .description(desc) .checkSetId(OPTION_CHECK_SET_ID); if (iconResId > 0) { guidedActionBuilder.iconResourceId(iconResId, context); } GuidedAction guidedAction = guidedActionBuilder.build(); guidedAction.setChecked(checked); actions.add(guidedAction); } public static class FirstStepFragment extends GuidedStepFragment { @Override public int onProvideTheme() { return R.style.Theme_OmniMusic_Leanback_GuidedStep; } @Override public GuidanceStylist.Guidance onCreateGuidance(Bundle savedInstanceState) { String title = getString(R.string.bass_boost_settings_title); String breadcrumb = ""; String description = ""; Drawable icon = getActivity().getDrawable(R.mipmap.ic_launcher); return new GuidanceStylist.Guidance(title, description, breadcrumb, icon); } @Override public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceState) { addAction(actions, ACTION_FREQUENCY, getString(R.string.center_frequency_title), getString(R.string.center_frequency_summary)); addAction(actions, ACTION_STRENGTH, getString(R.string.gain_title), getString(R.string.gain_summary)); } @Override public void onGuidedActionClicked(GuidedAction action) { FragmentManager fm = getFragmentManager(); if (action.getId() == ACTION_FREQUENCY) { GuidedStepFragment.add(fm, new FrequencyPrefFragment()); } else { GuidedStepFragment.add(fm, new StrengthPrefFragment()); } } } public static class FrequencyPrefFragment extends GuidedStepFragment { @Override public int onProvideTheme() { return R.style.Theme_OmniMusic_Leanback_GuidedStep; } @Override public GuidanceStylist.Guidance onCreateGuidance(Bundle savedInstanceState) { String title = getString(R.string.center_frequency_title); String breadcrumb = ""; String description = getString(R.string.center_frequency_summary); Drawable icon = getActivity().getDrawable(R.mipmap.ic_launcher); return new GuidanceStylist.Guidance(title, description, breadcrumb, icon); } @Override public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceState) { actions.add(new GuidedAction.Builder() .title("Select the frequency") .multilineDescription(false) .infoOnly(true) .enabled(false) .build()); String[] entries = getResources().getStringArray(R.array.center_frequencies_entries); String[] values = getResources().getStringArray(R.array.center_frequencies_values); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); final String curValue = prefs.getString("center_frequency", "55"); int i = 0; for (String entry : entries) { addCheckedAction(actions, 0, getActivity(), entry, null, values[i].equals(curValue)); ++i; } } @Override public void onGuidedActionClicked(GuidedAction action) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); final String[] values = getResources().getStringArray(R.array.center_frequencies_values); prefs.edit().putString("center_frequency", values[getSelectedActionPosition() - 1]).apply(); getFragmentManager().popBackStack(); } } public static class StrengthPrefFragment extends GuidedStepFragment { @Override public int onProvideTheme() { return R.style.Theme_OmniMusic_Leanback_GuidedStep; } @Override public GuidanceStylist.Guidance onCreateGuidance(Bundle savedInstanceState) { String title = getString(R.string.gain_title); String breadcrumb = ""; String description = getString(R.string.gain_summary); Drawable icon = getActivity().getDrawable(R.mipmap.ic_launcher); return new GuidanceStylist.Guidance(title, description, breadcrumb, icon); } @Override public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceState) { actions.add(new GuidedAction.Builder() .title("Select the intensity") .multilineDescription(false) .infoOnly(true) .enabled(false) .build()); String[] entries = getResources().getStringArray(R.array.gain_entries); String[] values = getResources().getStringArray(R.array.gain_values); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); final String curValue = prefs.getString("gain", "0"); int i = 0; for (String entry : entries) { addCheckedAction(actions, 0, getActivity(), entry, null, values[i].equals(curValue)); ++i; } } @Override public void onGuidedActionClicked(GuidedAction action) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); final String[] values = getResources().getStringArray(R.array.gain_values); prefs.edit().putString("gain", values[getSelectedActionPosition() - 1]).apply(); getFragmentManager().popBackStack(); } } }