Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 12c7a0c9 authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Android (Google) Code Review
Browse files

Merge "More UX updates around picking images." into klp-dev

parents 540421ba f6db1549
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -20812,6 +20812,7 @@ package android.provider {
    field public static final java.lang.String COLUMN_MIME_TYPE = "mime_type";
    field public static final java.lang.String COLUMN_SIZE = "_size";
    field public static final java.lang.String COLUMN_SUMMARY = "summary";
    field public static final int FLAG_DIR_HIDE_GRID_TITLES = 64; // 0x40
    field public static final int FLAG_DIR_PREFERS_GRID = 16; // 0x10
    field public static final int FLAG_DIR_PREFERS_LAST_MODIFIED = 32; // 0x20
    field public static final int FLAG_DIR_SUPPORTS_CREATE = 8; // 0x8
+12 −0
Original line number Diff line number Diff line
@@ -257,6 +257,18 @@ public final class DocumentsContract {
         * @see #COLUMN_FLAGS
         */
        public static final int FLAG_DIR_PREFERS_LAST_MODIFIED = 1 << 5;

        /**
         * Flag indicating that document titles should be hidden when viewing
         * this directory in a larger format grid. For example, a directory
         * containing only images may want the image thumbnails to speak for
         * themselves. Only valid when {@link #COLUMN_MIME_TYPE} is
         * {@link #MIME_TYPE_DIR}.
         *
         * @see #COLUMN_FLAGS
         * @see #FLAG_DIR_PREFERS_GRID
         */
        public static final int FLAG_DIR_HIDE_GRID_TITLES = 1 << 6;
    }

    /**
+16 −1
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@
            android:layout_width="match_parent"
            android:layout_height="0dip"
            android:layout_weight="1"
            android:layout_marginBottom="6dp"
            android:background="#fff">

            <FrameLayout
@@ -63,10 +64,10 @@
        </FrameLayout>

        <LinearLayout
            android:id="@+id/line1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:paddingTop="6dp"
            android:paddingStart="?android:attr/listPreferredItemPaddingStart"
            android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">

@@ -121,6 +122,20 @@
                android:textAlignment="viewStart"
                style="@style/TextAppearance.Small" />

            <Space
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:layout_weight="1" />

            <ImageView
                android:id="@android:id/icon2"
                android:layout_width="@dimen/root_icon_size"
                android:layout_height="@dimen/root_icon_size"
                android:layout_marginStart="8dip"
                android:scaleType="centerInside"
                android:contentDescription="@null"
                android:visibility="gone" />

        </LinearLayout>

    </LinearLayout>
+3 −3
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@
        android:id="@+id/menu_create_dir"
        android:title="@string/menu_create_dir"
        android:icon="@drawable/ic_menu_new_folder"
        android:showAsAction="ifRoom" />
        android:showAsAction="always" />
    <item
        android:id="@+id/menu_search"
        android:title="@string/menu_search"
@@ -48,12 +48,12 @@
        android:id="@+id/menu_grid"
        android:title="@string/menu_grid"
        android:icon="@drawable/ic_menu_view_grid"
        android:showAsAction="ifRoom" />
        android:showAsAction="never" />
    <item
        android:id="@+id/menu_list"
        android:title="@string/menu_list"
        android:icon="@drawable/ic_menu_view_list"
        android:showAsAction="ifRoom" />
        android:showAsAction="never" />
    <item
        android:id="@+id/menu_settings"
        android:title="@string/menu_settings"
+59 −18
Original line number Diff line number Diff line
@@ -102,6 +102,8 @@ public class DirectoryFragment extends Fragment {
    private int mLastSortOrder = SORT_ORDER_UNKNOWN;
    private boolean mLastShowSize = false;

    private boolean mHideGridTitles = false;

    private Point mThumbSize;

    private DocumentsAdapter mAdapter;
@@ -112,11 +114,6 @@ public class DirectoryFragment extends Fragment {
    private static final String EXTRA_DOC = "doc";
    private static final String EXTRA_QUERY = "query";

    /**
     * MIME types that should always show thumbnails in list mode.
     */
    private static final String[] LIST_THUMBNAIL_MIMES = new String[] { "image/*", "video/*" };

    private static AtomicInteger sLoaderId = new AtomicInteger(4000);

    private final int mLoaderId = sLoaderId.incrementAndGet();
@@ -182,14 +179,23 @@ public class DirectoryFragment extends Fragment {
        final Context context = getActivity();
        final State state = getDisplayState(DirectoryFragment.this);

        final RootInfo root = getArguments().getParcelable(EXTRA_ROOT);
        final DocumentInfo doc = getArguments().getParcelable(EXTRA_DOC);

        mAdapter = new DocumentsAdapter();
        mType = getArguments().getInt(EXTRA_TYPE);

        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();
        }

        mCallbacks = new LoaderCallbacks<DirectoryResult>() {
            @Override
            public Loader<DirectoryResult> onCreateLoader(int id, Bundle args) {
                final RootInfo root = getArguments().getParcelable(EXTRA_ROOT);
                final DocumentInfo doc = getArguments().getParcelable(EXTRA_DOC);
                final String query = getArguments().getString(EXTRA_QUERY);

                Uri contentsUri;
@@ -643,6 +649,8 @@ public class DirectoryFragment extends Fragment {
            final Context context = parent.getContext();
            final State state = getDisplayState(DirectoryFragment.this);

            final DocumentInfo doc = getArguments().getParcelable(EXTRA_DOC);

            final RootsCache roots = DocumentsApplication.getRootsCache(context);
            final ThumbnailCache thumbs = DocumentsApplication.getThumbnailsCache(
                    context, mThumbSize);
@@ -671,12 +679,15 @@ public class DirectoryFragment extends Fragment {
            final String docSummary = getCursorString(cursor, Document.COLUMN_SUMMARY);
            final long docSize = getCursorLong(cursor, Document.COLUMN_SIZE);

            final View line1 = convertView.findViewById(R.id.line1);
            final View line2 = convertView.findViewById(R.id.line2);

            final View icon = convertView.findViewById(android.R.id.icon);
            final ImageView iconMime = (ImageView) convertView.findViewById(R.id.icon_mime);
            final ImageView iconThumb = (ImageView) convertView.findViewById(R.id.icon_thumb);
            final TextView title = (TextView) convertView.findViewById(android.R.id.title);
            final View line2 = convertView.findViewById(R.id.line2);
            final ImageView icon1 = (ImageView) convertView.findViewById(android.R.id.icon1);
            final ImageView icon2 = (ImageView) convertView.findViewById(android.R.id.icon2);
            final TextView summary = (TextView) convertView.findViewById(android.R.id.summary);
            final TextView date = (TextView) convertView.findViewById(R.id.date);
            final TextView size = (TextView) convertView.findViewById(R.id.size);
@@ -692,10 +703,11 @@ public class DirectoryFragment extends Fragment {

            final boolean supportsThumbnail = (docFlags & Document.FLAG_SUPPORTS_THUMBNAIL) != 0;
            final boolean allowThumbnail = (state.derivedMode == MODE_GRID)
                    || MimePredicate.mimeMatches(LIST_THUMBNAIL_MIMES, docMimeType);
                    || MimePredicate.mimeMatches(MimePredicate.VISUAL_MIMES, docMimeType);
            final boolean showThumbnail = supportsThumbnail && allowThumbnail;

            boolean cacheHit = false;
            if (supportsThumbnail && allowThumbnail) {
            if (showThumbnail) {
                final Uri uri = DocumentsContract.buildDocumentUri(docAuthority, docId);
                final Bitmap cachedResult = thumbs.get(uri);
                if (cachedResult != null) {
@@ -726,15 +738,19 @@ public class DirectoryFragment extends Fragment {
                }
            }

            title.setText(docDisplayName);

            boolean hasLine1 = false;
            boolean hasLine2 = false;

            final boolean hideTitle = (state.derivedMode == MODE_GRID) && mHideGridTitles;
            if (!hideTitle) {
                title.setText(docDisplayName);
                hasLine1 = true;
            }

            Drawable iconDrawable = null;
            if (mType == TYPE_RECENT_OPEN) {
                final RootInfo root = roots.getRoot(docAuthority, docRootId);
                final Drawable iconDrawable = root.loadIcon(context);
                icon1.setVisibility(View.VISIBLE);
                icon1.setImageDrawable(iconDrawable);
                iconDrawable = root.loadIcon(context);

                if (summary != null) {
                    final boolean alwaysShowSummary = getResources()
@@ -756,7 +772,13 @@ public class DirectoryFragment extends Fragment {
                    }
                }
            } else {
                icon1.setVisibility(View.GONE);
                // Directories showing thumbnails in grid mode get a little icon
                // hint to remind user they're a directory.
                if (Document.MIME_TYPE_DIR.equals(docMimeType) && state.derivedMode == MODE_GRID
                        && showThumbnail) {
                    iconDrawable = context.getResources().getDrawable(R.drawable.ic_root_folder);
                }

                if (summary != null) {
                    if (docSummary != null) {
                        summary.setText(docSummary);
@@ -768,6 +790,19 @@ public class DirectoryFragment extends Fragment {
                }
            }

            if (icon1 != null) icon1.setVisibility(View.GONE);
            if (icon2 != null) icon2.setVisibility(View.GONE);

            if (iconDrawable != null) {
                if (hasLine1) {
                    icon1.setVisibility(View.VISIBLE);
                    icon1.setImageDrawable(iconDrawable);
                } else {
                    icon2.setVisibility(View.VISIBLE);
                    icon2.setImageDrawable(iconDrawable);
                }
            }

            if (docLastModified == -1) {
                date.setText(null);
            } else {
@@ -787,6 +822,9 @@ public class DirectoryFragment extends Fragment {
                size.setVisibility(View.GONE);
            }

            if (line1 != null) {
                line1.setVisibility(hasLine1 ? View.VISIBLE : View.GONE);
            }
            if (line2 != null) {
                line2.setVisibility(hasLine2 ? View.VISIBLE : View.GONE);
            }
@@ -796,11 +834,13 @@ public class DirectoryFragment extends Fragment {
            if (enabled) {
                setEnabledRecursive(convertView, true);
                icon.setAlpha(1f);
                icon1.setAlpha(1f);
                if (icon1 != null) icon1.setAlpha(1f);
                if (icon2 != null) icon2.setAlpha(1f);
            } else {
                setEnabledRecursive(convertView, false);
                icon.setAlpha(0.5f);
                icon1.setAlpha(0.5f);
                if (icon1 != null) icon1.setAlpha(0.5f);
                if (icon2 != null) icon2.setAlpha(0.5f);
            }

            return convertView;
@@ -943,6 +983,7 @@ public class DirectoryFragment extends Fragment {
    }

    private void setEnabledRecursive(View v, boolean enabled) {
        if (v == null) return;
        if (v.isEnabled() == enabled) return;
        v.setEnabled(enabled);

Loading