Android Open Source - MaterialManager Base File Cab






From Project

Back to project page MaterialManager.

License

The source code is released under:

There is no license, someone decided to pretty much republish Cabinet with no credit so I?m taking away the license altogether.

If you think the Android project MaterialManager listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.afollestad.cabinet.cab.base;
/*from w  w w.  jav  a 2s.  c  om*/
import android.support.v7.view.ActionMode;
import android.util.Log;
import android.view.Menu;

import com.afollestad.cabinet.R;
import com.afollestad.cabinet.file.base.File;
import com.afollestad.cabinet.fragments.DirectoryFragment;

import java.util.ArrayList;
import java.util.List;

public abstract class BaseFileCab extends BaseCab {

    public enum PasteMode {
        ENABLED,
        NOT_AVAILABLE,
        DISABLED
    }

    public BaseFileCab() {
        super();
        mFiles = new ArrayList<File>();
    }

    private File mDirectory;
    private final List<File> mFiles;
    public transient boolean overrideDestroy;

    public abstract boolean canShowFab();

    public abstract void paste();

    public abstract PasteMode canPaste();

    public abstract boolean canPasteIntoSameDir();

    @Override
    public final boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
        boolean result = super.onCreateActionMode(actionMode, menu);
        invalidateFab();
        return result;
    }

    public BaseFileCab invalidateFab() {
        Log.v("Fab", "invalidateFab()");
        boolean hide = false;
        if (!canShowFab() && isActive()) {
            Log.v("Fab", "Cannot use the FAB in the current mode.");
            hide = true;
        } else {
            Log.v("Fab", "Mode: " + canPaste());
            getContext().fabPasteMode = canPaste();
            if (canPaste() != PasteMode.NOT_AVAILABLE) {
                if (isActive() && canPaste() == PasteMode.DISABLED) {
                    Log.v("Fab", "Can't paste");
                } else {
                    if (getFiles().size() == 0) Log.v("Fab", "No files are in the CAB");
                    if (!canPasteIntoSameDir()) {
                        for (File fi : getFiles()) {
                            Log.v("Fab", "Checking if " + fi.getParent().getPath() + " == " + getDirectory().getPath());
                            if (fi.getParent().equals(getDirectory())) {
                                Log.v("Fab", "They are equal");
                                hide = true;
                                break;
                            }
                        }
                    }
                }
                if (hide) Log.v("Fab", "Fab is disabled");
                else Log.v("Fab", "Fab is not disabled");
            } else Log.v("Fab", "Paste mode not available");
        }
        getContext().disableFab(hide);
        getContext().fab.setImageResource(canPaste() == BaseFileCab.PasteMode.ENABLED ? R.drawable.ic_paste : R.drawable.ic_action_content_new);
        return this;
    }

    @Override
    public BaseFileCab setFragment(DirectoryFragment fragment) {
        mDirectory = fragment.getDirectory();
        super.setFragment(fragment);
        invalidateFab();
        return this;
    }

    public final BaseFileCab addFile(File file) {
        getFragment().mAdapter.setItemChecked(file, true);
        mFiles.add(file);
        invalidate();
        return this;
    }

    public final BaseFileCab addFiles(List<File> files) {
        getFragment().mAdapter.setItemsChecked(files, true);
        mFiles.addAll(files);
        invalidate();
        return this;
    }

    public final int findFile(File file) {
        for (int i = 0; i < getFiles().size(); i++) {
            if (getFiles().get(i).equals(file)) {
                return i;
            }
        }
        return -1;
    }

    public final void setFile(int index, File file) {
        // Uncheck old file
        getFragment().mAdapter.setItemChecked(getFiles().get(index), false);
        // Replace old file with new one
        getFiles().set(index, file);
        // Check new file
        getFragment().mAdapter.setItemChecked(file, true);
        invalidate();
    }

    public final BaseFileCab removeFile(File file) {
        getFragment().mAdapter.setItemChecked(file, false);
        for (int i = 0; i < mFiles.size(); i++) {
            if (file.getPath().equals(mFiles.get(i).getPath())) {
                mFiles.remove(i);
                invalidate();
                break;
            }
        }
        return this;
    }

    public final BaseFileCab setFile(File file) {
        getFragment().mAdapter.resetChecked();
        getFragment().mAdapter.setItemChecked(file, true);
        clearFiles();
        mFiles.add(file);
        invalidate();
        return this;
    }

    public final BaseFileCab setFiles(List<File> files) {
        getFragment().mAdapter.resetChecked();
        getFragment().mAdapter.setItemsChecked(files, true);
        clearFiles();
        mFiles.addAll(files);
        invalidate();
        return this;
    }

    public final void clearFiles() {
        mFiles.clear();
    }

    public final boolean containsFile(File file) {
        for (File fi : mFiles) {
            if (fi.equals(file)) return true;
        }
        return false;
    }

    @Override
    public final void invalidate() {
        if (getFiles().size() == 0) finish();
        else super.invalidate();
    }

    public final File getDirectory() {
        return mDirectory;
    }

    public final List<File> getFiles() {
        return mFiles;
    }

    @Override
    public int getMenu() {
        return -1;
    }

    @Override
    public void onDestroyActionMode(ActionMode actionMode) {
        if (!overrideDestroy) {
            clearFiles();
            getFragment().mAdapter.resetChecked();
            if (canPaste() == PasteMode.ENABLED) {
                getContext().fabPasteMode = PasteMode.DISABLED;
                getContext().fab.setImageResource(R.drawable.ic_action_content_new);
            }
        }
        getContext().disableFab(false);
        super.onDestroyActionMode(actionMode);
    }
}




Java Source Code List

com.afollestad.cabinet.App.java
com.afollestad.cabinet.ApplicationTest.java
com.afollestad.cabinet.adapters.FileAdapter.java
com.afollestad.cabinet.adapters.NavigationDrawerAdapter.java
com.afollestad.cabinet.cab.CopyCab.java
com.afollestad.cabinet.cab.CutCab.java
com.afollestad.cabinet.cab.MainCab.java
com.afollestad.cabinet.cab.PickerCab.java
com.afollestad.cabinet.cab.base.BaseCab.java
com.afollestad.cabinet.cab.base.BaseFileCab.java
com.afollestad.cabinet.comparators.AlphabeticalComparator.java
com.afollestad.cabinet.comparators.ExtensionComparator.java
com.afollestad.cabinet.comparators.FoldersFirstComparator.java
com.afollestad.cabinet.comparators.HighLowSizeComparator.java
com.afollestad.cabinet.comparators.LastModifiedComparator.java
com.afollestad.cabinet.comparators.LowHighSizeComparator.java
com.afollestad.cabinet.file.CloudFile.java
com.afollestad.cabinet.file.LocalFile.java
com.afollestad.cabinet.file.Remote.java
com.afollestad.cabinet.file.base.FileFilter.java
com.afollestad.cabinet.file.base.File.java
com.afollestad.cabinet.file.root.LsParser.java
com.afollestad.cabinet.file.root.LsTokenizer.java
com.afollestad.cabinet.file.root.RootFile.java
com.afollestad.cabinet.fragments.AboutDialog.java
com.afollestad.cabinet.fragments.DetailsDialog.java
com.afollestad.cabinet.fragments.DirectoryFragment.java
com.afollestad.cabinet.fragments.NavigationDrawerFragment.java
com.afollestad.cabinet.fragments.RemoteConnectionDialog.java
com.afollestad.cabinet.fragments.WelcomeFragment.java
com.afollestad.cabinet.services.NetworkService.java
com.afollestad.cabinet.sftp.FileNotExistsException.java
com.afollestad.cabinet.sftp.SftpClient.java
com.afollestad.cabinet.ui.DrawerActivity.java
com.afollestad.cabinet.ui.SettingsActivity.java
com.afollestad.cabinet.ui.TextEditor.java
com.afollestad.cabinet.ui.base.NetworkedActivity.java
com.afollestad.cabinet.ui.base.ThemableActivity.java
com.afollestad.cabinet.utils.APKIconDownloader.java
com.afollestad.cabinet.utils.PauseOnScrollListener.java
com.afollestad.cabinet.utils.Perm.java
com.afollestad.cabinet.utils.Pins.java
com.afollestad.cabinet.utils.StorageHelper.java
com.afollestad.cabinet.utils.ThemeUtils.java
com.afollestad.cabinet.utils.TimeUtils.java
com.afollestad.cabinet.utils.Utils.java
com.afollestad.cabinet.zip.Unzipper.java
com.afollestad.cabinet.zip.Zipper.java
eu.chainfire.libsuperuser.ApplicationTest.java
eu.chainfire.libsuperuser.Application.java
eu.chainfire.libsuperuser.Debug.java
eu.chainfire.libsuperuser.HideOverlaysReceiver.java
eu.chainfire.libsuperuser.ShellNotClosedException.java
eu.chainfire.libsuperuser.ShellOnMainThreadException.java
eu.chainfire.libsuperuser.Shell.java
eu.chainfire.libsuperuser.StreamGobbler.java