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

Commit 7a49b782 authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 4994968 from 8cafac18 to qt-release

Change-Id: Ifcb9f85bd1b8c395d406fdbbe8a34d90f57d70b7
parents 25291834 8cafac18
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.documentsui.dirlist;

import android.content.Context;
import android.database.Cursor;
import android.graphics.Rect;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
@@ -39,6 +40,8 @@ public abstract class DocumentHolder
        extends RecyclerView.ViewHolder implements View.OnKeyListener {

    static final float DISABLED_ALPHA = 0.3f;
    private static final int[] sCoord = new int[2];
    private static final Rect sViewRect = new Rect();

    protected final Context mContext;

@@ -151,4 +154,17 @@ public abstract class DocumentHolder
    static ViewPropertyAnimator fade(ImageView view, float alpha) {
        return view.animate().setDuration(Shared.CHECK_ANIMATION_DURATION).alpha(alpha);
    }

    static boolean isTouchInViewRegion(View view, MotionEvent event) {
        if (view == null || event == null || !view.isAttachedToWindow()) {
            return false;
        }

        view.getLocationOnScreen(sCoord);

        sViewRect.set(sCoord[0], sCoord[1], sCoord[0] + view.getMeasuredWidth(),
                sCoord[1] + view.getMeasuredHeight());

        return sViewRect.contains((int) event.getRawX(), (int) event.getRawY());
    }
}
+1 −4
Original line number Diff line number Diff line
@@ -69,10 +69,7 @@ final class GridDirectoryHolder extends DocumentHolder {

    @Override
    public boolean inSelectRegion(MotionEvent event) {
        Rect iconRect = new Rect();
        mIconLayout.getGlobalVisibleRect(iconRect);

        return iconRect.contains((int) event.getRawX(), (int) event.getRawY());
        return DocumentHolder.isTouchInViewRegion(mIconLayout, event);
    }

    /**
+1 −4
Original line number Diff line number Diff line
@@ -120,10 +120,7 @@ final class GridDocumentHolder extends DocumentHolder {

    @Override
    public boolean inSelectRegion(MotionEvent event) {
        Rect iconRect = new Rect();
        mIconLayout.getGlobalVisibleRect(iconRect);

        return iconRect.contains((int) event.getRawX(), (int) event.getRawY());
        return DocumentHolder.isTouchInViewRegion(mIconLayout, event);
    }

    /**
+1 −4
Original line number Diff line number Diff line
@@ -140,10 +140,7 @@ final class ListDocumentHolder extends DocumentHolder {

    @Override
    public boolean inSelectRegion(MotionEvent event) {
        Rect iconRect = new Rect();
        mIconLayout.getGlobalVisibleRect(iconRect);

        return iconRect.contains((int) event.getRawX(), (int) event.getRawY());
        return DocumentHolder.isTouchInViewRegion(mIconLayout, event);
    }

    /**
+27 −8
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import com.android.documentsui.base.Features;
import com.android.documentsui.clipping.UrisSupplier;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;

import javax.annotation.Nullable;
@@ -55,6 +56,8 @@ public final class DeleteJob extends ResolvedResourcesJob {

    private final Messenger mMessenger;

    private final ArrayList<Uri> mDeletionFailedUris = new ArrayList<>();

    /**
     * Moves files to a destination identified by {@code destination}.
     * Performs most work by delegating to CopyJob, then deleting
@@ -67,6 +70,21 @@ public final class DeleteJob extends ResolvedResourcesJob {
        super(service, listener, id, OPERATION_DELETE, stack, srcs, features);
        mParentUri = srcParent;
        mMessenger = messenger;
        initDeletionFailedUrisList();
    }

    private void initDeletionFailedUrisList() {
        Iterable<Uri> uris;
        try {
            uris = mResourceUris.getUris(appContext);
        } catch (IOException e) {
            Log.e(TAG, "Failed to read list of target resource Uris.", e);
            failureCount = this.mResourceUris.getItemCount();
            return;
        }
        for (Uri uri : uris) {
            mDeletionFailedUris.add(uri);
        }
    }

    @Override
@@ -125,6 +143,7 @@ public final class DeleteJob extends ResolvedResourcesJob {
            if (DEBUG) Log.d(TAG, "Deleting document @ " + doc.derivedUri);
            try {
                deleteDocument(doc, parentDoc);
                mDeletionFailedUris.remove(doc.derivedUri);
            } catch (ResourceException e) {
                Metrics.logFileOperationFailure(
                        appContext, Metrics.SUBFILEOP_DELETE_DOCUMENT, doc.derivedUri);
@@ -147,15 +166,15 @@ public final class DeleteJob extends ResolvedResourcesJob {
        try {
            Message message = Message.obtain();
            message.what = MESSAGE_FINISH;
            message.arg1 = failureCount;
            if (failureCount > 0 && failureCount < mResourceUris.getItemCount()) {
            // If the size of mDeletionFailedUris is 0, it means either 1). all deletions succeeded
            // or 2). reading all uris from mResourceUris failed. For case 2). We also need to check
            // the failureCount to get the correct count.
            message.arg1 = mDeletionFailedUris.size() == 0
                    ? (failureCount == mResourceUris.getItemCount() ? failureCount : 0)
                    : mDeletionFailedUris.size();
            if (message.arg1 > 0 && message.arg1 < mResourceUris.getItemCount()) {
                Bundle b = new Bundle();
                ArrayList<Uri> uris = new ArrayList<>();
                uris.addAll(failedUris);
                for (DocumentInfo documentInfo : failedDocs) {
                    uris.add(documentInfo.derivedUri);
                }
                b.putParcelableArrayList(KEY_FAILED_URIS, uris);
                b.putParcelableArrayList(KEY_FAILED_URIS, mDeletionFailedUris);
                message.setData(b);
            }
            mMessenger.send(message);