diff --git a/CHANGES.md b/CHANGES.md index e7f920d788..c1c0a62105 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -19,6 +19,7 @@ Improvements 🙌: - Cross-Signing | Restore history after recover from passphrase (#1214) - Cross-Sign | QR code scan confirmation screens design update (#1187) - Emoji Verification | It's not the same butterfly! (#1220) + - Cross-Signing | Composer decoration: shields (#1077) Bugfix 🐛: - Missing avatar/displayname after verification request message (#841) diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt index 8c45090c91..86f4847ff7 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt @@ -700,7 +700,7 @@ class RoomDetailFragment @Inject constructor( val isRoomEncrypted = summary?.isEncrypted ?: false if (state.tombstoneEvent == null) { composerLayout.visibility = View.VISIBLE - composerLayout.setRoomEncrypted(isRoomEncrypted) + composerLayout.setRoomEncrypted(isRoomEncrypted, state.asyncRoomSummary.invoke()?.roomEncryptionTrustLevel) notificationAreaView.render(NotificationAreaView.State.Hidden) } else { composerLayout.visibility = View.GONE diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/composer/TextComposerView.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/composer/TextComposerView.kt index 593ce1a8f6..4391009b08 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/composer/TextComposerView.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/composer/TextComposerView.kt @@ -26,12 +26,15 @@ import android.widget.ImageView import android.widget.TextView import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintSet +import androidx.core.content.ContextCompat import androidx.core.text.toSpannable +import androidx.core.view.isVisible import androidx.transition.AutoTransition import androidx.transition.Transition import androidx.transition.TransitionManager import butterknife.BindView import butterknife.ButterKnife +import im.vector.matrix.android.api.crypto.RoomEncryptionTrustLevel import im.vector.riotx.R import kotlinx.android.synthetic.main.merge_composer_layout.view.* @@ -64,6 +67,8 @@ class TextComposerView @JvmOverloads constructor(context: Context, attrs: Attrib lateinit var composerEditText: ComposerEditText @BindView(R.id.composer_avatar_view) lateinit var composerAvatarImageView: ImageView + @BindView(R.id.composer_shield) + lateinit var composerShieldImageView: ImageView private var currentConstraintSetId: Int = -1 @@ -158,12 +163,19 @@ class TextComposerView @JvmOverloads constructor(context: Context, attrs: Attrib } } - fun setRoomEncrypted(isEncrypted: Boolean) { - composerEditText.setHint( - if (isEncrypted) { - R.string.room_message_placeholder_encrypted - } else { - R.string.room_message_placeholder_not_encrypted - }) + fun setRoomEncrypted(isEncrypted: Boolean, roomEncryptionTrustLevel: RoomEncryptionTrustLevel?) { + if (isEncrypted) { + composerEditText.setHint(R.string.room_message_placeholder) + composerShieldImageView.isVisible = true + val shieldRes = when (roomEncryptionTrustLevel) { + RoomEncryptionTrustLevel.Trusted -> R.drawable.ic_shield_trusted + RoomEncryptionTrustLevel.Warning -> R.drawable.ic_shield_warning + else -> R.drawable.ic_shield_black + } + composerShieldImageView.setImageDrawable(ContextCompat.getDrawable(context, shieldRes)) + } else { + composerEditText.setHint(R.string.room_message_placeholder) + composerShieldImageView.isVisible = false + } } } diff --git a/vector/src/main/res/layout/constraint_set_composer_layout_compact.xml b/vector/src/main/res/layout/constraint_set_composer_layout_compact.xml index ac04dfe3ec..4607f28f34 100644 --- a/vector/src/main/res/layout/constraint_set_composer_layout_compact.xml +++ b/vector/src/main/res/layout/constraint_set_composer_layout_compact.xml @@ -99,18 +99,31 @@ android:layout_width="32dp" android:layout_height="32dp" android:layout_marginStart="8dp" - android:layout_marginLeft="8dp" android:layout_marginTop="8dp" - android:layout_marginEnd="8dp" - android:layout_marginRight="8dp" + android:layout_marginEnd="4dp" + app:layout_goneMarginEnd="8dp" android:layout_marginBottom="8dp" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toStartOf="@+id/composerEditText" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="1" + app:layout_constraintEnd_toStartOf="@+id/composer_shield" tools:src="@tools:sample/avatars" /> + + <ImageView + android:id="@+id/composer_shield" + android:layout_width="16dp" + android:layout_height="16dp" + app:layout_constraintTop_toTopOf="@id/composer_avatar_view" + app:layout_constraintEnd_toStartOf="@+id/composerEditText" + app:layout_constraintBottom_toBottomOf="@id/composer_avatar_view" + app:layout_constraintStart_toEndOf="@+id/composer_avatar_view" + tools:src="@drawable/ic_shield_black" + tools:visibility="visible" + /> + + <ImageButton android:id="@+id/attachmentButton" android:layout_width="48dp" @@ -154,11 +167,11 @@ android:minHeight="48dp" android:nextFocusLeft="@id/composerEditText" android:nextFocusUp="@id/composerEditText" - android:padding="16dp" + android:padding="8dp" android:textSize="14sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/attachmentButton" - app:layout_constraintStart_toEndOf="@+id/composer_avatar_view" + app:layout_constraintStart_toEndOf="@+id/composer_shield" app:layout_constraintTop_toTopOf="parent" tools:text="@tools:sample/lorem/random" /> diff --git a/vector/src/main/res/layout/constraint_set_composer_layout_expanded.xml b/vector/src/main/res/layout/constraint_set_composer_layout_expanded.xml index d246c988e6..17b350542a 100644 --- a/vector/src/main/res/layout/constraint_set_composer_layout_expanded.xml +++ b/vector/src/main/res/layout/constraint_set_composer_layout_expanded.xml @@ -107,17 +107,32 @@ android:layout_marginStart="8dp" android:layout_marginLeft="8dp" android:layout_marginTop="8dp" - android:layout_marginEnd="8dp" + android:layout_marginEnd="4dp" + app:layout_goneMarginEnd="8dp" android:layout_marginRight="8dp" android:layout_marginBottom="8dp" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toStartOf="@+id/composerEditText" + app:layout_constraintEnd_toStartOf="@+id/composer_shield" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="1" tools:src="@tools:sample/avatars" /> + <ImageView + android:id="@+id/composer_shield" + android:layout_width="16dp" + android:layout_height="16dp" + app:layout_constraintTop_toTopOf="@id/composer_avatar_view" + app:layout_constraintEnd_toStartOf="@+id/composerEditText" + app:layout_constraintBottom_toBottomOf="@id/composer_avatar_view" + app:layout_constraintStart_toEndOf="@+id/composer_avatar_view" + tools:src="@drawable/ic_shield_black" + tools:visibility="visible" + /> + + + <ImageButton android:id="@+id/attachmentButton" android:layout_width="48dp" @@ -161,7 +176,7 @@ android:minHeight="48dp" android:nextFocusLeft="@id/composerEditText" android:nextFocusUp="@id/composerEditText" - android:padding="16dp" + android:padding="8dp" android:textSize="14sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/sendButton" diff --git a/vector/src/main/res/layout/merge_composer_layout.xml b/vector/src/main/res/layout/merge_composer_layout.xml index 571831a24d..b0c733c349 100644 --- a/vector/src/main/res/layout/merge_composer_layout.xml +++ b/vector/src/main/res/layout/merge_composer_layout.xml @@ -39,6 +39,13 @@ tools:ignore="MissingConstraints" tools:src="@tools:sample/avatars" /> + <ImageView + android:id="@+id/composer_shield" + android:layout_width="0dp" + android:layout_height="0dp" + tools:ignore="MissingConstraints" + tools:src="@drawable/ic_shield_black" /> + <TextView android:id="@+id/composer_related_message_sender" android:layout_width="0dp" diff --git a/vector/src/main/res/values/strings_riotX.xml b/vector/src/main/res/values/strings_riotX.xml index 00bf65e121..025491f94b 100644 --- a/vector/src/main/res/values/strings_riotX.xml +++ b/vector/src/main/res/values/strings_riotX.xml @@ -6,7 +6,7 @@ <!-- Sections has been created to avoid merge conflict. Let's see if it's better --> <!-- BEGIN Strings added by Valere --> - + <string name="room_message_placeholder">Message…</string> <!-- END Strings added by Valere -->