Search in sources :

Example 41 with RootInfo

use of com.android.documentsui.model.RootInfo in project android_frameworks_base by AOSPA.

the class BaseActivity method onOptionsItemSelected.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId()) {
        case android.R.id.home:
            onBackPressed();
            return true;
        case R.id.menu_create_dir:
            showCreateDirectoryDialog();
            return true;
        case R.id.menu_search:
            // SearchViewManager listens for this directly.
            return false;
        case R.id.menu_sort_name:
            setUserSortOrder(State.SORT_ORDER_DISPLAY_NAME);
            return true;
        case R.id.menu_sort_date:
            setUserSortOrder(State.SORT_ORDER_LAST_MODIFIED);
            return true;
        case R.id.menu_sort_size:
            setUserSortOrder(State.SORT_ORDER_SIZE);
            return true;
        case R.id.menu_grid:
            setViewMode(State.MODE_GRID);
            return true;
        case R.id.menu_list:
            setViewMode(State.MODE_LIST);
            return true;
        case R.id.menu_paste_from_clipboard:
            DirectoryFragment dir = getDirectoryFragment();
            if (dir != null) {
                dir.pasteFromClipboard();
            }
            return true;
        case R.id.menu_advanced:
            setDisplayAdvancedDevices(!mState.showAdvanced);
            return true;
        case R.id.menu_file_size:
            setDisplayFileSize(!LocalPreferences.getDisplayFileSize(this));
            return true;
        case R.id.menu_settings:
            Metrics.logUserAction(this, Metrics.USER_ACTION_SETTINGS);
            final RootInfo root = getCurrentRoot();
            final Intent intent = new Intent(DocumentsContract.ACTION_DOCUMENT_ROOT_SETTINGS);
            intent.setDataAndType(root.getUri(), DocumentsContract.Root.MIME_TYPE_ITEM);
            startActivity(intent);
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
Also used : RootInfo(com.android.documentsui.model.RootInfo) Intent(android.content.Intent) DirectoryFragment(com.android.documentsui.dirlist.DirectoryFragment)

Example 42 with RootInfo

use of com.android.documentsui.model.RootInfo in project platform_frameworks_base by android.

the class FilesActivity method refreshDirectory.

@Override
void refreshDirectory(int anim) {
    final FragmentManager fm = getFragmentManager();
    final RootInfo root = getCurrentRoot();
    final DocumentInfo cwd = getCurrentDirectory();
    assert (!mSearchManager.isSearching());
    if (cwd == null) {
        DirectoryFragment.showRecentsOpen(fm, anim);
    } else {
        // Normal boring directory
        DirectoryFragment.showDirectory(fm, root, cwd, anim);
    }
}
Also used : FragmentManager(android.app.FragmentManager) RootInfo(com.android.documentsui.model.RootInfo) DocumentInfo(com.android.documentsui.model.DocumentInfo)

Example 43 with RootInfo

use of com.android.documentsui.model.RootInfo in project platform_frameworks_base by android.

the class FilesActivity method onPrepareOptionsMenu.

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    super.onPrepareOptionsMenu(menu);
    final RootInfo root = getCurrentRoot();
    final MenuItem createDir = menu.findItem(R.id.menu_create_dir);
    final MenuItem pasteFromCb = menu.findItem(R.id.menu_paste_from_clipboard);
    final MenuItem settings = menu.findItem(R.id.menu_settings);
    final MenuItem newWindow = menu.findItem(R.id.menu_new_window);
    createDir.setVisible(true);
    createDir.setEnabled(canCreateDirectory());
    pasteFromCb.setEnabled(mClipper.hasItemsToPaste());
    settings.setVisible(root.hasSettings());
    newWindow.setVisible(Shared.shouldShowFancyFeatures(this));
    Menus.disableHiddenItems(menu, pasteFromCb);
    // It hides icon if searching in progress
    mSearchManager.updateMenu();
    return true;
}
Also used : RootInfo(com.android.documentsui.model.RootInfo) MenuItem(android.view.MenuItem)

Example 44 with RootInfo

use of com.android.documentsui.model.RootInfo in project platform_frameworks_base by android.

the class FilesActivity method onResume.

@Override
public void onResume() {
    super.onResume();
    final RootInfo root = getCurrentRoot();
    // the user what has happened, let them close us. Less surprising.
    if (mRoots.getRootBlocking(root.authority, root.rootId) == null) {
        finish();
    }
}
Also used : RootInfo(com.android.documentsui.model.RootInfo)

Example 45 with RootInfo

use of com.android.documentsui.model.RootInfo in project platform_frameworks_base by android.

the class RecentsLoader method loadInBackgroundLocked.

private DirectoryResult loadInBackgroundLocked() {
    if (mFirstPassLatch == null) {
        // First time through we kick off all the recent tasks, and wait
        // around to see if everyone finishes quickly.
        final Collection<RootInfo> roots = mRoots.getMatchingRootsBlocking(mState);
        for (RootInfo root : roots) {
            if (root.supportsRecents()) {
                mTasks.put(root, new RecentsTask(root.authority, root.rootId));
            }
        }
        mFirstPassLatch = new CountDownLatch(mTasks.size());
        for (RecentsTask task : mTasks.values()) {
            ProviderExecutor.forAuthority(task.authority).execute(task);
        }
        try {
            mFirstPassLatch.await(MAX_FIRST_PASS_WAIT_MILLIS, TimeUnit.MILLISECONDS);
            mFirstPassDone = true;
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
    final long rejectBefore = System.currentTimeMillis() - REJECT_OLDER_THAN;
    // Collect all finished tasks
    boolean allDone = true;
    List<Cursor> cursors = new ArrayList<>();
    for (RecentsTask task : mTasks.values()) {
        if (task.isDone()) {
            try {
                final Cursor cursor = task.get();
                if (cursor == null)
                    continue;
                final FilteringCursorWrapper filtered = new FilteringCursorWrapper(cursor, mState.acceptMimes, RECENT_REJECT_MIMES, rejectBefore) {

                    @Override
                    public void close() {
                    // Ignored, since we manage cursor lifecycle internally
                    }
                };
                cursors.add(filtered);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            } catch (ExecutionException e) {
            // We already logged on other side
            } catch (Exception e) {
                Log.e(TAG, "Failed to query Recents for authority: " + task.authority + ". Skip this authority in Recents.", e);
            }
        } else {
            allDone = false;
        }
    }
    if (DEBUG) {
        Log.d(TAG, "Found " + cursors.size() + " of " + mTasks.size() + " recent queries done");
    }
    final DirectoryResult result = new DirectoryResult();
    result.sortOrder = SORT_ORDER_LAST_MODIFIED;
    final Cursor merged;
    if (cursors.size() > 0) {
        merged = new MergeCursor(cursors.toArray(new Cursor[cursors.size()]));
    } else {
        // Return something when nobody is ready
        merged = new MatrixCursor(new String[0]);
    }
    // Tell the UI if this is an in-progress result. When loading is complete, another update is
    // sent with EXTRA_LOADING set to false.
    Bundle extras = new Bundle();
    extras.putBoolean(DocumentsContract.EXTRA_LOADING, !allDone);
    merged.setExtras(extras);
    result.cursor = merged;
    return result;
}
Also used : Bundle(android.os.Bundle) ArrayList(java.util.ArrayList) MergeCursor(android.database.MergeCursor) CountDownLatch(java.util.concurrent.CountDownLatch) Cursor(android.database.Cursor) MergeCursor(android.database.MergeCursor) MatrixCursor(android.database.MatrixCursor) IOException(java.io.IOException) ExecutionException(java.util.concurrent.ExecutionException) MatrixCursor(android.database.MatrixCursor) RootInfo(com.android.documentsui.model.RootInfo) ExecutionException(java.util.concurrent.ExecutionException)

Aggregations

RootInfo (com.android.documentsui.model.RootInfo)85 DocumentInfo (com.android.documentsui.model.DocumentInfo)20 FragmentManager (android.app.FragmentManager)15 Bundle (android.os.Bundle)15 ArrayList (java.util.ArrayList)15 Intent (android.content.Intent)10 Cursor (android.database.Cursor)10 ContentProviderClient (android.content.ContentProviderClient)5 Context (android.content.Context)5 Loader (android.content.Loader)5 MatrixCursor (android.database.MatrixCursor)5 MergeCursor (android.database.MergeCursor)5 Uri (android.net.Uri)5 VisibleForTesting (android.support.annotation.VisibleForTesting)5 MenuItem (android.view.MenuItem)5 DirectoryFragment (com.android.documentsui.dirlist.DirectoryFragment)5 IOException (java.io.IOException)5 Collection (java.util.Collection)5 CountDownLatch (java.util.concurrent.CountDownLatch)5 ExecutionException (java.util.concurrent.ExecutionException)5