Loading src/com/android/documentsui/AbstractActionHandler.java +2 −0 Original line number Diff line number Diff line Loading @@ -440,6 +440,7 @@ public abstract class AbstractActionHandler<T extends Activity & CommonAddons> return mSelectionMgr.getSelection(new Selection()); } @Override public ActionHandler reset(DirectoryReloadLock reloadLock) { mDirectoryReloadLock = reloadLock; mActivity.getLoaderManager().destroyLoader(LOADER_ID); Loading Loading @@ -477,6 +478,7 @@ public abstract class AbstractActionHandler<T extends Activity & CommonAddons> + DocumentInfo.debugString(mState.stack.peek())); return new DirectoryLoader( mInjector.features, context, mState.stack.getRoot(), mState.stack.peek(), Loading src/com/android/documentsui/DirectoryLoader.java +8 −3 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import android.util.Log; import com.android.documentsui.archives.ArchivesProvider; import com.android.documentsui.base.DebugFlags; import com.android.documentsui.base.DocumentInfo; import com.android.documentsui.base.Features; import com.android.documentsui.base.FilteringCursorWrapper; import com.android.documentsui.base.RootInfo; import com.android.documentsui.roots.RootCursorWrapper; Loading @@ -61,7 +62,10 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> { private CancellationSignal mSignal; private DirectoryResult mResult; private Features mFeatures; public DirectoryLoader( Features freatures, Context context, RootInfo root, DocumentInfo doc, Loading @@ -71,6 +75,7 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> { boolean inSearchMode) { super(context, ProviderExecutor.forAuthority(root.authority)); mFeatures = freatures; mRoot = root; mUri = uri; mModel = model; Loading Loading @@ -104,7 +109,7 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> { result.client = client; Resources resources = getContext().getResources(); if (resources.getBoolean(R.bool.feature_content_paging)) { if (mFeatures.isContentPagingEnabled()) { Bundle queryArgs = new Bundle(); mModel.addQuerySortArgs(queryArgs); Loading @@ -126,14 +131,14 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> { cursor = new RootCursorWrapper(mUri.getAuthority(), mRoot.rootId, cursor, -1); if (mSearchMode && !resources.getBoolean(R.bool.feature_folders_in_search_results)) { if (mSearchMode && !mFeatures.isFoldersInSearchResultsEnabled()) { // There is no findDocumentPath API. Enable filtering on folders in search mode. cursor = new FilteringCursorWrapper(cursor, null, SEARCH_REJECT_MIMES); } // TODO: When API tweaks have landed, use ContentResolver.EXTRA_HONORED_ARGS // instead of checking directly for ContentResolver.QUERY_ARG_SORT_COLUMNS (won't work) if (resources.getBoolean(R.bool.feature_content_paging) if (mFeatures.isContentPagingEnabled() && cursor.getExtras().containsKey(ContentResolver.QUERY_ARG_SORT_COLUMNS)) { if (VERBOSE) Log.d(TAG, "Skipping sort of pre-sorted cursor. Booya!"); } else { Loading src/com/android/documentsui/files/FilesActivity.java +2 −1 Original line number Diff line number Diff line Loading @@ -98,7 +98,7 @@ public class FilesActivity extends BaseActivity implements ActionHandler.Addons getColor(R.color.accent_dark)); mInjector.menuManager = new MenuManager( mInjector.prefs, mInjector.features, mSearchManager, mState, new DirectoryDetails(this) { Loading Loading @@ -286,6 +286,7 @@ public class FilesActivity extends BaseActivity implements ActionHandler.Addons * @deprecated use {@link ActionHandler#onDocumentPicked(DocumentInfo)} * @param doc */ @Deprecated @Override public void onDocumentPicked(DocumentInfo doc) { mInjector.actions.onDocumentPicked(doc); Loading src/com/android/documentsui/files/MenuManager.java +6 −6 Original line number Diff line number Diff line Loading @@ -27,25 +27,25 @@ import android.view.View; import com.android.documentsui.R; import com.android.documentsui.base.DocumentInfo; import com.android.documentsui.base.Features; import com.android.documentsui.base.RootInfo; import com.android.documentsui.base.Shared; import com.android.documentsui.base.State; import com.android.documentsui.prefs.ScopedPreferences; import com.android.documentsui.queries.SearchViewManager; import java.util.List; import java.util.function.IntFunction; public final class MenuManager extends com.android.documentsui.MenuManager { private final ScopedPreferences mPreferences; private final Features mFeatures; public MenuManager( ScopedPreferences preferences, Features features, SearchViewManager searchManager, State displayState, DirectoryDetails dirDetails) { super(searchManager, displayState, dirDetails); mPreferences = preferences; mFeatures = features; } @Override Loading Loading @@ -185,7 +185,7 @@ public final class MenuManager extends com.android.documentsui.MenuManager { @Override protected void updateCompress(MenuItem compress, SelectionDetails selectionDetails) { final boolean readOnly = !mDirDetails.canCreateDoc(); compress.setVisible(mPreferences.getEnableArchiveCreation()); compress.setVisible(mFeatures.isArchiveCreationEnabled()); compress.setEnabled(!readOnly && !selectionDetails.containsPartialFiles() && !selectionDetails.canExtract()); } Loading src/com/android/documentsui/prefs/ScopedPreferences.java +2 −22 Original line number Diff line number Diff line Loading @@ -17,12 +17,9 @@ package com.android.documentsui.prefs; import android.content.Context; import android.content.SharedPreferences; import android.content.res.Resources; import android.preference.PreferenceManager; import android.text.TextUtils; import com.android.documentsui.R; /** * Provides an interface (and runtime implementation) for preferences that are * scoped (presumably to an activity). This eliminates the need to pass Loading @@ -37,29 +34,23 @@ public interface ScopedPreferences { boolean getShowDeviceRoot(); void setShowDeviceRoot(boolean display); boolean getEnableArchiveCreation(); void setEnableArchiveCreation(boolean enabled); /** * @param scope An arbitrary string representitive of the scope * for prefs that are set using this object. */ public static ScopedPreferences create(Context context, String scope) { return new RuntimeScopedPreferences(context.getResources(), return new RuntimeScopedPreferences( PreferenceManager.getDefaultSharedPreferences(context), scope); } static final class RuntimeScopedPreferences implements ScopedPreferences { private Resources mResources; private SharedPreferences mSharedPrefs; private String mScope; private RuntimeScopedPreferences(Resources resources, SharedPreferences sharedPrefs, String scope) { private RuntimeScopedPreferences(SharedPreferences sharedPrefs, String scope) { assert(!TextUtils.isEmpty(scope)); mResources = resources; mSharedPrefs = sharedPrefs; mScope = scope; } Loading @@ -73,17 +64,6 @@ public interface ScopedPreferences { public void setShowDeviceRoot(boolean display) { mSharedPrefs.edit().putBoolean(INCLUDE_DEVICE_ROOT, display).apply(); } @Override public boolean getEnableArchiveCreation() { final boolean defaultValue = mResources.getBoolean(R.bool.feature_archive_creation); return mSharedPrefs.getBoolean(ENABLE_ARCHIVE_CREATION + mScope, defaultValue); } @Override public void setEnableArchiveCreation(boolean enabled) { mSharedPrefs.edit().putBoolean(ENABLE_ARCHIVE_CREATION + mScope, enabled).apply(); } } static boolean shouldBackup(String s) { Loading Loading
src/com/android/documentsui/AbstractActionHandler.java +2 −0 Original line number Diff line number Diff line Loading @@ -440,6 +440,7 @@ public abstract class AbstractActionHandler<T extends Activity & CommonAddons> return mSelectionMgr.getSelection(new Selection()); } @Override public ActionHandler reset(DirectoryReloadLock reloadLock) { mDirectoryReloadLock = reloadLock; mActivity.getLoaderManager().destroyLoader(LOADER_ID); Loading Loading @@ -477,6 +478,7 @@ public abstract class AbstractActionHandler<T extends Activity & CommonAddons> + DocumentInfo.debugString(mState.stack.peek())); return new DirectoryLoader( mInjector.features, context, mState.stack.getRoot(), mState.stack.peek(), Loading
src/com/android/documentsui/DirectoryLoader.java +8 −3 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import android.util.Log; import com.android.documentsui.archives.ArchivesProvider; import com.android.documentsui.base.DebugFlags; import com.android.documentsui.base.DocumentInfo; import com.android.documentsui.base.Features; import com.android.documentsui.base.FilteringCursorWrapper; import com.android.documentsui.base.RootInfo; import com.android.documentsui.roots.RootCursorWrapper; Loading @@ -61,7 +62,10 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> { private CancellationSignal mSignal; private DirectoryResult mResult; private Features mFeatures; public DirectoryLoader( Features freatures, Context context, RootInfo root, DocumentInfo doc, Loading @@ -71,6 +75,7 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> { boolean inSearchMode) { super(context, ProviderExecutor.forAuthority(root.authority)); mFeatures = freatures; mRoot = root; mUri = uri; mModel = model; Loading Loading @@ -104,7 +109,7 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> { result.client = client; Resources resources = getContext().getResources(); if (resources.getBoolean(R.bool.feature_content_paging)) { if (mFeatures.isContentPagingEnabled()) { Bundle queryArgs = new Bundle(); mModel.addQuerySortArgs(queryArgs); Loading @@ -126,14 +131,14 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> { cursor = new RootCursorWrapper(mUri.getAuthority(), mRoot.rootId, cursor, -1); if (mSearchMode && !resources.getBoolean(R.bool.feature_folders_in_search_results)) { if (mSearchMode && !mFeatures.isFoldersInSearchResultsEnabled()) { // There is no findDocumentPath API. Enable filtering on folders in search mode. cursor = new FilteringCursorWrapper(cursor, null, SEARCH_REJECT_MIMES); } // TODO: When API tweaks have landed, use ContentResolver.EXTRA_HONORED_ARGS // instead of checking directly for ContentResolver.QUERY_ARG_SORT_COLUMNS (won't work) if (resources.getBoolean(R.bool.feature_content_paging) if (mFeatures.isContentPagingEnabled() && cursor.getExtras().containsKey(ContentResolver.QUERY_ARG_SORT_COLUMNS)) { if (VERBOSE) Log.d(TAG, "Skipping sort of pre-sorted cursor. Booya!"); } else { Loading
src/com/android/documentsui/files/FilesActivity.java +2 −1 Original line number Diff line number Diff line Loading @@ -98,7 +98,7 @@ public class FilesActivity extends BaseActivity implements ActionHandler.Addons getColor(R.color.accent_dark)); mInjector.menuManager = new MenuManager( mInjector.prefs, mInjector.features, mSearchManager, mState, new DirectoryDetails(this) { Loading Loading @@ -286,6 +286,7 @@ public class FilesActivity extends BaseActivity implements ActionHandler.Addons * @deprecated use {@link ActionHandler#onDocumentPicked(DocumentInfo)} * @param doc */ @Deprecated @Override public void onDocumentPicked(DocumentInfo doc) { mInjector.actions.onDocumentPicked(doc); Loading
src/com/android/documentsui/files/MenuManager.java +6 −6 Original line number Diff line number Diff line Loading @@ -27,25 +27,25 @@ import android.view.View; import com.android.documentsui.R; import com.android.documentsui.base.DocumentInfo; import com.android.documentsui.base.Features; import com.android.documentsui.base.RootInfo; import com.android.documentsui.base.Shared; import com.android.documentsui.base.State; import com.android.documentsui.prefs.ScopedPreferences; import com.android.documentsui.queries.SearchViewManager; import java.util.List; import java.util.function.IntFunction; public final class MenuManager extends com.android.documentsui.MenuManager { private final ScopedPreferences mPreferences; private final Features mFeatures; public MenuManager( ScopedPreferences preferences, Features features, SearchViewManager searchManager, State displayState, DirectoryDetails dirDetails) { super(searchManager, displayState, dirDetails); mPreferences = preferences; mFeatures = features; } @Override Loading Loading @@ -185,7 +185,7 @@ public final class MenuManager extends com.android.documentsui.MenuManager { @Override protected void updateCompress(MenuItem compress, SelectionDetails selectionDetails) { final boolean readOnly = !mDirDetails.canCreateDoc(); compress.setVisible(mPreferences.getEnableArchiveCreation()); compress.setVisible(mFeatures.isArchiveCreationEnabled()); compress.setEnabled(!readOnly && !selectionDetails.containsPartialFiles() && !selectionDetails.canExtract()); } Loading
src/com/android/documentsui/prefs/ScopedPreferences.java +2 −22 Original line number Diff line number Diff line Loading @@ -17,12 +17,9 @@ package com.android.documentsui.prefs; import android.content.Context; import android.content.SharedPreferences; import android.content.res.Resources; import android.preference.PreferenceManager; import android.text.TextUtils; import com.android.documentsui.R; /** * Provides an interface (and runtime implementation) for preferences that are * scoped (presumably to an activity). This eliminates the need to pass Loading @@ -37,29 +34,23 @@ public interface ScopedPreferences { boolean getShowDeviceRoot(); void setShowDeviceRoot(boolean display); boolean getEnableArchiveCreation(); void setEnableArchiveCreation(boolean enabled); /** * @param scope An arbitrary string representitive of the scope * for prefs that are set using this object. */ public static ScopedPreferences create(Context context, String scope) { return new RuntimeScopedPreferences(context.getResources(), return new RuntimeScopedPreferences( PreferenceManager.getDefaultSharedPreferences(context), scope); } static final class RuntimeScopedPreferences implements ScopedPreferences { private Resources mResources; private SharedPreferences mSharedPrefs; private String mScope; private RuntimeScopedPreferences(Resources resources, SharedPreferences sharedPrefs, String scope) { private RuntimeScopedPreferences(SharedPreferences sharedPrefs, String scope) { assert(!TextUtils.isEmpty(scope)); mResources = resources; mSharedPrefs = sharedPrefs; mScope = scope; } Loading @@ -73,17 +64,6 @@ public interface ScopedPreferences { public void setShowDeviceRoot(boolean display) { mSharedPrefs.edit().putBoolean(INCLUDE_DEVICE_ROOT, display).apply(); } @Override public boolean getEnableArchiveCreation() { final boolean defaultValue = mResources.getBoolean(R.bool.feature_archive_creation); return mSharedPrefs.getBoolean(ENABLE_ARCHIVE_CREATION + mScope, defaultValue); } @Override public void setEnableArchiveCreation(boolean enabled) { mSharedPrefs.edit().putBoolean(ENABLE_ARCHIVE_CREATION + mScope, enabled).apply(); } } static boolean shouldBackup(String s) { Loading