mirror of
https://codeberg.org/OpenTracksApp/OpenTracks.git
synced 2026-09-30 16:52:21 +02:00
da62d26409
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.
121 lines
4.9 KiB
Java
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);
|
|
}
|
|
}
|