mirror of
https://github.com/russok/FitoTrack.git
synced 2025-10-28 16:22:12 -07:00
127 lines
4.7 KiB
Java
127 lines
4.7 KiB
Java
/*
|
|
* Copyright (c) 2020 Jannis Scheibe <jannis@tadris.de>
|
|
*
|
|
* This file is part of FitoTrack
|
|
*
|
|
* FitoTrack is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* FitoTrack is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
package de.tadris.fitness.activity;
|
|
|
|
import android.app.AlertDialog;
|
|
import android.media.Ringtone;
|
|
import android.media.RingtoneManager;
|
|
import android.net.Uri;
|
|
import android.preference.ListPreference;
|
|
import android.preference.Preference;
|
|
import android.preference.PreferenceActivity;
|
|
import android.preference.PreferenceManager;
|
|
import android.preference.RingtonePreference;
|
|
import android.text.TextUtils;
|
|
import android.view.MenuItem;
|
|
|
|
import androidx.annotation.StringRes;
|
|
|
|
import de.tadris.fitness.R;
|
|
import de.tadris.fitness.util.unit.UnitUtils;
|
|
|
|
public abstract class FitoTrackSettingsActivity extends PreferenceActivity {
|
|
|
|
protected void showErrorDialog(Exception e, @StringRes int title, @StringRes int message) {
|
|
new AlertDialog.Builder(this)
|
|
.setTitle(title)
|
|
.setMessage(getString(message) + "\n\n" + e.getMessage())
|
|
.setPositiveButton(R.string.okay, null)
|
|
.create().show();
|
|
}
|
|
|
|
/**
|
|
* A preference value change listener that updates the preference's summary
|
|
* to reflect its new value.
|
|
*/
|
|
protected static final Preference.OnPreferenceChangeListener sBindPreferenceSummaryToValueListener = (preference, value) -> {
|
|
String stringValue = value.toString();
|
|
|
|
if (preference instanceof ListPreference) {
|
|
// For list preferences, look up the correct display value in
|
|
// the preference's 'entries' list.
|
|
ListPreference listPreference = (ListPreference) preference;
|
|
int index = listPreference.findIndexOfValue(stringValue);
|
|
|
|
// Set the summary to reflect the new value.
|
|
preference.setSummary(
|
|
index >= 0
|
|
? listPreference.getEntries()[index]
|
|
: null);
|
|
|
|
} else if (preference instanceof RingtonePreference) {
|
|
// For ringtone preferences, look up the correct display value
|
|
// using RingtoneManager.
|
|
if (TextUtils.isEmpty(stringValue)) {
|
|
// Empty values correspond to 'silent' (no ringtone).
|
|
preference.setSummary(R.string.pref_ringtone_silent);
|
|
|
|
} else {
|
|
Ringtone ringtone = RingtoneManager.getRingtone(
|
|
preference.getContext(), Uri.parse(stringValue));
|
|
|
|
if (ringtone == null) {
|
|
// Clear the summary if there was a lookup error.
|
|
preference.setSummary(null);
|
|
} else {
|
|
// Set the summary to reflect the new ringtone display
|
|
// name.
|
|
String name = ringtone.getTitle(preference.getContext());
|
|
preference.setSummary(name);
|
|
}
|
|
}
|
|
|
|
} else {
|
|
// For all other preferences, set the summary to the value's
|
|
// simple string representation.
|
|
preference.setSummary(stringValue);
|
|
}
|
|
return true;
|
|
};
|
|
|
|
protected static void bindPreferenceSummaryToValue(Preference preference) {
|
|
// Set the listener to watch for value changes.
|
|
preference.setOnPreferenceChangeListener(sBindPreferenceSummaryToValueListener);
|
|
|
|
// Trigger the listener immediately with the preference's
|
|
// current value.
|
|
sBindPreferenceSummaryToValueListener.onPreferenceChange(preference,
|
|
PreferenceManager
|
|
.getDefaultSharedPreferences(preference.getContext())
|
|
.getString(preference.getKey(), ""));
|
|
}
|
|
|
|
@Override
|
|
protected void onDestroy() {
|
|
super.onDestroy();
|
|
UnitUtils.setUnit(this);
|
|
}
|
|
|
|
@Override
|
|
public boolean onMenuItemSelected(int featureId, MenuItem item) {
|
|
int id = item.getItemId();
|
|
if (id == android.R.id.home) {
|
|
finish();
|
|
return true;
|
|
}
|
|
return super.onMenuItemSelected(featureId, item);
|
|
}
|
|
|
|
}
|