mirror of
https://github.com/moparisthebest/Conversations
synced 2024-12-26 09:19:07 -05:00
parent
e3cec50d1f
commit
27b306444b
@ -31,7 +31,7 @@
|
||||
android:layout_alignParentLeft="true"
|
||||
android:background="@color/primarybackground" >
|
||||
|
||||
<EditText
|
||||
<eu.siacs.conversations.ui.EditMessage
|
||||
android:id="@+id/textinput"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
@ -46,10 +46,10 @@
|
||||
android:paddingLeft="8dp"
|
||||
android:paddingRight="8dp"
|
||||
android:paddingTop="12dp"
|
||||
android:textColor="@color/primarytext">
|
||||
|
||||
android:textColor="@color/primarytext"
|
||||
android:imeOptions="flagNoExtractUi">
|
||||
<requestFocus />
|
||||
</EditText>
|
||||
</eu.siacs.conversations.ui.EditMessage>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/textSendButton"
|
||||
|
@ -13,6 +13,7 @@ import eu.siacs.conversations.entities.Conversation;
|
||||
import eu.siacs.conversations.entities.Message;
|
||||
import eu.siacs.conversations.entities.MucOptions;
|
||||
import eu.siacs.conversations.services.XmppConnectionService;
|
||||
import eu.siacs.conversations.ui.EditMessage.OnEnterPressed;
|
||||
import eu.siacs.conversations.ui.XmppActivity.OnPresenceSelected;
|
||||
import eu.siacs.conversations.ui.adapter.MessageAdapter;
|
||||
import eu.siacs.conversations.ui.adapter.MessageAdapter.OnContactPictureClicked;
|
||||
@ -20,6 +21,7 @@ import eu.siacs.conversations.utils.UIHelper;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Fragment;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentSender;
|
||||
@ -30,14 +32,17 @@ import android.preference.PreferenceManager;
|
||||
import android.text.Editable;
|
||||
import android.text.Selection;
|
||||
import android.view.Gravity;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.AbsListView.OnScrollListener;
|
||||
import android.widget.TextView.OnEditorActionListener;
|
||||
import android.widget.AbsListView;
|
||||
|
||||
import android.widget.EditText;
|
||||
import android.widget.ListView;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.RelativeLayout;
|
||||
@ -55,7 +60,7 @@ public class ConversationFragment extends Fragment {
|
||||
|
||||
protected String queuedPqpMessage = null;
|
||||
|
||||
private EditText chatMsg;
|
||||
private EditMessage mEditMessage;
|
||||
private String pastedText = null;
|
||||
private RelativeLayout snackbar;
|
||||
private TextView snackbarMessage;
|
||||
@ -66,21 +71,26 @@ public class ConversationFragment extends Fragment {
|
||||
|
||||
private IntentSender askForPassphraseIntent = null;
|
||||
|
||||
private OnClickListener sendMsgListener = new OnClickListener() {
|
||||
private OnEditorActionListener mEditorActionListener = new OnEditorActionListener() {
|
||||
|
||||
@Override
|
||||
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
|
||||
if (actionId == EditorInfo.IME_ACTION_DONE) {
|
||||
InputMethodManager imm = (InputMethodManager) v.getContext()
|
||||
.getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private OnClickListener mSendButtonListener = new OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (chatMsg.getText().length() < 1)
|
||||
return;
|
||||
Message message = new Message(conversation, chatMsg.getText()
|
||||
.toString(), conversation.getNextEncryption());
|
||||
if (conversation.getNextEncryption() == Message.ENCRYPTION_OTR) {
|
||||
sendOtrMessage(message);
|
||||
} else if (conversation.getNextEncryption() == Message.ENCRYPTION_PGP) {
|
||||
sendPgpMessage(message);
|
||||
} else {
|
||||
sendPlainTextMessage(message);
|
||||
}
|
||||
sendMessage();
|
||||
}
|
||||
};
|
||||
protected OnClickListener clickToDecryptListener = new OnClickListener() {
|
||||
@ -148,16 +158,31 @@ public class ConversationFragment extends Fragment {
|
||||
|
||||
private ConversationActivity activity;
|
||||
|
||||
|
||||
private void sendMessage() {
|
||||
if (mEditMessage.getText().length() < 1)
|
||||
return;
|
||||
Message message = new Message(conversation, mEditMessage.getText()
|
||||
.toString(), conversation.getNextEncryption());
|
||||
if (conversation.getNextEncryption() == Message.ENCRYPTION_OTR) {
|
||||
sendOtrMessage(message);
|
||||
} else if (conversation.getNextEncryption() == Message.ENCRYPTION_PGP) {
|
||||
sendPgpMessage(message);
|
||||
} else {
|
||||
sendPlainTextMessage(message);
|
||||
}
|
||||
}
|
||||
|
||||
public void updateChatMsgHint() {
|
||||
switch (conversation.getNextEncryption()) {
|
||||
case Message.ENCRYPTION_NONE:
|
||||
chatMsg.setHint(getString(R.string.send_plain_text_message));
|
||||
mEditMessage.setHint(getString(R.string.send_plain_text_message));
|
||||
break;
|
||||
case Message.ENCRYPTION_OTR:
|
||||
chatMsg.setHint(getString(R.string.send_otr_message));
|
||||
mEditMessage.setHint(getString(R.string.send_otr_message));
|
||||
break;
|
||||
case Message.ENCRYPTION_PGP:
|
||||
chatMsg.setHint(getString(R.string.send_pgp_message));
|
||||
mEditMessage.setHint(getString(R.string.send_pgp_message));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -169,8 +194,8 @@ public class ConversationFragment extends Fragment {
|
||||
ViewGroup container, Bundle savedInstanceState) {
|
||||
final View view = inflater.inflate(R.layout.fragment_conversation,
|
||||
container, false);
|
||||
chatMsg = (EditText) view.findViewById(R.id.textinput);
|
||||
chatMsg.setOnClickListener(new OnClickListener() {
|
||||
mEditMessage = (EditMessage) view.findViewById(R.id.textinput);
|
||||
mEditMessage.setOnClickListener(new OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
@ -179,10 +204,18 @@ public class ConversationFragment extends Fragment {
|
||||
}
|
||||
}
|
||||
});
|
||||
mEditMessage.setOnEditorActionListener(mEditorActionListener);
|
||||
mEditMessage.setOnEnterPressedListener(new OnEnterPressed() {
|
||||
|
||||
@Override
|
||||
public void onEnterPressed() {
|
||||
sendMessage();
|
||||
}
|
||||
});
|
||||
|
||||
ImageButton sendButton = (ImageButton) view
|
||||
.findViewById(R.id.textSendButton);
|
||||
sendButton.setOnClickListener(this.sendMsgListener);
|
||||
sendButton.setOnClickListener(this.mSendButtonListener);
|
||||
|
||||
snackbar = (RelativeLayout) view.findViewById(R.id.snackbar);
|
||||
snackbarMessage = (TextView) view.findViewById(R.id.snackbar_message);
|
||||
@ -207,14 +240,14 @@ public class ConversationFragment extends Fragment {
|
||||
}
|
||||
|
||||
protected void highlightInConference(String nick) {
|
||||
String oldString = chatMsg.getText().toString().trim();
|
||||
String oldString = mEditMessage.getText().toString().trim();
|
||||
if (oldString.isEmpty()) {
|
||||
chatMsg.setText(nick + ": ");
|
||||
mEditMessage.setText(nick + ": ");
|
||||
} else {
|
||||
chatMsg.setText(oldString + " " + nick + " ");
|
||||
mEditMessage.setText(oldString + " " + nick + " ");
|
||||
}
|
||||
int position = chatMsg.length();
|
||||
Editable etext = chatMsg.getText();
|
||||
int position = mEditMessage.length();
|
||||
Editable etext = mEditMessage.getText();
|
||||
Selection.setSelection(etext, position);
|
||||
}
|
||||
|
||||
@ -234,7 +267,7 @@ public class ConversationFragment extends Fragment {
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
if (this.conversation != null) {
|
||||
this.conversation.setNextMessage(chatMsg.getText().toString());
|
||||
this.conversation.setNextMessage(mEditMessage.getText().toString());
|
||||
}
|
||||
}
|
||||
|
||||
@ -245,18 +278,18 @@ public class ConversationFragment extends Fragment {
|
||||
}
|
||||
String oldString = conversation.getNextMessage().trim();
|
||||
if (this.pastedText == null) {
|
||||
this.chatMsg.setText(oldString);
|
||||
this.mEditMessage.setText(oldString);
|
||||
} else {
|
||||
|
||||
if (oldString.isEmpty()) {
|
||||
chatMsg.setText(pastedText);
|
||||
mEditMessage.setText(pastedText);
|
||||
} else {
|
||||
chatMsg.setText(oldString + " " + pastedText);
|
||||
mEditMessage.setText(oldString + " " + pastedText);
|
||||
}
|
||||
pastedText = null;
|
||||
}
|
||||
int position = chatMsg.length();
|
||||
Editable etext = chatMsg.getText();
|
||||
int position = mEditMessage.length();
|
||||
Editable etext = mEditMessage.getText();
|
||||
Selection.setSelection(etext, position);
|
||||
updateMessages();
|
||||
if (activity.getSlidingPaneLayout().isSlideable()) {
|
||||
@ -371,7 +404,7 @@ public class ConversationFragment extends Fragment {
|
||||
if (size >= 1) {
|
||||
messagesView.setSelection(size - 1);
|
||||
}
|
||||
chatMsg.setText("");
|
||||
mEditMessage.setText("");
|
||||
}
|
||||
|
||||
protected void updateStatusMessages() {
|
||||
@ -560,6 +593,6 @@ public class ConversationFragment extends Fragment {
|
||||
}
|
||||
|
||||
public void clearInputField() {
|
||||
this.chatMsg.setText("");
|
||||
this.mEditMessage.setText("");
|
||||
}
|
||||
}
|
||||
|
39
src/eu/siacs/conversations/ui/EditMessage.java
Normal file
39
src/eu/siacs/conversations/ui/EditMessage.java
Normal file
@ -0,0 +1,39 @@
|
||||
package eu.siacs.conversations.ui;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.KeyEvent;
|
||||
import android.widget.EditText;
|
||||
|
||||
public class EditMessage extends EditText {
|
||||
|
||||
public EditMessage(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
public EditMessage(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
protected OnEnterPressed mOnEnterPressed;
|
||||
|
||||
@Override
|
||||
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||
if (keyCode == KeyEvent.KEYCODE_ENTER) {
|
||||
if (mOnEnterPressed != null) {
|
||||
mOnEnterPressed.onEnterPressed();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return super.onKeyDown(keyCode, event);
|
||||
}
|
||||
|
||||
public void setOnEnterPressedListener(OnEnterPressed listener) {
|
||||
this.mOnEnterPressed = listener;
|
||||
}
|
||||
|
||||
public interface OnEnterPressed {
|
||||
public void onEnterPressed();
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user