Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 54dc9d52 authored by Sudheer Shanka's avatar Sudheer Shanka
Browse files

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
parent 9566ceb1
Loading
Loading
Loading
Loading
+30 −1
Original line number Diff line number Diff line
@@ -25,10 +25,12 @@ import android.support.v7.preference.PreferenceViewHolder;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CheckedTextView;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.ListView;

import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedPreferenceHelper;
@@ -118,10 +120,15 @@ public class RestrictedListPreference extends CustomListPreference {
    }

    protected ListAdapter createListAdapter() {
        return new RestrictedArrayAdapter(getContext(), getEntries(),
                getSelectedValuePos());
    }

    public int getSelectedValuePos() {
        final String selectedValue = getValue();
        final int selectedIndex =
                (selectedValue == null) ? -1 : findIndexOfValue(selectedValue);
        return new RestrictedArrayAdapter(getContext(), getEntries(), selectedIndex);
        return selectedIndex;
    }

    @Override
@@ -173,6 +180,8 @@ public class RestrictedListPreference extends CustomListPreference {

    public static class RestrictedListPreferenceDialogFragment extends
            CustomListPreference.CustomListPreferenceDialogFragment {
        private int mLastCheckedPosition = AdapterView.INVALID_POSITION;

        public static ListPreferenceDialogFragment newInstance(String key) {
            final ListPreferenceDialogFragment fragment
                    = new RestrictedListPreferenceDialogFragment();
@@ -197,6 +206,8 @@ public class RestrictedListPreference extends CustomListPreference {
                    String entryValue = preference.getEntryValues()[which].toString();
                    RestrictedItem item = preference.getRestrictedItemForEntryValue(entryValue);
                    if (item != null) {
                        ListView listView = ((AlertDialog) dialog).getListView();
                        listView.setItemChecked(getLastCheckedPosition(), true);
                        RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getContext(),
                                item.enforcedAdmin);
                    } 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 {
+5 −1
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ListAdapter;
import android.widget.ListView;

public class NotificationLockscreenPreference extends RestrictedListPreference {

@@ -101,8 +102,11 @@ public class NotificationLockscreenPreference extends RestrictedListPreference {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            mInner.onClick(dialog, which);
            ListView listView = ((AlertDialog) dialog).getListView();
            int selectedPosition = listView.getCheckedItemPosition();
            if (mView != null) {
                mView.setVisibility(checkboxVisibilityForSelectedIndex(which, mShowRemoteInput));
                mView.setVisibility(
                        checkboxVisibilityForSelectedIndex(selectedPosition, mShowRemoteInput));
            }
        }