Commit 0405e1e2 authored by Thomas's avatar Thomas
Browse files

Change media

parent d89c16b3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -402,7 +402,7 @@ public class NotificationAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
                holderStatus.bindingNotification.status.mainContainer.setAlpha(.7f);
                boolean displayMedia = sharedpreferences.getBoolean(context.getString(R.string.SET_DISPLAY_MEDIA_NOTIFICATION), true);
                if (!displayMedia) {
                    holderStatus.bindingNotification.status.attachmentsListContainer.setVisibility(View.GONE);
                    holderStatus.bindingNotification.status.media.mediaContainer.setVisibility(View.GONE);
                    holderStatus.bindingNotification.status.mediaContainer.setVisibility(View.GONE);
                }
                String title = "";
+86 −36
Original line number Diff line number Diff line
@@ -446,9 +446,9 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
            LinearLayoutCompat.MarginLayoutParams pmc = (LinearLayoutCompat.MarginLayoutParams) holder.binding.mediaContainer.getLayoutParams();
            pmc.setMarginStart((int) Helper.convertDpToPixel(6, context));
            holder.binding.mediaContainer.setLayoutParams(pmc);
            LinearLayoutCompat.MarginLayoutParams pal = (LinearLayoutCompat.MarginLayoutParams) holder.binding.attachmentsListContainer.getLayoutParams();
            LinearLayoutCompat.MarginLayoutParams pal = (LinearLayoutCompat.MarginLayoutParams) holder.binding.media.mediaContainer.getLayoutParams();
            pal.setMarginStart((int) Helper.convertDpToPixel(6, context));
            holder.binding.attachmentsListContainer.setLayoutParams(pal);
            holder.binding.media.mediaContainer.setLayoutParams(pal);
            LinearLayoutCompat.MarginLayoutParams pp = (LinearLayoutCompat.MarginLayoutParams) holder.binding.poll.pollContainer.getLayoutParams();
            pp.setMarginStart((int) Helper.convertDpToPixel(6, context));
            holder.binding.poll.pollContainer.setLayoutParams(pp);
@@ -1372,7 +1372,7 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
        boolean cardDisplayed = (statusToDeal.card != null && (display_card || statusToDeal.isFocused) && statusToDeal.quote_id == null);
        if (statusToDeal.media_attachments != null && statusToDeal.media_attachments.size() > 0 && (!hideSingleMediaWithCard || !cardDisplayed || statusToDeal.media_attachments.size() > 1)) {

            holder.binding.attachmentsList.removeAllViews();

            holder.binding.mediaContainer.removeAllViews();
            if ((loadMediaType.equals("ASK") || (loadMediaType.equals("WIFI") && !TimelineHelper.isOnWIFI(context))) && !statusToDeal.canLoadMedia) {
                holder.binding.mediaContainer.setVisibility(View.GONE);
@@ -1385,10 +1385,73 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
                });
            } else {
                int mediaPosition = 1;
                boolean singleMedia = statusToDeal.media_attachments.size() == 1;
                if (!fullAttachement) {
                    int defaultHeight = (int) Helper.convertDpToPixel(300, context);
                    if (measuredWidth > 0) {
                        defaultHeight = (int) (measuredWidth * 3) / 4;
                    }
                    LinearLayoutCompat.LayoutParams lp = new LinearLayoutCompat.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, defaultHeight);
                    holder.binding.media.mediaContainer.setLayoutParams(lp);
                    if (statusToDeal.media_attachments.size() == 1) {
                        holder.binding.media.media1Container.mediaRoot.setVisibility(View.VISIBLE);
                        holder.binding.media.media2Container.mediaRoot.setVisibility(View.GONE);
                        holder.binding.media.media3Container.mediaRoot.setVisibility(View.GONE);
                        holder.binding.media.media4Container.mediaRoot.setVisibility(View.GONE);
                        holder.binding.media.moreMedia.setVisibility(View.GONE);
                    } else if (statusToDeal.media_attachments.size() == 2) {
                        holder.binding.media.media1Container.mediaRoot.setVisibility(View.VISIBLE);
                        holder.binding.media.media2Container.mediaRoot.setVisibility(View.VISIBLE);
                        holder.binding.media.media3Container.mediaRoot.setVisibility(View.GONE);
                        holder.binding.media.media4Container.mediaRoot.setVisibility(View.GONE);
                        holder.binding.media.moreMedia.setVisibility(View.GONE);
                    } else if (statusToDeal.media_attachments.size() == 3) {
                        holder.binding.media.media1Container.mediaRoot.setVisibility(View.VISIBLE);
                        holder.binding.media.media2Container.mediaRoot.setVisibility(View.GONE);
                        holder.binding.media.media3Container.mediaRoot.setVisibility(View.VISIBLE);
                        holder.binding.media.media4Container.mediaRoot.setVisibility(View.VISIBLE);
                        holder.binding.media.moreMedia.setVisibility(View.GONE);
                    } else if (statusToDeal.media_attachments.size() == 4) {
                        holder.binding.media.media1Container.mediaRoot.setVisibility(View.VISIBLE);
                        holder.binding.media.media2Container.mediaRoot.setVisibility(View.VISIBLE);
                        holder.binding.media.media3Container.mediaRoot.setVisibility(View.VISIBLE);
                        holder.binding.media.media4Container.mediaRoot.setVisibility(View.VISIBLE);
                        holder.binding.media.moreMedia.setVisibility(View.GONE);
                    } else if (statusToDeal.media_attachments.size() > 4) {
                        holder.binding.media.media1Container.mediaRoot.setVisibility(View.VISIBLE);
                        holder.binding.media.media2Container.mediaRoot.setVisibility(View.VISIBLE);
                        holder.binding.media.media3Container.mediaRoot.setVisibility(View.VISIBLE);
                        holder.binding.media.media4Container.mediaRoot.setVisibility(View.VISIBLE);
                        holder.binding.media.moreMedia.setVisibility(View.VISIBLE);
                    }
                }
                for (Attachment attachment : statusToDeal.media_attachments) {
                    LayoutMediaBinding layoutMediaBinding = LayoutMediaBinding.inflate(LayoutInflater.from(context));

                    if (fullAttachement) {

                    }
                    LayoutMediaBinding layoutMediaBinding = null;


                    if ((fullAttachement && (!statusToDeal.sensitive || expand_media))) {
                        layoutMediaBinding = LayoutMediaBinding.inflate(LayoutInflater.from(context));
                        holder.binding.mediaContainer.addView(layoutMediaBinding.getRoot());
                    } else {
                        if (mediaPosition == 1) {
                            layoutMediaBinding = holder.binding.media.media1Container;
                        } else if (mediaPosition == 2 && statusToDeal.media_attachments.size() == 3) {
                            layoutMediaBinding = holder.binding.media.media3Container;
                        } else if (mediaPosition == 2) {
                            layoutMediaBinding = holder.binding.media.media2Container;
                        } else if (mediaPosition == 3 && statusToDeal.media_attachments.size() == 3) {
                            layoutMediaBinding = holder.binding.media.media4Container;
                        } else if (mediaPosition == 3) {
                            layoutMediaBinding = holder.binding.media.media3Container;
                        } else if (mediaPosition == 4) {
                            layoutMediaBinding = holder.binding.media.media4Container;
                        }
                    }
                    if (fullAttachement && (!statusToDeal.sensitive || expand_media)) {

                        float ratio = 1.0f;
                        float mediaH = -1.0f;
                        float mediaW = -1.0f;
@@ -1399,30 +1462,29 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
                                ratio = measuredWidth > 0 ? measuredWidth / mediaW : 1.0f;
                            }
                        }
                        loadAndAddAttachment(context, layoutMediaBinding, holder, adapter, mediaPosition, mediaW, mediaH, ratio, statusToDeal, attachment, singleMedia);
                        loadAndAddAttachment(context, layoutMediaBinding, holder, adapter, mediaPosition, mediaW, mediaH, ratio, statusToDeal, attachment);

                    } else {
                        loadAndAddAttachment(context, layoutMediaBinding, holder, adapter, mediaPosition, -1.f, -1.f, -1.f, statusToDeal, attachment, singleMedia);
                        if (layoutMediaBinding != null) {
                            loadAndAddAttachment(context, layoutMediaBinding, holder, adapter, mediaPosition, -1.f, -1.f, -1.f, statusToDeal, attachment);
                        }
                    mediaPosition++;
                    if ((fullAttachement && (!statusToDeal.sensitive || expand_media)) || singleMedia) {
                        holder.binding.mediaContainer.addView(layoutMediaBinding.getRoot());
                    } else {
                        holder.binding.attachmentsList.addView(layoutMediaBinding.getRoot());
                    }


                    mediaPosition++;
                }
                if ((!fullAttachement || statusToDeal.sensitive) && !singleMedia) {
                if (!fullAttachement || statusToDeal.sensitive) {
                    holder.binding.mediaContainer.setVisibility(View.GONE);
                    holder.binding.attachmentsListContainer.setVisibility(View.VISIBLE);
                    holder.binding.media.mediaContainer.setVisibility(View.VISIBLE);
                } else {
                    holder.binding.mediaContainer.setVisibility(View.VISIBLE);
                    holder.binding.attachmentsListContainer.setVisibility(View.GONE);
                    holder.binding.media.mediaContainer.setVisibility(View.GONE);
                }
            }
        } else {
            holder.binding.displayMedia.setVisibility(View.GONE);
            holder.binding.mediaContainer.setVisibility(View.GONE);
            holder.binding.attachmentsListContainer.setVisibility(View.GONE);
            holder.binding.media.mediaContainer.setVisibility(View.GONE);
        }
        holder.binding.statusContent.setMovementMethod(LongClickLinkMovementMethod.getInstance());
        holder.binding.reblogInfo.setOnClickListener(v -> {
@@ -2202,7 +2264,7 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
        }
    }

    private static RequestBuilder<Drawable> prepareRequestBuilder(Context context, Attachment attachment,
    public static RequestBuilder<Drawable> prepareRequestBuilder(Context context, Attachment attachment,
                                                                 float mediaW, float mediaH,
                                                                 float focusX, float focusY, boolean isSensitive, boolean isArt) {

@@ -2249,7 +2311,7 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
                                             StatusViewHolder holder,
                                             RecyclerView.Adapter<RecyclerView.ViewHolder> adapter,
                                             int mediaPosition, float mediaW, float mediaH, float ratio,
                                             Status statusToDeal, Attachment attachment, boolean singleImage) {
                                             Status statusToDeal, Attachment attachment) {
        SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context);
        final int timeout = sharedpreferences.getInt(context.getString(R.string.SET_NSFW_TIMEOUT), 5);
        boolean fullAttachement = sharedpreferences.getBoolean(context.getString(R.string.SET_FULL_PREVIEW), false);
@@ -2257,24 +2319,15 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
        boolean expand_media = sharedpreferences.getBoolean(context.getString(R.string.SET_EXPAND_MEDIA), false);

        LinearLayout.LayoutParams lp;
        int defaultHeight = (int) Helper.convertDpToPixel(200, context);
        if (measuredWidth > 0) {
            defaultHeight = (int) (measuredWidth * 3) / 4;
        }

        if (fullAttachement && mediaH > 0 && (!statusToDeal.sensitive || expand_media)) {
            lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, (int) (mediaH * ratio));
            layoutMediaBinding.media.setScaleType(ImageView.ScaleType.FIT_CENTER);
        } else {
            if (singleImage) {
                lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, defaultHeight);
            } else {
                //noinspection SuspiciousNameCombination
                lp = new LinearLayout.LayoutParams(defaultHeight, defaultHeight);
            }
            lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
            layoutMediaBinding.media.setScaleType(ImageView.ScaleType.CENTER_CROP);
        }


        layoutMediaBinding.media.setLayoutParams(lp);

        float focusX = 0.f;
@@ -2283,10 +2336,7 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
            focusX = statusToDeal.media_attachments.get(0).meta.focus.x;
            focusY = statusToDeal.media_attachments.get(0).meta.focus.y;
        }
        layoutMediaBinding.count.setVisibility(View.VISIBLE);
        if ((!fullAttachement || statusToDeal.sensitive) && !singleImage) {
            layoutMediaBinding.count.setText(String.format(Locale.getDefault(), "%d/%d", mediaPosition, statusToDeal.media_attachments.size()));
        }

        if (attachment.description != null && attachment.description.trim().length() > 0) {
            layoutMediaBinding.media.setContentDescription(attachment.description.trim());
        }
@@ -2366,7 +2416,7 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
            adapter.notifyItemChanged(holder.getBindingAdapterPosition());
        });

        if ((!statusToDeal.sensitive || expand_media) && (fullAttachement || singleImage)) {
        if ((!statusToDeal.sensitive || expand_media) && (fullAttachement)) {
            layoutMediaBinding.getRoot().setPadding(0, 0, 0, 10);
        } else {
            layoutMediaBinding.getRoot().setPadding(0, 0, 10, 0);
+213 −30

File changed.

Preview size limit exceeded, changes collapsed.

+1 −0
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@
        tools:text="@tools:sample/lorem/random" />

    <include
        android:id="@+id/media"
        layout="@layout/layout_drawer_attachments"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
+60 −65
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/media_container"
    android:layout_height="300dp">

    <androidx.appcompat.widget.LinearLayoutCompat
        android:layout_width="match_parent"
    <include
        android:id="@+id/media1_container"
        layout="@layout/layout_media"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_weight="1">
        android:layout_margin="1dp"
        app:layout_constraintBottom_toTopOf="@+id/media3_container"
        app:layout_constraintEnd_toStartOf="@+id/media2_container"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

        <androidx.appcompat.widget.AppCompatImageView
            android:id="@+id/media1"
    <include
        android:id="@+id/media2_container"
        layout="@layout/layout_media"
        android:layout_width="0dp"
            android:layout_height="150dp"
            android:layout_weight="1"
            android:scaleType="centerCrop"
            tools:src="@tools:sample/backgrounds/scenic" />
        android:layout_margin="1dp"
        android:layout_height="0dp"
        android:visibility="gone"
        app:layout_constraintBottom_toTopOf="@+id/media4_container"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@id/media1_container"
        app:layout_constraintTop_toTopOf="parent" />

        <androidx.appcompat.widget.AppCompatImageView
            android:id="@+id/media2"
    <include
        android:id="@+id/media3_container"
        layout="@layout/layout_media"
        android:layout_width="0dp"
            android:layout_height="150dp"
            android:layout_marginStart="6dp"
            android:layout_weight="1"
            android:scaleType="centerCrop"
            tools:src="@tools:sample/backgrounds/scenic" />

    </androidx.appcompat.widget.LinearLayoutCompat>

    <androidx.appcompat.widget.LinearLayoutCompat
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginTop="6dp"
        android:layout_weight="1">
        android:layout_margin="1dp"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/media4_container"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/media1_container" />

        <androidx.appcompat.widget.AppCompatImageView
            android:id="@+id/media3"
            android:layout_width="0dp"
            android:layout_height="150dp"
            android:layout_weight="1"
            android:scaleType="centerCrop"
            tools:src="@tools:sample/backgrounds/scenic" />

        <RelativeLayout
    <include
        android:id="@+id/media4_container"
        layout="@layout/layout_media"
        android:layout_width="0dp"
            android:layout_height="150dp"
            android:layout_marginStart="6dp"
            android:layout_weight="1">

            <androidx.appcompat.widget.AppCompatImageView
                android:id="@+id/media4"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="centerCrop"
                tools:src="@tools:sample/backgrounds/scenic" />
        android:layout_height="0dp"
        android:layout_margin="1dp"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@id/media3_container"
        app:layout_constraintTop_toBottomOf="@id/media2_container" />

    <androidx.appcompat.widget.AppCompatTextView
        android:id="@+id/more_media"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="#88000000"
        android:gravity="center"
                android:scaleType="centerCrop"
        android:textColor="@color/white"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="@+id/media4_container"
        app:layout_constraintTop_toTopOf="@+id/media4_container"
        tools:text="+7 more media" />

        </RelativeLayout>

    </androidx.appcompat.widget.LinearLayoutCompat>

</androidx.appcompat.widget.LinearLayoutCompat>
 No newline at end of file
</androidx.constraintlayout.widget.ConstraintLayout>
 No newline at end of file
Loading