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

Commit 25240f01 authored by Austin Tankiang's avatar Austin Tankiang Committed by Android (Google) Code Review
Browse files

Merge "Implement "Show in folder" button in job progress item" into main

parents 073ebce4 34716e9d
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
@@ -146,12 +146,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()) {
@@ -191,6 +185,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