package cl.monsoon.s1next.view.fragment; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.Preference; import javax.inject.Inject; import cl.monsoon.s1next.App; import cl.monsoon.s1next.R; import cl.monsoon.s1next.data.event.FontSizeChangeEvent; import cl.monsoon.s1next.data.event.ThemeChangeEvent; import cl.monsoon.s1next.data.pref.GeneralPreferencesManager; import cl.monsoon.s1next.data.pref.ThemeManager; import cl.monsoon.s1next.util.DeviceUtil; import cl.monsoon.s1next.util.ResourceUtil; import cl.monsoon.s1next.view.activity.SettingsActivity; import cl.monsoon.s1next.widget.EventBus; /** * An Activity includes general settings that allow users * to modify general features and behaviors such as theme * and font size. */ public final class GeneralPreferenceFragment extends BasePreferenceFragment implements Preference.OnPreferenceClickListener { public static final String PREF_KEY_THEME = "pref_key_theme"; public static final String PREF_KEY_FONT_SIZE = "pref_key_font_size_v2"; public static final String PREF_KEY_SIGNATURE = "pref_key_signature"; private static final String PREF_KEY_DOWNLOADS = "pref_key_downloads"; @Inject EventBus mEventBus; @Inject GeneralPreferencesManager mGeneralPreferencesManager; @Inject ThemeManager mThemeManager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preference_general); App.getAppComponent(getActivity()).inject(this); findPreference(PREF_KEY_DOWNLOADS).setOnPreferenceClickListener(this); findPreference(PREF_KEY_SIGNATURE).setSummary(DeviceUtil.getSignature(getActivity())); } @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { switch (key) { case PREF_KEY_THEME: mThemeManager.invalidateTheme(); mEventBus.post(new ThemeChangeEvent()); break; case PREF_KEY_FONT_SIZE: mGeneralPreferencesManager.invalidateFontScale(); // change scaling factor for fonts ResourceUtil.setScaledDensity(getResources(), mGeneralPreferencesManager.getFontScale()); mEventBus.post(new FontSizeChangeEvent()); break; case PREF_KEY_SIGNATURE: mGeneralPreferencesManager.invalidateSignatureEnabled(); break; default: // fall through } } @Override public boolean onPreferenceClick(Preference preference) { switch (preference.getKey()) { case PREF_KEY_DOWNLOADS: SettingsActivity.startDownloadSettingsActivity(preference.getContext()); return true; default: return false; } } }