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