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

Commit 56cb98e8 authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Android Git Automerger
Browse files

am 12c7a0c9: Merge "More UX updates around picking images." into klp-dev

* commit '12c7a0c9':
  More UX updates around picking images.
parents f6f36a95 12c7a0c9
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