diff --git a/res/drawable/ic_qrcode_24dp.xml b/res/drawable/ic_qrcode_24dp.xml
index ff7806f8107..6928cb97105 100644
--- a/res/drawable/ic_qrcode_24dp.xml
+++ b/res/drawable/ic_qrcode_24dp.xml
@@ -2,7 +2,8 @@
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
- android:viewportHeight="24">
+ android:viewportHeight="24"
+ android:tint="?android:attr/colorAccent">
diff --git a/res/drawable/ic_scan_24dp.xml b/res/drawable/ic_scan_24dp.xml
index bcef8e32db0..c7b82d1f7e2 100644
--- a/res/drawable/ic_scan_24dp.xml
+++ b/res/drawable/ic_scan_24dp.xml
@@ -2,7 +2,8 @@
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
- android:viewportHeight="24">
+ android:viewportHeight="24"
+ android:tint="?android:attr/colorAccent">
diff --git a/res/layout/wifi_button_preference_widget.xml b/res/layout/wifi_button_preference_widget.xml
index 0999d209783..4b004e32b48 100644
--- a/res/layout/wifi_button_preference_widget.xml
+++ b/res/layout/wifi_button_preference_widget.xml
@@ -22,5 +22,4 @@
android:minWidth="@dimen/min_tap_target_size"
android:minHeight="@dimen/min_tap_target_size"
android:layout_gravity="center"
- android:background="@null"
- android:visibility="gone"/>
+ android:background="?android:attr/selectableItemBackground"/>
diff --git a/res/layout/wifi_dialog.xml b/res/layout/wifi_dialog.xml
index 333296c95c1..d5dbb17d03f 100644
--- a/res/layout/wifi_dialog.xml
+++ b/res/layout/wifi_dialog.xml
@@ -50,29 +50,31 @@
android:text="@string/wifi_ssid"
android:textDirection="locale" />
-
+ android:layout_height="wrap_content">
+ android:inputType="textNoSuggestions"/>
+
-
+
-
+ android:layout_height="wrap_content">
+ android:password="true"/>
-
+
{
+ getContext().startActivity(
+ WifiDppUtils.getEnrolleeQrCodeScannerIntent(/* ssid */ null));
+ });
+
+ final View divider = (View) holder.findViewById(
+ com.android.settingslib.R.id.two_target_divider);
+ divider.setVisibility(View.INVISIBLE);
+ }
+ }
+
+ private Drawable getDrawable(@DrawableRes int iconResId) {
+ Drawable buttonIcon = null;
+
+ try {
+ buttonIcon = getContext().getDrawable(iconResId);
+ } catch (Resources.NotFoundException exception) {
+ Log.e(TAG, "Resource does not exist: " + iconResId);
+ }
+ return buttonIcon;
+ }
+}
diff --git a/src/com/android/settings/wifi/ButtonPreference.java b/src/com/android/settings/wifi/ButtonPreference.java
deleted file mode 100644
index 5169d7ac4ba..00000000000
--- a/src/com/android/settings/wifi/ButtonPreference.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (C) 2018 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.wifi;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.drawable.Drawable;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.View;
-import android.widget.ImageButton;
-
-import androidx.annotation.DrawableRes;
-import androidx.annotation.VisibleForTesting;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceViewHolder;
-
-import com.android.settings.R;
-
-/**
- * This preference provides one button layout with Settings style.
- * It looks like below
- *
- * --------------------------------------------------------------
- * | icon | title | button |
- * --------------------------------------------------------------
- *
- * User can set icon / click listener for button.
- * By default, the button is invisible.
- */
-public class ButtonPreference extends Preference {
-
- private static final String TAG = "ButtonPreference";
-
- private ImageButton mImageButton;
- private Drawable mButtonIcon;
- private View.OnClickListener mClickListener;
- private String mContentDescription;
-
- // Used for dummy pref.
- public ButtonPreference(Context context, AttributeSet attrs) {
- super(context, attrs);
- setWidgetLayoutResource(R.layout.wifi_button_preference_widget);
- mImageButton = null;
- mButtonIcon = null;
- mClickListener = null;
- mContentDescription = null;
- }
-
- public ButtonPreference(Context context) {
- this(context, /* attrs */ null);
- }
-
- @Override
- public void onBindViewHolder(final PreferenceViewHolder view) {
- super.onBindViewHolder(view);
- initButton(view);
- }
-
- @Override
- public void setOrder(int order) {
- super.setOrder(order);
- setButtonVisibility();
- }
-
- @VisibleForTesting
- protected void initButton(final PreferenceViewHolder view) {
- if (mImageButton == null) {
- mImageButton = (ImageButton) view.findViewById(R.id.button_icon);
- }
- if (mImageButton != null) {
- mImageButton.setImageDrawable(mButtonIcon);
- mImageButton.setOnClickListener(mClickListener);
- mImageButton.setContentDescription(mContentDescription);
- }
- setButtonVisibility();
- }
-
- private void setButtonVisibility() {
- if(mImageButton != null) {
- mImageButton.setVisibility(mButtonIcon == null ? View.GONE : View.VISIBLE);
- }
- }
-
- /**
- * Sets the drawable to be displayed in button.
- */
- public void setButtonIcon(@DrawableRes int iconResId) {
- if (iconResId == 0) {
- return;
- }
-
- try {
- mButtonIcon = getContext().getDrawable(iconResId);
- notifyChanged();
- } catch (Resources.NotFoundException exception) {
- Log.e(TAG, "Resource does not exist: " + iconResId);
- }
- }
-
- /**
- * Register a callback to be invoked when button is clicked.
- */
- public void setButtonOnClickListener(View.OnClickListener listener) {
- if (listener != mClickListener) {
- mClickListener = listener;
- notifyChanged();
- }
- }
-
- /**
- * A content description briefly describes the button and is primarily used for accessibility
- * support to determine how a button should be presented to the user.
- */
- public void setButtonContentDescription(String contentDescription) {
- if (contentDescription != mContentDescription) {
- mContentDescription = contentDescription;
- notifyChanged();
- }
- }
-}
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index a8fc34d7a8c..585cf71ac95 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -179,7 +179,8 @@ public class WifiSettings extends RestrictedSettingsFragment
private PreferenceCategory mConnectedAccessPointPreferenceCategory;
private PreferenceCategory mAccessPointsPreferenceCategory;
- private ButtonPreference mAddPreference;
+ @VisibleForTesting
+ AddWifiNetworkPreference mAddWifiNetworkPreference;
@VisibleForTesting
Preference mConfigureWifiSettingsPreference;
@VisibleForTesting
@@ -237,20 +238,8 @@ public class WifiSettings extends RestrictedSettingsFragment
(PreferenceCategory) findPreference(PREF_KEY_ACCESS_POINTS);
mConfigureWifiSettingsPreference = findPreference(PREF_KEY_CONFIGURE_WIFI_SETTINGS);
mSavedNetworksPreference = findPreference(PREF_KEY_SAVED_NETWORKS);
-
- Context prefContext = getPrefContext();
- mAddPreference = new ButtonPreference(prefContext);
- mAddPreference.setIcon(R.drawable.ic_menu_add);
- mAddPreference.setTitle(R.string.wifi_add_network);
- mAddPreference.setButtonIcon(R.drawable.ic_scan_24dp);
- mAddPreference.setButtonOnClickListener((View v) -> {
- // Launch QR code scanner to join a network.
- getContext().startActivity(
- WifiDppUtils.getEnrolleeQrCodeScannerIntent(/* ssid */ null));
- });
- mAddPreference.setButtonContentDescription(getString(R.string.wifi_dpp_scan_qr_code));
+ mAddWifiNetworkPreference = new AddWifiNetworkPreference(getPrefContext());
mStatusMessagePreference = (LinkablePreference) findPreference(PREF_KEY_STATUS_MESSAGE);
-
mUserBadgeCache = new AccessPointPreference.UserBadgeCache(getPackageManager());
}
@@ -590,7 +579,7 @@ public class WifiSettings extends RestrictedSettingsFragment
showDialog(mSelectedAccessPoint, WifiConfigUiBase.MODE_CONNECT);
break;
}
- } else if (preference == mAddPreference) {
+ } else if (preference == mAddWifiNetworkPreference) {
onAddNetworkPressed();
} else {
return super.onPreferenceTreeClick(preference);
@@ -809,8 +798,8 @@ public class WifiSettings extends RestrictedSettingsFragment
}
}
removeCachedPrefs(mAccessPointsPreferenceCategory);
- mAddPreference.setOrder(index);
- mAccessPointsPreferenceCategory.addPreference(mAddPreference);
+ mAddWifiNetworkPreference.setOrder(index);
+ mAccessPointsPreferenceCategory.addPreference(mAddWifiNetworkPreference);
setAdditionalSettingsSummaries();
if (!hasAvailableAccessPoints) {
diff --git a/tests/robotests/src/com/android/settings/wifi/ButtonPreferenceTest.java b/tests/robotests/src/com/android/settings/wifi/ButtonPreferenceTest.java
deleted file mode 100644
index 7f0598dce85..00000000000
--- a/tests/robotests/src/com/android/settings/wifi/ButtonPreferenceTest.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2018 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.wifi;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.view.View;
-import android.widget.ImageButton;
-
-import androidx.preference.PreferenceViewHolder;
-
-import com.android.settings.R;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class ButtonPreferenceTest {
-
- private Context mContext;
- private View mRootView;
- private ButtonPreference mPref;
- private PreferenceViewHolder mHolder;
- private boolean mClicked;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
-
- mContext = RuntimeEnvironment.application;
- mPref = new ButtonPreference(mContext);
- mRootView = View.inflate(mContext, R.layout.wifi_button_preference_widget, /* parent */
- null);
- mHolder = PreferenceViewHolder.createInstanceForTests(mRootView);
- }
-
- @Test
- public void initButton_noIcon_shouldInvisible() {
- mPref.initButton(mHolder);
- assertThat(mRootView.findViewById(R.id.button_icon).getVisibility()).isEqualTo(View.GONE);
- }
-
- @Test
- public void initButton_withIcon_shouldVisible() {
- mPref.setButtonIcon(R.drawable.ic_qrcode_24dp);
- mPref.initButton(mHolder);
- assertThat(mRootView.findViewById(R.id.button_icon).getVisibility()).isEqualTo(
- View.VISIBLE);
- }
-
- @Test
- public void initButton_whenClick_shouldCallback() {
- mClicked = false;
- mPref.setButtonIcon(R.drawable.ic_qrcode_24dp);
- mPref.setButtonOnClickListener((View v) -> {
- mClicked = true;
- });
- mPref.initButton(mHolder);
- ImageButton button = (ImageButton) mRootView.findViewById(R.id.button_icon);
- button.performClick();
- assertThat(mClicked).isTrue();
- }
-}
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java
index 22ccd3c2295..c811b0caf99 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java
@@ -69,6 +69,7 @@ public class WifiSettingsTest {
mWifiSettings = spy(new WifiSettings());
doReturn(mContext).when(mWifiSettings).getContext();
doReturn(mPowerManager).when(mContext).getSystemService(PowerManager.class);
+ mWifiSettings.mAddWifiNetworkPreference = new AddWifiNetworkPreference(mContext);
mWifiSettings.mSavedNetworksPreference = new Preference(mContext);
mWifiSettings.mConfigureWifiSettingsPreference = new Preference(mContext);
mWifiSettings.mWifiTracker = mWifiTracker;
@@ -151,4 +152,11 @@ public class WifiSettingsTest {
assertThat(mWifiSettings.mConfigureWifiSettingsPreference.getSummary()).isEqualTo(
mContext.getString(R.string.wifi_configure_settings_preference_summary_wakeup_off));
}
-}
\ No newline at end of file
+
+ @Test
+ public void checkAddWifiNetworkPrefernce_preferenceVisible() {
+ assertThat(mWifiSettings.mAddWifiNetworkPreference.isVisible()).isTrue();
+ assertThat(mWifiSettings.mAddWifiNetworkPreference.getTitle()).isEqualTo(
+ mContext.getString(R.string.wifi_add_network));
+ }
+}