diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java b/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java index 49e70fc71e..83d80690c3 100644 --- a/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java +++ b/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java @@ -3,6 +3,7 @@ import static com.keylesspalace.tusky.viewdata.PollViewDataKt.buildDescription; import android.content.Context; +import android.content.res.Resources; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; @@ -497,9 +498,11 @@ protected void setMediaPreviews( boolean showingContent, boolean useBlurhash ) { - mediaPreview.setVisibility(View.VISIBLE); - mediaPreview.setAspectRatios(AttachmentHelper.aspectRatios(attachments)); + Resources resources = this.content.getContext().getResources(); + double minAspect = resources.getInteger(R.integer.image_aspect_min_tenth) / 10.0; + double maxAspect = resources.getInteger(R.integer.image_aspect_max_tenth) / 10.0; + mediaPreview.setAspectRatios(AttachmentHelper.aspectRatios(attachments, minAspect, maxAspect)); mediaPreview.forEachIndexed((i, imageView, descriptionIndicator) -> { Attachment attachment = attachments.get(i); diff --git a/app/src/main/java/com/keylesspalace/tusky/components/viewthread/edits/ViewEditsAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/viewthread/edits/ViewEditsAdapter.kt index 56bf1ffc4a..a849408cdf 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/viewthread/edits/ViewEditsAdapter.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/viewthread/edits/ViewEditsAdapter.kt @@ -158,7 +158,9 @@ class ViewEditsAdapter( binding.statusEditMediaSensitivity.hide() } else { binding.statusEditMediaPreview.show() - binding.statusEditMediaPreview.aspectRatios = edit.mediaAttachments.aspectRatios() + val minAspect: Double = context.resources.getInteger(R.integer.image_aspect_min_tenth) / 10.0 + val maxAspect: Double = context.resources.getInteger(R.integer.image_aspect_max_tenth) / 10.0 + binding.statusEditMediaPreview.aspectRatios = edit.mediaAttachments.aspectRatios(minAspect, maxAspect) binding.statusEditMediaPreview.forEachIndexed { index, imageView, descriptionIndicator -> diff --git a/app/src/main/java/com/keylesspalace/tusky/util/AttachmentHelper.kt b/app/src/main/java/com/keylesspalace/tusky/util/AttachmentHelper.kt index f49b901a07..a549405ff4 100644 --- a/app/src/main/java/com/keylesspalace/tusky/util/AttachmentHelper.kt +++ b/app/src/main/java/com/keylesspalace/tusky/util/AttachmentHelper.kt @@ -26,11 +26,11 @@ private fun formatDuration(durationInSeconds: Double): String { return "%d:%02d:%02d".format(hours, minutes, seconds) } -fun List.aspectRatios(): List { +fun List.aspectRatios(minAspect: Double, maxAspect: Double): List { return map { attachment -> - // clamp ratio between 2:1 & 1:2, defaulting to 16:9 + // clamp ratio between min & max, defaulting to 16:9 if there is no metadata val size = (attachment.meta?.small ?: attachment.meta?.original) ?: return@map 1.7778 val aspect = if (size.aspect > 0) size.aspect else size.width.toDouble() / size.height - aspect.coerceIn(0.5, 2.0) + aspect.coerceIn(minAspect, maxAspect) } } diff --git a/app/src/main/res/values-land/integers.xml b/app/src/main/res/values-land/integers.xml new file mode 100644 index 0000000000..ee8b9078d9 --- /dev/null +++ b/app/src/main/res/values-land/integers.xml @@ -0,0 +1,5 @@ + + + 10 + 30 + diff --git a/app/src/main/res/values-large-land/integers.xml b/app/src/main/res/values-large-land/integers.xml new file mode 100644 index 0000000000..ee8b9078d9 --- /dev/null +++ b/app/src/main/res/values-large-land/integers.xml @@ -0,0 +1,5 @@ + + + 10 + 30 + diff --git a/app/src/main/res/values/integers.xml b/app/src/main/res/values/integers.xml index e85c561cf5..f78c240e41 100644 --- a/app/src/main/res/values/integers.xml +++ b/app/src/main/res/values/integers.xml @@ -1,6 +1,7 @@ + 5 + 20 3 - 1