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.v7.preference; 186904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 196904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.content.Context; 206904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.content.res.TypedArray; 21c39d9c75590eca86a5e7e32a8824ba04a0d42e9bAlan Viveretteimport android.support.annotation.RestrictTo; 2284765eaea7da18d0576db557959129e9d0db8e8cTony Mantlerimport android.support.v4.content.res.TypedArrayUtils; 236904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.support.v7.widget.SwitchCompat; 246904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.util.AttributeSet; 256904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.view.View; 26c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslavimport android.view.accessibility.AccessibilityManager; 276904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.widget.Checkable; 286904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.widget.CompoundButton; 296904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 30c39d9c75590eca86a5e7e32a8824ba04a0d42e9bAlan Viveretteimport static android.support.annotation.RestrictTo.Scope.GROUP_ID; 31c39d9c75590eca86a5e7e32a8824ba04a0d42e9bAlan Viverette 326904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler/** 336904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* A {@link Preference} that provides a two-state toggleable option. 346904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* <p> 356904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* This preference will store a boolean into the SharedPreferences. 366904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* 37929f27aab7ac7231f3734c988d5ee7201627d535Alan Viverette* @attr name android:summaryOff 38929f27aab7ac7231f3734c988d5ee7201627d535Alan Viverette* @attr name android:summaryOn 39929f27aab7ac7231f3734c988d5ee7201627d535Alan Viverette* @attr name android:switchTextOff 40929f27aab7ac7231f3734c988d5ee7201627d535Alan Viverette* @attr name android:switchTextOn 41929f27aab7ac7231f3734c988d5ee7201627d535Alan Viverette* @attr name android:disableDependentsState 426904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler*/ 436904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerpublic class SwitchPreferenceCompat extends TwoStatePreference { 446904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler private final Listener mListener = new Listener(); 456904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 466904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler // Switch text for on and off states 476904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler private CharSequence mSwitchOn; 486904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler private CharSequence mSwitchOff; 496904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 506904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler private class Listener implements CompoundButton.OnCheckedChangeListener { 516904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler @Override 526904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 536904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler if (!callChangeListener(isChecked)) { 546904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler // Listener didn't like it, change it back. 556904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler // CompoundButton will make sure we don't recurse. 566904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler buttonView.setChecked(!isChecked); 576904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler return; 586904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 596904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 606904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler SwitchPreferenceCompat.this.setChecked(isChecked); 616904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 626904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 636904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 646904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 656904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Construct a new SwitchPreference with the given style options. 666904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 676904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param context The Context that will style this preference 686904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param attrs Style attributes that differ from the default 696904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param defStyleAttr An attribute in the current theme that contains a 706904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * reference to a style resource that supplies default values for 716904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * the view. Can be 0 to not look for defaults. 726904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param defStyleRes A resource identifier of a style resource that 736904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * supplies default values for the view, used only if 746904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * defStyleAttr is 0 or can not be found in the theme. Can be 0 756904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * to not look for defaults. 766904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 776904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public SwitchPreferenceCompat(Context context, AttributeSet attrs, int defStyleAttr, 786904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler int defStyleRes) { 796904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler super(context, attrs, defStyleAttr, defStyleRes); 806904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 816904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler TypedArray a = context.obtainStyledAttributes(attrs, 826904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler R.styleable.SwitchPreferenceCompat, defStyleAttr, defStyleRes); 8384765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 8484765eaea7da18d0576db557959129e9d0db8e8cTony Mantler setSummaryOn(TypedArrayUtils.getString(a, R.styleable.SwitchPreferenceCompat_summaryOn, 8584765eaea7da18d0576db557959129e9d0db8e8cTony Mantler R.styleable.SwitchPreferenceCompat_android_summaryOn)); 8684765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 8784765eaea7da18d0576db557959129e9d0db8e8cTony Mantler setSummaryOff(TypedArrayUtils.getString(a, R.styleable.SwitchPreferenceCompat_summaryOff, 8884765eaea7da18d0576db557959129e9d0db8e8cTony Mantler R.styleable.SwitchPreferenceCompat_android_summaryOff)); 8984765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 9084765eaea7da18d0576db557959129e9d0db8e8cTony Mantler setSwitchTextOn(TypedArrayUtils.getString(a, 9184765eaea7da18d0576db557959129e9d0db8e8cTony Mantler R.styleable.SwitchPreferenceCompat_switchTextOn, 9284765eaea7da18d0576db557959129e9d0db8e8cTony Mantler R.styleable.SwitchPreferenceCompat_android_switchTextOn)); 9384765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 9484765eaea7da18d0576db557959129e9d0db8e8cTony Mantler setSwitchTextOff(TypedArrayUtils.getString(a, 9584765eaea7da18d0576db557959129e9d0db8e8cTony Mantler R.styleable.SwitchPreferenceCompat_switchTextOff, 9684765eaea7da18d0576db557959129e9d0db8e8cTony Mantler R.styleable.SwitchPreferenceCompat_android_switchTextOff)); 9784765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 9884765eaea7da18d0576db557959129e9d0db8e8cTony Mantler setDisableDependentsState(TypedArrayUtils.getBoolean(a, 9984765eaea7da18d0576db557959129e9d0db8e8cTony Mantler R.styleable.SwitchPreferenceCompat_disableDependentsState, 10084765eaea7da18d0576db557959129e9d0db8e8cTony Mantler R.styleable.SwitchPreferenceCompat_android_disableDependentsState, false)); 10184765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 1026904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler a.recycle(); 1036904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1046904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1056904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1066904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Construct a new SwitchPreference with the given style options. 1076904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 1086904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param context The Context that will style this preference 1096904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param attrs Style attributes that differ from the default 1106904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param defStyleAttr An attribute in the current theme that contains a 1116904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * reference to a style resource that supplies default values for 1126904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * the view. Can be 0 to not look for defaults. 1136904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1146904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public SwitchPreferenceCompat(Context context, AttributeSet attrs, int defStyleAttr) { 1156904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler this(context, attrs, defStyleAttr, 0); 1166904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1176904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1186904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1196904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Construct a new SwitchPreference with the given style options. 1206904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 1216904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param context The Context that will style this preference 1226904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param attrs Style attributes that differ from the default 1236904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1246904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public SwitchPreferenceCompat(Context context, AttributeSet attrs) { 1256904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler this(context, attrs, R.attr.switchPreferenceCompatStyle); 1266904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1276904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1286904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1296904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Construct a new SwitchPreference with default style options. 1306904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 1316904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param context The Context that will style this preference 1326904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1336904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public SwitchPreferenceCompat(Context context) { 1346904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler this(context, null); 1356904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1366904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1376904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler @Override 138671d9d6db5c64e6c8392e56fb84a181ca0550469Tony Mantler public void onBindViewHolder(PreferenceViewHolder holder) { 1396904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler super.onBindViewHolder(holder); 140c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav View switchView = holder.findViewById(R.id.switchWidget); 141c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav syncSwitchView(switchView); 1426904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler syncSummaryView(holder); 1436904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1446904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1456904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1466904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Set the text displayed on the switch widget in the on state. 1476904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * This should be a very short string; one word if possible. 1486904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 1496904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param onText Text to display in the on state 1506904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1516904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public void setSwitchTextOn(CharSequence onText) { 1526904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler mSwitchOn = onText; 1536904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler notifyChanged(); 1546904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1556904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1566904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1576904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Set the text displayed on the switch widget in the off state. 1586904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * This should be a very short string; one word if possible. 1596904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 1606904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param offText Text to display in the off state 1616904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1626904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public void setSwitchTextOff(CharSequence offText) { 1636904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler mSwitchOff = offText; 1646904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler notifyChanged(); 1656904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1666904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1676904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1686904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Set the text displayed on the switch widget in the on state. 1696904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * This should be a very short string; one word if possible. 1706904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 1716904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param resId The text as a string resource ID 1726904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1736904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public void setSwitchTextOn(int resId) { 1746904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler setSwitchTextOn(getContext().getString(resId)); 1756904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1766904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1776904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1786904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Set the text displayed on the switch widget in the off state. 1796904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * This should be a very short string; one word if possible. 1806904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 1816904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param resId The text as a string resource ID 1826904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1836904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public void setSwitchTextOff(int resId) { 1846904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler setSwitchTextOff(getContext().getString(resId)); 1856904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1866904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1876904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1886904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @return The text that will be displayed on the switch widget in the on state 1896904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1906904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public CharSequence getSwitchTextOn() { 1916904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler return mSwitchOn; 1926904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1936904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1946904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1956904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @return The text that will be displayed on the switch widget in the off state 1966904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1976904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public CharSequence getSwitchTextOff() { 1986904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler return mSwitchOff; 1996904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 200c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav 201c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav /** 202c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav * @hide 203c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav */ 204c39d9c75590eca86a5e7e32a8824ba04a0d42e9bAlan Viverette @RestrictTo(GROUP_ID) 205c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav @Override 206c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav protected void performClick(View view) { 207c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav super.performClick(view); 208c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav syncViewIfAccessibilityEnabled(view); 209c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav } 210c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav 211c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav private void syncViewIfAccessibilityEnabled(View view) { 212c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav AccessibilityManager accessibilityManager = (AccessibilityManager) 213c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav getContext().getSystemService(Context.ACCESSIBILITY_SERVICE); 214c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav if (!accessibilityManager.isEnabled()) { 215c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav return; 216c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav } 217c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav 218c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav View switchView = view.findViewById(R.id.switchWidget); 219c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav syncSwitchView(switchView); 220c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav 221c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav View summaryView = view.findViewById(android.R.id.summary); 222c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav syncSummaryView(summaryView); 223c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav } 224c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav 225c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav private void syncSwitchView(View view) { 226c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav if (view instanceof SwitchCompat) { 227c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav final SwitchCompat switchView = (SwitchCompat) view; 228c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav switchView.setOnCheckedChangeListener(null); 229c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav } 230c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav if (view instanceof Checkable) { 231c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav ((Checkable) view).setChecked(mChecked); 232c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav } 233c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav if (view instanceof SwitchCompat) { 234c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav final SwitchCompat switchView = (SwitchCompat) view; 235c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav switchView.setTextOn(mSwitchOn); 236c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav switchView.setTextOff(mSwitchOff); 237c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav switchView.setOnCheckedChangeListener(mListener); 238c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav } 239c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav } 2406904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler} 241