forked from upstream-mirrors/OpenTracks
84 lines
3.0 KiB
Java
84 lines
3.0 KiB
Java
package de.dennisguse.opentracks.settings;
|
|
|
|
import android.content.SharedPreferences;
|
|
import android.os.Bundle;
|
|
|
|
import androidx.fragment.app.DialogFragment;
|
|
import androidx.preference.ListPreference;
|
|
import androidx.preference.Preference;
|
|
import androidx.preference.PreferenceFragmentCompat;
|
|
|
|
import de.dennisguse.opentracks.R;
|
|
import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment;
|
|
import de.dennisguse.opentracks.util.HackUtils;
|
|
|
|
public class DefaultsSettingsFragment extends PreferenceFragmentCompat implements ChooseActivityTypeDialogFragment.ChooseActivityTypeCaller {
|
|
|
|
// Used to forward update from ChooseActivityTypeDialogFragment; TODO Could be replaced with LiveData.
|
|
private ActivityTypePreference.ActivityPreferenceDialog activityPreferenceDialog;
|
|
|
|
private final SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener = (sharedPreferences, key) -> {
|
|
if (PreferencesUtils.isKey(R.string.stats_units_key, key)) {
|
|
getActivity().runOnUiThread(this::updateUnits);
|
|
}
|
|
};
|
|
|
|
@Override
|
|
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
|
addPreferencesFromResource(R.xml.settings_defaults);
|
|
}
|
|
|
|
@Override
|
|
public void onStart() {
|
|
super.onStart();
|
|
((SettingsActivity) getActivity()).getSupportActionBar().setTitle(R.string.settings_defaults_title);
|
|
}
|
|
|
|
@Override
|
|
public void onResume() {
|
|
super.onResume();
|
|
PreferencesUtils.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
|
|
updateUnits();
|
|
}
|
|
|
|
@Override
|
|
public void onPause() {
|
|
super.onPause();
|
|
PreferencesUtils.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
|
|
}
|
|
|
|
@Override
|
|
public void onDisplayPreferenceDialog(Preference preference) {
|
|
DialogFragment dialogFragment = null;
|
|
if (preference instanceof ActivityTypePreference) {
|
|
activityPreferenceDialog = ActivityTypePreference.ActivityPreferenceDialog.newInstance(preference.getKey());
|
|
dialogFragment = activityPreferenceDialog;
|
|
}
|
|
|
|
if (dialogFragment != null) {
|
|
dialogFragment.setTargetFragment(this, 0);
|
|
dialogFragment.show(getParentFragmentManager(), getClass().getSimpleName());
|
|
return;
|
|
}
|
|
|
|
super.onDisplayPreferenceDialog(preference);
|
|
}
|
|
|
|
private void updateUnits() {
|
|
boolean metricUnits = PreferencesUtils.isMetricUnits();
|
|
|
|
ListPreference statsRatePreferences = findPreference(getString(R.string.stats_rate_key));
|
|
String[] entries = getResources().getStringArray(metricUnits ? R.array.stats_rate_metric_options : R.array.stats_rate_imperial_options);
|
|
statsRatePreferences.setEntries(entries);
|
|
|
|
HackUtils.invalidatePreference(statsRatePreferences);
|
|
}
|
|
|
|
@Override
|
|
public void onChooseActivityTypeDone(String iconValue) {
|
|
if (activityPreferenceDialog != null) {
|
|
activityPreferenceDialog.updateUI(iconValue);
|
|
}
|
|
}
|
|
}
|