forked from upstream-mirrors/OpenTracks
1e4e7b8c15
Fixes #1116.
111 lines
4.2 KiB
Java
111 lines
4.2 KiB
Java
package de.dennisguse.opentracks.settings;
|
|
|
|
import android.content.Intent;
|
|
import android.os.Bundle;
|
|
import android.view.View;
|
|
|
|
import androidx.annotation.NonNull;
|
|
import androidx.appcompat.app.AlertDialog;
|
|
import androidx.preference.PreferenceFragmentCompat;
|
|
|
|
import de.dennisguse.opentracks.AbstractActivity;
|
|
import de.dennisguse.opentracks.R;
|
|
import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment;
|
|
|
|
public class SettingsActivity extends AbstractActivity implements ChooseActivityTypeDialogFragment.ChooseActivityTypeCaller {
|
|
|
|
public static final String EXTRAS_CHECK_EXPORT_DIRECTORY = "Check Export Directory";
|
|
private boolean checkExportDirectory = false;
|
|
|
|
public static final String FRAGMENT_KEY = "fragmentKey";
|
|
|
|
private PreferenceFragmentCompat fragment = null;
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
|
|
Intent intent = getIntent();
|
|
if (intent != null && intent.hasExtra(EXTRAS_CHECK_EXPORT_DIRECTORY)) {
|
|
checkExportDirectory = true;
|
|
}
|
|
|
|
if (savedInstanceState != null) {
|
|
fragment = (PreferenceFragmentCompat) getSupportFragmentManager().getFragment(savedInstanceState, FRAGMENT_KEY);
|
|
}
|
|
if (fragment == null) {
|
|
fragment = new MainSettingsFragment();
|
|
}
|
|
|
|
getSupportFragmentManager().beginTransaction().replace(R.id.settings_fragment, fragment).commit();
|
|
}
|
|
|
|
@Override
|
|
protected void onResume() {
|
|
if (checkExportDirectory) {
|
|
checkExportDirectory = false;
|
|
new AlertDialog.Builder(this)
|
|
.setIcon(R.drawable.ic_logo_24dp)
|
|
.setTitle(R.string.app_name)
|
|
.setMessage(R.string.export_error_post_workout)
|
|
.setNeutralButton(android.R.string.ok, null)
|
|
.create()
|
|
.show();
|
|
}
|
|
|
|
super.onResume();
|
|
}
|
|
|
|
@Override
|
|
protected void onSaveInstanceState(@NonNull Bundle outState) {
|
|
super.onSaveInstanceState(outState);
|
|
if (fragment != null && fragment.isAdded()) {
|
|
getSupportFragmentManager().putFragment(outState, FRAGMENT_KEY, fragment);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected View getRootView() {
|
|
return getLayoutInflater().inflate(R.layout.settings, null);
|
|
}
|
|
|
|
private PreferenceFragmentCompat getPreferenceScreen(String key) {
|
|
PreferenceFragmentCompat fragment = null;
|
|
|
|
if (key.equals(getString(R.string.settings_defaults_key))) {
|
|
fragment = new DefaultsSettingsFragment();
|
|
} else if (key.equals(getString(R.string.settings_ui_key))) {
|
|
fragment = new UserInterfaceSettingsFragment();
|
|
} else if (key.equals(getString(R.string.settings_gps_key))) {
|
|
fragment = new GpsSettingsFragment();
|
|
} else if (key.equals(getString(R.string.settings_sensors_key))) {
|
|
fragment = new SensorsSettingsFragment();
|
|
} else if (key.equals(getString(R.string.settings_announcements_key))) {
|
|
fragment = new AnnouncementsSettingsFragment();
|
|
} else if (key.equals(getString(R.string.settings_import_export_key))) {
|
|
fragment = new ImportExportSettingsFragment();
|
|
} else if (key.equals(getString(R.string.settings_api_key))) {
|
|
fragment = new PublicAPISettingsFragment();
|
|
} else if (key.equals(getString(R.string.settings_open_tracks_key))) {
|
|
fragment = new OpenTracksSettingsFragment();
|
|
}
|
|
|
|
return fragment;
|
|
}
|
|
|
|
public PreferenceFragmentCompat openScreen(String key) {
|
|
fragment = getPreferenceScreen(key);
|
|
getSupportFragmentManager().beginTransaction().replace(R.id.settings_fragment, fragment).addToBackStack(key).commit();
|
|
return fragment;
|
|
}
|
|
|
|
@Override
|
|
public void onChooseActivityTypeDone(String iconValue) {
|
|
try {
|
|
((ChooseActivityTypeDialogFragment.ChooseActivityTypeCaller) this.fragment).onChooseActivityTypeDone(iconValue);
|
|
} catch (ClassCastException e) {
|
|
throw new ClassCastException(this.fragment.getClass().getSimpleName() + " must implement " + ChooseActivityTypeDialogFragment.ChooseActivityTypeCaller.class.getSimpleName());
|
|
}
|
|
}
|
|
}
|