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

Commit 7d5e4db2 authored by Anna Bauza's avatar Anna Bauza Committed by Automerger Merge Worker
Browse files

Merge "fix: Avatar picker opens multiple photo picker window when tapped...

Merge "fix: Avatar picker opens multiple photo picker window when tapped quickly" into udc-dev am: 1840acde am: 6012c0ae

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22813816



Change-Id: I0568e6b93c81a1c7e0e458e9a0f0677243e63a8c
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents c70335ce 6012c0ae
Loading
Loading
Loading
Loading
+30 −11
Original line number Diff line number Diff line
@@ -108,6 +108,12 @@ public class AvatarPickerActivity extends Activity {
                mWaitingForActivityResult);
    }

    @Override
    protected void onResume() {
        super.onResume();
        mAdapter.onAdapterResume();
    }

    private void setUpButtons() {
        GlifLayout glifLayout = findViewById(R.id.glif_layout);
        FooterBarMixin mixin = glifLayout.getMixin(FooterBarMixin.class);
@@ -198,6 +204,8 @@ public class AvatarPickerActivity extends Activity {
        private final int[] mUserIconColors;
        private int mSelectedPosition = NONE;

        private int mLastSelectedPosition = NONE;

        AvatarAdapter() {
            final boolean canTakePhoto =
                    PhotoCapabilityUtils.canTakePhoto(AvatarPickerActivity.this);
@@ -226,12 +234,10 @@ public class AvatarPickerActivity extends Activity {
            if (position == mTakePhotoPosition) {
                viewHolder.setDrawable(getDrawable(R.drawable.avatar_take_photo_circled));
                viewHolder.setContentDescription(getString(R.string.user_image_take_photo));
                viewHolder.setClickListener(view -> mAvatarPhotoController.takePhoto());

            } else if (position == mChoosePhotoPosition) {
                viewHolder.setDrawable(getDrawable(R.drawable.avatar_choose_photo_circled));
                viewHolder.setContentDescription(getString(R.string.user_image_choose_photo));
                viewHolder.setClickListener(view -> mAvatarPhotoController.choosePhoto());

            } else if (position >= mPreselectedImageStartPosition) {
                int index = indexFromPosition(position);
@@ -240,17 +246,30 @@ public class AvatarPickerActivity extends Activity {
                if (mImageDescriptions != null) {
                    viewHolder.setContentDescription(mImageDescriptions.get(index));
                } else {
                    viewHolder.setContentDescription(
                            getString(R.string.default_user_icon_description));
                    viewHolder.setContentDescription(getString(
                            R.string.default_user_icon_description));
                }
            }
                viewHolder.setClickListener(view -> {
            viewHolder.setClickListener(view -> onViewHolderSelected(position));
        }

        private void onViewHolderSelected(int position) {
            if ((mTakePhotoPosition == position) && (mLastSelectedPosition != position)) {
                mAvatarPhotoController.takePhoto();
            } else if ((mChoosePhotoPosition == position) && (mLastSelectedPosition != position)) {
                mAvatarPhotoController.choosePhoto();
            } else {
                if (mSelectedPosition == position) {
                    deselect(position);
                } else {
                    select(position);
                }
                });
            }
            mLastSelectedPosition = position;
        }

        public void onAdapterResume() {
            mLastSelectedPosition = NONE;
        }

        @Override