Skip to content

Commit 64766c0

Browse files
committed
Use new preferences for password constraints.
Change-Id: I5646069e7e18ec77a4b1d00fc1c07bb453010f04
1 parent e1b62ed commit 64766c0

File tree

2 files changed

+79
-76
lines changed

2 files changed

+79
-76
lines changed

app/src/main/java/com/afwsamples/testdpc/policy/keyguard/PasswordConstraintsFragment.java

Lines changed: 23 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import com.afwsamples.testdpc.R;
3131
import com.afwsamples.testdpc.common.ProfileOrParentFragment;
3232
import com.afwsamples.testdpc.common.Util;
33+
import com.afwsamples.testdpc.common.preference.DpcPreferenceBase;
3334

3435
import java.util.ArrayList;
3536
import java.util.List;
@@ -241,48 +242,39 @@ private void enableMinimumsForQuality() {
241242
final int currentQuality = getDpm().getPasswordQuality(getAdmin());
242243

243244
// Minimum length can be set for most qualities
244-
final EditTextPreference minLength = (EditTextPreference) findPreference(Keys.MIN_LENGTH);
245+
final DpcPreferenceBase minLength = (DpcPreferenceBase) findPreference(Keys.MIN_LENGTH);
245246
if (currentQuality >= DevicePolicyManager.PASSWORD_QUALITY_NUMERIC) {
246-
minLength.setEnabled(true);
247-
enableEditTextPreference(minLength);
247+
minLength.clearCustomConstraint();
248248
} else {
249-
Util.disablePreference(minLength, R.string.not_for_password_quality);
249+
minLength.setCustomConstraint(R.string.not_for_password_quality);
250250
}
251251

252252
// Other minimums are only active for the highest quality
253-
final EditTextPreference minLetters = (EditTextPreference) findPreference(Keys.MIN_LETTERS);
254-
final EditTextPreference minNumeric = (EditTextPreference) findPreference(Keys.MIN_NUMERIC);
255-
final EditTextPreference minLower = (EditTextPreference) findPreference(Keys.MIN_LOWERCASE);
256-
final EditTextPreference minUpper = (EditTextPreference) findPreference(Keys.MIN_UPPERCASE);
257-
final EditTextPreference minSymbols = (EditTextPreference) findPreference(Keys.MIN_SYMBOLS);
258-
final EditTextPreference minNonLetter =
259-
(EditTextPreference) findPreference(Keys.MIN_NONLETTER);
253+
final DpcPreferenceBase minLetters = (DpcPreferenceBase) findPreference(Keys.MIN_LETTERS);
254+
final DpcPreferenceBase minNumeric = (DpcPreferenceBase) findPreference(Keys.MIN_NUMERIC);
255+
final DpcPreferenceBase minLower = (DpcPreferenceBase) findPreference(Keys.MIN_LOWERCASE);
256+
final DpcPreferenceBase minUpper = (DpcPreferenceBase) findPreference(Keys.MIN_UPPERCASE);
257+
final DpcPreferenceBase minSymbols = (DpcPreferenceBase) findPreference(Keys.MIN_SYMBOLS);
258+
final DpcPreferenceBase minNonLetter =
259+
(DpcPreferenceBase) findPreference(Keys.MIN_NONLETTER);
260260

261261
if (currentQuality == DevicePolicyManager.PASSWORD_QUALITY_COMPLEX) {
262-
enableEditTextPreference(minLetters);
263-
enableEditTextPreference(minNumeric);
264-
enableEditTextPreference(minLower);
265-
enableEditTextPreference(minUpper);
266-
enableEditTextPreference(minSymbols);
267-
enableEditTextPreference(minNonLetter);
262+
minLetters.clearCustomConstraint();
263+
minNumeric.clearCustomConstraint();
264+
minLower.clearCustomConstraint();
265+
minUpper.clearCustomConstraint();
266+
minSymbols.clearCustomConstraint();
267+
minNonLetter.clearCustomConstraint();
268268
} else {
269-
Util.disablePreference(minLetters, R.string.not_for_password_quality);
270-
Util.disablePreference(minNumeric, R.string.not_for_password_quality);
271-
Util.disablePreference(minLower, R.string.not_for_password_quality);
272-
Util.disablePreference(minUpper, R.string.not_for_password_quality);
273-
Util.disablePreference(minSymbols, R.string.not_for_password_quality);
274-
Util.disablePreference(minNonLetter, R.string.not_for_password_quality);
269+
minLetters.setCustomConstraint(R.string.not_for_password_quality);
270+
minNumeric.setCustomConstraint(R.string.not_for_password_quality);
271+
minLower.setCustomConstraint(R.string.not_for_password_quality);
272+
minUpper.setCustomConstraint(R.string.not_for_password_quality);
273+
minSymbols.setCustomConstraint(R.string.not_for_password_quality);
274+
minNonLetter.setCustomConstraint(R.string.not_for_password_quality);
275275
}
276276
}
277277

278-
/**
279-
* Enable the preference and display the value in the summary.
280-
*/
281-
private void enableEditTextPreference(EditTextPreference preference) {
282-
preference.setEnabled(true);
283-
preference.setSummary(preference.getText());
284-
}
285-
286278
/**
287279
* Set an initial value. Updates the summary to match.
288280
*/
Lines changed: 56 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
<?xml version="1.0" encoding="utf-8"?>
2-
<!--
1+
<?xml version="1.0" encoding="utf-8"?><!--
32
Copyright (C) 2016 The Android Open Source Project
43
54
Licensed under the Apache License, Version 2.0 (the "License");
@@ -15,56 +14,68 @@
1514
limitations under the License.
1615
-->
1716

18-
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
17+
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
18+
xmlns:testdpc="http://schemas.android.com/apk/res/com.afwsamples.testdpc">
1919

2020
<PreferenceCategory android:title="@string/password_expiration">
21-
<EditTextPreference
22-
android:title="@string/password_expiration_seconds"
23-
android:key="password_expiration_time"
24-
android:inputType="number"/>
21+
<com.afwsamples.testdpc.common.preference.DpcEditTextPreference
22+
android:inputType="number"
23+
android:key="password_expiration_time"
24+
android:title="@string/password_expiration_seconds"
25+
testdpc:minSdkVersion="L" />
2526

2627
<!-- Not a real preference- shows the aggregate password expiration time for all admins. -->
27-
<Preference
28-
android:title="@string/password_expiration_aggregate"
29-
android:key="password_expiration_aggregate"
30-
android:selectable="false"/>
31-
<EditTextPreference
32-
android:title="@string/password_history_length"
28+
<com.afwsamples.testdpc.common.preference.DpcPreference
29+
android:key="password_expiration_aggregate"
30+
android:selectable="false"
31+
android:title="@string/password_expiration_aggregate"
32+
testdpc:minSdkVersion="L" />
33+
<com.afwsamples.testdpc.common.preference.DpcEditTextPreference
34+
android:inputType="number"
3335
android:key="password_history_length"
34-
android:inputType="number"/>
36+
android:title="@string/password_history_length"
37+
testdpc:minSdkVersion="L" />
3538
</PreferenceCategory>
3639

3740
<PreferenceCategory android:title="@string/password_constraints">
38-
<ListPreference
39-
android:title="@string/minimum_password_quality"
40-
android:key="minimum_password_quality"/>
41-
<EditTextPreference
42-
android:title="@string/password_min_length"
43-
android:key="password_min_length"
44-
android:inputType="number"/>
45-
<EditTextPreference
46-
android:title="@string/password_min_letters"
47-
android:key="password_min_letters"
48-
android:inputType="number"/>
49-
<EditTextPreference
50-
android:title="@string/password_min_numeric"
51-
android:key="password_min_numeric"
52-
android:inputType="number"/>
53-
<EditTextPreference
54-
android:title="@string/password_min_lowercase"
55-
android:key="password_min_lowercase"
56-
android:inputType="number"/>
57-
<EditTextPreference
58-
android:title="@string/password_min_uppercase"
59-
android:key="password_min_uppercase"
60-
android:inputType="number"/>
61-
<EditTextPreference
62-
android:title="@string/password_min_symbols"
63-
android:key="password_min_symbols"
64-
android:inputType="number"/>
65-
<EditTextPreference
66-
android:title="@string/password_min_nonletter"
67-
android:key="password_min_nonletter"
68-
android:inputType="number"/>
41+
<com.afwsamples.testdpc.common.preference.DpcListPreference
42+
android:key="minimum_password_quality"
43+
android:title="@string/minimum_password_quality"
44+
testdpc:minSdkVersion="L" />
45+
<com.afwsamples.testdpc.common.preference.DpcEditTextPreference
46+
android:inputType="number"
47+
android:key="password_min_length"
48+
android:title="@string/password_min_length"
49+
testdpc:minSdkVersion="L" />
50+
<com.afwsamples.testdpc.common.preference.DpcEditTextPreference
51+
android:inputType="number"
52+
android:key="password_min_letters"
53+
android:title="@string/password_min_letters"
54+
testdpc:minSdkVersion="L" />
55+
<com.afwsamples.testdpc.common.preference.DpcEditTextPreference
56+
android:inputType="number"
57+
android:key="password_min_numeric"
58+
android:title="@string/password_min_numeric"
59+
testdpc:minSdkVersion="L" />
60+
<com.afwsamples.testdpc.common.preference.DpcEditTextPreference
61+
android:inputType="number"
62+
android:key="password_min_lowercase"
63+
android:title="@string/password_min_lowercase"
64+
testdpc:minSdkVersion="L" />
65+
<com.afwsamples.testdpc.common.preference.DpcEditTextPreference
66+
android:inputType="number"
67+
android:key="password_min_uppercase"
68+
android:title="@string/password_min_uppercase"
69+
testdpc:minSdkVersion="L" />
70+
<com.afwsamples.testdpc.common.preference.DpcEditTextPreference
71+
android:inputType="number"
72+
android:key="password_min_symbols"
73+
android:title="@string/password_min_symbols"
74+
testdpc:minSdkVersion="L" />
75+
<com.afwsamples.testdpc.common.preference.DpcEditTextPreference
76+
android:inputType="number"
77+
android:key="password_min_nonletter"
78+
android:title="@string/password_min_nonletter"
79+
testdpc:minSdkVersion="L" />
6980
</PreferenceCategory>
7081
</PreferenceScreen>

0 commit comments

Comments
 (0)