show an send button instead of the enter key in softkeyboards when enterIsSend and showEnterKey are both set

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/ui/ConversationActivity.java |  1 
src/main/java/eu/siacs/conversations/ui/ConversationFragment.java | 16 
2 files changed, 10 insertions(+), 7 deletions(-)

Detailed changes

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

@@ -969,6 +969,7 @@ public class ConversationActivity extends XmppActivity
 		} else {
 			this.mConversationFragment.messageListAdapter.updatePreferences();
 			this.mConversationFragment.messagesView.invalidateViews();
+			this.mConversationFragment.setupIme();
 		}
 
 		if(!forbidProcessingPendings) {

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

@@ -345,21 +345,24 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
 		}
 	}
 
-	private void setupIme() {
-		if (((ConversationActivity) getActivity()).usingEnterKey()) {
+	public void setupIme() {
+		if (activity.usingEnterKey() && activity.enterIsSend()) {
+			mEditMessage.setInputType(mEditMessage.getInputType() & (~InputType.TYPE_TEXT_FLAG_MULTI_LINE));
+			mEditMessage.setInputType(mEditMessage.getInputType() & (~InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE));
+		} else if (activity.usingEnterKey()) {
+			mEditMessage.setInputType(mEditMessage.getInputType() | InputType.TYPE_TEXT_FLAG_MULTI_LINE);
 			mEditMessage.setInputType(mEditMessage.getInputType() & (~InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE));
 		} else {
+			mEditMessage.setInputType(mEditMessage.getInputType() | InputType.TYPE_TEXT_FLAG_MULTI_LINE);
 			mEditMessage.setInputType(mEditMessage.getInputType() | InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE);
 		}
 	}
 
 	@Override
-	public View onCreateView(final LayoutInflater inflater,
-							 ViewGroup container, Bundle savedInstanceState) {
+	public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
 		final View view = inflater.inflate(R.layout.fragment_conversation, container, false);
 		view.setOnClickListener(null);
 		mEditMessage = (EditMessage) view.findViewById(R.id.textinput);
-		setupIme();
 		mEditMessage.setOnClickListener(new OnClickListener() {
 
 			@Override
@@ -639,9 +642,8 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
 		if (conversation == null) {
 			return;
 		}
-
 		this.activity = (ConversationActivity) getActivity();
-
+		setupIme();
 		if (this.conversation != null) {
 			final String msg = mEditMessage.getText().toString();
 			this.conversation.setNextMessage(msg);