Avoid checking the restricted items in the list.

Since we are not auto-closing the dialog any more, need to
make sure the restricted item in not checked when selected by user.

Change-Id: I7c02844d3071ae62222cdbdbda96780bd5d922de
This commit is contained in:
Sudheer Shanka
2016-03-04 13:53:24 -08:00
parent 9566ceb122
commit 54dc9d52d0
2 changed files with 35 additions and 2 deletions

View File

@@ -25,10 +25,12 @@ import android.support.v7.preference.PreferenceViewHolder;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.CheckedTextView; import android.widget.CheckedTextView;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.ListAdapter; import android.widget.ListAdapter;
import android.widget.ListView;
import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedPreferenceHelper; import com.android.settingslib.RestrictedPreferenceHelper;
@@ -118,10 +120,15 @@ public class RestrictedListPreference extends CustomListPreference {
} }
protected ListAdapter createListAdapter() { protected ListAdapter createListAdapter() {
return new RestrictedArrayAdapter(getContext(), getEntries(),
getSelectedValuePos());
}
public int getSelectedValuePos() {
final String selectedValue = getValue(); final String selectedValue = getValue();
final int selectedIndex = final int selectedIndex =
(selectedValue == null) ? -1 : findIndexOfValue(selectedValue); (selectedValue == null) ? -1 : findIndexOfValue(selectedValue);
return new RestrictedArrayAdapter(getContext(), getEntries(), selectedIndex); return selectedIndex;
} }
@Override @Override
@@ -173,6 +180,8 @@ public class RestrictedListPreference extends CustomListPreference {
public static class RestrictedListPreferenceDialogFragment extends public static class RestrictedListPreferenceDialogFragment extends
CustomListPreference.CustomListPreferenceDialogFragment { CustomListPreference.CustomListPreferenceDialogFragment {
private int mLastCheckedPosition = AdapterView.INVALID_POSITION;
public static ListPreferenceDialogFragment newInstance(String key) { public static ListPreferenceDialogFragment newInstance(String key) {
final ListPreferenceDialogFragment fragment final ListPreferenceDialogFragment fragment
= new RestrictedListPreferenceDialogFragment(); = new RestrictedListPreferenceDialogFragment();
@@ -197,6 +206,8 @@ public class RestrictedListPreference extends CustomListPreference {
String entryValue = preference.getEntryValues()[which].toString(); String entryValue = preference.getEntryValues()[which].toString();
RestrictedItem item = preference.getRestrictedItemForEntryValue(entryValue); RestrictedItem item = preference.getRestrictedItemForEntryValue(entryValue);
if (item != null) { if (item != null) {
ListView listView = ((AlertDialog) dialog).getListView();
listView.setItemChecked(getLastCheckedPosition(), true);
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getContext(), RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getContext(),
item.enforcedAdmin); item.enforcedAdmin);
} else { } else {
@@ -215,6 +226,24 @@ public class RestrictedListPreference extends CustomListPreference {
} }
}; };
} }
private int getLastCheckedPosition() {
if (mLastCheckedPosition == AdapterView.INVALID_POSITION) {
mLastCheckedPosition = ((RestrictedListPreference) getCustomizablePreference())
.getSelectedValuePos();
}
return mLastCheckedPosition;
}
private void setCheckedPosition(int checkedPosition) {
mLastCheckedPosition = checkedPosition;
}
@Override
protected void setClickedDialogEntryIndex(int which) {
super.setClickedDialogEntryIndex(which);
mLastCheckedPosition = which;
}
} }
public static class RestrictedItem { public static class RestrictedItem {

View File

@@ -29,6 +29,7 @@ import android.view.View;
import android.widget.CheckBox; import android.widget.CheckBox;
import android.widget.CompoundButton; import android.widget.CompoundButton;
import android.widget.ListAdapter; import android.widget.ListAdapter;
import android.widget.ListView;
public class NotificationLockscreenPreference extends RestrictedListPreference { public class NotificationLockscreenPreference extends RestrictedListPreference {
@@ -101,8 +102,11 @@ public class NotificationLockscreenPreference extends RestrictedListPreference {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
mInner.onClick(dialog, which); mInner.onClick(dialog, which);
ListView listView = ((AlertDialog) dialog).getListView();
int selectedPosition = listView.getCheckedItemPosition();
if (mView != null) { if (mView != null) {
mView.setVisibility(checkboxVisibilityForSelectedIndex(which, mShowRemoteInput)); mView.setVisibility(
checkboxVisibilityForSelectedIndex(selectedPosition, mShowRemoteInput));
} }
} }