Loading parts/src/org/lineageos/settings/switchcust/SliderSwitchOptionReceiver.java +3 −1 Original line number Diff line number Diff line Loading @@ -21,7 +21,9 @@ public class SliderSwitchOptionReceiver extends RemotePreferenceUpdater { @Override public String getSummary(Context context, String key) { if (SliderUtils.HARDWARE_SWITCH_CATEGORY_KEY.equals(key)) { return SliderUtils.getCurrentOption(context); String currentOption = SliderUtils.getCurrentOption(context); Integer currentOptionResourceIndex = SliderUtils.getFeatureTitleRes(currentOption); return context.getString(currentOptionResourceIndex); } return null; } Loading parts/src/org/lineageos/settings/switchcust/SliderUtils.java +31 −9 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ package org.lineageos.settings.switchcust; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import androidx.annotation.NonNull; import androidx.preference.PreferenceManager; import org.lineageos.settings.R; Loading @@ -25,17 +26,39 @@ public class SliderUtils { public static int getFeatureLabelRes(String key) { switch (key) { case SliderUtils.KEY_SENSOR_PRIVACY: return R.string.sensor_access; case SliderUtils.KEY_FAIRPHONE_MOMENTS: return R.string.fairphone_moments; case SliderUtils.KEY_DO_NOT_DISTURB: return R.string.do_not_disturb; case SliderUtils.KEY_FLIGHT_MODE: return R.string.flight_mode; case SliderUtils.KEY_TORCH_LIGHT: return R.string.torch; case SliderUtils.KEY_DARK_LIGHT_MODE: return R.string.dark_mode; case SliderUtils.KEY_BATTERY_SAVER: return R.string.battery_saver; case KEY_SENSOR_PRIVACY: return R.string.sensor_access; case KEY_FAIRPHONE_MOMENTS: return R.string.fairphone_moments; case KEY_DO_NOT_DISTURB: return R.string.do_not_disturb; case KEY_FLIGHT_MODE: return R.string.flight_mode; case KEY_TORCH_LIGHT: return R.string.torch; case KEY_DARK_LIGHT_MODE: return R.string.dark_mode; case KEY_BATTERY_SAVER: return R.string.battery_saver; default: return android.R.string.untitled; } } public static int getFeatureTitleRes(String key) { switch (key) { case KEY_SENSOR_PRIVACY: return R.string.sensor_privacy_title; case KEY_FAIRPHONE_MOMENTS: return R.string.fairphone_moments_title; case KEY_DO_NOT_DISTURB: return R.string.do_not_disturb_title; case KEY_FLIGHT_MODE: return R.string.flight_mode_title; case KEY_TORCH_LIGHT: return R.string.torch_light_title; case KEY_DARK_LIGHT_MODE: return R.string.dark_light_mode_title; case KEY_BATTERY_SAVER: return R.string.battery_saver_title; default: return android.R.string.untitled; } } public static boolean isSelectableKey(@NonNull String key) { return KEY_SENSOR_PRIVACY.equals(key) || KEY_FAIRPHONE_MOMENTS.equals(key) || KEY_DO_NOT_DISTURB.equals(key) || KEY_FLIGHT_MODE.equals(key) || KEY_TORCH_LIGHT.equals(key) || KEY_DARK_LIGHT_MODE.equals(key) || KEY_BATTERY_SAVER.equals(key); } public static boolean getCurrentFallbackState(Intent intent) { boolean fallbackState = false; if (intent != null && intent.hasExtra(SliderSwitchStateReceiver.EXTRA_SLIDER_STATE)) { Loading @@ -47,8 +70,7 @@ public class SliderUtils { public static String getCurrentOption(Context context) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); String currentOption = prefs.getString(PREF_SWITCH_FUNCTION, KEY_SENSOR_PRIVACY); return context.getString(SliderUtils.getFeatureLabelRes(currentOption)); return prefs.getString(PREF_SWITCH_FUNCTION, KEY_SENSOR_PRIVACY); } public static void notifyChanged(Context context) { Loading parts/src/org/lineageos/settings/switchcust/SwitchSettingsFragment.java +29 −59 Original line number Diff line number Diff line Loading @@ -13,22 +13,13 @@ import android.content.Context; import android.content.SharedPreferences; import org.lineageos.settings.R; import org.lineageos.settings.switchcust.SliderUtils; public class SwitchSettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener { private static final String TAG = "SwitchFragment"; private static final String KEY_SENSOR_PRIVACY = "sensor_privacy"; private static final String KEY_FAIRPHONE_MOMENTS = "fairphone_moments"; private static final String KEY_DO_NOT_DISTURB = "do_not_disturb"; private static final String KEY_FLIGHT_MODE = "flight_mode"; private static final String KEY_TORCH_LIGHT = "torch_light"; private static final String KEY_DARK_LIGHT_MODE = "dark_light_mode"; private static final String KEY_BATTERY_SAVER = "battery_saver"; private static final String PREF_SWITCH_FUNCTION = "switch_function"; private CheckBoxPreference mSensorPrivacyPref; private CheckBoxPreference mFpMomentsPref; private CheckBoxPreference mDoNotDisturbPref; Loading @@ -37,7 +28,7 @@ public class SwitchSettingsFragment extends PreferenceFragmentCompat implements private CheckBoxPreference mDarkLightModePref; private CheckBoxPreference mBatterySaverPref; private String mCurrentSelection = KEY_SENSOR_PRIVACY; private String mCurrentSelection = SliderUtils.KEY_SENSOR_PRIVACY; @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { Loading @@ -46,24 +37,24 @@ public class SwitchSettingsFragment extends PreferenceFragmentCompat implements final Context context = requireContext(); final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); mSensorPrivacyPref = findPreference(KEY_SENSOR_PRIVACY); mFpMomentsPref = findPreference(KEY_FAIRPHONE_MOMENTS); mDoNotDisturbPref = findPreference(KEY_DO_NOT_DISTURB); mFlightModePref = findPreference(KEY_FLIGHT_MODE); mTorchLightPref = findPreference(KEY_TORCH_LIGHT); mDarkLightModePref = findPreference(KEY_DARK_LIGHT_MODE); mBatterySaverPref = findPreference(KEY_BATTERY_SAVER); final String persisted = prefs.getString(PREF_SWITCH_FUNCTION, KEY_SENSOR_PRIVACY); mCurrentSelection = isSelectableKey(persisted) ? persisted : KEY_SENSOR_PRIVACY; setUpRadioBehavior(mSensorPrivacyPref, KEY_SENSOR_PRIVACY); setUpRadioBehavior(mFpMomentsPref, KEY_FAIRPHONE_MOMENTS); setUpRadioBehavior(mDoNotDisturbPref, KEY_DO_NOT_DISTURB); setUpRadioBehavior(mFlightModePref, KEY_FLIGHT_MODE); setUpRadioBehavior(mTorchLightPref, KEY_TORCH_LIGHT); setUpRadioBehavior(mDarkLightModePref, KEY_DARK_LIGHT_MODE); setUpRadioBehavior(mBatterySaverPref, KEY_BATTERY_SAVER); mSensorPrivacyPref = findPreference(SliderUtils.KEY_SENSOR_PRIVACY); mFpMomentsPref = findPreference(SliderUtils.KEY_FAIRPHONE_MOMENTS); mDoNotDisturbPref = findPreference(SliderUtils.KEY_DO_NOT_DISTURB); mFlightModePref = findPreference(SliderUtils.KEY_FLIGHT_MODE); mTorchLightPref = findPreference(SliderUtils.KEY_TORCH_LIGHT); mDarkLightModePref = findPreference(SliderUtils.KEY_DARK_LIGHT_MODE); mBatterySaverPref = findPreference(SliderUtils.KEY_BATTERY_SAVER); final String persisted = prefs.getString(SliderUtils.PREF_SWITCH_FUNCTION, SliderUtils.KEY_SENSOR_PRIVACY); mCurrentSelection = SliderUtils.isSelectableKey(persisted) ? persisted : SliderUtils.KEY_SENSOR_PRIVACY; setUpRadioBehavior(mSensorPrivacyPref, SliderUtils.KEY_SENSOR_PRIVACY); setUpRadioBehavior(mFpMomentsPref, SliderUtils.KEY_FAIRPHONE_MOMENTS); setUpRadioBehavior(mDoNotDisturbPref, SliderUtils.KEY_DO_NOT_DISTURB); setUpRadioBehavior(mFlightModePref, SliderUtils.KEY_FLIGHT_MODE); setUpRadioBehavior(mTorchLightPref, SliderUtils.KEY_TORCH_LIGHT); setUpRadioBehavior(mDarkLightModePref, SliderUtils.KEY_DARK_LIGHT_MODE); setUpRadioBehavior(mBatterySaverPref, SliderUtils.KEY_BATTERY_SAVER); updateCheckboxStates(); } Loading Loading @@ -106,11 +97,12 @@ public class SwitchSettingsFragment extends PreferenceFragmentCompat implements PreferenceManager.getDefaultSharedPreferences(requireContext()) .edit() .putString(PREF_SWITCH_FUNCTION, key) .putString(SliderUtils.PREF_SWITCH_FUNCTION, key) .apply(); updateCheckboxStates(); handleSwitchFunctionChange(key); SliderUtils.notifyChanged(requireContext()); } else if (key.equals(mCurrentSelection)) { // Prevent unchecking the currently selected option if (preference instanceof CheckBoxPreference) { Loading @@ -123,13 +115,13 @@ public class SwitchSettingsFragment extends PreferenceFragmentCompat implements } private void updateCheckboxStates() { setCheckedIfNotNull(mSensorPrivacyPref, KEY_SENSOR_PRIVACY.equals(mCurrentSelection)); setCheckedIfNotNull(mFpMomentsPref, KEY_FAIRPHONE_MOMENTS.equals(mCurrentSelection)); setCheckedIfNotNull(mDoNotDisturbPref, KEY_DO_NOT_DISTURB.equals(mCurrentSelection)); setCheckedIfNotNull(mFlightModePref, KEY_FLIGHT_MODE.equals(mCurrentSelection)); setCheckedIfNotNull(mTorchLightPref, KEY_TORCH_LIGHT.equals(mCurrentSelection)); setCheckedIfNotNull(mDarkLightModePref, KEY_DARK_LIGHT_MODE.equals(mCurrentSelection)); setCheckedIfNotNull(mBatterySaverPref, KEY_BATTERY_SAVER.equals(mCurrentSelection)); setCheckedIfNotNull(mSensorPrivacyPref, SliderUtils.KEY_SENSOR_PRIVACY.equals(mCurrentSelection)); setCheckedIfNotNull(mFpMomentsPref, SliderUtils.KEY_FAIRPHONE_MOMENTS.equals(mCurrentSelection)); setCheckedIfNotNull(mDoNotDisturbPref, SliderUtils.KEY_DO_NOT_DISTURB.equals(mCurrentSelection)); setCheckedIfNotNull(mFlightModePref, SliderUtils.KEY_FLIGHT_MODE.equals(mCurrentSelection)); setCheckedIfNotNull(mTorchLightPref, SliderUtils.KEY_TORCH_LIGHT.equals(mCurrentSelection)); setCheckedIfNotNull(mDarkLightModePref, SliderUtils.KEY_DARK_LIGHT_MODE.equals(mCurrentSelection)); setCheckedIfNotNull(mBatterySaverPref, SliderUtils.KEY_BATTERY_SAVER.equals(mCurrentSelection)); } private void setCheckedIfNotNull(CheckBoxPreference pref, boolean checked) { Loading @@ -142,26 +134,4 @@ public class SwitchSettingsFragment extends PreferenceFragmentCompat implements // Future: trigger actual system actions here } private String getFunctionDisplayName(String function) { switch (function) { case KEY_SENSOR_PRIVACY: return "Sensor Privacy"; case KEY_FAIRPHONE_MOMENTS: return "Fairphone Moments"; case KEY_DO_NOT_DISTURB: return "Do Not Disturb"; case KEY_FLIGHT_MODE: return "Flight Mode"; case KEY_TORCH_LIGHT: return "Torch Light"; case KEY_DARK_LIGHT_MODE: return "Dark & Light Mode"; case KEY_BATTERY_SAVER: return "Battery Saver"; default: return "Unknown"; } } private boolean isSelectableKey(@NonNull String key) { return KEY_SENSOR_PRIVACY.equals(key) || KEY_FAIRPHONE_MOMENTS.equals(key) || KEY_DO_NOT_DISTURB.equals(key) || KEY_FLIGHT_MODE.equals(key) || KEY_TORCH_LIGHT.equals(key) || KEY_DARK_LIGHT_MODE.equals(key) || KEY_BATTERY_SAVER.equals(key); } } Loading
parts/src/org/lineageos/settings/switchcust/SliderSwitchOptionReceiver.java +3 −1 Original line number Diff line number Diff line Loading @@ -21,7 +21,9 @@ public class SliderSwitchOptionReceiver extends RemotePreferenceUpdater { @Override public String getSummary(Context context, String key) { if (SliderUtils.HARDWARE_SWITCH_CATEGORY_KEY.equals(key)) { return SliderUtils.getCurrentOption(context); String currentOption = SliderUtils.getCurrentOption(context); Integer currentOptionResourceIndex = SliderUtils.getFeatureTitleRes(currentOption); return context.getString(currentOptionResourceIndex); } return null; } Loading
parts/src/org/lineageos/settings/switchcust/SliderUtils.java +31 −9 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ package org.lineageos.settings.switchcust; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import androidx.annotation.NonNull; import androidx.preference.PreferenceManager; import org.lineageos.settings.R; Loading @@ -25,17 +26,39 @@ public class SliderUtils { public static int getFeatureLabelRes(String key) { switch (key) { case SliderUtils.KEY_SENSOR_PRIVACY: return R.string.sensor_access; case SliderUtils.KEY_FAIRPHONE_MOMENTS: return R.string.fairphone_moments; case SliderUtils.KEY_DO_NOT_DISTURB: return R.string.do_not_disturb; case SliderUtils.KEY_FLIGHT_MODE: return R.string.flight_mode; case SliderUtils.KEY_TORCH_LIGHT: return R.string.torch; case SliderUtils.KEY_DARK_LIGHT_MODE: return R.string.dark_mode; case SliderUtils.KEY_BATTERY_SAVER: return R.string.battery_saver; case KEY_SENSOR_PRIVACY: return R.string.sensor_access; case KEY_FAIRPHONE_MOMENTS: return R.string.fairphone_moments; case KEY_DO_NOT_DISTURB: return R.string.do_not_disturb; case KEY_FLIGHT_MODE: return R.string.flight_mode; case KEY_TORCH_LIGHT: return R.string.torch; case KEY_DARK_LIGHT_MODE: return R.string.dark_mode; case KEY_BATTERY_SAVER: return R.string.battery_saver; default: return android.R.string.untitled; } } public static int getFeatureTitleRes(String key) { switch (key) { case KEY_SENSOR_PRIVACY: return R.string.sensor_privacy_title; case KEY_FAIRPHONE_MOMENTS: return R.string.fairphone_moments_title; case KEY_DO_NOT_DISTURB: return R.string.do_not_disturb_title; case KEY_FLIGHT_MODE: return R.string.flight_mode_title; case KEY_TORCH_LIGHT: return R.string.torch_light_title; case KEY_DARK_LIGHT_MODE: return R.string.dark_light_mode_title; case KEY_BATTERY_SAVER: return R.string.battery_saver_title; default: return android.R.string.untitled; } } public static boolean isSelectableKey(@NonNull String key) { return KEY_SENSOR_PRIVACY.equals(key) || KEY_FAIRPHONE_MOMENTS.equals(key) || KEY_DO_NOT_DISTURB.equals(key) || KEY_FLIGHT_MODE.equals(key) || KEY_TORCH_LIGHT.equals(key) || KEY_DARK_LIGHT_MODE.equals(key) || KEY_BATTERY_SAVER.equals(key); } public static boolean getCurrentFallbackState(Intent intent) { boolean fallbackState = false; if (intent != null && intent.hasExtra(SliderSwitchStateReceiver.EXTRA_SLIDER_STATE)) { Loading @@ -47,8 +70,7 @@ public class SliderUtils { public static String getCurrentOption(Context context) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); String currentOption = prefs.getString(PREF_SWITCH_FUNCTION, KEY_SENSOR_PRIVACY); return context.getString(SliderUtils.getFeatureLabelRes(currentOption)); return prefs.getString(PREF_SWITCH_FUNCTION, KEY_SENSOR_PRIVACY); } public static void notifyChanged(Context context) { Loading
parts/src/org/lineageos/settings/switchcust/SwitchSettingsFragment.java +29 −59 Original line number Diff line number Diff line Loading @@ -13,22 +13,13 @@ import android.content.Context; import android.content.SharedPreferences; import org.lineageos.settings.R; import org.lineageos.settings.switchcust.SliderUtils; public class SwitchSettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener { private static final String TAG = "SwitchFragment"; private static final String KEY_SENSOR_PRIVACY = "sensor_privacy"; private static final String KEY_FAIRPHONE_MOMENTS = "fairphone_moments"; private static final String KEY_DO_NOT_DISTURB = "do_not_disturb"; private static final String KEY_FLIGHT_MODE = "flight_mode"; private static final String KEY_TORCH_LIGHT = "torch_light"; private static final String KEY_DARK_LIGHT_MODE = "dark_light_mode"; private static final String KEY_BATTERY_SAVER = "battery_saver"; private static final String PREF_SWITCH_FUNCTION = "switch_function"; private CheckBoxPreference mSensorPrivacyPref; private CheckBoxPreference mFpMomentsPref; private CheckBoxPreference mDoNotDisturbPref; Loading @@ -37,7 +28,7 @@ public class SwitchSettingsFragment extends PreferenceFragmentCompat implements private CheckBoxPreference mDarkLightModePref; private CheckBoxPreference mBatterySaverPref; private String mCurrentSelection = KEY_SENSOR_PRIVACY; private String mCurrentSelection = SliderUtils.KEY_SENSOR_PRIVACY; @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { Loading @@ -46,24 +37,24 @@ public class SwitchSettingsFragment extends PreferenceFragmentCompat implements final Context context = requireContext(); final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); mSensorPrivacyPref = findPreference(KEY_SENSOR_PRIVACY); mFpMomentsPref = findPreference(KEY_FAIRPHONE_MOMENTS); mDoNotDisturbPref = findPreference(KEY_DO_NOT_DISTURB); mFlightModePref = findPreference(KEY_FLIGHT_MODE); mTorchLightPref = findPreference(KEY_TORCH_LIGHT); mDarkLightModePref = findPreference(KEY_DARK_LIGHT_MODE); mBatterySaverPref = findPreference(KEY_BATTERY_SAVER); final String persisted = prefs.getString(PREF_SWITCH_FUNCTION, KEY_SENSOR_PRIVACY); mCurrentSelection = isSelectableKey(persisted) ? persisted : KEY_SENSOR_PRIVACY; setUpRadioBehavior(mSensorPrivacyPref, KEY_SENSOR_PRIVACY); setUpRadioBehavior(mFpMomentsPref, KEY_FAIRPHONE_MOMENTS); setUpRadioBehavior(mDoNotDisturbPref, KEY_DO_NOT_DISTURB); setUpRadioBehavior(mFlightModePref, KEY_FLIGHT_MODE); setUpRadioBehavior(mTorchLightPref, KEY_TORCH_LIGHT); setUpRadioBehavior(mDarkLightModePref, KEY_DARK_LIGHT_MODE); setUpRadioBehavior(mBatterySaverPref, KEY_BATTERY_SAVER); mSensorPrivacyPref = findPreference(SliderUtils.KEY_SENSOR_PRIVACY); mFpMomentsPref = findPreference(SliderUtils.KEY_FAIRPHONE_MOMENTS); mDoNotDisturbPref = findPreference(SliderUtils.KEY_DO_NOT_DISTURB); mFlightModePref = findPreference(SliderUtils.KEY_FLIGHT_MODE); mTorchLightPref = findPreference(SliderUtils.KEY_TORCH_LIGHT); mDarkLightModePref = findPreference(SliderUtils.KEY_DARK_LIGHT_MODE); mBatterySaverPref = findPreference(SliderUtils.KEY_BATTERY_SAVER); final String persisted = prefs.getString(SliderUtils.PREF_SWITCH_FUNCTION, SliderUtils.KEY_SENSOR_PRIVACY); mCurrentSelection = SliderUtils.isSelectableKey(persisted) ? persisted : SliderUtils.KEY_SENSOR_PRIVACY; setUpRadioBehavior(mSensorPrivacyPref, SliderUtils.KEY_SENSOR_PRIVACY); setUpRadioBehavior(mFpMomentsPref, SliderUtils.KEY_FAIRPHONE_MOMENTS); setUpRadioBehavior(mDoNotDisturbPref, SliderUtils.KEY_DO_NOT_DISTURB); setUpRadioBehavior(mFlightModePref, SliderUtils.KEY_FLIGHT_MODE); setUpRadioBehavior(mTorchLightPref, SliderUtils.KEY_TORCH_LIGHT); setUpRadioBehavior(mDarkLightModePref, SliderUtils.KEY_DARK_LIGHT_MODE); setUpRadioBehavior(mBatterySaverPref, SliderUtils.KEY_BATTERY_SAVER); updateCheckboxStates(); } Loading Loading @@ -106,11 +97,12 @@ public class SwitchSettingsFragment extends PreferenceFragmentCompat implements PreferenceManager.getDefaultSharedPreferences(requireContext()) .edit() .putString(PREF_SWITCH_FUNCTION, key) .putString(SliderUtils.PREF_SWITCH_FUNCTION, key) .apply(); updateCheckboxStates(); handleSwitchFunctionChange(key); SliderUtils.notifyChanged(requireContext()); } else if (key.equals(mCurrentSelection)) { // Prevent unchecking the currently selected option if (preference instanceof CheckBoxPreference) { Loading @@ -123,13 +115,13 @@ public class SwitchSettingsFragment extends PreferenceFragmentCompat implements } private void updateCheckboxStates() { setCheckedIfNotNull(mSensorPrivacyPref, KEY_SENSOR_PRIVACY.equals(mCurrentSelection)); setCheckedIfNotNull(mFpMomentsPref, KEY_FAIRPHONE_MOMENTS.equals(mCurrentSelection)); setCheckedIfNotNull(mDoNotDisturbPref, KEY_DO_NOT_DISTURB.equals(mCurrentSelection)); setCheckedIfNotNull(mFlightModePref, KEY_FLIGHT_MODE.equals(mCurrentSelection)); setCheckedIfNotNull(mTorchLightPref, KEY_TORCH_LIGHT.equals(mCurrentSelection)); setCheckedIfNotNull(mDarkLightModePref, KEY_DARK_LIGHT_MODE.equals(mCurrentSelection)); setCheckedIfNotNull(mBatterySaverPref, KEY_BATTERY_SAVER.equals(mCurrentSelection)); setCheckedIfNotNull(mSensorPrivacyPref, SliderUtils.KEY_SENSOR_PRIVACY.equals(mCurrentSelection)); setCheckedIfNotNull(mFpMomentsPref, SliderUtils.KEY_FAIRPHONE_MOMENTS.equals(mCurrentSelection)); setCheckedIfNotNull(mDoNotDisturbPref, SliderUtils.KEY_DO_NOT_DISTURB.equals(mCurrentSelection)); setCheckedIfNotNull(mFlightModePref, SliderUtils.KEY_FLIGHT_MODE.equals(mCurrentSelection)); setCheckedIfNotNull(mTorchLightPref, SliderUtils.KEY_TORCH_LIGHT.equals(mCurrentSelection)); setCheckedIfNotNull(mDarkLightModePref, SliderUtils.KEY_DARK_LIGHT_MODE.equals(mCurrentSelection)); setCheckedIfNotNull(mBatterySaverPref, SliderUtils.KEY_BATTERY_SAVER.equals(mCurrentSelection)); } private void setCheckedIfNotNull(CheckBoxPreference pref, boolean checked) { Loading @@ -142,26 +134,4 @@ public class SwitchSettingsFragment extends PreferenceFragmentCompat implements // Future: trigger actual system actions here } private String getFunctionDisplayName(String function) { switch (function) { case KEY_SENSOR_PRIVACY: return "Sensor Privacy"; case KEY_FAIRPHONE_MOMENTS: return "Fairphone Moments"; case KEY_DO_NOT_DISTURB: return "Do Not Disturb"; case KEY_FLIGHT_MODE: return "Flight Mode"; case KEY_TORCH_LIGHT: return "Torch Light"; case KEY_DARK_LIGHT_MODE: return "Dark & Light Mode"; case KEY_BATTERY_SAVER: return "Battery Saver"; default: return "Unknown"; } } private boolean isSelectableKey(@NonNull String key) { return KEY_SENSOR_PRIVACY.equals(key) || KEY_FAIRPHONE_MOMENTS.equals(key) || KEY_DO_NOT_DISTURB.equals(key) || KEY_FLIGHT_MODE.equals(key) || KEY_TORCH_LIGHT.equals(key) || KEY_DARK_LIGHT_MODE.equals(key) || KEY_BATTERY_SAVER.equals(key); } }