119 lines
4.7 KiB
Java
119 lines
4.7 KiB
Java
package androidx.preference;
|
|
|
|
import android.content.Context;
|
|
import android.content.res.TypedArray;
|
|
import android.util.AttributeSet;
|
|
import android.view.View;
|
|
import android.view.accessibility.AccessibilityManager;
|
|
import android.widget.Checkable;
|
|
import android.widget.CompoundButton;
|
|
import androidx.annotation.RestrictTo;
|
|
import androidx.appcompat.widget.SwitchCompat;
|
|
import androidx.core.content.res.TypedArrayUtils;
|
|
public class SwitchPreferenceCompat extends TwoStatePreference {
|
|
private final Listener mListener;
|
|
private CharSequence mSwitchOff;
|
|
private CharSequence mSwitchOn;
|
|
|
|
public class Listener implements CompoundButton.OnCheckedChangeListener {
|
|
public Listener() {
|
|
}
|
|
|
|
@Override // android.widget.CompoundButton.OnCheckedChangeListener
|
|
public void onCheckedChanged(CompoundButton compoundButton, boolean z2) {
|
|
if (!SwitchPreferenceCompat.this.callChangeListener(Boolean.valueOf(z2))) {
|
|
compoundButton.setChecked(!z2);
|
|
} else {
|
|
SwitchPreferenceCompat.this.setChecked(z2);
|
|
}
|
|
}
|
|
}
|
|
|
|
public SwitchPreferenceCompat(Context context) {
|
|
this(context, null);
|
|
}
|
|
|
|
public SwitchPreferenceCompat(Context context, AttributeSet attributeSet) {
|
|
this(context, attributeSet, R.attr.switchPreferenceCompatStyle);
|
|
}
|
|
|
|
public SwitchPreferenceCompat(Context context, AttributeSet attributeSet, int i) {
|
|
this(context, attributeSet, i, 0);
|
|
}
|
|
|
|
public SwitchPreferenceCompat(Context context, AttributeSet attributeSet, int i, int i2) {
|
|
super(context, attributeSet, i, i2);
|
|
this.mListener = new Listener();
|
|
TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attributeSet, R.styleable.SwitchPreferenceCompat, i, i2);
|
|
setSummaryOn(TypedArrayUtils.getString(obtainStyledAttributes, R.styleable.SwitchPreferenceCompat_summaryOn, R.styleable.SwitchPreferenceCompat_android_summaryOn));
|
|
setSummaryOff(TypedArrayUtils.getString(obtainStyledAttributes, R.styleable.SwitchPreferenceCompat_summaryOff, R.styleable.SwitchPreferenceCompat_android_summaryOff));
|
|
setSwitchTextOn(TypedArrayUtils.getString(obtainStyledAttributes, R.styleable.SwitchPreferenceCompat_switchTextOn, R.styleable.SwitchPreferenceCompat_android_switchTextOn));
|
|
setSwitchTextOff(TypedArrayUtils.getString(obtainStyledAttributes, R.styleable.SwitchPreferenceCompat_switchTextOff, R.styleable.SwitchPreferenceCompat_android_switchTextOff));
|
|
setDisableDependentsState(TypedArrayUtils.getBoolean(obtainStyledAttributes, R.styleable.SwitchPreferenceCompat_disableDependentsState, R.styleable.SwitchPreferenceCompat_android_disableDependentsState, false));
|
|
obtainStyledAttributes.recycle();
|
|
}
|
|
|
|
private void syncSwitchView(View view) {
|
|
boolean z2 = view instanceof SwitchCompat;
|
|
if (z2) {
|
|
((SwitchCompat) view).setOnCheckedChangeListener(null);
|
|
}
|
|
if (view instanceof Checkable) {
|
|
((Checkable) view).setChecked(this.mChecked);
|
|
}
|
|
if (z2) {
|
|
SwitchCompat switchCompat = (SwitchCompat) view;
|
|
switchCompat.setTextOn(this.mSwitchOn);
|
|
switchCompat.setTextOff(this.mSwitchOff);
|
|
switchCompat.setOnCheckedChangeListener(this.mListener);
|
|
}
|
|
}
|
|
|
|
private void syncViewIfAccessibilityEnabled(View view) {
|
|
if (((AccessibilityManager) getContext().getSystemService("accessibility")).isEnabled()) {
|
|
syncSwitchView(view.findViewById(R.id.switchWidget));
|
|
syncSummaryView(view.findViewById(16908304));
|
|
}
|
|
}
|
|
|
|
public CharSequence getSwitchTextOff() {
|
|
return this.mSwitchOff;
|
|
}
|
|
|
|
public CharSequence getSwitchTextOn() {
|
|
return this.mSwitchOn;
|
|
}
|
|
|
|
@Override // androidx.preference.Preference
|
|
public void onBindViewHolder(PreferenceViewHolder preferenceViewHolder) {
|
|
super.onBindViewHolder(preferenceViewHolder);
|
|
syncSwitchView(preferenceViewHolder.findViewById(R.id.switchWidget));
|
|
syncSummaryView(preferenceViewHolder);
|
|
}
|
|
|
|
@Override // androidx.preference.Preference
|
|
@RestrictTo({RestrictTo.Scope.LIBRARY})
|
|
public void performClick(View view) {
|
|
super.performClick(view);
|
|
syncViewIfAccessibilityEnabled(view);
|
|
}
|
|
|
|
public void setSwitchTextOff(int i) {
|
|
setSwitchTextOff(getContext().getString(i));
|
|
}
|
|
|
|
public void setSwitchTextOff(CharSequence charSequence) {
|
|
this.mSwitchOff = charSequence;
|
|
notifyChanged();
|
|
}
|
|
|
|
public void setSwitchTextOn(int i) {
|
|
setSwitchTextOn(getContext().getString(i));
|
|
}
|
|
|
|
public void setSwitchTextOn(CharSequence charSequence) {
|
|
this.mSwitchOn = charSequence;
|
|
notifyChanged();
|
|
}
|
|
}
|