mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-13 19:29:06 +01:00
[android] display image attachments for conversation messages
This commit is contained in:
9
briar-android/src/main/res/drawable/ic_image_broken.xml
Normal file
9
briar-android/src/main/res/drawable/ic_image_broken.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="200dp"
|
||||
android:height="200dp"
|
||||
android:viewportHeight="24.0"
|
||||
android:viewportWidth="24.0">
|
||||
<path
|
||||
android:fillColor="#808080"
|
||||
android:pathData="M21,5v6.59l-3,-3.01 -4,4.01 -4,-4 -4,4 -3,-3.01L3,5c0,-1.1 0.9,-2 2,-2h14c1.1,0 2,0.9 2,2zM18,11.42l3,3.01L21,19c0,1.1 -0.9,2 -2,2L5,21c-1.1,0 -2,-0.9 -2,-2v-6.58l3,2.99 4,-4 4,4 4,-3.99z"/>
|
||||
</vector>
|
||||
@@ -8,10 +8,10 @@
|
||||
android:topLeftRadius="@dimen/message_bubble_radius_top_inner"
|
||||
android:topRightRadius="@dimen/message_bubble_radius_top_outer"/>
|
||||
<padding
|
||||
android:bottom="@dimen/message_bubble_padding_bottom"
|
||||
android:left="@dimen/message_bubble_padding_sides"
|
||||
android:right="@dimen/message_bubble_padding_sides"
|
||||
android:top="@dimen/message_bubble_padding_top"/>
|
||||
android:bottom="@dimen/message_bubble_border"
|
||||
android:left="@dimen/message_bubble_border"
|
||||
android:right="@dimen/message_bubble_border"
|
||||
android:top="@dimen/message_bubble_border"/>
|
||||
<solid
|
||||
android:color="@color/msg_in"/>
|
||||
<stroke
|
||||
|
||||
@@ -8,10 +8,10 @@
|
||||
android:topLeftRadius="@dimen/message_bubble_radius_top_outer"
|
||||
android:topRightRadius="@dimen/message_bubble_radius_top_inner"/>
|
||||
<padding
|
||||
android:bottom="@dimen/message_bubble_padding_bottom"
|
||||
android:left="@dimen/message_bubble_padding_sides"
|
||||
android:right="@dimen/message_bubble_padding_sides"
|
||||
android:top="@dimen/message_bubble_padding_top"/>
|
||||
android:bottom="@dimen/message_bubble_border"
|
||||
android:left="@dimen/message_bubble_border"
|
||||
android:right="@dimen/message_bubble_border"
|
||||
android:top="@dimen/message_bubble_border"/>
|
||||
<solid
|
||||
android:color="@color/msg_out"/>
|
||||
<stroke
|
||||
|
||||
14
briar-android/src/main/res/drawable/msg_status_bubble.xml
Normal file
14
briar-android/src/main/res/drawable/msg_status_bubble.xml
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<corners
|
||||
android:radius="@dimen/message_bubble_radius_big"/>
|
||||
<padding
|
||||
android:bottom="3dp"
|
||||
android:left="7dp"
|
||||
android:right="7dp"
|
||||
android:top="2dp"/>
|
||||
<solid
|
||||
android:color="@color/msg_status_bubble_background"/>
|
||||
</shape>
|
||||
@@ -0,0 +1,70 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.constraint.ConstraintLayout
|
||||
android:id="@+id/layout"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/message_bubble_margin"
|
||||
android:layout_marginEnd="@dimen/message_bubble_margin_non_tail"
|
||||
android:layout_marginLeft="@dimen/message_bubble_margin_tail"
|
||||
android:layout_marginRight="@dimen/message_bubble_margin_non_tail"
|
||||
android:layout_marginStart="@dimen/message_bubble_margin_tail"
|
||||
android:layout_marginTop="@dimen/message_bubble_margin"
|
||||
android:background="@drawable/msg_in"
|
||||
android:elevation="@dimen/message_bubble_elevation">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="@dimen/message_bubble_image_default"
|
||||
android:layout_height="@dimen/message_bubble_image_default"
|
||||
app:layout_constraintBottom_toTopOf="@+id/text"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:ignore="ContentDescription"
|
||||
tools:src="@drawable/alerts_and_states_error"/>
|
||||
|
||||
<com.vanniktech.emoji.EmojiTextView
|
||||
android:id="@+id/text"
|
||||
style="@style/TextMessage"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/message_bubble_padding_bottom_inner"
|
||||
android:layout_marginLeft="@dimen/message_bubble_padding_sides_inner"
|
||||
android:layout_marginRight="@dimen/message_bubble_padding_sides_inner"
|
||||
android:layout_marginTop="@dimen/message_bubble_padding_top_inner"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:visibility="gone"
|
||||
app:layout_constrainedWidth="true"
|
||||
app:layout_constraintBottom_toTopOf="@+id/statusLayout"
|
||||
app:layout_constraintEnd_toEndOf="@+id/imageView"
|
||||
app:layout_constraintHorizontal_bias="0.0"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/imageView"
|
||||
tools:text="The text of a message which can sometimes be a bit longer as well"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/statusLayout"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/message_bubble_padding_top"
|
||||
android:layout_marginLeft="@dimen/message_bubble_padding_sides_inner"
|
||||
android:layout_marginRight="@dimen/message_bubble_padding_sides_inner"
|
||||
android:background="@drawable/msg_status_bubble"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/imageView"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="1.0"
|
||||
app:layout_constraintStart_toStartOf="parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/time"
|
||||
style="@style/TextMessage.Timestamp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
tools:text="Dec 24, 13:37"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
@@ -0,0 +1,69 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.constraint.ConstraintLayout
|
||||
android:id="@+id/layout"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/message_bubble_margin"
|
||||
android:layout_marginEnd="@dimen/message_bubble_margin_non_tail"
|
||||
android:layout_marginLeft="@dimen/message_bubble_margin_tail"
|
||||
android:layout_marginRight="@dimen/message_bubble_margin_non_tail"
|
||||
android:layout_marginStart="@dimen/message_bubble_margin_tail"
|
||||
android:layout_marginTop="@dimen/message_bubble_margin"
|
||||
android:background="@drawable/msg_in"
|
||||
android:elevation="@dimen/message_bubble_elevation">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="@dimen/message_bubble_image_default"
|
||||
android:layout_height="@dimen/message_bubble_image_default"
|
||||
app:layout_constraintBottom_toTopOf="@+id/text"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:ignore="ContentDescription"
|
||||
tools:src="@drawable/alerts_and_states_error"/>
|
||||
|
||||
<com.vanniktech.emoji.EmojiTextView
|
||||
android:id="@+id/text"
|
||||
style="@style/TextMessage"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/message_bubble_padding_bottom_inner"
|
||||
android:layout_marginLeft="@dimen/message_bubble_padding_sides_inner"
|
||||
android:layout_marginRight="@dimen/message_bubble_padding_sides_inner"
|
||||
android:layout_marginTop="@dimen/message_bubble_padding_top_inner"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
app:layout_constrainedWidth="true"
|
||||
app:layout_constraintBottom_toTopOf="@+id/statusLayout"
|
||||
app:layout_constraintEnd_toEndOf="@+id/imageView"
|
||||
app:layout_constraintHorizontal_bias="0.0"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/imageView"
|
||||
tools:text="The text of a message which can sometimes be a bit longer as well"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/statusLayout"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/message_bubble_padding_bottom_inner"
|
||||
android:layout_marginLeft="@dimen/message_bubble_padding_sides_inner"
|
||||
android:layout_marginRight="@dimen/message_bubble_padding_sides_inner"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="1.0"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/text">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/time"
|
||||
style="@style/TextMessage.Timestamp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
tools:text="Dec 24, 13:37"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
@@ -15,29 +15,55 @@
|
||||
android:background="@drawable/msg_in"
|
||||
android:elevation="@dimen/message_bubble_elevation">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="@dimen/message_bubble_image_default"
|
||||
android:layout_height="@dimen/message_bubble_image_default"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toTopOf="@+id/text"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:ignore="ContentDescription"/>
|
||||
|
||||
<com.vanniktech.emoji.EmojiTextView
|
||||
android:id="@+id/text"
|
||||
style="@style/TextMessage"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/message_bubble_padding_bottom_inner"
|
||||
android:layout_marginLeft="@dimen/message_bubble_padding_sides_inner"
|
||||
android:layout_marginRight="@dimen/message_bubble_padding_sides_inner"
|
||||
android:layout_marginTop="@dimen/message_bubble_padding_top_inner"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
app:layout_constraintBottom_toTopOf="@+id/time"
|
||||
app:layout_constraintEnd_toEndOf="@+id/time"
|
||||
app:layout_constrainedWidth="true"
|
||||
app:layout_constraintBottom_toTopOf="@+id/statusLayout"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.0"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="Short message"/>
|
||||
app:layout_constraintTop_toBottomOf="@+id/imageView"
|
||||
tools:text="The text of a message which can sometimes be a bit longer as well"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/time"
|
||||
style="@style/TextMessage.Timestamp"
|
||||
<LinearLayout
|
||||
android:id="@+id/statusLayout"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/message_bubble_padding_bottom_inner"
|
||||
android:layout_marginLeft="@dimen/message_bubble_padding_sides_inner"
|
||||
android:layout_marginRight="@dimen/message_bubble_padding_sides_inner"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="1.0"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/text"
|
||||
tools:text="Dec 24, 13:37"/>
|
||||
app:layout_constraintTop_toBottomOf="@+id/text">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/time"
|
||||
style="@style/TextMessage.Timestamp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
tools:text="Dec 24, 13:37"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
|
||||
@@ -21,39 +21,68 @@
|
||||
android:background="@drawable/msg_out"
|
||||
android:elevation="@dimen/message_bubble_elevation">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="@dimen/message_bubble_image_default"
|
||||
android:layout_height="@dimen/message_bubble_image_default"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toTopOf="@+id/text"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:ignore="ContentDescription"
|
||||
tools:src="@drawable/alerts_and_states_error"/>
|
||||
|
||||
<com.vanniktech.emoji.EmojiTextView
|
||||
android:id="@+id/text"
|
||||
style="@style/TextMessage"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/message_bubble_padding_bottom_inner"
|
||||
android:layout_marginLeft="@dimen/message_bubble_padding_sides_inner"
|
||||
android:layout_marginRight="@dimen/message_bubble_padding_sides_inner"
|
||||
android:layout_marginTop="@dimen/message_bubble_padding_top_inner"
|
||||
android:textColor="@color/briar_text_primary_inverse"
|
||||
app:layout_constraintBottom_toTopOf="@+id/time"
|
||||
app:layout_constrainedWidth="true"
|
||||
app:layout_constraintBottom_toTopOf="@+id/statusLayout"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.0"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/imageView"
|
||||
tools:text="This is a long long long message that spans over several lines.\n\nIt ends here."/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/time"
|
||||
style="@style/TextMessage.Timestamp"
|
||||
<LinearLayout
|
||||
android:id="@+id/statusLayout"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/message_bubble_timestamp_margin"
|
||||
android:textColor="@color/private_message_date_inverse"
|
||||
android:layout_marginBottom="@dimen/message_bubble_padding_bottom_inner"
|
||||
android:layout_marginLeft="@dimen/message_bubble_padding_sides_inner"
|
||||
android:layout_marginRight="@dimen/message_bubble_padding_sides_inner"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.0"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/text"
|
||||
tools:text="Dec 24, 13:37"/>
|
||||
tools:ignore="UseCompoundDrawables">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/status"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="@dimen/margin_medium"
|
||||
android:layout_marginStart="@dimen/margin_medium"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/time"
|
||||
app:layout_constraintStart_toEndOf="@+id/time"
|
||||
app:layout_constraintTop_toTopOf="@+id/time"
|
||||
tools:ignore="ContentDescription"
|
||||
tools:src="@drawable/message_delivered"/>
|
||||
<TextView
|
||||
android:id="@+id/time"
|
||||
style="@style/TextMessage.Timestamp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="6dp"
|
||||
android:layout_marginRight="6dp"
|
||||
android:textColor="@color/private_message_date_inverse"
|
||||
tools:text="Dec 24, 13:37"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/status"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
tools:ignore="ContentDescription"
|
||||
tools:src="@drawable/message_delivered"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
<color name="msg_stroke_light">#cbcbcb</color>
|
||||
<color name="msg_stroke_dark">#333333</color>
|
||||
<color name="msg_stroke">@color/msg_stroke_light</color>
|
||||
<color name="msg_status_bubble_background">#66000000</color>
|
||||
|
||||
<!-- text colors -->
|
||||
<color name="briar_text_link">@color/briar_blue_light</color>
|
||||
|
||||
@@ -43,9 +43,18 @@
|
||||
<dimen name="message_bubble_radius_top_inner">@dimen/message_bubble_radius_small</dimen>
|
||||
<dimen name="message_bubble_radius_top_outer">@dimen/message_bubble_radius_big</dimen>
|
||||
<dimen name="message_bubble_margin">6dp</dimen>
|
||||
<dimen name="message_bubble_image_default">210dp</dimen>
|
||||
<dimen name="message_bubble_image_min_width">150dp</dimen>
|
||||
<dimen name="message_bubble_image_max_width">240dp</dimen>
|
||||
<dimen name="message_bubble_image_min_height">100dp</dimen>
|
||||
<dimen name="message_bubble_image_max_height">320dp</dimen>
|
||||
<dimen name="message_bubble_border">2dp</dimen>
|
||||
<dimen name="message_bubble_padding_sides">12dp</dimen>
|
||||
<dimen name="message_bubble_padding_sides_inner">10dp</dimen>
|
||||
<dimen name="message_bubble_padding_top">6dp</dimen>
|
||||
<dimen name="message_bubble_padding_top_inner">4dp</dimen>
|
||||
<dimen name="message_bubble_padding_bottom">4dp</dimen>
|
||||
<dimen name="message_bubble_padding_bottom_inner">2dp</dimen>
|
||||
<dimen name="message_bubble_timestamp_margin">4dp</dimen>
|
||||
<dimen name="message_bubble_elevation">2dp</dimen>
|
||||
<dimen name="message_bubble_margin_tail">8dp</dimen>
|
||||
|
||||
Reference in New Issue
Block a user