package be.digitalia.fosdem.utils;
import android.annotation.TargetApi;
import android.os.Build;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.TwoStatePreference;
/**
* Utility to retrieve the checked value from a two-state preference in a backwards-compatible way.
*/
public class TwoStatePreferenceCompat {
private static final TwoStatePreferenceCompatImpl IMPL =
Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH
? new TwoStatePreferenceCompatICS() : new TwoStatePreferenceCompatBase();
public static boolean isChecked(Preference preference) {
return IMPL.isChecked(preference);
}
interface TwoStatePreferenceCompatImpl {
boolean isChecked(Preference preference);
}
static class TwoStatePreferenceCompatBase implements TwoStatePreferenceCompatImpl {
@Override
public boolean isChecked(Preference preference) {
return (preference instanceof CheckBoxPreference) && ((CheckBoxPreference) preference).isChecked();
}
}
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
static class TwoStatePreferenceCompatICS implements TwoStatePreferenceCompatImpl {
@Override
public boolean isChecked(Preference preference) {
return (preference instanceof TwoStatePreference) && ((TwoStatePreference) preference).isChecked();
}
}
}