• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2020 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.settings.widget;
18 
19 import androidx.preference.Preference;
20 
21 import com.android.settings.dashboard.DashboardFragment;
22 import com.android.settings.overlay.FeatureFactory;
23 import com.android.settingslib.PrimarySwitchPreference;
24 import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
25 import com.android.settingslib.RestrictedSwitchPreference;
26 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
27 
28 /**
29  * The switch controller that is used to update the switch widget in the PrimarySwitchPreference
30  * and RestrictedSwitchPreference layouts.
31  */
32 public class GenericSwitchController extends SwitchWidgetController implements
33         Preference.OnPreferenceChangeListener {
34 
35     private Preference mPreference;
36     private MetricsFeatureProvider mMetricsFeatureProvider;
37 
GenericSwitchController(PrimarySwitchPreference preference)38     public GenericSwitchController(PrimarySwitchPreference preference) {
39         setPreference(preference);
40     }
41 
GenericSwitchController(RestrictedSwitchPreference preference)42     public GenericSwitchController(RestrictedSwitchPreference preference) {
43         setPreference(preference);
44     }
45 
setPreference(Preference preference)46     private void setPreference(Preference preference) {
47         mPreference = preference;
48         mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
49     }
50 
51     @Override
setTitle(String title)52     public void setTitle(String title) {
53     }
54 
55     @Override
startListening()56     public void startListening() {
57         mPreference.setOnPreferenceChangeListener(this);
58     }
59 
60     @Override
stopListening()61     public void stopListening() {
62         mPreference.setOnPreferenceChangeListener(null);
63     }
64 
65     @Override
setChecked(boolean checked)66     public void setChecked(boolean checked) {
67         if (mPreference instanceof PrimarySwitchPreference) {
68             ((PrimarySwitchPreference) mPreference).setChecked(checked);
69         } else if (mPreference instanceof RestrictedSwitchPreference) {
70             ((RestrictedSwitchPreference) mPreference).setChecked(checked);
71         }
72     }
73 
74     @Override
isChecked()75     public boolean isChecked() {
76         if (mPreference instanceof PrimarySwitchPreference) {
77             return ((PrimarySwitchPreference) mPreference).isChecked();
78         } else if (mPreference instanceof RestrictedSwitchPreference) {
79             return ((RestrictedSwitchPreference) mPreference).isChecked();
80         }
81         return false;
82     }
83 
84     @Override
setEnabled(boolean enabled)85     public void setEnabled(boolean enabled) {
86         if (mPreference instanceof PrimarySwitchPreference) {
87             ((PrimarySwitchPreference) mPreference).setSwitchEnabled(enabled);
88         } else if (mPreference instanceof RestrictedSwitchPreference) {
89             ((RestrictedSwitchPreference) mPreference).setEnabled(enabled);
90         }
91     }
92 
93     @Override
onPreferenceChange(Preference preference, Object newValue)94     public boolean onPreferenceChange(Preference preference, Object newValue) {
95         if (mListener != null) {
96             final boolean result = mListener.onSwitchToggled((Boolean) newValue);
97             if (result) {
98                 mMetricsFeatureProvider.logClickedPreference(preference,
99                         preference.getExtras().getInt(DashboardFragment.CATEGORY));
100             }
101             return result;
102         }
103         return false;
104     }
105 
106     @Override
setDisabledByAdmin(EnforcedAdmin admin)107     public void setDisabledByAdmin(EnforcedAdmin admin) {
108         if (mPreference instanceof PrimarySwitchPreference) {
109             ((PrimarySwitchPreference) mPreference).setDisabledByAdmin(admin);
110         } else if (mPreference instanceof RestrictedSwitchPreference) {
111             ((RestrictedSwitchPreference) mPreference).setDisabledByAdmin(admin);
112         }
113     }
114 }
115