From d7729b6001087078c37b8e033ee603fd5d972701 Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Mon, 7 Jun 2021 16:27:52 +0200 Subject: [PATCH 1/4] send images from 'Image keyboard' as stickers see https://developer.android.com/guide/topics/text/image-keyboard --- .../securesms/ConversationActivity.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/org/thoughtcrime/securesms/ConversationActivity.java b/src/org/thoughtcrime/securesms/ConversationActivity.java index 4ec647f9c..883eb4b92 100644 --- a/src/org/thoughtcrime/securesms/ConversationActivity.java +++ b/src/org/thoughtcrime/securesms/ConversationActivity.java @@ -68,6 +68,7 @@ import com.b44t.messenger.DcEvent; import com.b44t.messenger.DcMsg; import org.thoughtcrime.securesms.attachments.Attachment; +import org.thoughtcrime.securesms.attachments.UriAttachment; import org.thoughtcrime.securesms.audio.AudioRecorder; import org.thoughtcrime.securesms.audio.AudioSlidePlayer; import org.thoughtcrime.securesms.components.AnimatingToggle; @@ -87,6 +88,7 @@ import org.thoughtcrime.securesms.components.emoji.MediaKeyboard; import org.thoughtcrime.securesms.connect.ApplicationDcContext; import org.thoughtcrime.securesms.connect.DcEventCenter; import org.thoughtcrime.securesms.connect.DcHelper; +import org.thoughtcrime.securesms.database.AttachmentDatabase; import org.thoughtcrime.securesms.map.MapActivity; import org.thoughtcrime.securesms.mms.AttachmentManager; import org.thoughtcrime.securesms.mms.AttachmentManager.MediaType; @@ -1356,12 +1358,11 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity } } + // media selected by the system keyboard @Override public void onMediaSelected(@NonNull Uri uri, String contentType) { - if (!TextUtils.isEmpty(contentType) && contentType.trim().equals("image/gif")) { - setMedia(uri, MediaType.GIF); - } else if (MediaUtil.isImageType(contentType)) { - setMedia(uri, MediaType.IMAGE); + if (MediaUtil.isImageType(contentType)) { + sendSticker(uri, contentType); } else if (MediaUtil.isVideoType(contentType)) { setMedia(uri, MediaType.VIDEO); } else if (MediaUtil.isAudioType(contentType)) { @@ -1369,6 +1370,15 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity } } + private void sendSticker(@NonNull Uri uri, String contentType) { + Attachment attachment = new UriAttachment(uri, null, contentType, + AttachmentDatabase.TRANSFER_PROGRESS_STARTED, 0, 0, 0, null, null, false); + String path = getRealPathFromAttachment(attachment); + + DcMsg msg = new DcMsg(dcContext, DcMsg.DC_MSG_STICKER); + msg.setFile(path, null); + dcContext.sendMsg(chatId, msg); + } private void initializeMediaKeyboardProviders(@NonNull MediaKeyboard mediaKeyboard, boolean stickersAvailable) { boolean isSystemEmojiPreferred = Prefs.isSystemEmojiPreferred(this); From 073c915d24df2b68f86089658f9c7b5d7b0c221e Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Mon, 7 Jun 2021 21:51:23 +0200 Subject: [PATCH 2/4] also allow image/webp as sticker format --- src/org/thoughtcrime/securesms/components/ComposeText.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/org/thoughtcrime/securesms/components/ComposeText.java b/src/org/thoughtcrime/securesms/components/ComposeText.java index fd9ecfe0c..73d1ba4dc 100644 --- a/src/org/thoughtcrime/securesms/components/ComposeText.java +++ b/src/org/thoughtcrime/securesms/components/ComposeText.java @@ -126,7 +126,11 @@ public class ComposeText extends EmojiEditText { if (mediaListener == null) return inputConnection; if (inputConnection == null) return null; - EditorInfoCompat.setContentMimeTypes(editorInfo, new String[] {"image/jpeg", "image/png", "image/gif"}); + // media with mime-types defined by setContentMimeTypes() may be selected in the system keyboard + // and are passed to onCommitContent() then; + // from there we use them as stickers. + EditorInfoCompat.setContentMimeTypes(editorInfo, new String[] {"image/jpeg", "image/png", "image/gif", "image/webp"}); + return InputConnectionCompat.createWrapper(inputConnection, editorInfo, new CommitContentListener(mediaListener)); } From c873e9c60771d37244a844fe9beb56390a628d4b Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Tue, 8 Jun 2021 15:05:39 +0200 Subject: [PATCH 3/4] allow quote-replies for stickers once the sticker is sent together with the quote, the quote is cleared. if there is some draft text, however, that is kept as draft. tickers together with text are discouraged. --- src/org/thoughtcrime/securesms/ConversationActivity.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/org/thoughtcrime/securesms/ConversationActivity.java b/src/org/thoughtcrime/securesms/ConversationActivity.java index 883eb4b92..6e062a363 100644 --- a/src/org/thoughtcrime/securesms/ConversationActivity.java +++ b/src/org/thoughtcrime/securesms/ConversationActivity.java @@ -1375,7 +1375,13 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity AttachmentDatabase.TRANSFER_PROGRESS_STARTED, 0, 0, 0, null, null, false); String path = getRealPathFromAttachment(attachment); + Optional quote = inputPanel.getQuote(); + inputPanel.clearQuote(); + DcMsg msg = new DcMsg(dcContext, DcMsg.DC_MSG_STICKER); + if (quote.isPresent()) { + msg.setQuote(quote.get().getQuotedMsg()); + } msg.setFile(path, null); dcContext.sendMsg(chatId, msg); } From 555544feb2f48f584cea93b52764d8afb4f0c7b1 Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Mon, 14 Jun 2021 12:35:32 +0200 Subject: [PATCH 4/4] update translations --- res/values-ru/strings.xml | 3 +++ res/values-tr/strings.xml | 6 ++++++ res/values-uk/strings.xml | 3 +++ res/values-zh-rCN/strings.xml | 38 +++++++++++++++++------------------ 4 files changed, 31 insertions(+), 19 deletions(-) diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index e3f9b91fb..fd5b3bfa8 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -687,6 +687,9 @@ Защита чата отключена. Защита чата включена + + Пожалуйста, введите защитный код вашей системы, чтобы продолжить. + QR код Загрузить QR код как изображение diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 2e3a4871f..42237e8ad 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -380,6 +380,9 @@ Şüpheli bağlantı algılandı %1$s bağlantısını ziyaret etmek istediğinizden emin misiniz? + + Farklı alfabelerden benzer görünen karakterleri kullanarak karakterleri yanlış temsil edebilecek bir bağlantı izlediniz. %1$s etiketli bağlantıyı takip etmek, Latin olmayan karakterler için normal olan %2$s dönüşümüne yol açacaktır. Bu tür karakterleri beklemiyorsanız, bu bağlantı zararlı olabilir + Ara Sohbetleri, kişileri ve iletileri ara @@ -660,6 +663,9 @@ Sohbet koruması etkisizleştirildi. Sohbet koruması etkinleştirildi. + + Sürdürmek için lütfen sistem tanımlı sırrınızı girin. + QR kod QR kodu görsel olarak yükle diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index 066292fbb..ed2f67c29 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -687,6 +687,9 @@ Захист чату вимкнено. Захист чату увімкнено. + + Введіть захисний код, щоб продовжити. + QR-код Завантажити зображення QR-коду diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 7c57f9b45..ca84a7fe6 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -54,7 +54,7 @@ 显示密码 隐藏密码 现在不 - 永不 + 从不 稍等片刻… 已完成 撤销 @@ -110,7 +110,7 @@ 回复 Gif 图像 - 录音 + 音频 语音消息 转发了 转发的消息 @@ -119,7 +119,7 @@ 视频 文档 联系人 - 已验证联系人 + 已验证的联系人 相机 捕获 @@ -267,7 +267,7 @@ 点击来打开 视频聊天实例 您的视频聊天实例 - 定义了视频聊天实例之后,您可以在聊天里发起视频聊天。视频聊天的两端都需要有兼容的应用或兼容的浏览器。\n\n示例: https://meet.jit.si/$ROOM 或 basicwebrtc:https://your-server + 定义了视频聊天实例后,您可以在聊天里发起视频聊天。视频聊天的两端都需要有兼容的应用或兼容的浏览器。\n\n示例: https://meet.jit.si/$ROOM 或 basicwebrtc:https://your-server 使用“%1$s”邀请其他人加入视频聊天吗?\n\n设置好后,您就可以在聊天里发起视频聊天了。 这会取代之前的视频聊天设置(如果有的话)。 视频聊天邀请 您被邀请参加视频聊天,点击 %1$s 来加入。 @@ -283,7 +283,7 @@ 将消息转发给 %1$s? 转发消息到 %1$d 个聊天? - 导出附件?导出附件将允许您设备上的任意应用程序访问它们。\n\n继续? + 导出附件?导出附件将允许您设备上的任意应用程序访问它们。\n\n是否继续? 屏蔽此联系人?您将不再收到此联系人的消息。 取消屏蔽此联系人?您将再次能收到此联系人的消息。 删除联系人?\n\n仍有在进行中的聊天的联系人和在系统通讯录中的联系人无法被永久删除。 @@ -325,7 +325,7 @@ 您可以与其他 Delta Chat 用户以及任意电子邮件地址聊天。 所有聊天已归档。\n按\"+\"来开始新聊天。 分享给 - 消息 + 输入消息… 已归档 没有消息。 发给自己的消息 @@ -353,21 +353,21 @@ 邮件列表名称和图像的更改仅适用于此设备。 - 显示在时间范围内的位置 + 显示时间范围内的位置 显示轨迹 发送兴趣点 此聊天的系统消息会出现在这里 %1$s 的聊天审计日志 - 这个视图只显示系统和信息消息。可用于查找最后聊天操作而无需滚动许多普通消息 + 此视图只显示系统消息和信息消息。可用于查找最后聊天操作而无需滚动许多普通消息。 不再询问 %1$s 检测到可疑链接 - 你确定你想访问 %1$s 吗? + 您确定要访问 %1$s 吗? 你将被转到一个链接,该链接可能通过使用来自不同字母表的相似字符来错误地表示字符。打开标记为 %1$s 的链接将把你带到以 ascii 码编码的 %2$s。如果这样的字符出乎你的意料,那么这个链接可能是有害的 @@ -464,7 +464,7 @@ 使用默认值: %s 您的个人资料 个人资料图片 - 已屏蔽联系人 + 已屏蔽的联系人 被您屏蔽的联系人将显示于此。 移除个人资料图片? 密码和账户 @@ -476,7 +476,7 @@ 由我的 Delta Chat Messenger 发送: https://delta.chat 回车键发送 按回车键发送文本消息 - 发送媒体质量 + 发出媒体质量 平衡 体积小,但质量更差 振动 @@ -558,7 +558,7 @@ 选择新的个人资料图片 删除个人资料图片 显示托盘图标 - 编辑概要 + 编辑个人资料 搜索结果 @@ -625,8 +625,8 @@ 已移除成员 %1$s 已离开群组 消息已被打开 - 您发送的“%1$s”消息已在收件人的屏幕上显示过。\n\n这并不保证内容已被阅读。 - 此消息无法解密。\n\n• 简单地回复此消息以要求发件人再次发送该消息可能会有所帮助。\n\n• 如果您在此设备或其他设备上重新安装了 Delta Chat 或其他电子邮件程序,则可能需要从别处发送 Autocrypt 设置消息。 + 您发送的“%1$s”消息已在接收者的屏幕上显示过。\n\n这并不保证内容已被阅读。 + 此消息无法解密。\n\n• 简单回复此消息并要求发送者重发该消息可能会有所帮助。\n\n• 如果您在此设备或其他设备上重新安装了 Delta Chat 或其他电子邮件程序,则可能需要从别处发送 Autocrypt 设置消息。 我 %1$s。 @@ -662,11 +662,11 @@ 二维码无法被解码 您要加入群组“%1$s”吗? 扫描到的指纹与上次见到的 %1$s 的指纹不匹配。 - 此二维码包含指纹但没有电子邮件地址。\n\n对于带外验证,请先与收件人建立加密连接。 + 此二维码包含指纹但没有电子邮件地址。\n\n对于带外验证,请先与接收者建立加密连接。 已扫描到的二维码文本:\n\n%1$s 已扫描到的二维码 URL:\n\n%1$s 指纹 - %1$s 已验证, 自我介绍… + %1$s 已验证, 自我介绍中… 邀请二维码 %1$s 加入。 %1$s 已验证。 @@ -690,7 +690,7 @@ 已复制二维码链接到剪贴板 选择要发送消息的聊天 - %1$s 已经有一条草稿信息,你想替换它吗? + %1$s 已经有一条草稿信息,要替换它吗? 无法解码 mailto 链接:%1$s @@ -753,7 +753,7 @@ 打开 Delta Chat 最小化 选择一个聊天或创建新聊天 - 写消息 + 输入消息… 加密信息 联系人详情 联系人请求 @@ -797,7 +797,7 @@ 打开日志文件夹 打开当前日志文件 Delta Chat 需要位置权限来显示和分享您的位置。 - 托盘图标不能被禁用,因为Delta Chat 启动时带 --minimized 参数 + 在 Delta Chat 带 --minimized 参数启动时,无法禁用托盘图标。 未找到拼写建议 显示窗口