Loading res/xml/mobile_network_settings.xml +1 −1 Original line number Diff line number Diff line Loading @@ -196,7 +196,7 @@ <PreferenceCategory android:key="network_operators_category_key" android:title="@string/network_operator_category" settings:controller="com.android.settings.widget.PreferenceCategoryController"> settings:controller="com.android.settings.network.telephony.NetworkPreferenceCategoryController"> <SwitchPreference android:key="auto_select_key" Loading src/com/android/settings/network/PreferredNetworkModeContentObserver.java 0 → 100644 +66 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.network; import android.content.Context; import android.database.ContentObserver; import android.net.Uri; import android.os.Handler; import android.provider.Settings; import androidx.annotation.VisibleForTesting; /** * {@link ContentObserver} to listen to Preferred Network Mode change */ public class PreferredNetworkModeContentObserver extends ContentObserver { @VisibleForTesting OnPreferredNetworkModeChangedListener mListener; public PreferredNetworkModeContentObserver(Handler handler) { super(handler); } public void setPreferredNetworkModeChangedListener(OnPreferredNetworkModeChangedListener lsn) { mListener = lsn; } @Override public void onChange(boolean selfChange) { super.onChange(selfChange); if (mListener != null) { mListener.onPreferredNetworkModeChanged(); } } public void register(Context context, int subId) { final Uri uri = Settings.Global.getUriFor( Settings.Global.PREFERRED_NETWORK_MODE + subId); context.getContentResolver().registerContentObserver(uri, false, this); } public void unregister(Context context) { context.getContentResolver().unregisterContentObserver(this); } /** * Listener for update of Preferred Network Mode change */ public interface OnPreferredNetworkModeChangedListener { void onPreferredNetworkModeChanged(); } } src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java +19 −15 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import android.content.Context; import android.database.ContentObserver; import android.os.Handler; import android.os.Looper; import android.os.PersistableBundle; Loading @@ -38,6 +37,7 @@ import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.network.PreferredNetworkModeContentObserver; import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants; import java.util.ArrayList; Loading @@ -52,23 +52,29 @@ public class EnabledNetworkModePreferenceController extends ListPreference.OnPreferenceChangeListener, LifecycleObserver { private static final String LOG_TAG = "EnabledNetworkMode"; private ContentObserver mPreferredNetworkModeObserver; private PreferredNetworkModeContentObserver mPreferredNetworkModeObserver; private Preference mPreference; private PreferenceScreen mPreferenceScreen; private TelephonyManager mTelephonyManager; private CarrierConfigManager mCarrierConfigManager; private PreferenceEntriesBuilder mBuilder; public EnabledNetworkModePreferenceController(Context context, String key) { super(context, key); mPreferredNetworkModeObserver = new ContentObserver(new Handler(Looper.getMainLooper())) { @Override public void onChange(boolean selfChange) { mPreferredNetworkModeObserver = new PreferredNetworkModeContentObserver( new Handler(Looper.getMainLooper())); mPreferredNetworkModeObserver.setPreferredNetworkModeChangedListener( () -> updatePreference()); } private void updatePreference() { if (mPreferenceScreen != null) { displayPreference(mPreferenceScreen); } if (mPreference != null) { updateState(mPreference); } } }; } @Override public int getAvailabilityStatus(int subId) { Loading @@ -94,20 +100,18 @@ public class EnabledNetworkModePreferenceController extends @OnLifecycleEvent(ON_START) public void onStart() { mContext.getContentResolver().registerContentObserver( Settings.Global.getUriFor(Settings.Global.PREFERRED_NETWORK_MODE + mSubId), true, mPreferredNetworkModeObserver); mPreferredNetworkModeObserver.register(mContext, mSubId); } @OnLifecycleEvent(ON_STOP) public void onStop() { mContext.getContentResolver().unregisterContentObserver(mPreferredNetworkModeObserver); mPreferredNetworkModeObserver.unregister(mContext); } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreferenceScreen = screen; mPreference = screen.findPreference(getPreferenceKey()); } Loading src/com/android/settings/network/telephony/MobileNetworkSettings.java +4 −6 Original line number Diff line number Diff line Loading @@ -44,7 +44,6 @@ import com.android.settings.network.telephony.cdma.CdmaSystemSelectPreferenceCon import com.android.settings.network.telephony.gsm.AutoSelectPreferenceController; import com.android.settings.network.telephony.gsm.OpenNetworkSelectPagePreferenceController; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.widget.PreferenceCategoryController; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.search.SearchIndexable; Loading Loading @@ -155,14 +154,13 @@ public class MobileNetworkSettings extends RestrictedDashboardFragment { use(WifiCallingPreferenceController.class).init(mSubId); final OpenNetworkSelectPagePreferenceController openNetworkSelectPagePreferenceController = use(OpenNetworkSelectPagePreferenceController.class).init(mSubId); use(OpenNetworkSelectPagePreferenceController.class).init(getLifecycle(), mSubId); final AutoSelectPreferenceController autoSelectPreferenceController = use(AutoSelectPreferenceController.class) .init(mSubId) .init(getLifecycle(), mSubId) .addListener(openNetworkSelectPagePreferenceController); use(PreferenceCategoryController.class).setChildren( Arrays.asList(autoSelectPreferenceController)); use(NetworkPreferenceCategoryController.class).init(getLifecycle(), mSubId) .setChildren(Arrays.asList(autoSelectPreferenceController)); mCdmaSystemSelectPreferenceController = use(CdmaSystemSelectPreferenceController.class); mCdmaSystemSelectPreferenceController.init(getPreferenceManager(), mSubId); mCdmaSubscriptionPreferenceController = use(CdmaSubscriptionPreferenceController.class); Loading src/com/android/settings/network/telephony/NetworkPreferenceCategoryController.java 0 → 100644 +80 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.network.telephony; import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import android.content.Context; import android.os.Handler; import android.os.Looper; import android.telephony.SubscriptionManager; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.OnLifecycleEvent; import androidx.preference.PreferenceScreen; import com.android.settings.network.PreferredNetworkModeContentObserver; import com.android.settings.widget.PreferenceCategoryController; /** * Preference controller for "Network" category */ public class NetworkPreferenceCategoryController extends PreferenceCategoryController implements LifecycleObserver { private PreferenceScreen mPreferenceScreen; private PreferredNetworkModeContentObserver mPreferredNetworkModeObserver; protected int mSubId; public NetworkPreferenceCategoryController(Context context, String key) { super(context, key); mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; mPreferredNetworkModeObserver = new PreferredNetworkModeContentObserver( new Handler(Looper.getMainLooper())); mPreferredNetworkModeObserver.setPreferredNetworkModeChangedListener( () -> updatePreference()); } private void updatePreference() { displayPreference(mPreferenceScreen); } @OnLifecycleEvent(ON_START) public void onStart() { mPreferredNetworkModeObserver.register(mContext, mSubId); } @OnLifecycleEvent(ON_STOP) public void onStop() { mPreferredNetworkModeObserver.unregister(mContext); } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreferenceScreen = screen; } public NetworkPreferenceCategoryController init(Lifecycle lifecycle, int subId) { mSubId = subId; lifecycle.addObserver(this); return this; } } Loading
res/xml/mobile_network_settings.xml +1 −1 Original line number Diff line number Diff line Loading @@ -196,7 +196,7 @@ <PreferenceCategory android:key="network_operators_category_key" android:title="@string/network_operator_category" settings:controller="com.android.settings.widget.PreferenceCategoryController"> settings:controller="com.android.settings.network.telephony.NetworkPreferenceCategoryController"> <SwitchPreference android:key="auto_select_key" Loading
src/com/android/settings/network/PreferredNetworkModeContentObserver.java 0 → 100644 +66 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.network; import android.content.Context; import android.database.ContentObserver; import android.net.Uri; import android.os.Handler; import android.provider.Settings; import androidx.annotation.VisibleForTesting; /** * {@link ContentObserver} to listen to Preferred Network Mode change */ public class PreferredNetworkModeContentObserver extends ContentObserver { @VisibleForTesting OnPreferredNetworkModeChangedListener mListener; public PreferredNetworkModeContentObserver(Handler handler) { super(handler); } public void setPreferredNetworkModeChangedListener(OnPreferredNetworkModeChangedListener lsn) { mListener = lsn; } @Override public void onChange(boolean selfChange) { super.onChange(selfChange); if (mListener != null) { mListener.onPreferredNetworkModeChanged(); } } public void register(Context context, int subId) { final Uri uri = Settings.Global.getUriFor( Settings.Global.PREFERRED_NETWORK_MODE + subId); context.getContentResolver().registerContentObserver(uri, false, this); } public void unregister(Context context) { context.getContentResolver().unregisterContentObserver(this); } /** * Listener for update of Preferred Network Mode change */ public interface OnPreferredNetworkModeChangedListener { void onPreferredNetworkModeChanged(); } }
src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java +19 −15 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import android.content.Context; import android.database.ContentObserver; import android.os.Handler; import android.os.Looper; import android.os.PersistableBundle; Loading @@ -38,6 +37,7 @@ import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.network.PreferredNetworkModeContentObserver; import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants; import java.util.ArrayList; Loading @@ -52,23 +52,29 @@ public class EnabledNetworkModePreferenceController extends ListPreference.OnPreferenceChangeListener, LifecycleObserver { private static final String LOG_TAG = "EnabledNetworkMode"; private ContentObserver mPreferredNetworkModeObserver; private PreferredNetworkModeContentObserver mPreferredNetworkModeObserver; private Preference mPreference; private PreferenceScreen mPreferenceScreen; private TelephonyManager mTelephonyManager; private CarrierConfigManager mCarrierConfigManager; private PreferenceEntriesBuilder mBuilder; public EnabledNetworkModePreferenceController(Context context, String key) { super(context, key); mPreferredNetworkModeObserver = new ContentObserver(new Handler(Looper.getMainLooper())) { @Override public void onChange(boolean selfChange) { mPreferredNetworkModeObserver = new PreferredNetworkModeContentObserver( new Handler(Looper.getMainLooper())); mPreferredNetworkModeObserver.setPreferredNetworkModeChangedListener( () -> updatePreference()); } private void updatePreference() { if (mPreferenceScreen != null) { displayPreference(mPreferenceScreen); } if (mPreference != null) { updateState(mPreference); } } }; } @Override public int getAvailabilityStatus(int subId) { Loading @@ -94,20 +100,18 @@ public class EnabledNetworkModePreferenceController extends @OnLifecycleEvent(ON_START) public void onStart() { mContext.getContentResolver().registerContentObserver( Settings.Global.getUriFor(Settings.Global.PREFERRED_NETWORK_MODE + mSubId), true, mPreferredNetworkModeObserver); mPreferredNetworkModeObserver.register(mContext, mSubId); } @OnLifecycleEvent(ON_STOP) public void onStop() { mContext.getContentResolver().unregisterContentObserver(mPreferredNetworkModeObserver); mPreferredNetworkModeObserver.unregister(mContext); } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreferenceScreen = screen; mPreference = screen.findPreference(getPreferenceKey()); } Loading
src/com/android/settings/network/telephony/MobileNetworkSettings.java +4 −6 Original line number Diff line number Diff line Loading @@ -44,7 +44,6 @@ import com.android.settings.network.telephony.cdma.CdmaSystemSelectPreferenceCon import com.android.settings.network.telephony.gsm.AutoSelectPreferenceController; import com.android.settings.network.telephony.gsm.OpenNetworkSelectPagePreferenceController; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.widget.PreferenceCategoryController; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.search.SearchIndexable; Loading Loading @@ -155,14 +154,13 @@ public class MobileNetworkSettings extends RestrictedDashboardFragment { use(WifiCallingPreferenceController.class).init(mSubId); final OpenNetworkSelectPagePreferenceController openNetworkSelectPagePreferenceController = use(OpenNetworkSelectPagePreferenceController.class).init(mSubId); use(OpenNetworkSelectPagePreferenceController.class).init(getLifecycle(), mSubId); final AutoSelectPreferenceController autoSelectPreferenceController = use(AutoSelectPreferenceController.class) .init(mSubId) .init(getLifecycle(), mSubId) .addListener(openNetworkSelectPagePreferenceController); use(PreferenceCategoryController.class).setChildren( Arrays.asList(autoSelectPreferenceController)); use(NetworkPreferenceCategoryController.class).init(getLifecycle(), mSubId) .setChildren(Arrays.asList(autoSelectPreferenceController)); mCdmaSystemSelectPreferenceController = use(CdmaSystemSelectPreferenceController.class); mCdmaSystemSelectPreferenceController.init(getPreferenceManager(), mSubId); mCdmaSubscriptionPreferenceController = use(CdmaSubscriptionPreferenceController.class); Loading
src/com/android/settings/network/telephony/NetworkPreferenceCategoryController.java 0 → 100644 +80 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.network.telephony; import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import android.content.Context; import android.os.Handler; import android.os.Looper; import android.telephony.SubscriptionManager; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.OnLifecycleEvent; import androidx.preference.PreferenceScreen; import com.android.settings.network.PreferredNetworkModeContentObserver; import com.android.settings.widget.PreferenceCategoryController; /** * Preference controller for "Network" category */ public class NetworkPreferenceCategoryController extends PreferenceCategoryController implements LifecycleObserver { private PreferenceScreen mPreferenceScreen; private PreferredNetworkModeContentObserver mPreferredNetworkModeObserver; protected int mSubId; public NetworkPreferenceCategoryController(Context context, String key) { super(context, key); mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; mPreferredNetworkModeObserver = new PreferredNetworkModeContentObserver( new Handler(Looper.getMainLooper())); mPreferredNetworkModeObserver.setPreferredNetworkModeChangedListener( () -> updatePreference()); } private void updatePreference() { displayPreference(mPreferenceScreen); } @OnLifecycleEvent(ON_START) public void onStart() { mPreferredNetworkModeObserver.register(mContext, mSubId); } @OnLifecycleEvent(ON_STOP) public void onStop() { mPreferredNetworkModeObserver.unregister(mContext); } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreferenceScreen = screen; } public NetworkPreferenceCategoryController init(Lifecycle lifecycle, int subId) { mSubId = subId; lifecycle.addObserver(this); return this; } }