• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2021 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.network;
18 
19 import android.content.Context;
20 
21 import androidx.lifecycle.Lifecycle;
22 import androidx.preference.Preference;
23 import androidx.preference.PreferenceScreen;
24 
25 import com.android.settings.Utils;
26 import com.android.settings.core.TogglePreferenceController;
27 import com.android.settings.wifi.WifiPickerTrackerHelper;
28 import com.android.wifitrackerlib.WifiPickerTracker;
29 
30 /**
31  * Preference controller for "Carrier Wi-Fi network"
32  */
33 public class CarrierWifiTogglePreferenceController extends TogglePreferenceController implements
34         WifiPickerTracker.WifiPickerTrackerCallback {
35 
36     private static final String TAG = "CarrierWifiTogglePreferenceController";
37     protected static final String CARRIER_WIFI_TOGGLE_PREF_KEY = "carrier_wifi_toggle";
38     protected static final String CARRIER_WIFI_NETWORK_PREF_KEY = "carrier_wifi_network";
39 
40     protected final Context mContext;
41     protected boolean mIsProviderModelEnabled;
42     protected int mSubId;
43     protected WifiPickerTrackerHelper mWifiPickerTrackerHelper;
44     protected boolean mIsCarrierProvisionWifiEnabled;
45     protected Preference mCarrierNetworkPreference;
46 
CarrierWifiTogglePreferenceController(Context context, String preferenceKey)47     public CarrierWifiTogglePreferenceController(Context context,
48             String preferenceKey) {
49         super(context, preferenceKey);
50         mContext = context;
51         mIsProviderModelEnabled = Utils.isProviderModelEnabled(context);
52     }
53 
54     /** Initialize related properties */
init(Lifecycle lifecycle, int subId)55     public void init(Lifecycle lifecycle, int subId) {
56         mSubId = subId;
57         mWifiPickerTrackerHelper = new WifiPickerTrackerHelper(lifecycle, mContext, this);
58         mIsCarrierProvisionWifiEnabled =
59                 mWifiPickerTrackerHelper.isCarrierNetworkProvisionEnabled(mSubId);
60     }
61 
62     @Override
getAvailabilityStatus()63     public int getAvailabilityStatus() {
64         if (!mIsProviderModelEnabled) {
65             return CONDITIONALLY_UNAVAILABLE;
66         }
67         return mIsCarrierProvisionWifiEnabled ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
68     }
69 
70     @Override
isChecked()71     public boolean isChecked() {
72         return mWifiPickerTrackerHelper.isCarrierNetworkEnabled(mSubId);
73     }
74 
75     @Override
setChecked(boolean isChecked)76     public boolean setChecked(boolean isChecked) {
77         if (mWifiPickerTrackerHelper == null) {
78             return false;
79         }
80         mWifiPickerTrackerHelper.setCarrierNetworkEnabled(isChecked);
81         return true;
82     }
83 
84     @Override
displayPreference(PreferenceScreen screen)85     public void displayPreference(PreferenceScreen screen) {
86         super.displayPreference(screen);
87         mCarrierNetworkPreference = screen.findPreference(CARRIER_WIFI_NETWORK_PREF_KEY);
88         updateCarrierNetworkPreference();
89     }
90 
91     @Override
onWifiStateChanged()92     public void onWifiStateChanged() {
93         updateCarrierNetworkPreference();
94     }
95 
96     @Override
onWifiEntriesChanged()97     public void onWifiEntriesChanged() {
98         updateCarrierNetworkPreference();
99     }
100 
101     @Override
onNumSavedNetworksChanged()102     public void onNumSavedNetworksChanged() {
103         // Do nothing
104     }
105 
106     @Override
onNumSavedSubscriptionsChanged()107     public void onNumSavedSubscriptionsChanged() {
108         // Do nothing
109     }
110 
updateCarrierNetworkPreference()111     protected void updateCarrierNetworkPreference() {
112         if (mCarrierNetworkPreference == null) {
113             return;
114         }
115         if (getAvailabilityStatus() != AVAILABLE || !isCarrierNetworkActive()) {
116             mCarrierNetworkPreference.setVisible(false);
117             return;
118         }
119         mCarrierNetworkPreference.setVisible(true);
120         mCarrierNetworkPreference.setSummary(getCarrierNetworkSsid());
121     }
122 
isCarrierNetworkActive()123     protected boolean isCarrierNetworkActive() {
124         if (mWifiPickerTrackerHelper == null) {
125             return false;
126         }
127         return mWifiPickerTrackerHelper.isCarrierNetworkActive();
128     }
129 
getCarrierNetworkSsid()130     protected String getCarrierNetworkSsid() {
131         if (mWifiPickerTrackerHelper == null) {
132             return null;
133         }
134         return mWifiPickerTrackerHelper.getCarrierNetworkSsid();
135     }
136 }
137