diff --git a/app/src/main/java/org/linphone/chat/ChatActivity.java b/app/src/main/java/org/linphone/chat/ChatActivity.java index 5fa43b0d6..9646da8bc 100644 --- a/app/src/main/java/org/linphone/chat/ChatActivity.java +++ b/app/src/main/java/org/linphone/chat/ChatActivity.java @@ -19,12 +19,15 @@ */ package org.linphone.chat; +import android.app.Dialog; import android.app.Fragment; import android.app.FragmentManager; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; +import android.widget.Button; +import android.widget.ImageView; import android.widget.Toast; import java.util.ArrayList; import org.linphone.LinphoneManager; @@ -37,6 +40,7 @@ import org.linphone.core.ChatRoom; import org.linphone.core.Factory; import org.linphone.core.tools.Log; import org.linphone.utils.FileUtils; +import org.linphone.utils.LinphoneUtils; public class ChatActivity extends MainActivity { public static final String NAME = "Chat"; @@ -216,21 +220,11 @@ public class ChatActivity extends MainActivity { mSharedFiles = null; } - if (mForwardMessage != null) { - Log.i("[Chat] Found message to forward"); - ChatRoom room = LinphoneManager.getCore().getChatRoom(peerAddress, localAddress); - if (room != null) { - Log.i("[Chat] Found chat room in which to forward message"); - ChatMessage message = room.createForwardMessage(mForwardMessage); - message.send(); - mForwardMessage = null; - Log.i("[Chat] Message forwarded"); - } - } - ChatMessagesFragment fragment = new ChatMessagesFragment(); fragment.setArguments(extras); changeFragment(fragment, "Chat room", isChild); + + showForwardDialog(localAddress, peerAddress); } public void showChatRoom(Address localAddress, Address peerAddress) { @@ -335,4 +329,55 @@ public class ChatActivity extends MainActivity { mForwardMessage = message; Toast.makeText(this, R.string.toast_choose_chat_room_for_sharing, Toast.LENGTH_LONG).show(); } + + private void showForwardDialog(final Address localAddress, final Address peerAddress) { + if (mForwardMessage == null) return; + + final Dialog dialog = + LinphoneUtils.getDialog( + this, getString(R.string.chat_message_forward_confirmation_dialog)); + dialog.findViewById(R.id.dialog_delete_button).setVisibility(View.GONE); + + ImageView icon = dialog.findViewById(R.id.dialog_icon); + icon.setVisibility(View.VISIBLE); + icon.setImageResource(R.drawable.forward_message_dialog_default); + + Button cancel = dialog.findViewById(R.id.dialog_cancel_button); + cancel.setOnClickListener( + new View.OnClickListener() { + @Override + public void onClick(View view) { + mForwardMessage = null; + dialog.dismiss(); + } + }); + + Button ok = dialog.findViewById(R.id.dialog_ok_button); + ok.setVisibility(View.VISIBLE); + ok.setText(getString(R.string.chat_message_context_menu_forward)); + ok.setOnClickListener( + new View.OnClickListener() { + @Override + public void onClick(View view) { + doMessageForwarding(localAddress, peerAddress); + dialog.dismiss(); + } + }); + + dialog.show(); + } + + private void doMessageForwarding(Address localAddress, Address peerAddress) { + if (mForwardMessage != null) { + Log.i("[Chat] Found message to forward"); + ChatRoom room = LinphoneManager.getCore().getChatRoom(peerAddress, localAddress); + if (room != null) { + Log.i("[Chat] Found chat room in which to forward message"); + ChatMessage message = room.createForwardMessage(mForwardMessage); + message.send(); + mForwardMessage = null; + Log.i("[Chat] Message forwarded"); + } + } + } } diff --git a/app/src/main/res/drawable-xhdpi/forward_message_dialog_default.png b/app/src/main/res/drawable-xhdpi/forward_message_dialog_default.png new file mode 100644 index 000000000..b51542ec8 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/forward_message_dialog_default.png differ diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index baf341304..1ee404e9a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -277,6 +277,7 @@ You disabled ephemeral messages You enabled ephemeral messages: %s Ephemeral messages expiry date: %s + Do you want to forward the message in this room? Connected