Loading res/layout/view_airplane_mode_networks_button.xml 0 → 100644 +46 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- ~ Copyright (C) 2021 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. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/airplane_mode_text" android:text="@string/condition_airplane_title" android:textAppearance="?android:attr/textAppearanceSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginStart="@dimen/content_margin_left" android:layout_marginEnd="@dimen/content_margin_left" android:layout_marginTop="@dimen/view_airplane_mode_networks_button_margin_vertical" android:layout_marginBottom="@dimen/view_airplane_mode_networks_button_margin_vertical"/> <Button android:id="@+id/view_airplane_mode_networks_button" android:text="@string/view_airplane_safe_networks" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginStart="@dimen/content_margin_left" android:layout_marginEnd="@dimen/content_margin_left" android:layout_marginBottom="@dimen/view_airplane_mode_networks_button_margin_vertical" style="@style/ActionPrimaryButton"/> </LinearLayout> No newline at end of file res/values/dimens.xml +3 −0 Original line number Diff line number Diff line Loading @@ -207,6 +207,9 @@ <dimen name="wifi_ap_band_checkbox_padding">16dp</dimen> <dimen name="wifi_detail_page_header_image_size">32dp</dimen> <!-- Internet Preferences --> <dimen name="view_airplane_mode_networks_button_margin_vertical">24dp</dimen> <!-- Color picker --> <dimen name="color_swatch_size">16dp</dimen> <dimen name="color_swatch_stroke_width">4dp</dimen> Loading res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -12532,6 +12532,8 @@ <string name="keywords_internet">network connection, internet, wireless, data, wifi, wi-fi, wi fi, cellular, mobile, cell carrier, 4g, 3g, 2g, lte</string> <!-- Label text to view airplane-safe networks. [CHAR LIMIT=40] --> <string name="view_airplane_safe_networks">View airplane mode networks</string> <!-- Text of message for viewing the networks that are available in airplane mode. [CHAR LIMIT=60] --> <string name="viewing_airplane_mode_networks">Viewing airplane mode networks</string> <!-- Label text to turn off airplane mode. [CHAR LIMIT=40] --> <string name="turn_off_airplane_mode">Turn off airplane mode</string> res/xml/network_provider_settings.xml +7 −2 Original line number Diff line number Diff line Loading @@ -20,8 +20,13 @@ android:title="@string/provider_internet_settings" settings:keywords="@string/keywords_wifi"> <com.android.settings.wifi.LinkablePreference android:key="wifi_status_message"/> <!-- View airplane mode networks button --> <com.android.settingslib.widget.LayoutPreference android:key="view_airplane_mode_netwokrs_button" android:title="@string/condition_airplane_title" android:selectable="false" android:layout="@layout/view_airplane_mode_networks_button" settings:allowDividerBelow="true"/> <PreferenceCategory android:key="connected_access_point" Loading src/com/android/settings/network/NetworkProviderSettings.java +14 −37 Original line number Diff line number Diff line Loading @@ -50,20 +50,17 @@ import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; import androidx.recyclerview.widget.RecyclerView; import com.android.settings.LinkifyUtils; import com.android.settings.R; import com.android.settings.RestrictedSettingsFragment; import com.android.settings.core.FeatureFlags; import com.android.settings.core.SubSettingLauncher; import com.android.settings.datausage.DataUsagePreference; import com.android.settings.datausage.DataUsageUtils; import com.android.settings.location.ScanningSettings; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.wifi.AddNetworkFragment; import com.android.settings.wifi.AddWifiNetworkPreference; import com.android.settings.wifi.ConfigureWifiEntryFragment; import com.android.settings.wifi.ConnectedWifiEntryPreference; import com.android.settings.wifi.LinkablePreference; import com.android.settings.wifi.WifiConfigUiBase2; import com.android.settings.wifi.WifiConnectListener; import com.android.settings.wifi.WifiDialog2; Loading Loading @@ -118,7 +115,6 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment private static final String PREF_KEY_ACCESS_POINTS = "access_points"; private static final String PREF_KEY_CONFIGURE_WIFI_SETTINGS = "configure_wifi_settings"; private static final String PREF_KEY_SAVED_NETWORKS = "saved_networks"; private static final String PREF_KEY_STATUS_MESSAGE = "wifi_status_message"; @VisibleForTesting static final String PREF_KEY_DATA_USAGE = "non_carrier_data_usage"; Loading Loading @@ -192,7 +188,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment Preference mSavedNetworksPreference; @VisibleForTesting DataUsagePreference mDataUsagePreference; private LinkablePreference mStatusMessagePreference; private ViewAirplaneModeNetworksLayoutPreferenceController mViewAirplaneModeNetworksButtonPreference; /** * Mobile networks list for provider model Loading Loading @@ -242,13 +239,13 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment mConfigureWifiSettingsPreference = findPreference(PREF_KEY_CONFIGURE_WIFI_SETTINGS); mSavedNetworksPreference = findPreference(PREF_KEY_SAVED_NETWORKS); mAddWifiNetworkPreference = new AddWifiNetworkPreference(getPrefContext()); mStatusMessagePreference = findPreference(PREF_KEY_STATUS_MESSAGE); mDataUsagePreference = findPreference(PREF_KEY_DATA_USAGE); mDataUsagePreference.setVisible(DataUsageUtils.hasWifiRadio(getContext())); mDataUsagePreference.setTemplate(NetworkTemplate.buildTemplateWifiWildcard(), 0 /*subId*/, null /*service*/); addNetworkMobileProviderController(); addViewAirplaneModeNetworksButtonController(); } private void addNetworkMobileProviderController() { Loading @@ -260,6 +257,15 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment mNetworkMobileProviderController.displayPreference(getPreferenceScreen()); } private void addViewAirplaneModeNetworksButtonController() { if (mViewAirplaneModeNetworksButtonPreference == null) { mViewAirplaneModeNetworksButtonPreference = new ViewAirplaneModeNetworksLayoutPreferenceController( getContext(), getSettingsLifecycle()); } mViewAirplaneModeNetworksButtonPreference.displayPreference(getPreferenceScreen()); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Loading Loading @@ -602,18 +608,17 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment case WifiManager.WIFI_STATE_ENABLING: removeConnectedWifiEntryPreference(); removeWifiEntryPreference(); addMessagePreference(R.string.wifi_starting); setProgressBarVisible(true); break; case WifiManager.WIFI_STATE_DISABLING: removeConnectedWifiEntryPreference(); removeWifiEntryPreference(); addMessagePreference(R.string.wifi_stopping); break; case WifiManager.WIFI_STATE_DISABLED: setOffMessage(); removeConnectedWifiEntryPreference(); removeWifiEntryPreference(); setAdditionalSettingsSummaries(); setProgressBarVisible(false); mClickedConnect = false; Loading Loading @@ -683,7 +688,6 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment } boolean hasAvailableWifiEntries = false; mStatusMessagePreference.setVisible(false); mWifiEntryPreferenceCategory.setVisible(true); final WifiEntry connectedEntry = mWifiPickerTracker.getConnectedWifiEntry(); Loading Loading @@ -861,33 +865,6 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment && !powerManager.isPowerSaveMode(); } private void setOffMessage() { final CharSequence title = getText(R.string.wifi_empty_list_wifi_off); // Don't use WifiManager.isScanAlwaysAvailable() to check the Wi-Fi scanning mode. Instead, // read the system settings directly. Because when the device is in Airplane mode, even if // Wi-Fi scanning mode is on, WifiManager.isScanAlwaysAvailable() still returns "off". // TODO(b/149421497): Fix this? final boolean wifiScanningMode = mWifiManager.isScanAlwaysAvailable(); final CharSequence description = wifiScanningMode ? getText(R.string.wifi_scan_notify_text) : getText(R.string.wifi_scan_notify_text_scanning_off); final LinkifyUtils.OnClickListener clickListener = () -> new SubSettingLauncher(getContext()) .setDestination(ScanningSettings.class.getName()) .setTitleRes(R.string.location_scanning_screen_title) .setSourceMetricsCategory(getMetricsCategory()) .launch(); mStatusMessagePreference.setText(title, description, clickListener); removeConnectedWifiEntryPreference(); removeWifiEntryPreference(); mStatusMessagePreference.setVisible(true); } private void addMessagePreference(int messageId) { mStatusMessagePreference.setTitle(messageId); mStatusMessagePreference.setVisible(true); } protected void setProgressBarVisible(boolean visible) { if (mProgressHeader != null) { mProgressHeader.setVisibility(visible ? View.VISIBLE : View.GONE); Loading Loading
res/layout/view_airplane_mode_networks_button.xml 0 → 100644 +46 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- ~ Copyright (C) 2021 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. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/airplane_mode_text" android:text="@string/condition_airplane_title" android:textAppearance="?android:attr/textAppearanceSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginStart="@dimen/content_margin_left" android:layout_marginEnd="@dimen/content_margin_left" android:layout_marginTop="@dimen/view_airplane_mode_networks_button_margin_vertical" android:layout_marginBottom="@dimen/view_airplane_mode_networks_button_margin_vertical"/> <Button android:id="@+id/view_airplane_mode_networks_button" android:text="@string/view_airplane_safe_networks" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginStart="@dimen/content_margin_left" android:layout_marginEnd="@dimen/content_margin_left" android:layout_marginBottom="@dimen/view_airplane_mode_networks_button_margin_vertical" style="@style/ActionPrimaryButton"/> </LinearLayout> No newline at end of file
res/values/dimens.xml +3 −0 Original line number Diff line number Diff line Loading @@ -207,6 +207,9 @@ <dimen name="wifi_ap_band_checkbox_padding">16dp</dimen> <dimen name="wifi_detail_page_header_image_size">32dp</dimen> <!-- Internet Preferences --> <dimen name="view_airplane_mode_networks_button_margin_vertical">24dp</dimen> <!-- Color picker --> <dimen name="color_swatch_size">16dp</dimen> <dimen name="color_swatch_stroke_width">4dp</dimen> Loading
res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -12532,6 +12532,8 @@ <string name="keywords_internet">network connection, internet, wireless, data, wifi, wi-fi, wi fi, cellular, mobile, cell carrier, 4g, 3g, 2g, lte</string> <!-- Label text to view airplane-safe networks. [CHAR LIMIT=40] --> <string name="view_airplane_safe_networks">View airplane mode networks</string> <!-- Text of message for viewing the networks that are available in airplane mode. [CHAR LIMIT=60] --> <string name="viewing_airplane_mode_networks">Viewing airplane mode networks</string> <!-- Label text to turn off airplane mode. [CHAR LIMIT=40] --> <string name="turn_off_airplane_mode">Turn off airplane mode</string>
res/xml/network_provider_settings.xml +7 −2 Original line number Diff line number Diff line Loading @@ -20,8 +20,13 @@ android:title="@string/provider_internet_settings" settings:keywords="@string/keywords_wifi"> <com.android.settings.wifi.LinkablePreference android:key="wifi_status_message"/> <!-- View airplane mode networks button --> <com.android.settingslib.widget.LayoutPreference android:key="view_airplane_mode_netwokrs_button" android:title="@string/condition_airplane_title" android:selectable="false" android:layout="@layout/view_airplane_mode_networks_button" settings:allowDividerBelow="true"/> <PreferenceCategory android:key="connected_access_point" Loading
src/com/android/settings/network/NetworkProviderSettings.java +14 −37 Original line number Diff line number Diff line Loading @@ -50,20 +50,17 @@ import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; import androidx.recyclerview.widget.RecyclerView; import com.android.settings.LinkifyUtils; import com.android.settings.R; import com.android.settings.RestrictedSettingsFragment; import com.android.settings.core.FeatureFlags; import com.android.settings.core.SubSettingLauncher; import com.android.settings.datausage.DataUsagePreference; import com.android.settings.datausage.DataUsageUtils; import com.android.settings.location.ScanningSettings; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.wifi.AddNetworkFragment; import com.android.settings.wifi.AddWifiNetworkPreference; import com.android.settings.wifi.ConfigureWifiEntryFragment; import com.android.settings.wifi.ConnectedWifiEntryPreference; import com.android.settings.wifi.LinkablePreference; import com.android.settings.wifi.WifiConfigUiBase2; import com.android.settings.wifi.WifiConnectListener; import com.android.settings.wifi.WifiDialog2; Loading Loading @@ -118,7 +115,6 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment private static final String PREF_KEY_ACCESS_POINTS = "access_points"; private static final String PREF_KEY_CONFIGURE_WIFI_SETTINGS = "configure_wifi_settings"; private static final String PREF_KEY_SAVED_NETWORKS = "saved_networks"; private static final String PREF_KEY_STATUS_MESSAGE = "wifi_status_message"; @VisibleForTesting static final String PREF_KEY_DATA_USAGE = "non_carrier_data_usage"; Loading Loading @@ -192,7 +188,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment Preference mSavedNetworksPreference; @VisibleForTesting DataUsagePreference mDataUsagePreference; private LinkablePreference mStatusMessagePreference; private ViewAirplaneModeNetworksLayoutPreferenceController mViewAirplaneModeNetworksButtonPreference; /** * Mobile networks list for provider model Loading Loading @@ -242,13 +239,13 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment mConfigureWifiSettingsPreference = findPreference(PREF_KEY_CONFIGURE_WIFI_SETTINGS); mSavedNetworksPreference = findPreference(PREF_KEY_SAVED_NETWORKS); mAddWifiNetworkPreference = new AddWifiNetworkPreference(getPrefContext()); mStatusMessagePreference = findPreference(PREF_KEY_STATUS_MESSAGE); mDataUsagePreference = findPreference(PREF_KEY_DATA_USAGE); mDataUsagePreference.setVisible(DataUsageUtils.hasWifiRadio(getContext())); mDataUsagePreference.setTemplate(NetworkTemplate.buildTemplateWifiWildcard(), 0 /*subId*/, null /*service*/); addNetworkMobileProviderController(); addViewAirplaneModeNetworksButtonController(); } private void addNetworkMobileProviderController() { Loading @@ -260,6 +257,15 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment mNetworkMobileProviderController.displayPreference(getPreferenceScreen()); } private void addViewAirplaneModeNetworksButtonController() { if (mViewAirplaneModeNetworksButtonPreference == null) { mViewAirplaneModeNetworksButtonPreference = new ViewAirplaneModeNetworksLayoutPreferenceController( getContext(), getSettingsLifecycle()); } mViewAirplaneModeNetworksButtonPreference.displayPreference(getPreferenceScreen()); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Loading Loading @@ -602,18 +608,17 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment case WifiManager.WIFI_STATE_ENABLING: removeConnectedWifiEntryPreference(); removeWifiEntryPreference(); addMessagePreference(R.string.wifi_starting); setProgressBarVisible(true); break; case WifiManager.WIFI_STATE_DISABLING: removeConnectedWifiEntryPreference(); removeWifiEntryPreference(); addMessagePreference(R.string.wifi_stopping); break; case WifiManager.WIFI_STATE_DISABLED: setOffMessage(); removeConnectedWifiEntryPreference(); removeWifiEntryPreference(); setAdditionalSettingsSummaries(); setProgressBarVisible(false); mClickedConnect = false; Loading Loading @@ -683,7 +688,6 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment } boolean hasAvailableWifiEntries = false; mStatusMessagePreference.setVisible(false); mWifiEntryPreferenceCategory.setVisible(true); final WifiEntry connectedEntry = mWifiPickerTracker.getConnectedWifiEntry(); Loading Loading @@ -861,33 +865,6 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment && !powerManager.isPowerSaveMode(); } private void setOffMessage() { final CharSequence title = getText(R.string.wifi_empty_list_wifi_off); // Don't use WifiManager.isScanAlwaysAvailable() to check the Wi-Fi scanning mode. Instead, // read the system settings directly. Because when the device is in Airplane mode, even if // Wi-Fi scanning mode is on, WifiManager.isScanAlwaysAvailable() still returns "off". // TODO(b/149421497): Fix this? final boolean wifiScanningMode = mWifiManager.isScanAlwaysAvailable(); final CharSequence description = wifiScanningMode ? getText(R.string.wifi_scan_notify_text) : getText(R.string.wifi_scan_notify_text_scanning_off); final LinkifyUtils.OnClickListener clickListener = () -> new SubSettingLauncher(getContext()) .setDestination(ScanningSettings.class.getName()) .setTitleRes(R.string.location_scanning_screen_title) .setSourceMetricsCategory(getMetricsCategory()) .launch(); mStatusMessagePreference.setText(title, description, clickListener); removeConnectedWifiEntryPreference(); removeWifiEntryPreference(); mStatusMessagePreference.setVisible(true); } private void addMessagePreference(int messageId) { mStatusMessagePreference.setTitle(messageId); mStatusMessagePreference.setVisible(true); } protected void setProgressBarVisible(boolean visible) { if (mProgressHeader != null) { mProgressHeader.setVisibility(visible ? View.VISIBLE : View.GONE); Loading