Loading app/src/main/java/app/fedilab/android/mastodon/ui/drawer/NotificationAdapter.java +1 −1 Original line number Diff line number Diff line Loading @@ -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 = ""; Loading app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java +86 −36 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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); Loading @@ -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; Loading @@ -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 -> { Loading Loading @@ -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) { Loading Loading @@ -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); Loading @@ -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; Loading @@ -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()); } Loading Loading @@ -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); Loading app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusDirectMessageAdapter.java +213 −30 File changed.Preview size limit exceeded, changes collapsed. Show changes app/src/main/res/layouts/mastodon/layout/drawer_status_chat.xml +1 −0 Original line number Diff line number Diff line Loading @@ -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" Loading app/src/main/res/layouts/mastodon/layout/layout_drawer_attachments.xml +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
app/src/main/java/app/fedilab/android/mastodon/ui/drawer/NotificationAdapter.java +1 −1 Original line number Diff line number Diff line Loading @@ -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 = ""; Loading
app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java +86 −36 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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); Loading @@ -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; Loading @@ -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 -> { Loading Loading @@ -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) { Loading Loading @@ -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); Loading @@ -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; Loading @@ -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()); } Loading Loading @@ -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); Loading
app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusDirectMessageAdapter.java +213 −30 File changed.Preview size limit exceeded, changes collapsed. Show changes
app/src/main/res/layouts/mastodon/layout/drawer_status_chat.xml +1 −0 Original line number Diff line number Diff line Loading @@ -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" Loading
app/src/main/res/layouts/mastodon/layout/layout_drawer_attachments.xml +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