Files
OpenTracks/src/main/java/de/dennisguse/opentracks/settings/MainSettingsFragment.java
T
Román Ginés da62d26409 UI refactoring with a Bottom App Bar.
Only one button to play/stop.
Stop Activity to edit track just recorded, resuming or finishing.
Logo color to FF6D00.
Fixes #1078 #437 #575 #1094.
2022-05-08 20:06:24 +02:00

121 lines
4.9 KiB
Java

package de.dennisguse.opentracks.settings;
import android.os.Bundle;
import androidx.fragment.app.DialogFragment;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.services.RecordingStatus;
import de.dennisguse.opentracks.services.TrackRecordingService;
import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
public class MainSettingsFragment extends PreferenceFragmentCompat {
private static final String TAG = MainSettingsFragment.class.getSimpleName();
private RecordingStatus recordingStatus = TrackRecordingService.STATUS_DEFAULT;
private TrackRecordingServiceConnection trackRecordingServiceConnection;
private final TrackRecordingServiceConnection.Callback bindServiceCallback =
service -> service.getRecordingStatusObservable()
.observe(MainSettingsFragment.this, this::onRecordingStatusChanged);
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.settings);
trackRecordingServiceConnection = new TrackRecordingServiceConnection(bindServiceCallback);
findPreference(getString(R.string.settings_defaults_key)).setOnPreferenceClickListener(preference -> {
((SettingsActivity) getActivity()).openScreen(getString(R.string.settings_defaults_key));
return true;
});
findPreference(getString(R.string.settings_ui_key)).setOnPreferenceClickListener(preference -> {
((SettingsActivity) getActivity()).openScreen(getString(R.string.settings_ui_key));
return true;
});
findPreference(getString(R.string.settings_gps_key)).setOnPreferenceClickListener(preference -> {
((SettingsActivity) getActivity()).openScreen(getString(R.string.settings_gps_key));
return true;
});
findPreference(getString(R.string.settings_sensors_key)).setOnPreferenceClickListener(preference -> {
((SettingsActivity) getActivity()).openScreen(getString(R.string.settings_sensors_key));
return true;
});
findPreference(getString(R.string.settings_announcements_key)).setOnPreferenceClickListener(preference -> {
((SettingsActivity) getActivity()).openScreen(getString(R.string.settings_announcements_key));
return true;
});
findPreference(getString(R.string.settings_import_export_key)).setOnPreferenceClickListener(preference -> {
((SettingsActivity) getActivity()).openScreen(getString(R.string.settings_import_export_key));
return true;
});
findPreference(getString(R.string.settings_api_key)).setOnPreferenceClickListener(preference -> {
((SettingsActivity) getActivity()).openScreen(getString(R.string.settings_api_key));
return true;
});
findPreference(getString(R.string.settings_open_tracks_key)).setOnPreferenceClickListener(preference -> {
((SettingsActivity) getActivity()).openScreen(getString(R.string.settings_open_tracks_key));
return true;
});
}
@Override
public void onResume() {
super.onResume();
trackRecordingServiceConnection.bind(getContext());
updatePrefsDependOnRecording();
}
@Override
public void onDestroy() {
super.onDestroy();
trackRecordingServiceConnection.unbind(getContext());
}
@Override
public void onDisplayPreferenceDialog(Preference preference) {
DialogFragment dialogFragment = null;
if (preference instanceof ResetDialogPreference) {
dialogFragment = ResetDialogPreference.ResetPreferenceDialog.newInstance(preference.getKey());
}
if (dialogFragment != null) {
dialogFragment.setTargetFragment(this, 0);
dialogFragment.show(getParentFragmentManager(), getClass().getSimpleName());
return;
}
super.onDisplayPreferenceDialog(preference);
}
private void onRecordingStatusChanged(RecordingStatus status) {
this.recordingStatus = status;
if (isAdded()) {
updatePrefsDependOnRecording();
}
}
private void updatePrefsDependOnRecording() {
Preference importExportPreference = findPreference(getString(R.string.settings_import_export_key));
Preference resetPreference = findPreference(getString(R.string.settings_reset_key));
boolean isRecording = recordingStatus.isRecording();
importExportPreference.setSummary(isRecording ? getString(R.string.settings_not_while_recording) : getString(R.string.settings_import_export_summary));
importExportPreference.setEnabled(!isRecording);
resetPreference.setSummary(isRecording ? getString(R.string.settings_not_while_recording) : getString(R.string.settings_reset_summary));
resetPreference.setEnabled(!isRecording);
}
}