From 602ec7ab5d8a77d074306044481e546b427ebb9e Mon Sep 17 00:00:00 2001 From: Lakoja Date: Tue, 28 Feb 2023 10:01:19 +0100 Subject: [PATCH 1/5] 3335: Use different bounding aspect ratios for landscape --- .../com/keylesspalace/tusky/util/AttachmentHelper.kt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) 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..30d6e3e09e 100644 --- a/app/src/main/java/com/keylesspalace/tusky/util/AttachmentHelper.kt +++ b/app/src/main/java/com/keylesspalace/tusky/util/AttachmentHelper.kt @@ -3,6 +3,7 @@ package com.keylesspalace.tusky.util import android.content.Context +import android.content.res.Resources import com.keylesspalace.tusky.R import com.keylesspalace.tusky.entity.Attachment import kotlin.math.roundToInt @@ -27,10 +28,16 @@ private fun formatDuration(durationInSeconds: Double): String { } fun List.aspectRatios(): List { + val displayMetrics = Resources.getSystem().displayMetrics + val deviceIsHigher = displayMetrics.heightPixels > displayMetrics.widthPixels + + val minAspect = if (deviceIsHigher) 0.5 else 1.2 + val maxAspect = if (deviceIsHigher) 2.0 else 3.0 + 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) } } From 394395cb343df33312e4605f4ca82af07a48e99d Mon Sep 17 00:00:00 2001 From: Lakoja Date: Tue, 28 Feb 2023 17:26:10 +0100 Subject: [PATCH 2/5] 3335: Use a resource integer for aspect ratio values --- .../keylesspalace/tusky/adapter/StatusBaseViewHolder.java | 7 +++++-- .../tusky/components/viewthread/edits/ViewEditsAdapter.kt | 4 +++- .../java/com/keylesspalace/tusky/util/AttachmentHelper.kt | 8 +------- app/src/main/res/values-land/integers.xml | 5 +++++ app/src/main/res/values/integers.xml | 3 ++- 5 files changed, 16 insertions(+), 11 deletions(-) create mode 100644 app/src/main/res/values-land/integers.xml 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 30d6e3e09e..7bbff94401 100644 --- a/app/src/main/java/com/keylesspalace/tusky/util/AttachmentHelper.kt +++ b/app/src/main/java/com/keylesspalace/tusky/util/AttachmentHelper.kt @@ -27,13 +27,7 @@ private fun formatDuration(durationInSeconds: Double): String { return "%d:%02d:%02d".format(hours, minutes, seconds) } -fun List.aspectRatios(): List { - val displayMetrics = Resources.getSystem().displayMetrics - val deviceIsHigher = displayMetrics.heightPixels > displayMetrics.widthPixels - - val minAspect = if (deviceIsHigher) 0.5 else 1.2 - val maxAspect = if (deviceIsHigher) 2.0 else 3.0 - +fun List.aspectRatios(minAspect: Double, maxAspect: Double): List { return map { attachment -> // 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 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..1eb1cb6765 --- /dev/null +++ b/app/src/main/res/values-land/integers.xml @@ -0,0 +1,5 @@ + + + 12 + 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 From 7cbafc1acf701d0ae62b2fe2157e2d7f29c4c6a0 Mon Sep 17 00:00:00 2001 From: Lakoja Date: Wed, 1 Mar 2023 08:59:15 +0100 Subject: [PATCH 3/5] 3335: Remove unneeded import --- .../main/java/com/keylesspalace/tusky/util/AttachmentHelper.kt | 1 - 1 file changed, 1 deletion(-) 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 7bbff94401..a549405ff4 100644 --- a/app/src/main/java/com/keylesspalace/tusky/util/AttachmentHelper.kt +++ b/app/src/main/java/com/keylesspalace/tusky/util/AttachmentHelper.kt @@ -3,7 +3,6 @@ package com.keylesspalace.tusky.util import android.content.Context -import android.content.res.Resources import com.keylesspalace.tusky.R import com.keylesspalace.tusky.entity.Attachment import kotlin.math.roundToInt From 0f9736f0ececea9743dbb8d565d1eda41fec025a Mon Sep 17 00:00:00 2001 From: Lakoja Date: Wed, 1 Mar 2023 15:50:41 +0100 Subject: [PATCH 4/5] 3335: Accommodate most content out there (much is 1:1) --- app/src/main/res/values-land/integers.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-land/integers.xml b/app/src/main/res/values-land/integers.xml index 1eb1cb6765..ee8b9078d9 100644 --- a/app/src/main/res/values-land/integers.xml +++ b/app/src/main/res/values-land/integers.xml @@ -1,5 +1,5 @@ - 12 + 10 30 From 1b53fb9620e1d604aee8bcde351853258431dbcc Mon Sep 17 00:00:00 2001 From: Lakoja Date: Tue, 3 Oct 2023 18:03:16 +0200 Subject: [PATCH 5/5] 3335: Also support tablets --- app/src/main/res/values-large-land/integers.xml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 app/src/main/res/values-large-land/integers.xml 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 +