Skip to content

Commit 6fed9df

Browse files
authored
Merge pull request #5686 from nextcloud/fix/5685/EditCaptions
edit captions
2 parents 76ba091 + b7573c4 commit 6fed9df

6 files changed

Lines changed: 130 additions & 35 deletions

File tree

app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingPreviewMessageViewHolder.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,23 @@ public void onBind(@NonNull ChatMessage message) {
9090
binding.messageTime.setTextColor(ContextCompat.getColor(binding.messageText.getContext(),
9191
R.color.no_emphasis_text));
9292

93+
binding.messageEditIndicator.setTextColor(ContextCompat.getColor(binding.messageText.getContext(),
94+
R.color.no_emphasis_text));
95+
9396
if(!message.isThread()) {
9497
binding.threadTitleWrapperContainer.setVisibility(View.GONE);
9598
} else {
9699
binding.threadTitleWrapperContainer.setVisibility(View.VISIBLE);
97100
}
98101
}
99102

103+
@NonNull
104+
@Override
105+
public android.widget.TextView getMessageEditIndicator() {
106+
return binding.messageEditIndicator;
107+
}
108+
109+
100110
@NonNull
101111
@Override
102112
public EmojiTextView getMessageText() {

app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingPreviewMessageViewHolder.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@
1212
import android.view.View;
1313
import android.widget.ImageView;
1414
import android.widget.ProgressBar;
15+
import android.widget.TextView;
1516

1617
import com.google.android.material.card.MaterialCardView;
1718
import com.nextcloud.talk.R;
1819
import com.nextcloud.talk.databinding.ItemCustomOutcomingPreviewMessageBinding;
1920
import com.nextcloud.talk.databinding.ItemThreadTitleBinding;
2021
import com.nextcloud.talk.databinding.ReactionsInsideMessageBinding;
2122
import com.nextcloud.talk.chat.data.model.ChatMessage;
23+
import com.nextcloud.talk.models.json.chat.ReadStatus;
2224
import com.nextcloud.talk.utils.TextMatchers;
2325

2426
import java.util.HashMap;
@@ -90,6 +92,33 @@ public void onBind(@NonNull ChatMessage message) {
9092
binding.messageTime.setTextColor(ContextCompat.getColor(binding.messageText.getContext(),
9193
R.color.no_emphasis_text));
9294

95+
binding.messageEditIndicator.setTextColor(ContextCompat.getColor(binding.messageText.getContext(),
96+
R.color.no_emphasis_text));
97+
98+
binding.checkMark.setVisibility(View.GONE);
99+
Integer readStatusDrawableInt = null;
100+
String readStatusContentDescriptionString = null;
101+
if (message.getReadStatus() == ReadStatus.READ) {
102+
readStatusDrawableInt = R.drawable.ic_check_all;
103+
readStatusContentDescriptionString =
104+
binding.checkMark.getContext().getString(R.string.nc_message_read);
105+
} else if (message.getReadStatus() == ReadStatus.SENT) {
106+
readStatusDrawableInt = R.drawable.ic_check;
107+
readStatusContentDescriptionString =
108+
binding.checkMark.getContext().getString(R.string.nc_message_sent);
109+
}
110+
111+
if (readStatusDrawableInt != null) {
112+
binding.checkMark.setVisibility(View.VISIBLE);
113+
binding.checkMark.setImageDrawable(ContextCompat.getDrawable(binding.checkMark.getContext(),
114+
readStatusDrawableInt));
115+
if (viewThemeUtils != null) {
116+
viewThemeUtils.talk.themeMessageCheckMark(binding.checkMark);
117+
}
118+
}
119+
binding.checkMark.setContentDescription(readStatusContentDescriptionString);
120+
121+
93122
if(!message.isThread()) {
94123
binding.threadTitleWrapperContainer.setVisibility(View.GONE);
95124
} else {
@@ -146,4 +175,10 @@ public ProgressBar getPreviewContactProgressBar() {
146175
@NonNull
147176
@Override
148177
public EmojiTextView getMessageCaption() { return binding.messageCaption; }
178+
179+
@NonNull
180+
@Override
181+
public TextView getMessageEditIndicator() {
182+
return binding.messageEditIndicator;
183+
}
149184
}

app/src/main/java/com/nextcloud/talk/adapters/messages/PreviewMessageViewHolder.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import android.util.Log
1919
import android.view.View
2020
import android.widget.ImageView
2121
import android.widget.ProgressBar
22+
import android.widget.TextView
2223
import androidx.core.content.ContextCompat
2324
import androidx.core.net.toUri
2425
import androidx.emoji2.widget.EmojiTextView
@@ -99,7 +100,13 @@ abstract class PreviewMessageViewHolder(itemView: View?, payload: Any?) :
99100
super.onBind(message)
100101
image.minimumHeight = DisplayUtils.convertDpToPixel(MIN_IMAGE_HEIGHT, context!!).toInt()
101102

102-
time.text = dateUtils.getLocalTimeStringFromTimestamp(message.timestamp)
103+
if (message.lastEditTimestamp != 0L && !message.isDeleted) {
104+
time.text = dateUtils.getLocalTimeStringFromTimestamp(message.lastEditTimestamp!!)
105+
messageEditIndicator.visibility = View.VISIBLE
106+
} else {
107+
time.text = dateUtils.getLocalTimeStringFromTimestamp(message.timestamp)
108+
messageEditIndicator.visibility = View.GONE
109+
}
103110

104111
viewThemeUtils!!.platform.colorCircularProgressBar(progressBar!!, ColorRole.PRIMARY)
105112
clickView = image
@@ -342,6 +349,7 @@ abstract class PreviewMessageViewHolder(itemView: View?, payload: Any?) :
342349
abstract val previewContactPhoto: ImageView
343350
abstract val previewContactName: EmojiTextView
344351
abstract val previewContactProgressBar: ProgressBar?
352+
abstract val messageEditIndicator: TextView
345353

346354
companion object {
347355
private const val TAG = "PreviewMsgViewHolder"

app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,11 +116,13 @@ class MessageActionsDialog(
116116
) &&
117117
!isOlderThanTwentyFourHours
118118

119+
private val messageHasCaptions = messageHasFileAttachment && message.message != "{file}" && !message.isDeleted
120+
119121
private var messageIsEditable = hasSpreedFeatureCapability(
120122
spreedCapabilities,
121123
SpreedFeatures.EDIT_MESSAGES
122124
) &&
123-
messageHasRegularText &&
125+
(messageHasRegularText || messageHasCaptions) &&
124126
!isOlderThanTwentyFourHours &&
125127
isUserAllowedToEdit
126128

app/src/main/res/layout/item_custom_incoming_preview_message.xml

Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -187,22 +187,6 @@
187187
tools:ignore="TextContrastCheck"
188188
tools:text="A simple message" />
189189

190-
<TextView
191-
android:id="@id/messageTime"
192-
android:layout_width="wrap_content"
193-
android:layout_height="wrap_content"
194-
android:layout_alignParentEnd="true"
195-
android:layout_marginStart="8dp"
196-
android:layout_marginEnd="2dp"
197-
android:alpha="0.6"
198-
android:gravity="end"
199-
android:paddingHorizontal="@dimen/standard_half_padding"
200-
android:paddingBottom="@dimen/standard_half_padding"
201-
android:textColor="@color/no_emphasis_text"
202-
app:layout_alignSelf="center"
203-
tools:ignore="TextContrastCheck"
204-
tools:text="12:38" />
205-
206190
<androidx.emoji2.widget.EmojiTextView
207191
android:id="@+id/messageCaption"
208192
android:layout_width="match_parent"
@@ -221,6 +205,36 @@
221205
tools:text="This is my caption"
222206
tools:visibility="visible" />
223207

208+
<TextView
209+
android:id="@id/messageTime"
210+
android:layout_width="wrap_content"
211+
android:layout_height="wrap_content"
212+
android:layout_marginStart="8dp"
213+
android:layout_marginBottom="8dp"
214+
android:alpha="0.6"
215+
android:gravity="end"
216+
android:layout_below="@id/messageCaption"
217+
android:textColor="@color/no_emphasis_text"
218+
app:layout_alignSelf="flex_end"
219+
tools:ignore="TextContrastCheck"
220+
tools:text="12:38" />
221+
222+
<TextView
223+
android:id="@+id/messageEditIndicator"
224+
android:layout_width="wrap_content"
225+
android:layout_height="wrap_content"
226+
android:layout_marginStart="8dp"
227+
android:layout_marginEnd="12dp"
228+
android:layout_marginBottom="8dp"
229+
android:alpha="0.6"
230+
android:text="@string/hint_edited_message"
231+
android:textColor="@color/no_emphasis_text"
232+
android:layout_below="@id/messageCaption"
233+
android:textIsSelectable="false"
234+
android:textSize="12sp"
235+
app:layout_alignSelf="flex_end" />
236+
237+
224238
</com.google.android.flexbox.FlexboxLayout>
225239

226240
<include
@@ -234,4 +248,4 @@
234248

235249
</RelativeLayout>
236250

237-
</RelativeLayout>
251+
</RelativeLayout>

app/src/main/res/layout/item_custom_outcoming_preview_message.xml

Lines changed: 42 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -161,21 +161,6 @@
161161
app:layout_wrapBefore="true"
162162
tools:text="A simple message" />
163163

164-
<TextView
165-
android:id="@id/messageTime"
166-
android:layout_width="wrap_content"
167-
android:layout_height="wrap_content"
168-
android:layout_alignParentEnd="true"
169-
android:layout_marginStart="8dp"
170-
android:layout_marginEnd="2dp"
171-
android:alpha="0.6"
172-
android:gravity="end"
173-
android:paddingHorizontal="@dimen/standard_half_padding"
174-
android:paddingBottom="@dimen/standard_half_padding"
175-
android:textColor="@color/no_emphasis_text"
176-
app:layout_alignSelf="center"
177-
tools:text="12:34" />
178-
179164
<androidx.emoji2.widget.EmojiTextView
180165
android:id="@+id/messageCaption"
181166
android:layout_width="match_parent"
@@ -194,6 +179,47 @@
194179
tools:ignore="TextContrastCheck"
195180
tools:text="This is my caption"
196181
tools:visibility="visible" />
182+
183+
<TextView
184+
android:id="@id/messageTime"
185+
android:layout_width="wrap_content"
186+
android:layout_height="wrap_content"
187+
android:layout_marginStart="8dp"
188+
android:layout_marginBottom="8dp"
189+
android:alpha="0.6"
190+
android:gravity="end"
191+
android:textColor="@color/no_emphasis_text"
192+
android:textIsSelectable="false"
193+
android:layout_below="@id/messageCaption"
194+
app:layout_alignSelf="flex_end"
195+
tools:text="12:34" />
196+
197+
<TextView
198+
android:id="@+id/messageEditIndicator"
199+
android:layout_width="wrap_content"
200+
android:layout_height="wrap_content"
201+
android:layout_marginStart="8dp"
202+
android:layout_marginEnd="2dp"
203+
android:layout_marginBottom="8dp"
204+
android:alpha="0.6"
205+
android:text="@string/hint_edited_message"
206+
android:textColor="@color/no_emphasis_text"
207+
android:textIsSelectable="false"
208+
android:layout_below="@id/messageCaption"
209+
android:textSize="12sp"
210+
app:layout_alignSelf="flex_end" />
211+
212+
<ImageView
213+
android:id="@+id/checkMark"
214+
android:layout_width="25dp"
215+
android:layout_height="@dimen/message_bubble_checkmark_height"
216+
android:layout_marginEnd="8dp"
217+
android:layout_marginBottom="8dp"
218+
android:contentDescription="@null"
219+
app:layout_alignSelf="flex_end"
220+
android:layout_below="@id/messageText"
221+
app:tint="@color/high_emphasis_text"
222+
tools:src="@drawable/ic_check_all" />
197223
</com.google.android.flexbox.FlexboxLayout>
198224

199225
<include
@@ -206,4 +232,4 @@
206232

207233
</LinearLayout>
208234

209-
</RelativeLayout>
235+
</RelativeLayout>

0 commit comments

Comments
 (0)