1 /* 2 * Copyright (C) 2017 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 package com.android.settings.wifi; 17 18 import android.content.Context; 19 20 import androidx.preference.PreferenceScreen; 21 22 import com.android.settings.R; 23 import com.android.settings.core.PreferenceControllerMixin; 24 import com.android.settings.widget.MasterSwitchController; 25 import com.android.settings.widget.MasterSwitchPreference; 26 import com.android.settings.widget.SummaryUpdater; 27 import com.android.settingslib.core.AbstractPreferenceController; 28 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; 29 import com.android.settingslib.core.lifecycle.LifecycleObserver; 30 import com.android.settingslib.core.lifecycle.events.OnPause; 31 import com.android.settingslib.core.lifecycle.events.OnResume; 32 import com.android.settingslib.core.lifecycle.events.OnStart; 33 import com.android.settingslib.core.lifecycle.events.OnStop; 34 35 // TODO(b/151133650): Replace AbstractPreferenceController with BasePreferenceController. 36 public class WifiMasterSwitchPreferenceController extends AbstractPreferenceController 37 implements PreferenceControllerMixin, SummaryUpdater.OnSummaryChangeListener, 38 LifecycleObserver, OnResume, OnPause, OnStart, OnStop { 39 40 public static final String KEY_TOGGLE_WIFI = "main_toggle_wifi"; 41 42 private MasterSwitchPreference mWifiPreference; 43 private WifiEnabler mWifiEnabler; 44 private final WifiSummaryUpdater mSummaryHelper; 45 private final MetricsFeatureProvider mMetricsFeatureProvider; 46 WifiMasterSwitchPreferenceController(Context context, MetricsFeatureProvider metricsFeatureProvider)47 public WifiMasterSwitchPreferenceController(Context context, 48 MetricsFeatureProvider metricsFeatureProvider) { 49 super(context); 50 mMetricsFeatureProvider = metricsFeatureProvider; 51 mSummaryHelper = new WifiSummaryUpdater(mContext, this); 52 } 53 54 @Override displayPreference(PreferenceScreen screen)55 public void displayPreference(PreferenceScreen screen) { 56 super.displayPreference(screen); 57 mWifiPreference = screen.findPreference(KEY_TOGGLE_WIFI); 58 } 59 60 @Override isAvailable()61 public boolean isAvailable() { 62 return mContext.getResources().getBoolean(R.bool.config_show_wifi_settings); 63 } 64 65 @Override getPreferenceKey()66 public String getPreferenceKey() { 67 return KEY_TOGGLE_WIFI; 68 } 69 70 @Override onResume()71 public void onResume() { 72 mSummaryHelper.register(true); 73 if (mWifiEnabler != null) { 74 mWifiEnabler.resume(mContext); 75 } 76 } 77 78 @Override onPause()79 public void onPause() { 80 if (mWifiEnabler != null) { 81 mWifiEnabler.pause(); 82 } 83 mSummaryHelper.register(false); 84 } 85 86 @Override onStart()87 public void onStart() { 88 mWifiEnabler = new WifiEnabler(mContext, new MasterSwitchController(mWifiPreference), 89 mMetricsFeatureProvider); 90 } 91 92 @Override onStop()93 public void onStop() { 94 if (mWifiEnabler != null) { 95 mWifiEnabler.teardownSwitchController(); 96 } 97 } 98 99 @Override onSummaryChanged(String summary)100 public void onSummaryChanged(String summary) { 101 if (mWifiPreference != null) { 102 mWifiPreference.setSummary(summary); 103 } 104 } 105 106 } 107