Files
OpenTracks/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java
T

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());
}
}
}