diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index 036dc0a51..99efe79f9 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -1526,8 +1526,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else { var cell = (ChatMessageCell) view; var message = cell.getMessageObject(); - var messageGroup = getValidGroupedMessage(message); - var noforwards = getMessagesController().isChatNoForwards(currentChat) || message.messageOwner.noforwards; + selectedObject = message; + selectedObjectGroup = getValidGroupedMessage(message); + var noforwards = getMessagesController().isChatNoForwardsWithOverride(currentChat) || message.messageOwner.noforwards; boolean allowChatActions = chatMode != MODE_SCHEDULED && (threadMessageObjects == null || !threadMessageObjects.contains(message)) && !message.isSponsored() && (getMessageType(message) != 1 || message.getDialogId() != mergeDialogId) && !(message.messageOwner.action instanceof TLRPC.TL_messageActionSecureValuesSent) && @@ -1535,10 +1536,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not (bottomOverlayChat == null || bottomOverlayChat.getVisibility() != View.VISIBLE) && (currentChat == null || ((!ChatObject.isNotInChat(currentChat) || isThreadChat()) && (!ChatObject.isChannel(currentChat) || ChatObject.canPost(currentChat) || currentChat.megagroup) && ChatObject.canSendMessages(currentChat))); boolean allowEdit = message.canEditMessage(currentChat) && !chatActivityEnterView.hasAudioToSend() && message.getDialogId() != mergeDialogId; - if (allowEdit && messageGroup != null) { + if (allowEdit && selectedObjectGroup != null) { int captionsCount = 0; - for (int a = 0, N = messageGroup.messages.size(); a < N; a++) { - MessageObject messageObject = messageGroup.messages.get(a); + for (int a = 0, N = selectedObjectGroup.messages.size(); a < N; a++) { + MessageObject messageObject = selectedObjectGroup.messages.get(a); if (a == 0 || !TextUtils.isEmpty(messageObject.caption)) { selectedObjectToEditCaption = messageObject; if (!TextUtils.isEmpty(messageObject.caption)) { @@ -1549,14 +1550,12 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not allowEdit = captionsCount < 2; } switch (NaConfig.INSTANCE.getDoubleTapAction().Int()) { -// case DoubleTap.DOUBLE_TAP_ACTION_TRANSLATE: -// if (NekoConfig.transType != NekoConfig.TRANS_TYPE_EXTERNAL || !noforwards) { -// MessageObject messageObject = getMessageHelper().getMessageForTranslate(message, messageGroup); -// if (messageObject != null) { -// return true; -// } -// } -// break; + case DoubleTap.DOUBLE_TAP_ACTION_TRANSLATE: + MessageObject messageObject = getMessageForTranslate(); + if (messageObject != null) { + return true; + } + break; case DoubleTap.DOUBLE_TAP_ACTION_REPLY: return message.getId() > 0 && allowChatActions; case DoubleTap.DOUBLE_TAP_ACTION_SAVE: @@ -1564,12 +1563,12 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not case DoubleTap.DOUBLE_TAP_ACTION_REPEAT: allowRepeat = allowChatActions && (!isThreadChat() && !noforwards || - getMessageHelper().getMessageForRepeat(message, messageGroup) != null); + getMessageHelper().getMessageForRepeat(message, selectedObjectGroup) != null); return allowRepeat && !message.isSponsored() && chatMode != MODE_SCHEDULED && !message.needDrawBluredPreview() && !message.isLiveLocation() && message.type != 16; case DoubleTap.DOUBLE_TAP_ACTION_REPEAT_AS_COPY: allowRepeat = allowChatActions && (!isThreadChat() && !noforwards || - getMessageHelper().getMessageForRepeat(message, messageGroup) != null); + getMessageHelper().getMessageForRepeat(message, selectedObjectGroup) != null); return allowRepeat && !message.isSponsored() && chatMode != MODE_SCHEDULED && !message.needDrawBluredPreview() && !message.isLiveLocation() && message.type != 16; case DoubleTap.DOUBLE_TAP_ACTION_EDIT: return allowEdit; @@ -1619,6 +1618,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not selectedObject = message; selectedObjectGroup = getValidGroupedMessage(message); switch (NaConfig.INSTANCE.getDoubleTapAction().Int()) { + case DoubleTap.DOUBLE_TAP_ACTION_TRANSLATE: + MessageTransKt.translateMessages(ChatActivity.this); + break; case DoubleTap.DOUBLE_TAP_ACTION_REPLY: processSelectedOption(OPTION_REPLY); break; diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/settings/NekoChatSettingsActivity.java b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/settings/NekoChatSettingsActivity.java index a8e046304..637398dae 100644 --- a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/settings/NekoChatSettingsActivity.java +++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/settings/NekoChatSettingsActivity.java @@ -247,8 +247,8 @@ public class NekoChatSettingsActivity extends BaseFragment implements Notificati types.add(DoubleTap.DOUBLE_TAP_ACTION_SEND_REACTIONS); arrayList.add(LocaleController.getString("ShowReactions", R.string.ShowReactions)); types.add(DoubleTap.DOUBLE_TAP_ACTION_SHOW_REACTIONS); - // arrayList.add(LocaleController.getString("TranslateMessage", R.string.TranslateMessage)); - // types.add(DoubleTap.DOUBLE_TAP_ACTION_TRANSLATE); + arrayList.add(LocaleController.getString("TranslateMessage", R.string.TranslateMessage)); + types.add(DoubleTap.DOUBLE_TAP_ACTION_TRANSLATE); arrayList.add(LocaleController.getString("Reply", R.string.Reply)); types.add(DoubleTap.DOUBLE_TAP_ACTION_REPLY); arrayList.add(LocaleController.getString("AddToSavedMessages", R.string.AddToSavedMessages)); diff --git a/TMessagesProj/src/main/kotlin/xyz/nextalone/nagram/helper/DoubleTap.kt b/TMessagesProj/src/main/kotlin/xyz/nextalone/nagram/helper/DoubleTap.kt index a031079d7..44954bbe3 100644 --- a/TMessagesProj/src/main/kotlin/xyz/nextalone/nagram/helper/DoubleTap.kt +++ b/TMessagesProj/src/main/kotlin/xyz/nextalone/nagram/helper/DoubleTap.kt @@ -13,18 +13,18 @@ object DoubleTap { 1 const val DOUBLE_TAP_ACTION_SHOW_REACTIONS = 2 -// const val DOUBLE_TAP_ACTION_TRANSLATE = -// 3 - const val DOUBLE_TAP_ACTION_REPLY = + const val DOUBLE_TAP_ACTION_TRANSLATE = 3 - const val DOUBLE_TAP_ACTION_SAVE = + const val DOUBLE_TAP_ACTION_REPLY = 4 - const val DOUBLE_TAP_ACTION_REPEAT = + const val DOUBLE_TAP_ACTION_SAVE = 5 - const val DOUBLE_TAP_ACTION_REPEAT_AS_COPY = + const val DOUBLE_TAP_ACTION_REPEAT = 6 - const val DOUBLE_TAP_ACTION_EDIT = + const val DOUBLE_TAP_ACTION_REPEAT_AS_COPY = 7 + const val DOUBLE_TAP_ACTION_EDIT = + 8 init { doubleTapActionMap[DOUBLE_TAP_ACTION_NONE] = @@ -42,11 +42,11 @@ object DoubleTap { "ShowReactions", R.string.ShowReactions ) -// doubleTapActionMap[DOUBLE_TAP_ACTION_TRANSLATE] = -// LocaleController.getString( -// "Translate", -// R.string.Translate -// ) + doubleTapActionMap[DOUBLE_TAP_ACTION_TRANSLATE] = + LocaleController.getString( + "TranslateMessage", + R.string.TranslateMessage + ) doubleTapActionMap[DOUBLE_TAP_ACTION_REPLY] = LocaleController.getString( "Reply",