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

Commit dba4664a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add support for opening file in owning application." into arc-apps

parents 84ff8709 e07c7730
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -16,3 +16,7 @@
-keep public class android.support.v4.view.accessibility.AccessibilityNodeInfoCompat {
   public static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat obtain();
}

-keepclassmembers public class com.android.documentsui.inspector.InspectorController {
    *;
}
 No newline at end of file
+9 −7
Original line number Diff line number Diff line
@@ -25,11 +25,12 @@ import android.widget.TextView;

import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.R;
import java.util.function.Consumer;

/**
 * Organizes and Displays the basic details about a file
 */
public class DetailsView extends LinearLayout {
public class DetailsView extends LinearLayout implements Consumer<DocumentInfo> {

    private final LayoutInflater mInflater;

@@ -46,12 +47,6 @@ public class DetailsView extends LinearLayout {
        mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    public void update(DocumentInfo info) {
        addRow(R.string.sort_dimension_file_type, info.mimeType);
        addRow(R.string.sort_dimension_size, formatSize(info.size));
        addRow(R.string.sort_dimension_date, String.valueOf(info.lastModified));
    }

    private void addRow(@StringRes int StringId, String value) {
        View row = mInflater.inflate(R.layout.table_row, null);
        TextView title = (TextView) row.findViewById(R.id.key);
@@ -80,4 +75,11 @@ public class DetailsView extends LinearLayout {
        }
        return docSize;
    }

    @Override
    public void accept(DocumentInfo info) {
        addRow(R.string.sort_dimension_file_type, info.mimeType);
        addRow(R.string.sort_dimension_size, formatSize(info.size));
        addRow(R.string.sort_dimension_date, String.valueOf(info.lastModified));
    }
}
+1 −2
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;

import com.android.documentsui.R;
import com.android.documentsui.inspector.InspectorController.Loader;

@@ -52,7 +51,7 @@ public class DocumentInspectorFragment extends Fragment {
                container, false);
        mHeader = (HeaderView) mView.findViewById(R.id.inspector_header_view);
        mDetails = (DetailsView) mView.findViewById(R.id.inspector_details_view);
        mController = new InspectorController(loader, mView);
        mController = new InspectorController(getActivity(), loader, mView);
        return mView;
    }

+4 −2
Original line number Diff line number Diff line
@@ -24,11 +24,12 @@ import android.widget.TextView;

import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.R;
import java.util.function.Consumer;

/**
 * Organizes and displays the title and thumbnail for a given document
 */
public class HeaderView extends RelativeLayout {
public class HeaderView extends RelativeLayout implements Consumer<DocumentInfo> {

    private View mHeader;
    private TextView mTitle;
@@ -49,7 +50,8 @@ public class HeaderView extends RelativeLayout {
        mTitle = (TextView) mHeader.findViewById(R.id.inspector_file_title);
    }

    public void update(DocumentInfo info) {
    @Override
    public void accept(DocumentInfo info) {
        mTitle.setText(info.displayName);
        this.addView(mHeader);
    }
+49 −17
Original line number Diff line number Diff line
@@ -15,41 +15,59 @@
 */
package com.android.documentsui.inspector;

import static android.provider.DocumentsContract.Document.FLAG_SUPPORTS_SETTINGS;
import static com.android.internal.util.Preconditions.checkArgument;

import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.provider.DocumentsContract;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
import android.widget.LinearLayout;

import com.android.documentsui.DocumentsApplication;
import com.android.documentsui.R;
import com.android.documentsui.base.DocumentInfo;
import com.android.internal.util.Preconditions;
import com.android.documentsui.roots.ProvidersAccess;
import java.util.function.Consumer;

import com.android.documentsui.R;
/**
 * A controller that coordinates retrieving document information and sending it to the view.
 */
public final class InspectorController {

    private final Loader mLoader;
    private @Nullable LinearLayout mLayout;
    private @Nullable HeaderView mHeader;
    private @Nullable DetailsView mDetails;
    private final Consumer<DocumentInfo> mHeader;
    private final Consumer<DocumentInfo> mDetails;
    private final Context mContext;
    private final ProvidersAccess mProviders;

    /**
     * InspectorControllerTest relies on this controller.
     */
    @VisibleForTesting
    public InspectorController(Loader loader) {
    public InspectorController(Context context, Loader loader, ProvidersAccess providers,
            Consumer<DocumentInfo> header, Consumer<DocumentInfo> details) {

        checkArgument(context != null);
        checkArgument(loader != null);
        checkArgument(providers != null);
        checkArgument(header != null);
        checkArgument(details != null);

        mContext = context;
        mLoader = loader;
        mProviders = providers;
        mHeader = header;
        mDetails = details;
    }

    public InspectorController(Loader loader, LinearLayout layout) {
        checkArgument(loader != null);
        checkArgument(layout != null);
        mLoader = loader;
        mLayout = layout;
        mHeader = (HeaderView) mLayout.findViewById(R.id.inspector_header_view);
        mDetails = (DetailsView) mLayout.findViewById(R.id.inspector_details_view);
    public InspectorController(Context context, Loader loader, LinearLayout layout) {

        this(context,
                loader,
                DocumentsApplication.getProvidersCache (context),
                (HeaderView) layout.findViewById(R.id.inspector_header_view),
                (DetailsView) layout.findViewById(R.id.inspector_details_view));
    }

    public void reset() {
@@ -68,8 +86,22 @@ public final class InspectorController {
        if (docInfo == null) {
            return;
        }
        mHeader.update(docInfo);
        mDetails.update(docInfo);
        mHeader.accept(docInfo);
        mDetails.accept(docInfo);
    }

    /**
     * Shows the selected document in it's content provider.
     *
     * @param DocumentInfo whose flag FLAG_SUPPORTS_SETTINGS is set.
     */
    public void showInProvider(Uri uri) {

        Intent intent = new Intent(DocumentsContract.ACTION_DOCUMENT_SETTINGS);
        intent.setPackage(mProviders.getPackageName(uri.getAuthority()));
        intent.addCategory(Intent.CATEGORY_DEFAULT);
        intent.setData(uri);
        mContext.startActivity(intent);
    }

    /**
Loading