Search in sources :

Example 1 with DirectoryLoader

use of dev.dworks.apps.anexplorer.loader.DirectoryLoader in project AnExplorer by 1hakr.

the class DirectoryFragment method onActivityCreated.

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    final Context context = getActivity();
    final State state = getDisplayState(DirectoryFragment.this);
    root = getArguments().getParcelable(EXTRA_ROOT);
    doc = getArguments().getParcelable(EXTRA_DOC);
    if (null != root && root.isSecondaryStorage() && state.action == ACTION_BROWSE) {
        if (!doc.isWriteSupported()) {
            SAFManager.takeCardUriPermission(getActivity(), root, doc);
        }
    }
    isApp = root != null && root.isApp();
    isOperationSupported = root != null && (root.isRootedStorage() || root.isUsbStorage());
    mAdapter = new DocumentsAdapter();
    mType = getArguments().getInt(EXTRA_TYPE);
    mStateKey = buildStateKey(root, doc);
    if (mType == TYPE_RECENT_OPEN) {
        // Hide titles when showing recents for picking images/videos
        mHideGridTitles = MimePredicate.mimeMatches(MimePredicate.VISUAL_MIMES, state.acceptMimes);
    } else {
        mHideGridTitles = (doc != null) && doc.isGridTitlesHidden();
    }
    mSvelteRecents = Utils.isLowRamDevice(context) && (mType == TYPE_RECENT_OPEN);
    mCallbacks = new LoaderCallbacks<DirectoryResult>() {

        @Override
        public Loader<DirectoryResult> onCreateLoader(int id, Bundle args) {
            final String query = getArguments().getString(EXTRA_QUERY);
            Uri contentsUri;
            switch(mType) {
                case TYPE_NORMAL:
                    contentsUri = DocumentsContract.buildChildDocumentsUri(doc.authority, doc.documentId);
                    if (state.action == ACTION_MANAGE) {
                        contentsUri = DocumentsContract.setManageMode(contentsUri);
                    }
                    return new DirectoryLoader(context, mType, root, doc, contentsUri, state.userSortOrder);
                case TYPE_SEARCH:
                    contentsUri = DocumentsContract.buildSearchDocumentsUri(root.authority, root.rootId, query);
                    if (state.action == ACTION_MANAGE) {
                        contentsUri = DocumentsContract.setManageMode(contentsUri);
                    }
                    return new DirectoryLoader(context, mType, root, doc, contentsUri, state.userSortOrder);
                case TYPE_RECENT_OPEN:
                    final RootsCache roots = DocumentsApplication.getRootsCache(context);
                    return new RecentLoader(context, roots, state);
                default:
                    throw new IllegalStateException("Unknown type " + mType);
            }
        }

        @Override
        public void onLoadFinished(Loader<DirectoryResult> loader, DirectoryResult result) {
            if (!isAdded())
                return;
            mAdapter.swapResult(result);
            // TODO: if mode change was racing with us, don't overwrite it
            if (result.mode != MODE_UNKNOWN) {
                state.derivedMode = result.mode;
            }
            if (result.sortOrder != SORT_ORDER_UNKNOWN) {
                state.derivedSortOrder = result.sortOrder;
            }
            ((BaseActivity) context).onStateChanged();
            updateDisplayState();
            // When launched into empty recents, show drawer
            if (mType == TYPE_RECENT_OPEN && mAdapter.isEmpty() && !state.stackTouched) {
                ((BaseActivity) context).setRootsDrawerOpen(true);
            }
            if (isResumed()) {
                setListShown(true);
            } else {
                setListShownNoAnimation(true);
            }
            // Restore any previous instance state
            final SparseArray<Parcelable> container = state.dirState.remove(mStateKey);
            if (container != null && !getArguments().getBoolean(EXTRA_IGNORE_STATE, false)) {
                getView().restoreHierarchyState(container);
            } else if (mLastSortOrder != state.derivedSortOrder) {
                mListView.smoothScrollToPosition(0);
                mGridView.smoothScrollToPosition(0);
            }
            mLastSortOrder = state.derivedSortOrder;
            if (isTelevision()) {
                mCurrentView.requestFocus();
            }
        }

        @Override
        public void onLoaderReset(Loader<DirectoryResult> loader) {
            mAdapter.swapResult(null);
        }
    };
    setListAdapter(mAdapter);
    setListShown(false);
    // Kick off loader at least once
    getLoaderManager().restartLoader(mLoaderId, null, mCallbacks);
    updateDisplayState();
}
Also used : Context(android.content.Context) DirectoryLoader(dev.dworks.apps.anexplorer.loader.DirectoryLoader) Bundle(android.os.Bundle) DirectoryLoader(dev.dworks.apps.anexplorer.loader.DirectoryLoader) Loader(android.content.Loader) RecentLoader(dev.dworks.apps.anexplorer.loader.RecentLoader) DocumentInfo.getCursorString(dev.dworks.apps.anexplorer.model.DocumentInfo.getCursorString) Uri(android.net.Uri) Point(android.graphics.Point) SparseArray(android.util.SparseArray) RootsCache(dev.dworks.apps.anexplorer.misc.RootsCache) DirectoryResult(dev.dworks.apps.anexplorer.model.DirectoryResult) State(dev.dworks.apps.anexplorer.BaseActivity.State) RecentLoader(dev.dworks.apps.anexplorer.loader.RecentLoader)

Aggregations

Context (android.content.Context)1 Loader (android.content.Loader)1 Point (android.graphics.Point)1 Uri (android.net.Uri)1 Bundle (android.os.Bundle)1 SparseArray (android.util.SparseArray)1 State (dev.dworks.apps.anexplorer.BaseActivity.State)1 DirectoryLoader (dev.dworks.apps.anexplorer.loader.DirectoryLoader)1 RecentLoader (dev.dworks.apps.anexplorer.loader.RecentLoader)1 RootsCache (dev.dworks.apps.anexplorer.misc.RootsCache)1 DirectoryResult (dev.dworks.apps.anexplorer.model.DirectoryResult)1 DocumentInfo.getCursorString (dev.dworks.apps.anexplorer.model.DocumentInfo.getCursorString)1