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

Commit 5044988c authored by Nicolas Prevot's avatar Nicolas Prevot
Browse files

Disable "Always" option for intents targetting non-current user.

In ResolverActivity, if a ResolveInfo is for another user:
disabling the "always" button.

Change-Id: Ib6a1a49e86e3e3546d8aaa70bfd2e8fe148281d6
parent 88cc346d
Loading
Loading
Loading
Loading
+16 −5
Original line number Diff line number Diff line
@@ -259,11 +259,11 @@ public class ResolverActivity extends AlertActivity implements AdapterView.OnIte
        super.onRestoreInstanceState(savedInstanceState);
        if (mAlwaysUseOption) {
            final int checkedPos = mListView.getCheckedItemPosition();
            final boolean enabled = checkedPos != ListView.INVALID_POSITION;
            final boolean hasValidSelection = checkedPos != ListView.INVALID_POSITION;
            mLastSelected = checkedPos;
            mAlwaysButton.setEnabled(enabled);
            mOnceButton.setEnabled(enabled);
            if (enabled) {
            setAlwaysButtonEnabled(hasValidSelection, checkedPos);
            mOnceButton.setEnabled(hasValidSelection);
            if (hasValidSelection) {
                mListView.setSelection(checkedPos);
            }
        }
@@ -274,7 +274,7 @@ public class ResolverActivity extends AlertActivity implements AdapterView.OnIte
        final int checkedPos = mListView.getCheckedItemPosition();
        final boolean hasValidSelection = checkedPos != ListView.INVALID_POSITION;
        if (mAlwaysUseOption && (!hasValidSelection || mLastSelected != checkedPos)) {
            mAlwaysButton.setEnabled(hasValidSelection);
            setAlwaysButtonEnabled(hasValidSelection, checkedPos);
            mOnceButton.setEnabled(hasValidSelection);
            if (hasValidSelection) {
                mListView.smoothScrollToPosition(checkedPos);
@@ -285,6 +285,17 @@ public class ResolverActivity extends AlertActivity implements AdapterView.OnIte
        }
    }

    private void setAlwaysButtonEnabled(boolean hasValidSelection, int checkedPos) {
        boolean enabled = false;
        if (hasValidSelection) {
            ResolveInfo ri = mAdapter.resolveInfoForPosition(checkedPos);
            if (ri.targetUserId == UserHandle.USER_CURRENT) {
                enabled = true;
            }
        }
        mAlwaysButton.setEnabled(enabled);
    }

    public void onButtonClick(View v) {
        final int id = v.getId();
        startSelected(mListView.getCheckedItemPosition(), id == R.id.button_always);