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

Commit 28f3e484 authored by Zemiao Zhu's avatar Zemiao Zhu
Browse files

Show a snackbar when user taps on disabled button in OPEN_DOCUMENT_TREE

flow.

Bug: 147639978
Test: manual
Change-Id: I4e56900e6aff47cdc8990d5dee292abf57bb0326
parent b2e3a2ff
Loading
Loading
Loading
Loading
+20 −7
Original line number Diff line number Diff line
@@ -32,6 +32,10 @@
        android:layout_marginEnd="4dp"
        android:text="@android:string/cancel"/>

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <com.google.android.material.button.MaterialButton
            android:id="@android:id/button1"
            style="?attr/materialButtonStyle"
@@ -39,4 +43,13 @@
            android:layout_height="wrap_content"
            android:layout_marginStart="4dp"
            android:layout_marginEnd="4dp"/>

        <!-- Handles touch events when button1 is disabled. -->
        <FrameLayout
            android:id="@+id/pick_button_overlay"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

    </FrameLayout>

</LinearLayout>
+18 −4
Original line number Diff line number Diff line
@@ -28,7 +28,6 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
@@ -41,6 +40,9 @@ import com.android.documentsui.R;
import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.State;
import com.android.documentsui.services.FileOperationService.OpType;
import com.android.documentsui.ui.Snackbars;

import com.google.android.material.snackbar.Snackbar;

/**
 * Display pick confirmation bar, usually for selecting a directory.
@@ -56,7 +58,12 @@ public class PickFragment extends Fragment {
    private final View.OnClickListener mPickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (mPick.isEnabled()) {
                mInjector.actions.pickDocument(getChildFragmentManager(), mPickTarget);
            } else {
                String msg = getResources().getString(R.string.directory_blocked_header_subtitle);
                Snackbars.makeSnackbar(getActivity(), msg, Snackbar.LENGTH_SHORT).show();
            }
        }
    };

@@ -78,8 +85,9 @@ public class PickFragment extends Fragment {
    private @OpType int mCopyOperationSubType = OPERATION_UNKNOWN;
    private DocumentInfo mPickTarget;
    private View mContainer;
    private TextView mPick;
    private TextView mCancel;
    private View mPickOverlay;
    private Button mPick;
    private Button mCancel;

    public static void show(FragmentManager fm) {
        // Fragment can be restored by FragmentManager automatically.
@@ -103,6 +111,8 @@ public class PickFragment extends Fragment {
        mContainer = inflater.inflate(R.layout.fragment_pick, container, false);

        mPick = (Button) mContainer.findViewById(android.R.id.button1);
        mPickOverlay = mContainer.findViewById((R.id.pick_button_overlay));
        mPickOverlay.setOnClickListener(mPickListener);
        mPick.setOnClickListener(mPickListener);

        mCancel = (Button) mContainer.findViewById(android.R.id.button2);
@@ -172,6 +182,10 @@ public class PickFragment extends Fragment {
                mPick.setWidth(Integer.MAX_VALUE);
                mCancel.setVisibility(View.GONE);
                mPick.setEnabled(!(mPickTarget.isBlockedFromTree() && mRestrictScopeStorage));
                mPickOverlay.setVisibility(
                        mPickTarget.isBlockedFromTree() && mRestrictScopeStorage
                                ? View.VISIBLE
                                : View.GONE);
                break;
            case State.ACTION_PICK_COPY_DESTINATION:
                int titleId;