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

Commit 34716e9d authored by Austin Tankiang's avatar Austin Tankiang
Browse files

Implement "Show in folder" button in job progress item

Bug: 415883222
Test: atest 'DocumentsUIGoogleTests:com.android.documentsui.AbstractActionHandlerTest'
Test: atest 'DocumentsUIGoogleTests:com.android.documentsui.JobPanelUiTest'
Flag: com.android.documentsui.flags.visual_signals_ro
Change-Id: I370e2c5eb0be25386a77c86b3763f06ed91ed1f1
parent cfff4f1d
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -276,6 +276,14 @@ public abstract class AbstractActionHandler<T extends FragmentActivity & CommonA
        throw new UnsupportedOperationException("Can't spring open directories.");
    }

    @Override
    public void jumpToDirectory(DocumentStack stack) {
        // reset() takes ownership of the passed in stack's document list, so we need to make a copy
        // first.
        mState.stack.reset(new DocumentStack(stack));
        mActivity.refreshCurrentRootAndDirectory(AnimationView.ANIM_NONE);
    }

    @Override
    public void openSettings(RootInfo root) {
        throw new UnsupportedOperationException("Can't open settings.");
+5 −0
Original line number Diff line number Diff line
@@ -141,6 +141,11 @@ public interface ActionHandler {
     */
    void springOpenDirectory(DocumentInfo doc);

    /**
     * Replaces the existing stack with the given stack.
     */
    void jumpToDirectory(DocumentStack stack);

    void showChooserForDoc(DocumentInfo doc);

    void openRootDocument(@Nullable DocumentInfo rootDoc);
+22 −3
Original line number Diff line number Diff line
@@ -79,6 +79,7 @@ private class VerticalMarginItemDecoration(
 */
class JobPanelController(
    private val activityContext: Context,
    private val actions: ActionHandler,
    private val viewModel: JobPanelViewModel,
) : BroadcastReceiver(),
    DefaultLifecycleObserver {
@@ -140,12 +141,25 @@ class JobPanelController(
            toggleExpandButton.setOnClickListener { controller.toggleExpanded(jobProgress.id) }

            cancelButton.isVisible = expanded && !jobProgress.isFinal
            showInFolderButton.isVisible = expanded && jobProgress.isFinal
            dismissButton.isVisible = expanded && jobProgress.isFinal
            if (cancelButton.isVisible) {
                cancelButton.setOnClickListener { FileOperations.cancel(context, jobProgress.id) }
            }

            dismissButton.isVisible = expanded && jobProgress.isFinal
            if (dismissButton.isVisible) {
                dismissButton.setOnClickListener { controller.dismissProgress(jobProgress.id) }
            }

            if (expanded && jobProgress.isFinal && jobProgress.destination != null) {
                showInFolderButton.isVisible = true
                showInFolderButton.setOnClickListener {
                    controller.showInFolder(jobProgress)
                }
            } else {
                showInFolderButton.isVisible = false
            }
        }

        private fun updateProgressBar(jobProgress: JobProgress) {
            progressView.let {
                it.isGone = jobProgress.isFinal
@@ -395,4 +409,9 @@ class JobPanelController(
        viewModel.toggleExpanded(id)
        progressListAdapter?.submitList(ArrayList(viewModel.currentJobs.values))
    }

    private fun showInFolder(jobProgress: JobProgress) {
        actions.jumpToDirectory(jobProgress.destination)
        popup?.dismiss()
    }
}
+8 −6
Original line number Diff line number Diff line
@@ -147,12 +147,6 @@ public class FilesActivity extends BaseActivity implements AbstractActionHandler
                mProviders::getApplicationName,
                mInjector.getModel()::getItemUri,
                mInjector.getModel()::getItemCount);
        if (isVisualSignalsFlagEnabled()) {
            JobPanelController jobPanelController = new JobPanelController(this,
                    new ViewModelProvider(this).get(JobPanelViewModel.class));
            getLifecycle().addObserver(jobPanelController);
            menuManager.setJobPanelController(jobPanelController);
        }
        mInjector.menuManager = menuManager;

        if (isUseMaterial3FlagEnabled()) {
@@ -192,6 +186,14 @@ public class FilesActivity extends BaseActivity implements AbstractActionHandler
                        mPeekViewManager,
                        mInjector);

        if (isVisualSignalsFlagEnabled()) {
            JobPanelController jobPanelController = new JobPanelController(this,
                    mInjector.actions,
                    new ViewModelProvider(this).get(JobPanelViewModel.class));
            getLifecycle().addObserver(jobPanelController);
            menuManager.setJobPanelController(jobPanelController);
        }

        mInjector.searchManager = mSearchManager;

        // No profile tabs will be shown on FilesActivity. Use a stub to avoid unnecessary
+3 −1
Original line number Diff line number Diff line
@@ -221,7 +221,8 @@ class CopyJob extends ResolvedResourcesJob {
                    operationType,
                    getState(),
                    getProgressMessage(),
                    hasFailures());
                    hasFailures(),
                    stack);
        }
        mProgressTracker.updateEstimateRemainingTime();
        return new JobProgress(
@@ -230,6 +231,7 @@ class CopyJob extends ResolvedResourcesJob {
                getState(),
                getProgressMessage(),
                hasFailures(),
                stack,
                mProgressTracker.getCurrentBytes(),
                mProgressTracker.getRequiredBytes(),
                mProgressTracker.getRemainingTimeEstimate());
Loading