From 385fa317c0066185494e3d389c3873a216ff2b2d Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 13 Feb 2020 20:45:03 +0100 Subject: [PATCH] Add a green frame around current small preview --- .../riotx/core/platform/CheckableImageView.kt | 60 +++++++++++++++++++ .../preview/AttachmentPreviewControllers.kt | 1 + .../preview/AttachmentPreviewItems.kt | 8 ++- .../color/checked_accent_color_selector.xml | 5 ++ .../background_checked_accent_color.xml | 6 ++ .../item_attachment_miniature_preview.xml | 4 +- 6 files changed, 81 insertions(+), 3 deletions(-) create mode 100644 vector/src/main/java/im/vector/riotx/core/platform/CheckableImageView.kt create mode 100644 vector/src/main/res/color/checked_accent_color_selector.xml create mode 100644 vector/src/main/res/drawable/background_checked_accent_color.xml diff --git a/vector/src/main/java/im/vector/riotx/core/platform/CheckableImageView.kt b/vector/src/main/java/im/vector/riotx/core/platform/CheckableImageView.kt new file mode 100644 index 0000000000..3f8c3f1b45 --- /dev/null +++ b/vector/src/main/java/im/vector/riotx/core/platform/CheckableImageView.kt @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2020 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.riotx.core.platform + +import android.content.Context +import android.util.AttributeSet +import android.widget.Checkable +import androidx.appcompat.widget.AppCompatImageView + +class CheckableImageView : AppCompatImageView, Checkable { + + private var mChecked = false + + constructor(context: Context) : super(context) + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) + + constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr) + + override fun isChecked(): Boolean { + return mChecked + } + + override fun setChecked(b: Boolean) { + if (b != mChecked) { + mChecked = b + refreshDrawableState() + } + } + + override fun toggle() { + isChecked = !mChecked + } + + override fun onCreateDrawableState(extraSpace: Int): IntArray { + val drawableState = super.onCreateDrawableState(extraSpace + 1) + if (isChecked) { + mergeDrawableStates(drawableState, CHECKED_STATE_SET) + } + return drawableState + } + + companion object { + private val CHECKED_STATE_SET = intArrayOf(android.R.attr.state_checked) + } +} diff --git a/vector/src/main/java/im/vector/riotx/features/attachments/preview/AttachmentPreviewControllers.kt b/vector/src/main/java/im/vector/riotx/features/attachments/preview/AttachmentPreviewControllers.kt index 966bfe26cd..34f018aaf9 100644 --- a/vector/src/main/java/im/vector/riotx/features/attachments/preview/AttachmentPreviewControllers.kt +++ b/vector/src/main/java/im/vector/riotx/features/attachments/preview/AttachmentPreviewControllers.kt @@ -45,6 +45,7 @@ class AttachmentMiniaturePreviewController @Inject constructor() : TypedEpoxyCon attachmentMiniaturePreviewItem { id(contentAttachmentData.path) attachment(contentAttachmentData) + checked(data.currentAttachmentIndex == index) clickListener { _ -> callback?.onAttachmentClicked(index, contentAttachmentData) } diff --git a/vector/src/main/java/im/vector/riotx/features/attachments/preview/AttachmentPreviewItems.kt b/vector/src/main/java/im/vector/riotx/features/attachments/preview/AttachmentPreviewItems.kt index 24d7b312ec..3b43fa6e20 100644 --- a/vector/src/main/java/im/vector/riotx/features/attachments/preview/AttachmentPreviewItems.kt +++ b/vector/src/main/java/im/vector/riotx/features/attachments/preview/AttachmentPreviewItems.kt @@ -26,6 +26,7 @@ import im.vector.matrix.android.api.session.content.ContentAttachmentData import im.vector.riotx.R import im.vector.riotx.core.epoxy.VectorEpoxyHolder import im.vector.riotx.core.epoxy.VectorEpoxyModel +import im.vector.riotx.core.platform.CheckableImageView abstract class AttachmentPreviewItem : VectorEpoxyModel() { @@ -56,16 +57,19 @@ abstract class AttachmentMiniaturePreviewItem : AttachmentPreviewItem(R.id.attachmentMiniatureImageView) + private val miniatureImageView by bind(R.id.attachmentMiniatureImageView) } } diff --git a/vector/src/main/res/color/checked_accent_color_selector.xml b/vector/src/main/res/color/checked_accent_color_selector.xml new file mode 100644 index 0000000000..dfd9cfcac6 --- /dev/null +++ b/vector/src/main/res/color/checked_accent_color_selector.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/vector/src/main/res/drawable/background_checked_accent_color.xml b/vector/src/main/res/drawable/background_checked_accent_color.xml new file mode 100644 index 0000000000..ee2cdeae23 --- /dev/null +++ b/vector/src/main/res/drawable/background_checked_accent_color.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/vector/src/main/res/layout/item_attachment_miniature_preview.xml b/vector/src/main/res/layout/item_attachment_miniature_preview.xml index 23dfcf381b..a0fde7b778 100644 --- a/vector/src/main/res/layout/item_attachment_miniature_preview.xml +++ b/vector/src/main/res/layout/item_attachment_miniature_preview.xml @@ -8,10 +8,12 @@ card_view:cardBackgroundColor="@android:color/transparent" card_view:cardElevation="0dp"> -