made presences chooser. raw draft. just kinda works
This commit is contained in:
parent
9c7cacdbdd
commit
0392e6b2dc
|
@ -106,7 +106,7 @@ public class Conversation extends AbstractEntity {
|
||||||
public Message getLatestMessage() {
|
public Message getLatestMessage() {
|
||||||
if ((this.messages == null)||(this.messages.size()==0)) {
|
if ((this.messages == null)||(this.messages.size()==0)) {
|
||||||
Message message = new Message(this,"",Message.ENCRYPTION_NONE);
|
Message message = new Message(this,"",Message.ENCRYPTION_NONE);
|
||||||
message.setTime(0);
|
message.setTime(getCreated());
|
||||||
return message;
|
return message;
|
||||||
} else {
|
} else {
|
||||||
return this.messages.get(this.messages.size() - 1);
|
return this.messages.get(this.messages.size() - 1);
|
||||||
|
|
|
@ -66,14 +66,7 @@ public class ConversationActivity extends XmppActivity {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
updateConversationList();
|
updateConversationList();
|
||||||
/*for(int i = 0; i < conversationList.size(); ++i) {
|
|
||||||
if (currentConv == conversationList.get(i)) {
|
|
||||||
selectedConversation = conversationList.get(i);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
if(paneShouldBeOpen) {
|
if(paneShouldBeOpen) {
|
||||||
selectedConversation = conversationList.get(0);
|
|
||||||
if (conversationList.size() >= 1) {
|
if (conversationList.size() >= 1) {
|
||||||
swapConversationFragment();
|
swapConversationFragment();
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -54,49 +54,12 @@ public class ConversationFragment extends Fragment {
|
||||||
final XmppConnectionService xmppService = activity.xmppConnectionService;
|
final XmppConnectionService xmppService = activity.xmppConnectionService;
|
||||||
if (chatMsg.getText().length() < 1)
|
if (chatMsg.getText().length() < 1)
|
||||||
return;
|
return;
|
||||||
final Message message = new Message(conversation, chatMsg.getText()
|
Message message = new Message(conversation, chatMsg.getText()
|
||||||
.toString(), conversation.nextMessageEncryption);
|
.toString(), conversation.nextMessageEncryption);
|
||||||
if (conversation.nextMessageEncryption == Message.ENCRYPTION_OTR) {
|
if (conversation.nextMessageEncryption == Message.ENCRYPTION_OTR) {
|
||||||
if (conversation.hasValidOtrSession()) {
|
sendOtrMessage(message);
|
||||||
activity.xmppConnectionService.sendMessage(
|
|
||||||
conversation.getAccount(), message, null);
|
|
||||||
chatMsg.setText("");
|
|
||||||
} else {
|
} else {
|
||||||
Hashtable<String, Integer> presences = conversation
|
sendPlainTextMessage(message);
|
||||||
.getContact().getPresences();
|
|
||||||
if (presences.size() == 0) {
|
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(
|
|
||||||
getActivity());
|
|
||||||
builder.setTitle("Contact is offline");
|
|
||||||
builder.setIconAttribute(android.R.attr.alertDialogIcon);
|
|
||||||
builder.setMessage("Sending OTR encrypted messages to an offline contact is impossible.");
|
|
||||||
builder.setPositiveButton("Send plain text",
|
|
||||||
new DialogInterface.OnClickListener() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClick(DialogInterface dialog,
|
|
||||||
int which) {
|
|
||||||
conversation.nextMessageEncryption = Message.ENCRYPTION_NONE;
|
|
||||||
message.setEncryption(Message.ENCRYPTION_NONE);
|
|
||||||
xmppService.sendMessage(
|
|
||||||
conversation.getAccount(),
|
|
||||||
message, null);
|
|
||||||
chatMsg.setText("");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
builder.setNegativeButton("Cancel", null);
|
|
||||||
builder.create().show();
|
|
||||||
} else if (presences.size() == 1) {
|
|
||||||
xmppService.sendMessage(conversation.getAccount(),
|
|
||||||
message,
|
|
||||||
(String) presences.keySet().toArray()[0]);
|
|
||||||
chatMsg.setText("");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
xmppService.sendMessage(conversation.getAccount(), message,
|
|
||||||
null);
|
|
||||||
chatMsg.setText("");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -334,4 +297,67 @@ public class ConversationFragment extends Fragment {
|
||||||
fingerprintWarning.setVisibility(View.GONE);
|
fingerprintWarning.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void sendPlainTextMessage(Message message) {
|
||||||
|
ConversationActivity activity = (ConversationActivity) getActivity();
|
||||||
|
activity.xmppConnectionService.sendMessage(conversation.getAccount(), message,
|
||||||
|
null);
|
||||||
|
chatMsg.setText("");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void sendOtrMessage(final Message message) {
|
||||||
|
ConversationActivity activity = (ConversationActivity) getActivity();
|
||||||
|
final XmppConnectionService xmppService = activity.xmppConnectionService;
|
||||||
|
if (conversation.hasValidOtrSession()) {
|
||||||
|
activity.xmppConnectionService.sendMessage(
|
||||||
|
conversation.getAccount(), message, null);
|
||||||
|
chatMsg.setText("");
|
||||||
|
} else {
|
||||||
|
Hashtable<String, Integer> presences = conversation
|
||||||
|
.getContact().getPresences();
|
||||||
|
if (presences.size() == 0) {
|
||||||
|
AlertDialog.Builder builder = new AlertDialog.Builder(
|
||||||
|
getActivity());
|
||||||
|
builder.setTitle("Contact is offline");
|
||||||
|
builder.setIconAttribute(android.R.attr.alertDialogIcon);
|
||||||
|
builder.setMessage("Sending OTR encrypted messages to an offline contact is impossible.");
|
||||||
|
builder.setPositiveButton("Send plain text",
|
||||||
|
new DialogInterface.OnClickListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog,
|
||||||
|
int which) {
|
||||||
|
conversation.nextMessageEncryption = Message.ENCRYPTION_NONE;
|
||||||
|
message.setEncryption(Message.ENCRYPTION_NONE);
|
||||||
|
xmppService.sendMessage(
|
||||||
|
conversation.getAccount(),
|
||||||
|
message, null);
|
||||||
|
chatMsg.setText("");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
builder.setNegativeButton("Cancel", null);
|
||||||
|
builder.create().show();
|
||||||
|
} else if (presences.size() == 1) {
|
||||||
|
xmppService.sendMessage(conversation.getAccount(),
|
||||||
|
message,
|
||||||
|
(String) presences.keySet().toArray()[0]);
|
||||||
|
chatMsg.setText("");
|
||||||
|
} else {
|
||||||
|
AlertDialog.Builder builder = new AlertDialog.Builder(
|
||||||
|
getActivity());
|
||||||
|
builder.setTitle("Choose Presence");
|
||||||
|
final String[] presencesArray = new String[presences.size()];
|
||||||
|
presences.keySet().toArray(presencesArray);
|
||||||
|
builder.setItems(presencesArray, new DialogInterface.OnClickListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
xmppService.sendMessage(conversation.getAccount(), message, presencesArray[which]);
|
||||||
|
chatMsg.setText("");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
builder.create().show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue