package cl.monsoon.s1next.view.dialog; import android.app.AlertDialog; import android.app.Dialog; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentActivity; import javax.inject.Inject; import cl.monsoon.s1next.App; import cl.monsoon.s1next.R; import cl.monsoon.s1next.data.event.ThemeChangeEvent; import cl.monsoon.s1next.data.pref.ThemeManager; import cl.monsoon.s1next.widget.EventBus; /** * A dialog which used to change theme. */ public final class ThemeChangeDialogFragment extends DialogFragment { private static final String TAG = ThemeChangeDialogFragment.class.getName(); @Inject EventBus mEventBus; @Inject ThemeManager mThemeManager; public static void showThemeChangeDialog(FragmentActivity fragmentActivity) { new ThemeChangeDialogFragment().show(fragmentActivity.getSupportFragmentManager(), ThemeChangeDialogFragment.TAG); } @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { App.getAppComponent(getContext()).inject(this); int checkedItem = mThemeManager.getThemeIndex(); return new AlertDialog.Builder(getContext()) .setTitle(R.string.pref_theme) .setSingleChoiceItems(R.array.pref_theme_entries, checkedItem, (dialog, which) -> { // won't change theme if unchanged if (which != checkedItem) { mThemeManager.applyTheme(which); mThemeManager.setThemeByIndex(which); mEventBus.post(new ThemeChangeEvent()); } dismiss(); }) .create(); } }