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

Commit 2fd9f688 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Correctly create dialogs so they can be restored."

parents ade4372e 845a2e16
Loading
Loading
Loading
Loading
+9 −10
Original line number Diff line number Diff line
@@ -307,6 +307,9 @@ public class AppPermissionFragment extends SettingsWithButtonHeader {

    private void updateButtons() {
        Context context = getContext();
        if (context == null) {
            return;
        }

        // Reset everything to the "default" state: tri-state buttons are shown with exactly one
        // selected and no special messages.
@@ -780,10 +783,11 @@ public class AppPermissionFragment extends SettingsWithButtonHeader {
                : R.string.old_sdk_deny_warning);
        args.putInt(DefaultDenyDialog.CHANGE_TARGET, changeTarget);

        DefaultDenyDialog defaultDenyDialog = new DefaultDenyDialog(this);
        DefaultDenyDialog defaultDenyDialog = new DefaultDenyDialog();
        defaultDenyDialog.setArguments(args);
        defaultDenyDialog.setTargetFragment(this, 0);
        defaultDenyDialog.show(getFragmentManager().beginTransaction(),
                "denyDefault");
                DefaultDenyDialog.class.getName());
    }

    /**
@@ -834,21 +838,16 @@ public class AppPermissionFragment extends SettingsWithButtonHeader {
                + ".arg.changeTarget";
        private static final String KEY = DefaultDenyDialog.class.getName() + ".arg.key";

        private @NonNull AppPermissionFragment mFragment;

        public DefaultDenyDialog(@NonNull AppPermissionFragment fragment) {
            mFragment = fragment;
        }

        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            AppPermissionFragment fragment = (AppPermissionFragment) getTargetFragment();
            AlertDialog.Builder b = new AlertDialog.Builder(getContext())
                    .setMessage(getArguments().getInt(MSG))
                    .setNegativeButton(R.string.cancel,
                            (DialogInterface dialog, int which) -> mFragment.updateButtons())
                            (DialogInterface dialog, int which) -> fragment.updateButtons())
                    .setPositiveButton(R.string.grant_dialog_button_deny_anyway,
                            (DialogInterface dialog, int which) ->
                                    mFragment.onDenyAnyWay(getArguments().getInt(CHANGE_TARGET)));
                                    fragment.onDenyAnyWay(getArguments().getInt(CHANGE_TARGET)));

            return b.create();
        }
+11 −13
Original line number Diff line number Diff line
@@ -91,7 +91,7 @@ public class PermissionUsageFragment extends SettingsWithButtonHeader implements
    private static final String KEY_SHOW_SYSTEM_PREFS = "_show_system";
    private static final String SHOW_SYSTEM_KEY = PermissionUsageFragment.class.getName()
            + KEY_SHOW_SYSTEM_PREFS;
    private static final String KEY_PERMS_INDEX = "_time_index";
    private static final String KEY_PERMS_INDEX = "_perms_index";
    private static final String PERMS_INDEX_KEY = PermissionUsageFragment.class.getName()
            + KEY_PERMS_INDEX;
    private static final String KEY_SPINNER_TIME_INDEX = "_time_index";
@@ -839,9 +839,12 @@ public class PermissionUsageFragment extends SettingsWithButtonHeader implements
                context.getString(R.string.filter_by_title));
        args.putCharSequenceArray(PermissionsFilterDialog.ELEMS, groupLabels);
        args.putInt(PermissionsFilterDialog.SELECTION, selection);
        PermissionsFilterDialog chooserDialog = new PermissionsFilterDialog(this, groupNames);
        args.putStringArray(PermissionsFilterDialog.GROUPS, groupNames);
        PermissionsFilterDialog chooserDialog = new PermissionsFilterDialog();
        chooserDialog.setArguments(args);
        chooserDialog.show(getChildFragmentManager().beginTransaction(), "backgroundChooser");
        chooserDialog.setTargetFragment(this, 0);
        chooserDialog.show(getFragmentManager().beginTransaction(),
                PermissionsFilterDialog.class.getName());
    }

    /**
@@ -866,25 +869,20 @@ public class PermissionUsageFragment extends SettingsWithButtonHeader implements
        private static final String ELEMS = PermissionsFilterDialog.class.getName() + ".arg.elems";
        private static final String SELECTION = PermissionsFilterDialog.class.getName()
                + ".arg.selection";

        private @NonNull PermissionUsageFragment mFragment;
        private @NonNull String[] mGroups;

        public PermissionsFilterDialog(@NonNull PermissionUsageFragment fragment,
                @NonNull String[] groups) {
            mFragment = fragment;
            mGroups = groups;
        }
        private static final String GROUPS = PermissionsFilterDialog.class.getName()
                + ".arg.groups";

        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            PermissionUsageFragment fragment = (PermissionUsageFragment) getTargetFragment();
            CharSequence[] elems = getArguments().getCharSequenceArray(ELEMS);
            String[] groups = getArguments().getStringArray(GROUPS);
            AlertDialog.Builder b = new AlertDialog.Builder(getActivity())
                    .setTitle(getArguments().getCharSequence(TITLE))
                    .setSingleChoiceItems(elems, getArguments().getInt(SELECTION),
                            (dialog, which) -> {
                                dismissAllowingStateLoss();
                                mFragment.onPermissionGroupSelected(mGroups[which]);
                                fragment.onPermissionGroupSelected(groups[which]);
                            }
                    );