Media sending design improvements.

This commit is contained in:
Nicholas Tinsley
2024-03-06 16:22:56 -05:00
committed by Alex Hart
parent eb34a20195
commit ea64425456
18 changed files with 103 additions and 61 deletions

View File

@@ -9,6 +9,7 @@ import android.graphics.Rect
import android.net.Uri
import android.os.Bundle
import android.provider.OpenableColumns
import android.view.Gravity
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
@@ -323,7 +324,7 @@ class MediaReviewFragment : Fragment(R.layout.v2_media_review_fragment), Schedul
presentSendButton(state.sendType, state.recipient)
presentPager(state)
presentAddMessageEntry(state.message)
presentAddMessageEntry(state.viewOnceToggleState, state.message)
presentImageQualityToggle(state)
if (state.quality != sentMediaQuality) {
presentQualityToggleToast(state)
@@ -462,9 +463,18 @@ class MediaReviewFragment : Fragment(R.layout.v2_media_review_fragment), Schedul
)
}
private fun presentAddMessageEntry(message: CharSequence?) {
if (!message.isNullOrEmpty()) {
addMessageButton.setText(message, TextView.BufferType.SPANNABLE)
private fun presentAddMessageEntry(viewOnceState: MediaSelectionState.ViewOnceToggleState, message: CharSequence?) {
when (viewOnceState) {
MediaSelectionState.ViewOnceToggleState.INFINITE -> {
if (!message.isNullOrEmpty()) {
addMessageButton.gravity = Gravity.CENTER_VERTICAL
addMessageButton.setText(message, TextView.BufferType.SPANNABLE)
}
}
MediaSelectionState.ViewOnceToggleState.ONCE -> {
addMessageButton.gravity = Gravity.CENTER
addMessageButton.setText(R.string.MediaReviewFragment__view_once_message)
}
}
}
@@ -494,7 +504,7 @@ class MediaReviewFragment : Fragment(R.layout.v2_media_review_fragment), Schedul
}
val sendButtonForegroundDrawable = when {
recipient != null -> ContextCompat.getDrawable(requireContext(), R.drawable.symbol_send_24)
recipient != null -> ContextCompat.getDrawable(requireContext(), R.drawable.symbol_send_fill_24)
else -> ContextCompat.getDrawable(requireContext(), R.drawable.symbol_arrow_end_24)
}

View File

@@ -2,11 +2,11 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<layer-list>
<item android:drawable="@color/signal_dark_colorPrimaryContainer" />
<item android:drawable="@color/signal_dark_colorSurfaceVariant" />
<item>
<ripple android:color="@color/transparent_white_10" />
</item>
</layer-list>
</item>
<item android:drawable="@color/signal_dark_colorPrimaryContainer" android:state_pressed="false" />
<item android:drawable="@color/signal_dark_colorSurfaceVariant" android:state_pressed="false" />
</selector>

View File

@@ -4,9 +4,9 @@
<layer-list>
<item>
<shape android:shape="oval">
<size android:width="36dp" android:height="36dp" />
<size android:width="@dimen/image_editor_hud_tool_filled_circle_padding" android:height="@dimen/image_editor_hud_tool_filled_circle_padding" />
<solid android:color="@color/signal_dark_colorOnPrimaryContainer" />
<padding android:bottom="6dp" android:left="6dp" android:right="6dp" android:top="6dp" />
<padding android:bottom="@dimen/image_editor_hud_tool_filled_circle_padding" android:left="@dimen/image_editor_hud_tool_filled_circle_padding" android:right="@dimen/image_editor_hud_tool_filled_circle_padding" android:top="@dimen/image_editor_hud_tool_filled_circle_padding" />
</shape>
</item>
<item android:drawable="@drawable/symbol_blur_24" />
@@ -16,8 +16,8 @@
<layer-list>
<item>
<shape android:shape="oval">
<size android:width="36dp" android:height="36dp" />
<padding android:bottom="6dp" android:left="6dp" android:right="6dp" android:top="6dp" />
<size android:width="@dimen/image_editor_hud_tool_invisible_circle_diameter" android:height="@dimen/image_editor_hud_tool_invisible_circle_diameter" />
<padding android:bottom="@dimen/image_editor_hud_tool_invisible_circle_padding" android:left="@dimen/image_editor_hud_tool_invisible_circle_padding" android:right="@dimen/image_editor_hud_tool_invisible_circle_padding" android:top="@dimen/image_editor_hud_tool_invisible_circle_padding" />
</shape>
</item>
<item android:drawable="@drawable/symbol_blur_24_dark_onsurface" />

View File

@@ -2,7 +2,7 @@
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/signal_dark_colorSecondaryContainer" />
<solid android:color="@color/signal_dark_colorSurfaceVariant" />
<corners android:radius="50dp" />
</shape>
</item>

View File

@@ -4,9 +4,9 @@
<layer-list>
<item>
<shape android:shape="oval">
<size android:width="36dp" android:height="36dp" />
<size android:width="@dimen/image_editor_hud_tool_filled_circle_diameter" android:height="@dimen/image_editor_hud_tool_filled_circle_diameter" />
<solid android:color="@color/signal_dark_colorOnPrimaryContainer" />
<padding android:bottom="6dp" android:left="6dp" android:right="6dp" android:top="6dp" />
<padding android:bottom="@dimen/image_editor_hud_tool_filled_circle_padding" android:left="@dimen/image_editor_hud_tool_filled_circle_padding" android:right="@dimen/image_editor_hud_tool_filled_circle_padding" android:top="@dimen/image_editor_hud_tool_filled_circle_padding" />
</shape>
</item>
<item android:drawable="@drawable/symbol_draw_24" />
@@ -16,8 +16,8 @@
<layer-list>
<item>
<shape android:shape="oval">
<size android:width="36dp" android:height="36dp" />
<padding android:bottom="6dp" android:left="6dp" android:right="6dp" android:top="6dp" />
<size android:width="@dimen/image_editor_hud_tool_invisible_circle_diameter" android:height="@dimen/image_editor_hud_tool_invisible_circle_diameter" />
<padding android:bottom="@dimen/image_editor_hud_tool_invisible_circle_padding" android:left="@dimen/image_editor_hud_tool_invisible_circle_padding" android:right="@dimen/image_editor_hud_tool_invisible_circle_padding" android:top="@dimen/image_editor_hud_tool_invisible_circle_padding" />
</shape>
</item>
<item android:drawable="@drawable/symbol_draw_24_dark_onsurface" />

View File

@@ -4,9 +4,9 @@
<layer-list>
<item>
<shape android:shape="oval">
<size android:width="36dp" android:height="36dp" />
<size android:width="@dimen/image_editor_hud_tool_filled_circle_diameter" android:height="@dimen/image_editor_hud_tool_filled_circle_diameter" />
<solid android:color="@color/signal_dark_colorOnPrimaryContainer" />
<padding android:bottom="6dp" android:left="6dp" android:right="6dp" android:top="6dp" />
<padding android:bottom="@dimen/image_editor_hud_tool_filled_circle_padding" android:left="@dimen/image_editor_hud_tool_filled_circle_padding" android:right="@dimen/image_editor_hud_tool_filled_circle_padding" android:top="@dimen/image_editor_hud_tool_filled_circle_padding" />
</shape>
</item>
<item android:drawable="@drawable/symbol_sticker_smiley_24" />
@@ -16,8 +16,8 @@
<layer-list>
<item>
<shape android:shape="oval">
<size android:width="36dp" android:height="36dp" />
<padding android:bottom="6dp" android:left="6dp" android:right="6dp" android:top="6dp" />
<size android:width="@dimen/image_editor_hud_tool_filled_circle_diameter" android:height="@dimen/image_editor_hud_tool_filled_circle_diameter" />
<padding android:bottom="@dimen/image_editor_hud_tool_invisible_circle_padding" android:left="@dimen/image_editor_hud_tool_invisible_circle_padding" android:right="@dimen/image_editor_hud_tool_invisible_circle_padding" android:top="@dimen/image_editor_hud_tool_invisible_circle_padding" />
</shape>
</item>
<item android:drawable="@drawable/symbol_sticker_smiley_24_dark_onsurface" />

View File

@@ -4,9 +4,9 @@
<layer-list>
<item>
<shape android:shape="oval">
<size android:width="36dp" android:height="36dp" />
<size android:width="@dimen/image_editor_hud_tool_filled_circle_padding" android:height="@dimen/image_editor_hud_tool_filled_circle_padding" />
<solid android:color="@color/signal_dark_colorOnPrimaryContainer" />
<padding android:bottom="6dp" android:left="6dp" android:right="6dp" android:top="6dp" />
<padding android:bottom="@dimen/image_editor_hud_tool_filled_circle_padding" android:left="@dimen/image_editor_hud_tool_filled_circle_padding" android:right="@dimen/image_editor_hud_tool_filled_circle_padding" android:top="@dimen/image_editor_hud_tool_filled_circle_padding" />
</shape>
</item>
<item android:drawable="@drawable/symbol_text_24" />
@@ -16,8 +16,8 @@
<layer-list>
<item>
<shape android:shape="oval">
<size android:width="36dp" android:height="36dp" />
<padding android:bottom="6dp" android:left="6dp" android:right="6dp" android:top="6dp" />
<size android:width="@dimen/image_editor_hud_tool_invisible_circle_padding" android:height="@dimen/image_editor_hud_tool_invisible_circle_padding" />
<padding android:bottom="@dimen/image_editor_hud_tool_invisible_circle_padding" android:left="@dimen/image_editor_hud_tool_invisible_circle_padding" android:right="@dimen/image_editor_hud_tool_invisible_circle_padding" android:top="@dimen/image_editor_hud_tool_invisible_circle_padding" />
</shape>
</item>
<item android:drawable="@drawable/symbol_text_24_dark_onsurface" />

View File

@@ -2,9 +2,9 @@
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<solid android:color="@color/signal_dark_colorSecondaryContainer" />
<size android:width="36dp" android:height="36dp" />
<padding android:left="6dp" android:top="6dp" android:right="6dp" android:bottom="6dp" />
<size android:width="@dimen/image_editor_hud_tool_filled_circle_padding" android:height="@dimen/image_editor_hud_tool_filled_circle_padding" />
<solid android:color="@color/signal_dark_colorSurfaceVariant" />
<padding android:bottom="@dimen/image_editor_hud_tool_filled_circle_padding" android:left="@dimen/image_editor_hud_tool_filled_circle_padding" android:right="@dimen/image_editor_hud_tool_filled_circle_padding" android:top="@dimen/image_editor_hud_tool_filled_circle_padding" />
</shape>
</item>
<item android:drawable="@drawable/symbol_undo_24" />

View File

@@ -2,9 +2,9 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<layer-list>
<item android:drawable="@color/signal_dark_colorPrimaryContainer" />
<item android:drawable="@color/signal_dark_colorSurfaceVariant" />
<item android:drawable="@color/transparent_white_10" />
</layer-list>
</item>
<item android:drawable="@color/signal_dark_colorPrimaryContainer" android:state_pressed="false" />
<item android:drawable="@color/signal_dark_colorSurfaceVariant" android:state_pressed="false" />
</selector>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<solid android:color="@color/signal_colorPrimaryContainer"/>
<corners android:radius="32dp"/>
</shape>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<solid android:color="@color/signal_colorSurfaceVariant"/>
<corners android:radius="18dp"/>
</shape>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@color/core_white"
android:pathData="M18.97 5.26c0.4 0.26 0.53 0.8 0.27 1.21l-8.32 13c-0.16 0.24-0.42 0.4-0.7 0.4-0.28 0.02-0.55-0.1-0.73-0.33l-4.68-5.98c-0.3-0.38-0.23-0.93 0.15-1.23 0.38-0.3 0.93-0.23 1.23 0.15l3.92 5 7.65-11.95c0.26-0.4 0.8-0.53 1.21-0.27Z"/>
</vector>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FF000000"
android:pathData="M5.54 3.06c-0.83-0.4-1.79 0.2-1.79 1.13V8.9c0 0.58 0.4 1.08 0.96 1.21L12.59 12l-7.88 1.88C4.15 14 3.75 14.5 3.75 15.09v4.72c0 0.92 0.96 1.53 1.79 1.13l16.5-7.81c0.95-0.45 0.95-1.8 0-2.26L5.53 3.06Z"/>
</vector>

View File

@@ -5,7 +5,7 @@
<size
android:width="32dp"
android:height="32dp" />
<solid android:color="@color/core_ultramarine_light" />
<solid android:color="@color/signal_light_colorPrimary" />
<padding
android:bottom="4dp"
android:left="4dp"
@@ -13,5 +13,5 @@
android:top="4dp" />
</shape>
</item>
<item android:drawable="@drawable/ic_check_24_white" />
<item android:drawable="@drawable/symbol_check_white_24" />
</layer-list>

View File

@@ -23,7 +23,7 @@
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/rounded_rectangle_container_primary_32"
android:background="@drawable/rounded_rectangle_surface_variant_20"
app:layout_constraintBottom_toBottomOf="@id/add_a_message_input"
app:layout_constraintEnd_toEndOf="@id/add_a_message_limit"
app:layout_constraintStart_toStartOf="@id/emoji_toggle"
@@ -32,7 +32,7 @@
<org.thoughtcrime.securesms.components.emoji.EmojiToggle
android:id="@+id/emoji_toggle"
android:layout_width="wrap_content"
android:layout_height="36dp"
android:layout_height="@dimen/conversation_compose_height"
android:layout_gravity="bottom"
android:layout_marginStart="16dp"
android:layout_marginBottom="8dp"
@@ -40,16 +40,15 @@
android:contentDescription="@string/conversation_activity__emoji_toggle_description"
android:paddingStart="8dp"
android:paddingEnd="6dp"
app:tint="@color/signal_colorOnSurface"
app:layout_constraintBottom_toTopOf="@id/emoji_drawer_stub"
app:layout_constraintStart_toStartOf="parent" />
app:layout_constraintStart_toStartOf="parent"
app:tint="@color/signal_colorOnSurface" />
<org.thoughtcrime.securesms.components.ComposeText
android:id="@+id/add_a_message_input"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:layout_goneMarginEnd="6dp"
android:layout_marginBottom="8dp"
android:background="@null"
android:hint="@string/MediaReviewFragment__add_a_message"
@@ -57,7 +56,7 @@
android:inputType="textAutoCorrect|textCapSentences|textMultiLine"
android:maxLength="65536"
android:maxLines="3"
android:minHeight="36dp"
android:minHeight="@dimen/conversation_compose_height"
android:paddingEnd="10dp"
android:textAppearance="@style/Signal.Text.Body"
android:textColor="@color/signal_colorOnSurface"
@@ -65,6 +64,7 @@
app:layout_constraintEnd_toStartOf="@id/add_a_message_limit"
app:layout_constraintStart_toEndOf="@id/emoji_toggle"
app:layout_constraintTop_toTopOf="@id/input_barrier"
app:layout_goneMarginEnd="6dp"
app:layout_goneMarginStart="12dp" />
<TextView
@@ -90,6 +90,7 @@
android:padding="6dp"
app:layout_constraintBottom_toTopOf="@id/emoji_drawer_stub"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/input_barrier"
app:srcCompat="@drawable/v2_media_add_a_message_check" />
<ViewStub

View File

@@ -60,13 +60,13 @@
<ImageView
android:id="@+id/image_editor_hud_cancel_button"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginStart="10dp"
android:layout_marginBottom="10dp"
android:alpha="0"
android:background="@drawable/circle_tintable"
android:backgroundTint="@color/signal_dark_colorPrimaryContainer"
android:backgroundTint="@color/signal_dark_colorSurfaceVariant"
android:contentDescription="@string/ImageEditorHud__cancel"
android:padding="6dp"
android:translationY="56dp"
@@ -82,12 +82,11 @@
<ImageView
android:id="@+id/image_editor_hud_draw_button"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginBottom="10dp"
android:alpha="0"
android:contentDescription="@string/ImageEditorHud__draw"
android:padding="6dp"
android:translationY="56dp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
@@ -102,12 +101,11 @@
<ImageView
android:id="@+id/image_editor_hud_text_button"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginBottom="10dp"
android:alpha="0"
android:contentDescription="@string/ImageEditorHud__write_text"
android:padding="6dp"
android:translationY="56dp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
@@ -122,12 +120,11 @@
<ImageView
android:id="@+id/image_editor_hud_sticker_button"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginBottom="10dp"
android:alpha="0"
android:contentDescription="@string/ImageEditorHud__add_a_sticker"
android:padding="6dp"
android:translationY="56dp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
@@ -142,12 +139,11 @@
<ImageView
android:id="@+id/image_editor_hud_blur_button"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginBottom="10dp"
android:alpha="0"
android:contentDescription="@string/ImageEditorHud__blur"
android:padding="6dp"
android:translationY="56dp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
@@ -162,13 +158,13 @@
<ImageView
android:id="@+id/image_editor_hud_done_button"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="10dp"
android:alpha="0"
android:background="@drawable/circle_tintable"
android:backgroundTint="@color/signal_dark_colorPrimaryContainer"
android:backgroundTint="@color/signal_dark_colorSurfaceVariant"
android:contentDescription="@string/ImageEditorHud__done_editing"
android:padding="6dp"
android:translationY="56dp"

View File

@@ -22,7 +22,7 @@
android:layout_width="match_parent"
android:layout_height="0dp"
android:alpha="0"
android:background="@color/signal_dark_colorBackground_92"
android:background="@color/signal_dark_colorSurface"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="@id/timeline_placeholder"
@@ -100,12 +100,12 @@
<org.thoughtcrime.securesms.components.emoji.EmojiTextView
android:id="@+id/add_a_message"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_height="44dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp"
android:alpha="0"
android:background="@drawable/rounded_rectangle_container_primary_32"
android:background="@drawable/rounded_rectangle_surface_variant_32"
android:gravity="center_vertical"
android:singleLine="true"
android:ellipsize="end"
@@ -130,6 +130,7 @@
android:outAnimation="@anim/fade_out"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/add_a_message"
app:layout_constraintTop_toTopOf="@id/add_a_message"
app:layout_constraintEnd_toEndOf="@id/add_a_message"
tools:alpha="1"
tools:visibility="visible">
@@ -182,7 +183,7 @@
app:layout_constraintStart_toStartOf="parent"
app:thumbColor="@color/signal_light_colorOnPrimary"
app:thumbColorEdited="#ff0"
app:thumbHintBackgroundColor="@color/signal_dark_colorPrimaryContainer"
app:thumbHintBackgroundColor="@color/signal_dark_colorSurfaceVariant"
app:thumbHintTextColor="@color/signal_light_colorOnPrimary"
app:thumbHintTextSize="14sp"
app:thumbTouchRadius="24dp"
@@ -294,14 +295,16 @@
android:background="@color/signal_light_colorPrimary"
android:padding="4dp"
android:scaleType="centerInside"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1"
app:layout_constraintStart_toEndOf="@id/save_to_media"
app:layout_goneMarginStart="10dp"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Signal.Circle"
app:srcCompat="@drawable/ic_send_lock_24"
app:tint="@color/signal_colorOnSurface" />
app:srcCompat="@drawable/symbol_send_fill_24"
app:tint="@color/signal_colorOnSurface"
tools:visibility="visible"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -231,5 +231,9 @@
<dimen name="video_timeline_height_expanded">44dp</dimen>
<dimen name="video_timeline_height_collapsed">1dp</dimen>
<dimen name="image_editor_hud_tool_filled_circle_diameter">40dp</dimen>
<dimen name="image_editor_hud_tool_filled_circle_padding">6dp</dimen>
<dimen name="image_editor_hud_tool_invisible_circle_diameter">40dp</dimen>
<dimen name="image_editor_hud_tool_invisible_circle_padding">6dp</dimen>
</resources>