Loading src/com/android/documentsui/DirectoryLoader.java +13 −13 Original line number Diff line number Diff line Loading @@ -100,6 +100,7 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> { } result.client = client; if (Shared.ENABLE_OMC_API_FEATURES) { Bundle queryArgs = new Bundle(); mModel.addQuerySortArgs(queryArgs); Loading @@ -108,14 +109,13 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> { DebugFlags.addForcedPagingArgs(queryArgs); cursor = client.query(mUri, null, queryArgs, mSignal); if (cursor == null) { throw new RemoteException("Provider returned null"); } else { cursor = client.query( mUri, null, null, null, mModel.getDocumentSortQuery(), mSignal); } Bundle extras = cursor.getExtras(); if (extras.containsKey(ContentResolver.QUERY_RESULT_SIZE)) { Log.i(TAG, "[PAGING INDICATED] Cursor extras specify recordset size of: " + extras.getInt(ContentResolver.QUERY_RESULT_SIZE)); if (cursor == null) { throw new RemoteException("Provider returned null"); } cursor.registerContentObserver(mObserver); Loading src/com/android/documentsui/RecentsLoader.java +8 −4 Original line number Diff line number Diff line Loading @@ -329,11 +329,15 @@ public class RecentsLoader extends AsyncTaskLoader<DirectoryResult> { for (int i = 0; i < rootIds.size(); i++) { final Uri uri = DocumentsContract.buildRecentDocumentsUri(authority, rootIds.get(i)); try { if (Shared.ENABLE_OMC_API_FEATURES) { final Bundle queryArgs = new Bundle(); mState.sortModel.addQuerySortArgs(queryArgs); try { res[i] = client.query(uri, null, queryArgs, null); } else { res[i] = client.query( uri, null, null, null, mState.sortModel.getDocumentSortQuery()); } mCursors[i] = new RootCursorWrapper(authority, rootIds.get(i), res[i], MAX_DOCS_FROM_ROOT); } catch (Exception e) { Loading src/com/android/documentsui/base/DebugFlags.java +1 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ public final class DebugFlags { } public static boolean addForcedPagingArgs(Bundle queryArgs) { assert(Shared.ENABLE_OMC_API_FEATURES); boolean flagsAdded = false; if (sForcedPageOffset >= 0) { queryArgs.putInt(ContentResolver.QUERY_ARG_OFFSET, sForcedPageOffset); Loading src/com/android/documentsui/queries/DebugCommandProcessor.java +6 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.util.Log; import com.android.documentsui.DocumentsApplication; import com.android.documentsui.base.DebugFlags; import com.android.documentsui.base.EventHandler; import com.android.documentsui.base.Shared; import java.util.ArrayList; import java.util.List; Loading Loading @@ -110,6 +111,11 @@ public final class DebugCommandProcessor implements EventHandler<String> { } private static boolean forcePaging(String[] tokens) { if (!Shared.ENABLE_OMC_API_FEATURES) { Log.i(TAG, "Paging is disabled."); return false; } if ("page".equals(tokens[0])) { if (tokens.length >= 2) { try { Loading src/com/android/documentsui/sorting/SortModel.java +41 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import android.util.SparseArray; import android.view.View; import com.android.documentsui.R; import com.android.documentsui.base.Shared; import com.android.documentsui.sorting.SortDimension.SortDirection; import java.lang.annotation.Retention; Loading Loading @@ -241,6 +242,7 @@ public class SortModel implements Parcelable { } public void addQuerySortArgs(Bundle queryArgs) { assert(Shared.ENABLE_OMC_API_FEATURES); final int id = getSortedDimensionId(); switch (id) { Loading Loading @@ -284,6 +286,45 @@ public class SortModel implements Parcelable { } } public @Nullable String getDocumentSortQuery() { assert(!Shared.ENABLE_OMC_API_FEATURES); final int id = getSortedDimensionId(); final String columnName; switch (id) { case SORT_DIMENSION_ID_UNKNOWN: return null; case SortModel.SORT_DIMENSION_ID_TITLE: columnName = Document.COLUMN_DISPLAY_NAME; break; case SortModel.SORT_DIMENSION_ID_DATE: columnName = Document.COLUMN_LAST_MODIFIED; break; case SortModel.SORT_DIMENSION_ID_SIZE: columnName = Document.COLUMN_SIZE; break; default: throw new IllegalStateException( "Unexpected sort dimension id: " + id); } final SortDimension dimension = getDimensionById(id); final String direction; switch (dimension.getSortDirection()) { case SortDimension.SORT_DIRECTION_ASCENDING: direction = " ASC"; break; case SortDimension.SORT_DIRECTION_DESCENDING: direction = " DESC"; break; default: throw new IllegalStateException( "Unexpected sort direction: " + dimension.getSortDirection()); } return columnName + direction; } private void notifyListeners(@UpdateType int updateType) { for (int i = mListeners.size() - 1; i >= 0; --i) { mListeners.get(i).onModelUpdate(this, updateType); Loading Loading
src/com/android/documentsui/DirectoryLoader.java +13 −13 Original line number Diff line number Diff line Loading @@ -100,6 +100,7 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> { } result.client = client; if (Shared.ENABLE_OMC_API_FEATURES) { Bundle queryArgs = new Bundle(); mModel.addQuerySortArgs(queryArgs); Loading @@ -108,14 +109,13 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> { DebugFlags.addForcedPagingArgs(queryArgs); cursor = client.query(mUri, null, queryArgs, mSignal); if (cursor == null) { throw new RemoteException("Provider returned null"); } else { cursor = client.query( mUri, null, null, null, mModel.getDocumentSortQuery(), mSignal); } Bundle extras = cursor.getExtras(); if (extras.containsKey(ContentResolver.QUERY_RESULT_SIZE)) { Log.i(TAG, "[PAGING INDICATED] Cursor extras specify recordset size of: " + extras.getInt(ContentResolver.QUERY_RESULT_SIZE)); if (cursor == null) { throw new RemoteException("Provider returned null"); } cursor.registerContentObserver(mObserver); Loading
src/com/android/documentsui/RecentsLoader.java +8 −4 Original line number Diff line number Diff line Loading @@ -329,11 +329,15 @@ public class RecentsLoader extends AsyncTaskLoader<DirectoryResult> { for (int i = 0; i < rootIds.size(); i++) { final Uri uri = DocumentsContract.buildRecentDocumentsUri(authority, rootIds.get(i)); try { if (Shared.ENABLE_OMC_API_FEATURES) { final Bundle queryArgs = new Bundle(); mState.sortModel.addQuerySortArgs(queryArgs); try { res[i] = client.query(uri, null, queryArgs, null); } else { res[i] = client.query( uri, null, null, null, mState.sortModel.getDocumentSortQuery()); } mCursors[i] = new RootCursorWrapper(authority, rootIds.get(i), res[i], MAX_DOCS_FROM_ROOT); } catch (Exception e) { Loading
src/com/android/documentsui/base/DebugFlags.java +1 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ public final class DebugFlags { } public static boolean addForcedPagingArgs(Bundle queryArgs) { assert(Shared.ENABLE_OMC_API_FEATURES); boolean flagsAdded = false; if (sForcedPageOffset >= 0) { queryArgs.putInt(ContentResolver.QUERY_ARG_OFFSET, sForcedPageOffset); Loading
src/com/android/documentsui/queries/DebugCommandProcessor.java +6 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.util.Log; import com.android.documentsui.DocumentsApplication; import com.android.documentsui.base.DebugFlags; import com.android.documentsui.base.EventHandler; import com.android.documentsui.base.Shared; import java.util.ArrayList; import java.util.List; Loading Loading @@ -110,6 +111,11 @@ public final class DebugCommandProcessor implements EventHandler<String> { } private static boolean forcePaging(String[] tokens) { if (!Shared.ENABLE_OMC_API_FEATURES) { Log.i(TAG, "Paging is disabled."); return false; } if ("page".equals(tokens[0])) { if (tokens.length >= 2) { try { Loading
src/com/android/documentsui/sorting/SortModel.java +41 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import android.util.SparseArray; import android.view.View; import com.android.documentsui.R; import com.android.documentsui.base.Shared; import com.android.documentsui.sorting.SortDimension.SortDirection; import java.lang.annotation.Retention; Loading Loading @@ -241,6 +242,7 @@ public class SortModel implements Parcelable { } public void addQuerySortArgs(Bundle queryArgs) { assert(Shared.ENABLE_OMC_API_FEATURES); final int id = getSortedDimensionId(); switch (id) { Loading Loading @@ -284,6 +286,45 @@ public class SortModel implements Parcelable { } } public @Nullable String getDocumentSortQuery() { assert(!Shared.ENABLE_OMC_API_FEATURES); final int id = getSortedDimensionId(); final String columnName; switch (id) { case SORT_DIMENSION_ID_UNKNOWN: return null; case SortModel.SORT_DIMENSION_ID_TITLE: columnName = Document.COLUMN_DISPLAY_NAME; break; case SortModel.SORT_DIMENSION_ID_DATE: columnName = Document.COLUMN_LAST_MODIFIED; break; case SortModel.SORT_DIMENSION_ID_SIZE: columnName = Document.COLUMN_SIZE; break; default: throw new IllegalStateException( "Unexpected sort dimension id: " + id); } final SortDimension dimension = getDimensionById(id); final String direction; switch (dimension.getSortDirection()) { case SortDimension.SORT_DIRECTION_ASCENDING: direction = " ASC"; break; case SortDimension.SORT_DIRECTION_DESCENDING: direction = " DESC"; break; default: throw new IllegalStateException( "Unexpected sort direction: " + dimension.getSortDirection()); } return columnName + direction; } private void notifyListeners(@UpdateType int updateType) { for (int i = mListeners.size() - 1; i >= 0; --i) { mListeners.get(i).onModelUpdate(this, updateType); Loading