Loading src/com/android/documentsui/AbstractActionHandler.java +15 −4 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import com.android.documentsui.dirlist.DocumentDetails; import com.android.documentsui.dirlist.Model; import com.android.documentsui.dirlist.MultiSelectManager.Selection; import com.android.documentsui.files.LauncherActivity; import com.android.documentsui.files.OpenUriForViewTask; import com.android.documentsui.roots.LoadRootTask; import com.android.documentsui.roots.RootsAccess; import com.android.documentsui.sidebar.EjectRootTask; Loading @@ -53,21 +54,25 @@ public abstract class AbstractActionHandler<T extends Activity & CommonAddons> protected final T mActivity; protected final State mState; protected final RootsAccess mRoots; protected final DocumentsAccess mDocs; protected final Lookup<String, Executor> mExecutors; public AbstractActionHandler( T activity, State state, RootsAccess roots, DocumentsAccess docs, Lookup<String, Executor> executors) { assert(activity != null); assert(state != null); assert(roots != null); assert(docs != null); mActivity = activity; mState = state; mRoots = roots; mDocs = docs; mExecutors = executors; } Loading Loading @@ -137,10 +142,16 @@ public abstract class AbstractActionHandler<T extends Activity & CommonAddons> throw new UnsupportedOperationException("Delete not supported!"); } @Override public final void loadDocument(Uri uri) { new OpenUriForViewTask<>(mActivity, mState, mRoots, mDocs, uri) .executeOnExecutor(mExecutors.lookup(uri.getAuthority())); } @Override public final void loadRoot(Uri uri) { new LoadRootTask<>(mActivity, mRoots, mState, uri).executeOnExecutor( mExecutors.lookup(uri.getAuthority())); new LoadRootTask<>(mActivity, mRoots, mState, uri) .executeOnExecutor(mExecutors.lookup(uri.getAuthority())); } protected final void loadHomeDir() { Loading @@ -152,10 +163,10 @@ public abstract class AbstractActionHandler<T extends Activity & CommonAddons> * from our concrete activity implementations. */ public interface CommonAddons { void refreshCurrentRootAndDirectory(@AnimationType int anim); void onRootPicked(RootInfo root); // TODO: Move this to PickAddons. // TODO: Move this to PickAddons as multi-document picking is exclusive to that activity. void onDocumentsPicked(List<DocumentInfo> docs); void onDocumentPicked(DocumentInfo doc, Model model); void refreshCurrentRootAndDirectory(@AnimationType int anim); } } src/com/android/documentsui/ActionHandler.java +2 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,8 @@ public interface ActionHandler { void loadRoot(Uri uri); void loadDocument(Uri uri); void openInNewWindow(DocumentStack path); void pasteIntoFolder(RootInfo root); Loading src/com/android/documentsui/BaseActivity.java +1 −0 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ import com.android.documentsui.dirlist.FragmentTuner; import com.android.documentsui.dirlist.Model; import com.android.documentsui.dirlist.MultiSelectManager; import com.android.documentsui.dirlist.MultiSelectManager.Selection; import com.android.documentsui.roots.GetRootDocumentTask; import com.android.documentsui.roots.RootsCache; import com.android.documentsui.sidebar.RootsFragment; import com.android.documentsui.sorting.SortController; Loading src/com/android/documentsui/DocumentsAccess.java 0 → 100644 +80 −0 Original line number Diff line number Diff line /* * Copyright (C) 2013 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.documentsui; import android.annotation.Nullable; import android.content.Context; import android.net.Uri; import android.provider.DocumentsContract; import android.util.Log; import com.android.documentsui.base.DocumentInfo; import com.android.documentsui.base.RootInfo; import java.io.FileNotFoundException; /** * Provides synchronous access to {@link DocumentInfo} instances given some identifying information. */ public interface DocumentsAccess { @Nullable DocumentInfo getRootDocument(RootInfo root); @Nullable DocumentInfo getRootDocument(Uri uri); @Nullable DocumentInfo getDocument(Uri uri); public static DocumentsAccess create(Context context) { return new RuntimeDocumentAccess(context); } public final class RuntimeDocumentAccess implements DocumentsAccess { private static final String TAG = "DocumentAccess"; private final Context mContext; private RuntimeDocumentAccess(Context context) { mContext = context; } @Override public @Nullable DocumentInfo getRootDocument(RootInfo root) { return getRootDocument( DocumentsContract.buildDocumentUri(root.authority, root.documentId)); } @Override public @Nullable DocumentInfo getRootDocument(Uri uri) { try { return DocumentInfo.fromUri(mContext.getContentResolver(), uri); } catch (FileNotFoundException e) { Log.w(TAG, "Failed to find root", e); return null; } } @Override public DocumentInfo getDocument(Uri uri) { try { return DocumentInfo.fromUri(mContext.getContentResolver(), uri); } catch (FileNotFoundException e) { Log.w(TAG, "Couldn't create DocumentInfo for uri: " + uri); } return null; } } } src/com/android/documentsui/base/RootInfo.java +3 −1 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import android.util.Log; import com.android.documentsui.IconUtils; import com.android.documentsui.R; import com.android.documentsui.roots.RootsAccess; import java.io.DataInputStream; import java.io.DataOutputStream; Loading Loading @@ -349,8 +350,9 @@ public class RootInfo implements Durable, Parcelable, Comparable<RootInfo> { } /** * Gets the {@link DocumentInfo} of the root folder of this root. * @deprecate use {@link RootsAccess#getRootDocumentBlocking}. */ @Deprecated public @Nullable DocumentInfo getRootDocumentBlocking(Context context) { try { final Uri uri = DocumentsContract.buildDocumentUri(authority, documentId); Loading Loading
src/com/android/documentsui/AbstractActionHandler.java +15 −4 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import com.android.documentsui.dirlist.DocumentDetails; import com.android.documentsui.dirlist.Model; import com.android.documentsui.dirlist.MultiSelectManager.Selection; import com.android.documentsui.files.LauncherActivity; import com.android.documentsui.files.OpenUriForViewTask; import com.android.documentsui.roots.LoadRootTask; import com.android.documentsui.roots.RootsAccess; import com.android.documentsui.sidebar.EjectRootTask; Loading @@ -53,21 +54,25 @@ public abstract class AbstractActionHandler<T extends Activity & CommonAddons> protected final T mActivity; protected final State mState; protected final RootsAccess mRoots; protected final DocumentsAccess mDocs; protected final Lookup<String, Executor> mExecutors; public AbstractActionHandler( T activity, State state, RootsAccess roots, DocumentsAccess docs, Lookup<String, Executor> executors) { assert(activity != null); assert(state != null); assert(roots != null); assert(docs != null); mActivity = activity; mState = state; mRoots = roots; mDocs = docs; mExecutors = executors; } Loading Loading @@ -137,10 +142,16 @@ public abstract class AbstractActionHandler<T extends Activity & CommonAddons> throw new UnsupportedOperationException("Delete not supported!"); } @Override public final void loadDocument(Uri uri) { new OpenUriForViewTask<>(mActivity, mState, mRoots, mDocs, uri) .executeOnExecutor(mExecutors.lookup(uri.getAuthority())); } @Override public final void loadRoot(Uri uri) { new LoadRootTask<>(mActivity, mRoots, mState, uri).executeOnExecutor( mExecutors.lookup(uri.getAuthority())); new LoadRootTask<>(mActivity, mRoots, mState, uri) .executeOnExecutor(mExecutors.lookup(uri.getAuthority())); } protected final void loadHomeDir() { Loading @@ -152,10 +163,10 @@ public abstract class AbstractActionHandler<T extends Activity & CommonAddons> * from our concrete activity implementations. */ public interface CommonAddons { void refreshCurrentRootAndDirectory(@AnimationType int anim); void onRootPicked(RootInfo root); // TODO: Move this to PickAddons. // TODO: Move this to PickAddons as multi-document picking is exclusive to that activity. void onDocumentsPicked(List<DocumentInfo> docs); void onDocumentPicked(DocumentInfo doc, Model model); void refreshCurrentRootAndDirectory(@AnimationType int anim); } }
src/com/android/documentsui/ActionHandler.java +2 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,8 @@ public interface ActionHandler { void loadRoot(Uri uri); void loadDocument(Uri uri); void openInNewWindow(DocumentStack path); void pasteIntoFolder(RootInfo root); Loading
src/com/android/documentsui/BaseActivity.java +1 −0 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ import com.android.documentsui.dirlist.FragmentTuner; import com.android.documentsui.dirlist.Model; import com.android.documentsui.dirlist.MultiSelectManager; import com.android.documentsui.dirlist.MultiSelectManager.Selection; import com.android.documentsui.roots.GetRootDocumentTask; import com.android.documentsui.roots.RootsCache; import com.android.documentsui.sidebar.RootsFragment; import com.android.documentsui.sorting.SortController; Loading
src/com/android/documentsui/DocumentsAccess.java 0 → 100644 +80 −0 Original line number Diff line number Diff line /* * Copyright (C) 2013 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.documentsui; import android.annotation.Nullable; import android.content.Context; import android.net.Uri; import android.provider.DocumentsContract; import android.util.Log; import com.android.documentsui.base.DocumentInfo; import com.android.documentsui.base.RootInfo; import java.io.FileNotFoundException; /** * Provides synchronous access to {@link DocumentInfo} instances given some identifying information. */ public interface DocumentsAccess { @Nullable DocumentInfo getRootDocument(RootInfo root); @Nullable DocumentInfo getRootDocument(Uri uri); @Nullable DocumentInfo getDocument(Uri uri); public static DocumentsAccess create(Context context) { return new RuntimeDocumentAccess(context); } public final class RuntimeDocumentAccess implements DocumentsAccess { private static final String TAG = "DocumentAccess"; private final Context mContext; private RuntimeDocumentAccess(Context context) { mContext = context; } @Override public @Nullable DocumentInfo getRootDocument(RootInfo root) { return getRootDocument( DocumentsContract.buildDocumentUri(root.authority, root.documentId)); } @Override public @Nullable DocumentInfo getRootDocument(Uri uri) { try { return DocumentInfo.fromUri(mContext.getContentResolver(), uri); } catch (FileNotFoundException e) { Log.w(TAG, "Failed to find root", e); return null; } } @Override public DocumentInfo getDocument(Uri uri) { try { return DocumentInfo.fromUri(mContext.getContentResolver(), uri); } catch (FileNotFoundException e) { Log.w(TAG, "Couldn't create DocumentInfo for uri: " + uri); } return null; } } }
src/com/android/documentsui/base/RootInfo.java +3 −1 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import android.util.Log; import com.android.documentsui.IconUtils; import com.android.documentsui.R; import com.android.documentsui.roots.RootsAccess; import java.io.DataInputStream; import java.io.DataOutputStream; Loading Loading @@ -349,8 +350,9 @@ public class RootInfo implements Durable, Parcelable, Comparable<RootInfo> { } /** * Gets the {@link DocumentInfo} of the root folder of this root. * @deprecate use {@link RootsAccess#getRootDocumentBlocking}. */ @Deprecated public @Nullable DocumentInfo getRootDocumentBlocking(Context context) { try { final Uri uri = DocumentsContract.buildDocumentUri(authority, documentId); Loading