if (mode == -1) {
mode = lockPatternUtils.getPasswordMode();
}
- int minMode = mDPM.getPasswordMode();
+ int minMode = mDPM.getPasswordMode(null);
if (mode < minMode) {
mode = minMode;
}
if (mode >= DevicePolicyManager.PASSWORD_MODE_NUMERIC) {
- int minLength = mDPM.getMinimumPasswordLength();
+ int minLength = mDPM.getPasswordMinimumLength(null);
if (minLength < 4) {
minLength = 4;
}
- final int maxLength = 16;
+ final int maxLength = mDPM.getPasswordMaximumLength(mode);
Intent intent = new Intent().setClass(this, ChooseLockPassword.class);
intent.putExtra(LockPatternUtils.PASSWORD_TYPE_KEY, mode);
intent.putExtra(ChooseLockPassword.PASSWORD_MIN_KEY, minLength);
Button mActionButton;
View mSelectLayout;
- ArrayList<DeviceAdminInfo> mAvailablePolicies
- = new ArrayList<DeviceAdminInfo>();
+
+ final ArrayList<View> mAddingPolicies = new ArrayList<View>();
+ final ArrayList<View> mActivePolicies = new ArrayList<View>();
boolean mAdding;
}
}
+ static void setViewVisibility(ArrayList<View> views, int visibility) {
+ final int N = views.size();
+ for (int i=0; i<N; i++) {
+ views.get(i).setVisibility(visibility);
+ }
+ }
+
void updateInterface() {
mAdminIcon.setImageDrawable(mDeviceAdmin.loadIcon(getPackageManager()));
mAdminName.setText(mDeviceAdmin.loadLabel(getPackageManager()));
} else {
mAddMsg.setVisibility(View.GONE);
}
- ArrayList<DeviceAdminInfo.PolicyInfo> policies = mDeviceAdmin.getUsedPolicies();
- for (int i=0; i<policies.size(); i++) {
- DeviceAdminInfo.PolicyInfo pi = policies.get(i);
- mAdminPolicies.addView(AppSecurityPermissions.getPermissionItemView(
- this, getText(pi.label), getText(pi.description), true));
- }
if (mDPM.isAdminActive(mDeviceAdmin.getComponent())) {
+ if (mActivePolicies.size() == 0) {
+ ArrayList<DeviceAdminInfo.PolicyInfo> policies = mDeviceAdmin.getUsedPolicies();
+ for (int i=0; i<policies.size(); i++) {
+ DeviceAdminInfo.PolicyInfo pi = policies.get(i);
+ View view = AppSecurityPermissions.getPermissionItemView(
+ this, getText(pi.label), "", true);
+ mActivePolicies.add(view);
+ mAdminPolicies.addView(view);
+ }
+ }
+ setViewVisibility(mActivePolicies, View.VISIBLE);
+ setViewVisibility(mAddingPolicies, View.GONE);
mAdminWarning.setText(getString(R.string.device_admin_status,
mDeviceAdmin.getActivityInfo().applicationInfo.loadLabel(getPackageManager())));
mTitle.setText(getText(R.string.active_device_admin_msg));
mActionButton.setText(getText(R.string.remove_device_admin));
mAdding = false;
} else {
+ if (mAddingPolicies.size() == 0) {
+ ArrayList<DeviceAdminInfo.PolicyInfo> policies = mDeviceAdmin.getUsedPolicies();
+ for (int i=0; i<policies.size(); i++) {
+ DeviceAdminInfo.PolicyInfo pi = policies.get(i);
+ View view = AppSecurityPermissions.getPermissionItemView(
+ this, getText(pi.label), getText(pi.description), true);
+ mAddingPolicies.add(view);
+ mAdminPolicies.addView(view);
+ }
+ }
+ setViewVisibility(mAddingPolicies, View.VISIBLE);
+ setViewVisibility(mActivePolicies, View.GONE);
mAdminWarning.setText(getString(R.string.device_admin_warning,
mDeviceAdmin.getActivityInfo().applicationInfo.loadLabel(getPackageManager())));
mTitle.setText(getText(R.string.add_device_admin_msg));