diff options
| author | 2021-11-29 16:00:31 +0000 | |
|---|---|---|
| committer | 2021-11-29 16:00:31 +0000 | |
| commit | 32e612188384f788d0f0330e5b396e3dacc14319 (patch) | |
| tree | 1eee93fb9419279ef1ac7079021de5546870341f | |
| parent | 2aba350b3fda32d8ce1fe6ff2076ff0a03ee4764 (diff) | |
| parent | adfa8fc2fde8da60f4ffdd46fca23401acb70d2b (diff) | |
Merge "[Provider Model] Fixed the height of the WiFi list" into sc-v2-dev
5 files changed, 90 insertions, 16 deletions
diff --git a/packages/SystemUI/res/layout/internet_connectivity_dialog.xml b/packages/SystemUI/res/layout/internet_connectivity_dialog.xml index 98518c2bbf97..4a5b637a05d9 100644 --- a/packages/SystemUI/res/layout/internet_connectivity_dialog.xml +++ b/packages/SystemUI/res/layout/internet_connectivity_dialog.xml @@ -185,7 +185,7 @@ <LinearLayout android:id="@+id/turn_on_wifi_layout" style="@style/InternetDialog.Network" - android:layout_height="72dp" + android:layout_height="@dimen/internet_dialog_wifi_network_height" android:gravity="center" android:clickable="false" android:focusable="false"> @@ -227,7 +227,7 @@ <LinearLayout android:id="@+id/wifi_connected_layout" style="@style/InternetDialog.Network" - android:layout_height="72dp" + android:layout_height="@dimen/internet_dialog_wifi_network_height" android:paddingStart="20dp" android:paddingEnd="24dp" android:background="@drawable/settingslib_switch_bar_bg_on" @@ -249,7 +249,7 @@ android:orientation="vertical" android:clickable="false" android:layout_width="wrap_content" - android:layout_height="72dp" + android:layout_height="@dimen/internet_dialog_wifi_network_height" android:layout_marginEnd="30dp" android:layout_weight="1" android:gravity="start|center_vertical"> diff --git a/packages/SystemUI/res/layout/internet_list_item.xml b/packages/SystemUI/res/layout/internet_list_item.xml index 868331ec830f..f6a213662a18 100644 --- a/packages/SystemUI/res/layout/internet_list_item.xml +++ b/packages/SystemUI/res/layout/internet_list_item.xml @@ -25,7 +25,7 @@ <LinearLayout android:id="@+id/wifi_list" style="@style/InternetDialog.Network" - android:layout_height="72dp" + android:layout_height="@dimen/internet_dialog_wifi_network_height" android:paddingStart="20dp" android:paddingEnd="24dp"> <FrameLayout @@ -45,7 +45,7 @@ android:orientation="vertical" android:clickable="false" android:layout_width="wrap_content" - android:layout_height="72dp" + android:layout_height="@dimen/internet_dialog_wifi_network_height" android:layout_marginEnd="30dp" android:layout_weight="1" android:gravity="start|center_vertical"> diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index a2fd669c69fd..1938e48e859a 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -1243,6 +1243,8 @@ <!-- Internet panel related dimensions --> <dimen name="internet_dialog_list_max_height">662dp</dimen> + <!-- The height of the WiFi network in Internet panel. --> + <dimen name="internet_dialog_wifi_network_height">72dp</dimen> <!-- The width of large/content heavy dialogs (e.g. Internet, Media output, etc) --> <dimen name="large_dialog_width">@dimen/match_parent</dimen> diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialog.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialog.java index 883552a1f7c3..6bba1ed57c93 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialog.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialog.java @@ -130,6 +130,7 @@ public class InternetDialog extends SystemUIDialog implements private boolean mCanConfigMobileData; // Wi-Fi entries + private int mWifiNetworkHeight; @VisibleForTesting protected WifiEntry mConnectedWifiEntry; @VisibleForTesting @@ -187,6 +188,9 @@ public class InternetDialog extends SystemUIDialog implements window.setWindowAnimations(R.style.Animation_InternetDialog); + mWifiNetworkHeight = mContext.getResources() + .getDimensionPixelSize(R.dimen.internet_dialog_wifi_network_height); + mInternetDialogLayout = mDialogView.requireViewById(R.id.internet_connectivity_dialog); mInternetDialogTitle = mDialogView.requireViewById(R.id.internet_dialog_title); mInternetDialogSubTitle = mDialogView.requireViewById(R.id.internet_dialog_subtitle); @@ -335,9 +339,6 @@ public class InternetDialog extends SystemUIDialog implements mSeeAllLayout.setOnClickListener(v -> onClickSeeMoreButton()); mWiFiToggle.setOnCheckedChangeListener( (buttonView, isChecked) -> { - if (isChecked) { - mWifiScanNotifyLayout.setVisibility(View.GONE); - } buttonView.setChecked(isChecked); mWifiManager.setWifiEnabled(isChecked); }); @@ -427,9 +428,26 @@ public class InternetDialog extends SystemUIDialog implements mSeeAllLayout.setVisibility(View.GONE); return; } - mWifiRecyclerView.setVisibility(mWifiEntriesCount > 0 ? View.VISIBLE : View.GONE); - mSeeAllLayout.setVisibility( - (mConnectedWifiEntry != null || mWifiEntriesCount > 0) ? View.VISIBLE : View.GONE); + mWifiRecyclerView.setMinimumHeight(mWifiNetworkHeight * getWifiListMaxCount()); + mWifiRecyclerView.setVisibility(View.VISIBLE); + final boolean showSeeAll = mConnectedWifiEntry != null || mWifiEntriesCount > 0; + mSeeAllLayout.setVisibility(showSeeAll ? View.VISIBLE : View.INVISIBLE); + } + + @VisibleForTesting + @MainThread + int getWifiListMaxCount() { + int count = InternetDialogController.MAX_WIFI_ENTRY_COUNT; + if (mEthernetLayout.getVisibility() == View.VISIBLE) { + count -= 1; + } + if (mMobileNetworkLayout.getVisibility() == View.VISIBLE) { + count -= 1; + } + if (mConnectedWifListLayout.getVisibility() == View.VISIBLE) { + count -= 1; + } + return count; } @MainThread diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogTest.java index b32b4d4f3810..339d5bb04d74 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogTest.java @@ -1,5 +1,7 @@ package com.android.systemui.qs.tiles.dialog; +import static com.android.systemui.qs.tiles.dialog.InternetDialogController.MAX_WIFI_ENTRY_COUNT; + import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; @@ -219,7 +221,7 @@ public class InternetDialogTest extends SysuiTestCase { } @Test - public void updateDialog_wifiOnAndNoWifiEntry_hideWifiEntryAndSeeAll() { + public void updateDialog_wifiOnAndNoWifiEntry_showWifiListAndSeeAllArea() { // The precondition WiFi ON is already in setUp() mInternetDialog.mConnectedWifiEntry = null; mInternetDialog.mWifiEntriesCount = 0; @@ -227,19 +229,21 @@ public class InternetDialogTest extends SysuiTestCase { mInternetDialog.updateDialog(false); assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.GONE); - assertThat(mWifiList.getVisibility()).isEqualTo(View.GONE); - assertThat(mSeeAll.getVisibility()).isEqualTo(View.GONE); + // Show a blank block to fix the dialog height even if there is no WiFi list + assertThat(mWifiList.getVisibility()).isEqualTo(View.VISIBLE); + assertThat(mSeeAll.getVisibility()).isEqualTo(View.INVISIBLE); } @Test - public void updateDialog_wifiOnAndHasConnectedWifi_showConnectedWifiAndSeeAll() { + public void updateDialog_wifiOnAndHasConnectedWifi_showAllWifiAndSeeAllArea() { // The preconditions WiFi ON and WiFi entries are already in setUp() mInternetDialog.mWifiEntriesCount = 0; mInternetDialog.updateDialog(false); assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.VISIBLE); - assertThat(mWifiList.getVisibility()).isEqualTo(View.GONE); + // Show a blank block to fix the dialog height even if there is no WiFi list + assertThat(mWifiList.getVisibility()).isEqualTo(View.VISIBLE); assertThat(mSeeAll.getVisibility()).isEqualTo(View.VISIBLE); } @@ -412,4 +416,54 @@ public class InternetDialogTest extends SysuiTestCase { assertThat(mInternetDialog.mIsProgressBarVisible).isTrue(); assertThat(mInternetDialog.mIsSearchingHidden).isTrue(); } + + @Test + public void getWifiListMaxCount_returnCountCorrectly() { + // Ethernet, MobileData, ConnectedWiFi are all hidden. + // Then the maximum count is equal to MAX_WIFI_ENTRY_COUNT. + setNetworkVisible(false, false, false); + + assertThat(mInternetDialog.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT); + + // Only one of Ethernet, MobileData, ConnectedWiFi is displayed. + // Then the maximum count is equal to MAX_WIFI_ENTRY_COUNT - 1. + setNetworkVisible(true, false, false); + + assertThat(mInternetDialog.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT - 1); + + setNetworkVisible(false, true, false); + + assertThat(mInternetDialog.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT - 1); + + setNetworkVisible(false, false, true); + + assertThat(mInternetDialog.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT - 1); + + // Only one of Ethernet, MobileData, ConnectedWiFi is hidden. + // Then the maximum count is equal to MAX_WIFI_ENTRY_COUNT - 2. + setNetworkVisible(true, true, false); + + assertThat(mInternetDialog.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT - 2); + + setNetworkVisible(true, false, true); + + assertThat(mInternetDialog.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT - 2); + + setNetworkVisible(false, true, true); + + assertThat(mInternetDialog.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT - 2); + + // Ethernet, MobileData, ConnectedWiFi are all displayed. + // Then the maximum count is equal to MAX_WIFI_ENTRY_COUNT - 3. + setNetworkVisible(true, true, true); + + assertThat(mInternetDialog.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT - 3); + } + + private void setNetworkVisible(boolean ethernetVisible, boolean mobileDataVisible, + boolean connectedWifiVisible) { + mEthernet.setVisibility(ethernetVisible ? View.VISIBLE : View.GONE); + mMobileDataToggle.setVisibility(mobileDataVisible ? View.VISIBLE : View.GONE); + mConnectedWifi.setVisibility(connectedWifiVisible ? View.VISIBLE : View.GONE); + } } |