SwitchPreference.java revision 8e10080c914d1ad0784394fa3026b85535535847
16904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler/* 26904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* Copyright (C) 2015 The Android Open Source Project 36904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* 46904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* Licensed under the Apache License, Version 2.0 (the "License"); 56904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* you may not use this file except in compliance with the License. 66904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* You may obtain a copy of the License at 76904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* 86904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* http://www.apache.org/licenses/LICENSE-2.0 96904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* 106904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* Unless required by applicable law or agreed to in writing, software 116904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* distributed under the License is distributed on an "AS IS" BASIS, 126904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* See the License for the specific language governing permissions and 146904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* limitations under the License 156904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler*/ 166904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 176904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerpackage android.support.v14.preference; 186904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 198e10080c914d1ad0784394fa3026b85535535847Aurimas Liutikasimport static android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP; 208e10080c914d1ad0784394fa3026b85535535847Aurimas Liutikas 216904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.content.Context; 226904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.content.res.TypedArray; 23c39d9c75590eca86a5e7e32a8824ba04a0d42e9bAlan Viveretteimport android.support.annotation.RestrictTo; 2484765eaea7da18d0576db557959129e9d0db8e8cTony Mantlerimport android.support.v4.content.res.TypedArrayUtils; 253fadd62b614e4a69aefe920aac640bdb629e502eJason Monkimport android.support.v7.preference.AndroidResources; 266904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.support.v7.preference.PreferenceViewHolder; 276904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.support.v7.preference.TwoStatePreference; 286904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.util.AttributeSet; 296904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.view.View; 30c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslavimport android.view.accessibility.AccessibilityManager; 316904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.widget.Checkable; 326904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.widget.CompoundButton; 336904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.widget.Switch; 346904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 356904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler/** 366904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * A {@link android.support.v7.preference.Preference} that provides a two-state toggleable option. 376904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * <p> 386904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * This preference will store a boolean into the SharedPreferences. 396904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 40929f27aab7ac7231f3734c988d5ee7201627d535Alan Viverette * @attr name android:summaryOff 41929f27aab7ac7231f3734c988d5ee7201627d535Alan Viverette * @attr name android:summaryOn 42929f27aab7ac7231f3734c988d5ee7201627d535Alan Viverette * @attr name android:switchTextOff 43929f27aab7ac7231f3734c988d5ee7201627d535Alan Viverette * @attr name android:switchTextOn 44929f27aab7ac7231f3734c988d5ee7201627d535Alan Viverette * @attr name android:disableDependentsState 456904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 466904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerpublic class SwitchPreference extends TwoStatePreference { 476904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler private final Listener mListener = new Listener(); 486904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 496904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler // Switch text for on and off states 506904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler private CharSequence mSwitchOn; 516904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler private CharSequence mSwitchOff; 526904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 536904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler private class Listener implements CompoundButton.OnCheckedChangeListener { 546904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler @Override 556904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 566904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler if (!callChangeListener(isChecked)) { 576904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler // Listener didn't like it, change it back. 586904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler // CompoundButton will make sure we don't recurse. 596904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler buttonView.setChecked(!isChecked); 606904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler return; 616904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 626904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 636904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler SwitchPreference.this.setChecked(isChecked); 646904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 656904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 666904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 676904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 686904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Construct a new SwitchPreference with the given style options. 696904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 706904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param context The Context that will style this preference 716904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param attrs Style attributes that differ from the default 726904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param defStyleAttr An attribute in the current theme that contains a 736904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * reference to a style resource that supplies default values for 746904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * the view. Can be 0 to not look for defaults. 756904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param defStyleRes A resource identifier of a style resource that 766904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * supplies default values for the view, used only if 776904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * defStyleAttr is 0 or can not be found in the theme. Can be 0 786904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * to not look for defaults. 796904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 806904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public SwitchPreference(Context context, AttributeSet attrs, int defStyleAttr, 816904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler int defStyleRes) { 826904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler super(context, attrs, defStyleAttr, defStyleRes); 836904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 846904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler TypedArray a = context.obtainStyledAttributes(attrs, 856904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler R.styleable.SwitchPreference, defStyleAttr, defStyleRes); 8684765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 8784765eaea7da18d0576db557959129e9d0db8e8cTony Mantler setSummaryOn(TypedArrayUtils.getString(a, R.styleable.SwitchPreference_summaryOn, 8884765eaea7da18d0576db557959129e9d0db8e8cTony Mantler R.styleable.SwitchPreference_android_summaryOn)); 8984765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 9084765eaea7da18d0576db557959129e9d0db8e8cTony Mantler setSummaryOff(TypedArrayUtils.getString(a, R.styleable.SwitchPreference_summaryOff, 9184765eaea7da18d0576db557959129e9d0db8e8cTony Mantler R.styleable.SwitchPreference_android_summaryOff)); 9284765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 9384765eaea7da18d0576db557959129e9d0db8e8cTony Mantler setSwitchTextOn(TypedArrayUtils.getString(a, 9484765eaea7da18d0576db557959129e9d0db8e8cTony Mantler R.styleable.SwitchPreference_switchTextOn, 9584765eaea7da18d0576db557959129e9d0db8e8cTony Mantler R.styleable.SwitchPreference_android_switchTextOn)); 9684765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 9784765eaea7da18d0576db557959129e9d0db8e8cTony Mantler setSwitchTextOff(TypedArrayUtils.getString(a, 9884765eaea7da18d0576db557959129e9d0db8e8cTony Mantler R.styleable.SwitchPreference_switchTextOff, 9984765eaea7da18d0576db557959129e9d0db8e8cTony Mantler R.styleable.SwitchPreference_android_switchTextOff)); 10084765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 10184765eaea7da18d0576db557959129e9d0db8e8cTony Mantler setDisableDependentsState(TypedArrayUtils.getBoolean(a, 10284765eaea7da18d0576db557959129e9d0db8e8cTony Mantler R.styleable.SwitchPreference_disableDependentsState, 10384765eaea7da18d0576db557959129e9d0db8e8cTony Mantler R.styleable.SwitchPreference_android_disableDependentsState, false)); 10484765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 1056904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler a.recycle(); 1066904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1076904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1086904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1096904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Construct a new SwitchPreference with the given style options. 1106904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 1116904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param context The Context that will style this preference 1126904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param attrs Style attributes that differ from the default 1136904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param defStyleAttr An attribute in the current theme that contains a 1146904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * reference to a style resource that supplies default values for 1156904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * the view. Can be 0 to not look for defaults. 1166904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1176904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public SwitchPreference(Context context, AttributeSet attrs, int defStyleAttr) { 1186904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler this(context, attrs, defStyleAttr, 0); 1196904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1206904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1216904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1226904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Construct a new SwitchPreference with the given style options. 1236904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 1246904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param context The Context that will style this preference 1256904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param attrs Style attributes that differ from the default 1266904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1276904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public SwitchPreference(Context context, AttributeSet attrs) { 1286759b1021d8198ad1d239bb30e5a102b99624bceAdam Lesinski this(context, attrs, TypedArrayUtils.getAttr(context, 1296759b1021d8198ad1d239bb30e5a102b99624bceAdam Lesinski android.support.v7.preference.R.attr.switchPreferenceStyle, 1303fadd62b614e4a69aefe920aac640bdb629e502eJason Monk android.R.attr.switchPreferenceStyle)); 1316904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1326904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1336904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1346904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Construct a new SwitchPreference with default style options. 1356904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 1366904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param context The Context that will style this preference 1376904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1386904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public SwitchPreference(Context context) { 1396904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler this(context, null); 1406904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1416904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1426904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler @Override 143671d9d6db5c64e6c8392e56fb84a181ca0550469Tony Mantler public void onBindViewHolder(PreferenceViewHolder holder) { 1446904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler super.onBindViewHolder(holder); 1453fadd62b614e4a69aefe920aac640bdb629e502eJason Monk View switchView = holder.findViewById(AndroidResources.ANDROID_R_SWITCH_WIDGET); 146c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav syncSwitchView(switchView); 1476904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler syncSummaryView(holder); 1486904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1496904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1506904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1516904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Set the text displayed on the switch widget in the on state. 1526904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * This should be a very short string; one word if possible. 1536904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 1546904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param onText Text to display in the on state 1556904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1566904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public void setSwitchTextOn(CharSequence onText) { 1576904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler mSwitchOn = onText; 1586904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler notifyChanged(); 1596904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1606904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1616904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1626904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Set the text displayed on the switch widget in the off state. 1636904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * This should be a very short string; one word if possible. 1646904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 1656904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param offText Text to display in the off state 1666904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1676904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public void setSwitchTextOff(CharSequence offText) { 1686904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler mSwitchOff = offText; 1696904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler notifyChanged(); 1706904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1716904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1726904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1736904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Set the text displayed on the switch widget in the on state. 1746904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * This should be a very short string; one word if possible. 1756904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 1766904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param resId The text as a string resource ID 1776904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1786904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public void setSwitchTextOn(int resId) { 1796904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler setSwitchTextOn(getContext().getString(resId)); 1806904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1816904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1826904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1836904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Set the text displayed on the switch widget in the off state. 1846904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * This should be a very short string; one word if possible. 1856904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 1866904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param resId The text as a string resource ID 1876904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1886904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public void setSwitchTextOff(int resId) { 1896904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler setSwitchTextOff(getContext().getString(resId)); 1906904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1916904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1926904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1936904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @return The text that will be displayed on the switch widget in the on state 1946904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1956904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public CharSequence getSwitchTextOn() { 1966904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler return mSwitchOn; 1976904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1986904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1996904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 2006904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @return The text that will be displayed on the switch widget in the off state 2016904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 2026904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public CharSequence getSwitchTextOff() { 2036904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler return mSwitchOff; 2046904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 205c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav 206c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav /** 207c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav * @hide 208c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav */ 2098e10080c914d1ad0784394fa3026b85535535847Aurimas Liutikas @RestrictTo(LIBRARY_GROUP) 210c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav @Override 211c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav protected void performClick(View view) { 212c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav super.performClick(view); 213c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav syncViewIfAccessibilityEnabled(view); 214c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav } 215c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav 216c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav 217c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav private void syncViewIfAccessibilityEnabled(View view) { 218c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav AccessibilityManager accessibilityManager = (AccessibilityManager) 219c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav getContext().getSystemService(Context.ACCESSIBILITY_SERVICE); 220c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav if (!accessibilityManager.isEnabled()) { 221c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav return; 222c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav } 223c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav 22490d56ef3b34db86c9b775e910db38b6b81a170cdTony Mantler View switchView = view.findViewById(AndroidResources.ANDROID_R_SWITCH_WIDGET); 225c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav syncSwitchView(switchView); 226c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav 227c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav View summaryView = view.findViewById(android.R.id.summary); 228c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav syncSummaryView(summaryView); 229c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav } 230c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav 231c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav private void syncSwitchView(View view) { 232c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav if (view instanceof Switch) { 233c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav final Switch switchView = (Switch) view; 234c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav switchView.setOnCheckedChangeListener(null); 235c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav } 236c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav if (view instanceof Checkable) { 237c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav ((Checkable) view).setChecked(mChecked); 238c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav } 239c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav if (view instanceof Switch) { 240c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav final Switch switchView = (Switch) view; 241c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav switchView.setTextOn(mSwitchOn); 242c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav switchView.setTextOff(mSwitchOff); 243c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav switchView.setOnCheckedChangeListener(mListener); 244c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav } 245c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav } 2466904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler} 247