Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ee414fdc authored by Weng Su's avatar Weng Su
Browse files

[Provider Model] View airplane mode networks button

- Airplane mode message
  - WiFi Disable: “Airplane mode is on”
  - WiFi Enabled: “Viewing airplane mode networks”

- “View airplane mode networks” button
  - WiFi Disable: “View airplane mode networks”
  - WiFi Enabled: hide button

- Screenshot
  https://screenshot.googleplex.com/7PuKwaJMLpiDdKh

Bug: 177155647
Test: manual test
- atest ViewAirplaneModeNetworksLayoutPreferenceControllerTest
- make RunSettingsRoboTests ROBOTEST_FILTER=NetworkProviderSettingsTest

Change-Id: I3222cb04a66d07681709cc95b729b5ecdf999298
parent bfcb1dc2
Loading
Loading
Loading
Loading
+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
+3 −0
Original line number Diff line number Diff line
@@ -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>
+2 −0
Original line number Diff line number Diff line
@@ -12530,6 +12530,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>
+7 −2
Original line number Diff line number Diff line
@@ -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"
+14 −37
Original line number Diff line number Diff line
@@ -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;
@@ -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";

@@ -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
@@ -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() {
@@ -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);
@@ -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;
@@ -683,7 +688,6 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
        }

        boolean hasAvailableWifiEntries = false;
        mStatusMessagePreference.setVisible(false);
        mWifiEntryPreferenceCategory.setVisible(true);

        final WifiEntry connectedEntry = mWifiPickerTracker.getConnectedWifiEntry();
@@ -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