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

Commit 9126fa8f authored by Julian Mancini's avatar Julian Mancini
Browse files

Create dymamic view adding without removing views.

Bug: 62911851
Test: InspectorUiTest
Change-Id: Iee6f55c677a52664d6fd6e16d760510081d5d867
parent dba4664a
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.android.documentsui.inspector.HeaderView
        android:id="@+id/inspector_header_view"
        android:layout_width="match_parent"
+1 −1
Original line number Diff line number Diff line
@@ -70,5 +70,5 @@
    <dimen name="bottom_bar_positive_button_width">73dp</dimen>
    <dimen name="bottom_bar_positive_button_elevation">2dp</dimen>

    <dimen name="inspector_header_height">200dp</dimen>
    <dimen name="inspector_header_height">250dp</dimen>
</resources>
+18 −10
Original line number Diff line number Diff line
@@ -22,6 +22,8 @@ import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.HashMap;
import java.util.Map;

import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.R;
@@ -33,6 +35,7 @@ import java.util.function.Consumer;
public class DetailsView extends LinearLayout implements Consumer<DocumentInfo> {

    private final LayoutInflater mInflater;
    private final Map<Integer, TextView> rows = new HashMap();

    public DetailsView(Context context) {
        this(context, null);
@@ -47,13 +50,18 @@ public class DetailsView extends LinearLayout implements Consumer<DocumentInfo>
        mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    private void addRow(@StringRes int StringId, String value) {
    private void setRow(@StringRes int keyId, String value) {
        if(rows.containsKey(keyId)) {
            rows.get(keyId).setText(value);
        } else {
            View row = mInflater.inflate(R.layout.table_row, null);
            TextView title = (TextView) row.findViewById(R.id.key);
        title.setText(getResources().getString(StringId));
            title.setText(getResources().getString(keyId));
            TextView info = (TextView) row.findViewById(R.id.value);
            info.setText(value);
            addView(row);
            rows.put(keyId, info);
        }
    }

    private String formatSize(long bytes) {
@@ -78,8 +86,8 @@ public class DetailsView extends LinearLayout implements Consumer<DocumentInfo>

    @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));
        setRow(R.string.sort_dimension_file_type, info.mimeType);
        setRow(R.string.sort_dimension_size, formatSize(info.size));
        setRow(R.string.sort_dimension_date, String.valueOf(info.lastModified));
    }
}
+1 −6
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static com.android.internal.util.Preconditions.checkArgument;
import android.app.Fragment;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.VisibleForTesting;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -35,8 +36,6 @@ public class DocumentInspectorFragment extends Fragment {
    private static final String DOC_URI_ARG = "docUri";
    private InspectorController mController;
    private LinearLayout mView;
    private DetailsView mDetails;
    private HeaderView mHeader;

    @Override
    public void onCreate(Bundle savedInstanceState) {
@@ -49,8 +48,6 @@ public class DocumentInspectorFragment extends Fragment {
        final Loader loader = new DocumentLoader(getActivity(), getLoaderManager());
        mView = (LinearLayout) inflater.inflate(R.layout.document_inspector_fragment,
                container, false);
        mHeader = (HeaderView) mView.findViewById(R.id.inspector_header_view);
        mDetails = (DetailsView) mView.findViewById(R.id.inspector_details_view);
        mController = new InspectorController(getActivity(), loader, mView);
        return mView;
    }
@@ -66,8 +63,6 @@ public class DocumentInspectorFragment extends Fragment {
    public void onStop() {
        super.onStop();
        mController.reset();
        mHeader.removeAllViewsInLayout();
        mDetails.removeAllViewsInLayout();
    }

    /**
+15 −4
Original line number Diff line number Diff line
@@ -29,10 +29,10 @@ import java.util.function.Consumer;
/**
 * Organizes and displays the title and thumbnail for a given document
 */
public class HeaderView extends RelativeLayout implements Consumer<DocumentInfo> {
public final class HeaderView extends RelativeLayout implements Consumer<DocumentInfo> {

    private View mHeader;
    private TextView mTitle;
    private final View mHeader;
    private final TextView mTitle;

    public HeaderView(Context context) {
        this(context, null);
@@ -52,7 +52,18 @@ public class HeaderView extends RelativeLayout implements Consumer<DocumentInfo>

    @Override
    public void accept(DocumentInfo info) {
        if (!hasHeader()) {
            addView(mHeader);
        }
        mTitle.setText(info.displayName);
        this.addView(mHeader);
    }

    private boolean hasHeader() {
        for (int i = 0; i < getChildCount(); i++) {
            if (getChildAt(i).equals(mHeader)) {
                return true;
            }
        }
        return false;
    }
}