Show disabled add actions in COPE mode

Before this change these actions were hidden.

After this change, they are displayed but disabled which makes it more intuitive.

Bug: 336762423
Test: atest UserSettingsTest && atest UserDetailsSettingsTest
Flag: android.multiuser.new_multiuser_settings_ux
Change-Id: Ie07816b7d3817d12e78e1ec2692fcddea9328933
This commit is contained in:
Tetiana Meronyk
2024-06-24 12:35:14 +00:00
parent 0f311e1195
commit 25e1b4d88b
5 changed files with 105 additions and 10 deletions

View File

@@ -19,12 +19,16 @@ package com.android.settings.users;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.UserHandle;
import android.os.UserManager;
import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.RestrictedSwitchPreference;
/**
* Controls the preference on the user settings screen which determines whether the guest user
@@ -43,6 +47,10 @@ public class GuestTelephonyPreferenceController extends TogglePreferenceControll
@Override
public int getAvailabilityStatus() {
if (!mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
|| UserManager.isHeadlessSystemUserMode()) {
return DISABLED_FOR_USER;
}
if (android.multiuser.Flags.newMultiuserSettingsUx()) {
if (!mUserCaps.isAdmin()) {
return DISABLED_FOR_USER;
@@ -81,8 +89,31 @@ public class GuestTelephonyPreferenceController extends TogglePreferenceControll
public void updateState(Preference preference) {
super.updateState(preference);
mUserCaps.updateAddUserCapabilities(mContext);
preference.setVisible(isAvailable()
&& mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
&& !UserManager.isHeadlessSystemUserMode());
final RestrictedSwitchPreference restrictedSwitchPreference =
(RestrictedSwitchPreference) preference;
restrictedSwitchPreference.setChecked(isChecked());
if (!isAvailable()) {
restrictedSwitchPreference.setVisible(false);
} else {
if (android.multiuser.Flags.newMultiuserSettingsUx()) {
restrictedSwitchPreference.setVisible(true);
final RestrictedLockUtils.EnforcedAdmin disallowRemoveUserAdmin =
RestrictedLockUtilsInternal.checkIfRestrictionEnforced(mContext,
UserManager.DISALLOW_REMOVE_USER, UserHandle.myUserId());
if (disallowRemoveUserAdmin != null) {
restrictedSwitchPreference.setDisabledByAdmin(disallowRemoveUserAdmin);
} else if (mUserCaps.mDisallowAddUserSetByAdmin) {
restrictedSwitchPreference.setDisabledByAdmin(mUserCaps.mEnforcedAdmin);
} else if (mUserCaps.mDisallowAddUser) {
// Adding user is restricted by system
restrictedSwitchPreference.setVisible(false);
}
} else {
restrictedSwitchPreference.setDisabledByAdmin(
mUserCaps.disallowAddUser() ? mUserCaps.getEnforcedAdmin() : null);
restrictedSwitchPreference.setVisible(mUserCaps.mUserSwitcherEnabled
&& isAvailable());
}
}
}
}