Merge "Use FooterPreference in xml explicitly"
This commit is contained in:
committed by
Android (Google) Code Review
commit
fa9e685fff
@@ -47,4 +47,10 @@
|
||||
<PreferenceCategory
|
||||
android:key="bluetooth_profiles"/>
|
||||
|
||||
<com.android.settingslib.widget.FooterPreference
|
||||
android:key="device_details_footer"
|
||||
android:selectable="false"
|
||||
settings:searchable="false"
|
||||
settings:controller="com.android.settings.bluetooth.BluetoothDetailsMacAddressController"/>
|
||||
|
||||
</PreferenceScreen>
|
@@ -92,6 +92,7 @@ import android.widget.ListView;
|
||||
import android.widget.TabWidget;
|
||||
|
||||
import androidx.annotation.StringRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.graphics.drawable.IconCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.lifecycle.Lifecycle;
|
||||
@@ -105,6 +106,7 @@ import com.android.settings.core.FeatureFlags;
|
||||
import com.android.settings.development.featureflags.FeatureFlagPersistent;
|
||||
import com.android.settings.password.ChooseLockSettingsHelper;
|
||||
import com.android.settingslib.widget.ActionBarShadowController;
|
||||
import com.android.settingslib.widget.FooterPreference;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.util.Iterator;
|
||||
@@ -221,6 +223,7 @@ public final class Utils extends com.android.settingslib.Utils {
|
||||
|
||||
/**
|
||||
* Returns the WIFI IP Addresses, if any, taking into account IPv4 and IPv6 style addresses.
|
||||
*
|
||||
* @param context the application context
|
||||
* @return the formatted and newline-separated IP addresses, or null if none.
|
||||
*/
|
||||
@@ -257,8 +260,9 @@ public final class Utils extends com.android.settingslib.Utils {
|
||||
// many cases, because the constructor takes the only string as the language
|
||||
// code. So : new Locale("en", "US").toString() => "en_US"
|
||||
// And : new Locale("en_US").toString() => "en_us"
|
||||
if (null == localeStr)
|
||||
if (null == localeStr) {
|
||||
return Locale.getDefault();
|
||||
}
|
||||
String[] brokenDownLocale = localeStr.split("_", 3);
|
||||
// split may not return a 0-length array.
|
||||
if (1 == brokenDownLocale.length) {
|
||||
@@ -329,7 +333,7 @@ public final class Utils extends com.android.settingslib.Utils {
|
||||
final long localRowProfileId;
|
||||
final Cursor localRawProfile = cr.query(
|
||||
Profile.CONTENT_RAW_CONTACTS_URI,
|
||||
new String[] {RawContacts._ID},
|
||||
new String[]{RawContacts._ID},
|
||||
RawContacts.ACCOUNT_TYPE + " IS NULL AND " +
|
||||
RawContacts.ACCOUNT_NAME + " IS NULL",
|
||||
null, null);
|
||||
@@ -347,7 +351,7 @@ public final class Utils extends com.android.settingslib.Utils {
|
||||
// Find the structured name for the raw contact.
|
||||
final Cursor structuredName = cr.query(
|
||||
Profile.CONTENT_URI.buildUpon().appendPath(Contacts.Data.CONTENT_DIRECTORY).build(),
|
||||
new String[] {CommonDataKinds.StructuredName.GIVEN_NAME,
|
||||
new String[]{CommonDataKinds.StructuredName.GIVEN_NAME,
|
||||
CommonDataKinds.StructuredName.FAMILY_NAME},
|
||||
Data.RAW_CONTACT_ID + "=" + localRowProfileId,
|
||||
null, null);
|
||||
@@ -370,7 +374,7 @@ public final class Utils extends com.android.settingslib.Utils {
|
||||
private static final String getProfileDisplayName(Context context) {
|
||||
final ContentResolver cr = context.getContentResolver();
|
||||
final Cursor profile = cr.query(Profile.CONTENT_URI,
|
||||
new String[] {Profile.DISPLAY_NAME}, null, null, null);
|
||||
new String[]{Profile.DISPLAY_NAME}, null, null, null);
|
||||
if (profile == null) return null;
|
||||
|
||||
try {
|
||||
@@ -500,7 +504,8 @@ public final class Utils extends com.android.settingslib.Utils {
|
||||
* Lookup both {@link Intent#EXTRA_USER} and {@link Intent#EXTRA_USER_ID} in the bundle
|
||||
* and return the {@link UserHandle} object. Return {@code null} if nothing is found.
|
||||
*/
|
||||
private static @Nullable UserHandle getUserHandleFromBundle(Bundle bundle) {
|
||||
private static @Nullable
|
||||
UserHandle getUserHandleFromBundle(Bundle bundle) {
|
||||
if (bundle == null) {
|
||||
return null;
|
||||
}
|
||||
@@ -541,6 +546,7 @@ public final class Utils extends com.android.settingslib.Utils {
|
||||
|
||||
/**
|
||||
* Queries for the UserInfo of a user. Returns null if the user doesn't exist (was removed).
|
||||
*
|
||||
* @param userManager Instance of UserManager
|
||||
* @param checkUser The user to check the existence of.
|
||||
* @return UserInfo of the user or null for non-existent user.
|
||||
@@ -625,6 +631,7 @@ public final class Utils extends com.android.settingslib.Utils {
|
||||
|
||||
/**
|
||||
* Returns an accessible SpannableString.
|
||||
*
|
||||
* @param displayText the text to display
|
||||
* @param accessibileText the text text-to-speech engines should read
|
||||
*/
|
||||
@@ -835,6 +842,7 @@ public final class Utils extends com.android.settingslib.Utils {
|
||||
|
||||
/**
|
||||
* Launches an intent which may optionally have a user id defined.
|
||||
*
|
||||
* @param fragment Fragment to use to launch the activity.
|
||||
* @param intent Intent to launch.
|
||||
*/
|
||||
@@ -864,6 +872,7 @@ public final class Utils extends com.android.settingslib.Utils {
|
||||
|
||||
/**
|
||||
* Returns if a given user is a profile of another user.
|
||||
*
|
||||
* @param user The user whose profiles wibe checked.
|
||||
* @param profile The (potential) profile.
|
||||
* @return if the profile is actually a profile
|
||||
@@ -889,6 +898,7 @@ public final class Utils extends com.android.settingslib.Utils {
|
||||
/**
|
||||
* Return {@code true} if the supplied package is device owner or profile owner of at
|
||||
* least one user.
|
||||
*
|
||||
* @param userManager used to get profile owner app for each user
|
||||
* @param devicePolicyManager used to check whether it is device owner app
|
||||
* @param packageName package to check about
|
||||
@@ -977,7 +987,7 @@ public final class Utils extends com.android.settingslib.Utils {
|
||||
public static IconCompat createIconWithDrawable(Drawable drawable) {
|
||||
Bitmap bitmap;
|
||||
if (drawable instanceof BitmapDrawable) {
|
||||
bitmap = ((BitmapDrawable)drawable).getBitmap();
|
||||
bitmap = ((BitmapDrawable) drawable).getBitmap();
|
||||
} else {
|
||||
final int width = drawable.getIntrinsicWidth();
|
||||
final int height = drawable.getIntrinsicHeight();
|
||||
@@ -1065,4 +1075,24 @@ public final class Utils extends com.android.settingslib.Utils {
|
||||
ActionBarShadowController.attachToView(activity, lifecycle, scrollView);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a footer preference into preference group.
|
||||
*
|
||||
* @param group The parent {@link PreferenceGroup} of the footer preference.
|
||||
* @param key The key value of the footer preference.
|
||||
* @param title The title of the footer preference.
|
||||
*/
|
||||
public static void addFooterPreference(@NonNull Context context, @NonNull PreferenceGroup group,
|
||||
String key, CharSequence title) {
|
||||
final FooterPreference footerPreference = new FooterPreference(context);
|
||||
footerPreference.setSelectable(false);
|
||||
if (!TextUtils.isEmpty(key)) {
|
||||
footerPreference.setKey(key);
|
||||
}
|
||||
if (!TextUtils.isEmpty(title)) {
|
||||
footerPreference.setTitle(title);
|
||||
}
|
||||
group.addPreference(footerPreference);
|
||||
}
|
||||
}
|
||||
|
@@ -25,13 +25,13 @@ import com.android.settings.R;
|
||||
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||
import com.android.settingslib.widget.FooterPreference;
|
||||
import com.android.settingslib.widget.FooterPreferenceMixinCompat;
|
||||
|
||||
/**
|
||||
* This class adds the device MAC address to a footer.
|
||||
*/
|
||||
public class BluetoothDetailsMacAddressController extends BluetoothDetailsController {
|
||||
FooterPreferenceMixinCompat mFooterPreferenceMixin;
|
||||
public static final String KEY_DEVICE_DETAILS_FOOTER = "device_details_footer";
|
||||
|
||||
FooterPreference mFooterPreference;
|
||||
|
||||
public BluetoothDetailsMacAddressController(Context context,
|
||||
@@ -39,12 +39,11 @@ public class BluetoothDetailsMacAddressController extends BluetoothDetailsContro
|
||||
CachedBluetoothDevice device,
|
||||
Lifecycle lifecycle) {
|
||||
super(context, fragment, device, lifecycle);
|
||||
mFooterPreferenceMixin = new FooterPreferenceMixinCompat(fragment, lifecycle);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void init(PreferenceScreen screen) {
|
||||
mFooterPreference = mFooterPreferenceMixin.createFooterPreference();
|
||||
mFooterPreference = screen.findPreference(KEY_DEVICE_DETAILS_FOOTER);
|
||||
mFooterPreference.setTitle(mContext.getString(
|
||||
R.string.bluetooth_device_mac_address, mCachedDevice.getAddress()));
|
||||
}
|
||||
@@ -57,9 +56,6 @@ public class BluetoothDetailsMacAddressController extends BluetoothDetailsContro
|
||||
|
||||
@Override
|
||||
public String getPreferenceKey() {
|
||||
if (mFooterPreference == null) {
|
||||
return null;
|
||||
}
|
||||
return mFooterPreference.getKey();
|
||||
return KEY_DEVICE_DETAILS_FOOTER;
|
||||
}
|
||||
}
|
@@ -15,8 +15,11 @@
|
||||
*/
|
||||
package com.android.settings.bluetooth;
|
||||
|
||||
import static com.android.settings.bluetooth.BluetoothDetailsMacAddressController.KEY_DEVICE_DETAILS_FOOTER;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settingslib.widget.FooterPreference;
|
||||
|
||||
import org.junit.Test;
|
||||
@@ -25,7 +28,6 @@ import org.robolectric.RobolectricTestRunner;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class BluetoothDetailsMacAddressControllerTest extends BluetoothDetailsControllerTestBase {
|
||||
|
||||
private BluetoothDetailsMacAddressController mController;
|
||||
|
||||
@Override
|
||||
@@ -34,6 +36,7 @@ public class BluetoothDetailsMacAddressControllerTest extends BluetoothDetailsCo
|
||||
mController =
|
||||
new BluetoothDetailsMacAddressController(mContext, mFragment, mCachedDevice, mLifecycle);
|
||||
setupDevice(mDeviceConfig);
|
||||
Utils.addFooterPreference(mContext, mScreen, KEY_DEVICE_DETAILS_FOOTER, null /* title */);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Reference in New Issue
Block a user