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:
@@ -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 {
|
||||||
|
@@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user