package com.themarpe.openthermalcamera; import android.os.Bundle; import android.util.Log; import com.themarpe.openthermalcamera.Palette.ThermalPalette; import com.themarpe.openthermalcamera.R; import androidx.preference.ListPreference; import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; import androidx.preference.PreferenceManager; import androidx.preference.SeekBarPreference; public class SettingsFragment extends PreferenceFragmentCompat { OTC otcHandle; private static final String TAG = "SettingsFragment"; @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { setPreferencesFromResource(R.xml.settings_screen, rootKey); otcHandle = new OTC(getContext(), null); //crashlytics test button /* findPreference("btn_crashlytics").setOnPreferenceClickListener(View -> { Crashlytics.getInstance().crash(); return true; }); findPreference("btn_bootloader").setOnPreferenceClickListener(View -> { otcHandle.jumpToBootloader(); try { Thread.sleep(2000); } catch (Exception ex){ } return true; }); */ //Emissivity SeekBarPreference emissivity = findPreference("emissivity"); //thermal palette selection ThermalPaletteChangeListener tpcl = new ThermalPaletteChangeListener(); String currentValue = PreferenceManager.getDefaultSharedPreferences(getContext()).getString("thermal_palette",""); findPreference("thermal_palette").setOnPreferenceChangeListener(tpcl); tpcl.onPreferenceChange(findPreference("thermal_palette"), currentValue); SeekBarPreference customRangeMin = (SeekBarPreference) findPreference("custom_range_min"); SeekBarPreference customRangeMax = (SeekBarPreference) findPreference("custom_range_max"); //depencency on dynamic_range findPreference("dynamic_range_enabled").setOnPreferenceChangeListener((preference, newValue) -> { findPreference("dynamic_range_min_difference").setEnabled((boolean)newValue); return true; }); //CUSTOM TEMPERATURE RANGE customRangeMin.setOnPreferenceChangeListener((preference, newValue) -> { int cur = (Integer) newValue; if(cur > customRangeMax.getValue()){ customRangeMax.setValue(cur + 1); } return true; }); customRangeMax.setOnPreferenceChangeListener(((preference, newValue) -> { int cur = (Integer) newValue; if(cur < customRangeMin.getValue()){ customRangeMin.setValue(cur - 1); } return true; })); } class ThermalPaletteChangeListener implements Preference.OnPreferenceChangeListener { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { ListPreference thermalPeletteList = (ListPreference) preference; try{ String val = (String) newValue; //Try to get ThermalPalette from value... String className = ThermalPalette.class.getPackage().getName()+"."+val; Log.d("SettingsFragment", "Trying to load className: " + className); ThermalPalette palette = (ThermalPalette) Class.forName(className).newInstance(); double min = palette.getDefaultMinTemperature(); double max = palette.getDefaultMaxTemperature(); findPreference("thermal_palette_default_range_info").setTitle("Default Range is from " + min + " to " + max + "."); //current selected to summary CharSequence entry = thermalPeletteList.getEntries()[thermalPeletteList.findIndexOfValue(val)]; Log.d("SettingsFragment", "Changing summary to: " + entry); ((ListPreference)preference).setSummary(entry); } catch (Exception ex) { ex.printStackTrace(); } return true; } } private static void bindPreferenceSummaryToValue(Preference pref) { // Set the listener to watch for value changes. pref.setOnPreferenceChangeListener((preference1, newValue) -> { String newSummary = PreferenceManager.getDefaultSharedPreferences(preference1.getContext()).getString(preference1.getKey(), ""); Log.d("SettingsFragment", "Changing summary to: " + newSummary); preference1.setSummary(newSummary); return true; }); } }