Long press send button to send media

Stephen Paul Weber created

Change summary

src/main/java/eu/siacs/conversations/ui/ConversationFragment.java | 25 
1 file changed, 24 insertions(+), 1 deletion(-)

Detailed changes

src/main/java/eu/siacs/conversations/ui/ConversationFragment.java 🔗

@@ -1359,6 +1359,7 @@ public class ConversationFragment extends XmppFragment
         binding.messagesView.setAdapter(messageListAdapter);
 
         registerForContextMenu(binding.messagesView);
+        registerForContextMenu(binding.textSendButton);
 
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
             this.binding.textinput.setCustomInsertionActionModeCallback(
@@ -1552,6 +1553,28 @@ public class ConversationFragment extends XmppFragment
     public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
         // This should cancel any remaining click events that would otherwise trigger links
         v.dispatchTouchEvent(MotionEvent.obtain(0, 0, MotionEvent.ACTION_CANCEL, 0f, 0f, 0));
+
+        if (v == binding.textSendButton) {
+            super.onCreateContextMenu(menu, v, menuInfo);
+            try {
+                java.lang.reflect.Method m = menu.getClass().getSuperclass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
+                m.setAccessible(true);
+                m.invoke(menu, true);
+            } catch (Exception e) {
+                Log.w("WUT", "" + e);
+                e.printStackTrace();
+            }
+            Menu tmpMenu = new PopupMenu(activity, null).getMenu();
+            activity.getMenuInflater().inflate(R.menu.fragment_conversation, tmpMenu);
+            MenuItem attachMenu = tmpMenu.findItem(R.id.action_attach_file);
+            for (int i = 0; i < attachMenu.getSubMenu().size(); i++) {
+                MenuItem item = attachMenu.getSubMenu().getItem(i);
+                MenuItem newItem = menu.add(item.getGroupId(), item.getItemId(), item.getOrder(), item.getTitle());
+                newItem.setIcon(item.getIcon());
+            }
+            return;
+        }
+
         synchronized (this.messageList) {
             super.onCreateContextMenu(menu, v, menuInfo);
             AdapterView.AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) menuInfo;
@@ -1814,7 +1837,7 @@ public class ConversationFragment extends XmppFragment
                 refresh();
                 return true;
             default:
-                return super.onContextItemSelected(item);
+                return onOptionsItemSelected(item);
         }
     }