streamlined onpresenceselected listener
This commit is contained in:
parent
30a0be2998
commit
7e8c68b698
|
@ -6,11 +6,9 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import eu.siacs.conversations.R;
|
import eu.siacs.conversations.R;
|
||||||
import eu.siacs.conversations.entities.Account;
|
|
||||||
import eu.siacs.conversations.entities.Contact;
|
import eu.siacs.conversations.entities.Contact;
|
||||||
import eu.siacs.conversations.entities.Conversation;
|
import eu.siacs.conversations.entities.Conversation;
|
||||||
import eu.siacs.conversations.entities.Message;
|
import eu.siacs.conversations.entities.Message;
|
||||||
import eu.siacs.conversations.entities.Presences;
|
|
||||||
import eu.siacs.conversations.services.ImageProvider;
|
import eu.siacs.conversations.services.ImageProvider;
|
||||||
import eu.siacs.conversations.utils.ExceptionHelper;
|
import eu.siacs.conversations.utils.ExceptionHelper;
|
||||||
import eu.siacs.conversations.utils.UIHelper;
|
import eu.siacs.conversations.utils.UIHelper;
|
||||||
|
@ -345,15 +343,13 @@ public class ConversationActivity extends XmppActivity {
|
||||||
selectPresence(getSelectedConversation(), new OnPresenceSelected() {
|
selectPresence(getSelectedConversation(), new OnPresenceSelected() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPresenceSelected(boolean success, String presence) {
|
public void onPresenceSelected() {
|
||||||
if (success) {
|
|
||||||
if (attachmentChoice == ATTACHMENT_CHOICE_TAKE_PHOTO) {
|
if (attachmentChoice == ATTACHMENT_CHOICE_TAKE_PHOTO) {
|
||||||
Intent takePictureIntent = new Intent(
|
Intent takePictureIntent = new Intent(
|
||||||
MediaStore.ACTION_IMAGE_CAPTURE);
|
MediaStore.ACTION_IMAGE_CAPTURE);
|
||||||
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
|
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
|
||||||
ImageProvider.getIncomingContentUri());
|
ImageProvider.getIncomingContentUri());
|
||||||
if (takePictureIntent
|
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
|
||||||
.resolveActivity(getPackageManager()) != null) {
|
|
||||||
startActivityForResult(takePictureIntent,
|
startActivityForResult(takePictureIntent,
|
||||||
REQUEST_IMAGE_CAPTURE);
|
REQUEST_IMAGE_CAPTURE);
|
||||||
}
|
}
|
||||||
|
@ -363,21 +359,13 @@ public class ConversationActivity extends XmppActivity {
|
||||||
attachFileIntent.setAction(Intent.ACTION_GET_CONTENT);
|
attachFileIntent.setAction(Intent.ACTION_GET_CONTENT);
|
||||||
Intent chooser = Intent.createChooser(attachFileIntent,
|
Intent chooser = Intent.createChooser(attachFileIntent,
|
||||||
getString(R.string.attach_file));
|
getString(R.string.attach_file));
|
||||||
startActivityForResult(chooser,
|
startActivityForResult(chooser, REQUEST_ATTACH_FILE_DIALOG);
|
||||||
REQUEST_ATTACH_FILE_DIALOG);
|
|
||||||
} else if (attachmentChoice == ATTACHMENT_CHOICE_RECORD_VOICE) {
|
} else if (attachmentChoice == ATTACHMENT_CHOICE_RECORD_VOICE) {
|
||||||
Intent intent = new Intent(
|
Intent intent = new Intent(
|
||||||
MediaStore.Audio.Media.RECORD_SOUND_ACTION);
|
MediaStore.Audio.Media.RECORD_SOUND_ACTION);
|
||||||
startActivityForResult(intent, REQUEST_RECORD_AUDIO);
|
startActivityForResult(intent, REQUEST_RECORD_AUDIO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onSendPlainTextInstead() {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -851,59 +839,6 @@ public class ConversationActivity extends XmppActivity {
|
||||||
listView.invalidateViews();
|
listView.invalidateViews();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void selectPresence(final Conversation conversation,
|
|
||||||
final OnPresenceSelected listener) {
|
|
||||||
Contact contact = conversation.getContact();
|
|
||||||
if (contact == null) {
|
|
||||||
showAddToRosterDialog(conversation);
|
|
||||||
listener.onPresenceSelected(false, null);
|
|
||||||
} else {
|
|
||||||
Presences presences = contact.getPresences();
|
|
||||||
if (presences.size() == 0) {
|
|
||||||
conversation.setNextPresence(null);
|
|
||||||
listener.onPresenceSelected(true, null);
|
|
||||||
} else if (presences.size() == 1) {
|
|
||||||
String presence = (String) presences.asStringArray()[0];
|
|
||||||
conversation.setNextPresence(presence);
|
|
||||||
listener.onPresenceSelected(true, presence);
|
|
||||||
} else {
|
|
||||||
final StringBuilder presence = new StringBuilder();
|
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
|
||||||
builder.setTitle(getString(R.string.choose_presence));
|
|
||||||
final String[] presencesArray = presences.asStringArray();
|
|
||||||
int preselectedPresence = 0;
|
|
||||||
for (int i = 0; i < presencesArray.length; ++i) {
|
|
||||||
if (presencesArray[i].equals(contact.lastseen.presence)) {
|
|
||||||
preselectedPresence = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
presence.append(presencesArray[preselectedPresence]);
|
|
||||||
builder.setSingleChoiceItems(presencesArray,
|
|
||||||
preselectedPresence,
|
|
||||||
new DialogInterface.OnClickListener() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClick(DialogInterface dialog,
|
|
||||||
int which) {
|
|
||||||
presence.delete(0, presence.length());
|
|
||||||
presence.append(presencesArray[which]);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
builder.setNegativeButton(R.string.cancel, null);
|
|
||||||
builder.setPositiveButton(R.string.ok, new OnClickListener() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
|
||||||
conversation.setNextPresence(presence.toString());
|
|
||||||
listener.onPresenceSelected(true, presence.toString());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
builder.create().show();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean showLastseen() {
|
public boolean showLastseen() {
|
||||||
if (getSelectedConversation() == null) {
|
if (getSelectedConversation() == null) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -913,27 +848,6 @@ public class ConversationActivity extends XmppActivity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showAddToRosterDialog(final Conversation conversation) {
|
|
||||||
String jid = conversation.getContactJid();
|
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
|
||||||
builder.setTitle(jid);
|
|
||||||
builder.setMessage(getString(R.string.not_in_roster));
|
|
||||||
builder.setNegativeButton(getString(R.string.cancel), null);
|
|
||||||
builder.setPositiveButton(getString(R.string.add_contact),
|
|
||||||
new DialogInterface.OnClickListener() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
|
||||||
String jid = conversation.getContactJid();
|
|
||||||
Account account = getSelectedConversation()
|
|
||||||
.getAccount();
|
|
||||||
Contact contact = account.getRoster().getContact(jid);
|
|
||||||
xmppConnectionService.createContact(contact);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
builder.create().show();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void runIntent(PendingIntent pi, int requestCode) {
|
public void runIntent(PendingIntent pi, int requestCode) {
|
||||||
try {
|
try {
|
||||||
this.startIntentSenderForResult(pi.getIntentSender(), requestCode,
|
this.startIntentSenderForResult(pi.getIntentSender(), requestCode,
|
||||||
|
|
|
@ -925,18 +925,8 @@ public class ConversationFragment extends Fragment {
|
||||||
new OnPresenceSelected() {
|
new OnPresenceSelected() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPresenceSelected(boolean success,
|
public void onPresenceSelected() {
|
||||||
String presence) {
|
message.setPresence(conversation.getNextPresence());
|
||||||
if (success) {
|
|
||||||
message.setPresence(presence);
|
|
||||||
xmppService.sendMessage(message);
|
|
||||||
messageSent();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onSendPlainTextInstead() {
|
|
||||||
message.setEncryption(Message.ENCRYPTION_NONE);
|
|
||||||
xmppService.sendMessage(message);
|
xmppService.sendMessage(message);
|
||||||
messageSent();
|
messageSent();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package eu.siacs.conversations.ui;
|
package eu.siacs.conversations.ui;
|
||||||
|
|
||||||
public interface OnPresenceSelected {
|
public interface OnPresenceSelected {
|
||||||
public void onPresenceSelected(boolean success, String presence);
|
public void onPresenceSelected();
|
||||||
public void onSendPlainTextInstead();
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -155,12 +155,17 @@ public class ShareWithActivity extends XmppActivity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void share(Conversation conversation) {
|
private void share(final Conversation conversation) {
|
||||||
String sharedText = null;
|
String sharedText = null;
|
||||||
if (isImage) {
|
if (isImage) {
|
||||||
Uri uri = (Uri) getIntent().getParcelableExtra(Intent.EXTRA_STREAM);
|
final Uri uri = (Uri) getIntent().getParcelableExtra(Intent.EXTRA_STREAM);
|
||||||
Log.d(LOGTAG,uri.toString());
|
selectPresence(conversation, new OnPresenceSelected() {
|
||||||
|
@Override
|
||||||
|
public void onPresenceSelected() {
|
||||||
ShareWithActivity.this.xmppConnectionService.attachImageToConversation(conversation, uri,attachImageCallback);
|
ShareWithActivity.this.xmppConnectionService.attachImageToConversation(conversation, uri,attachImageCallback);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
sharedText = getIntent().getStringExtra(
|
sharedText = getIntent().getStringExtra(
|
||||||
Intent.EXTRA_TEXT);
|
Intent.EXTRA_TEXT);
|
||||||
|
|
|
@ -2,8 +2,10 @@ package eu.siacs.conversations.ui;
|
||||||
|
|
||||||
import eu.siacs.conversations.R;
|
import eu.siacs.conversations.R;
|
||||||
import eu.siacs.conversations.entities.Account;
|
import eu.siacs.conversations.entities.Account;
|
||||||
|
import eu.siacs.conversations.entities.Contact;
|
||||||
import eu.siacs.conversations.entities.Conversation;
|
import eu.siacs.conversations.entities.Conversation;
|
||||||
import eu.siacs.conversations.entities.Message;
|
import eu.siacs.conversations.entities.Message;
|
||||||
|
import eu.siacs.conversations.entities.Presences;
|
||||||
import eu.siacs.conversations.services.XmppConnectionService;
|
import eu.siacs.conversations.services.XmppConnectionService;
|
||||||
import eu.siacs.conversations.services.XmppConnectionService.XmppConnectionBinder;
|
import eu.siacs.conversations.services.XmppConnectionService.XmppConnectionBinder;
|
||||||
import eu.siacs.conversations.utils.ExceptionHelper;
|
import eu.siacs.conversations.utils.ExceptionHelper;
|
||||||
|
@ -219,4 +221,76 @@ public abstract class XmppActivity extends Activity {
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void showAddToRosterDialog(final Conversation conversation) {
|
||||||
|
String jid = conversation.getContactJid();
|
||||||
|
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||||
|
builder.setTitle(jid);
|
||||||
|
builder.setMessage(getString(R.string.not_in_roster));
|
||||||
|
builder.setNegativeButton(getString(R.string.cancel), null);
|
||||||
|
builder.setPositiveButton(getString(R.string.add_contact),
|
||||||
|
new DialogInterface.OnClickListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
String jid = conversation.getContactJid();
|
||||||
|
Account account = conversation.getAccount();
|
||||||
|
Contact contact = account.getRoster().getContact(jid);
|
||||||
|
xmppConnectionService.createContact(contact);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
builder.create().show();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void selectPresence(final Conversation conversation,
|
||||||
|
final OnPresenceSelected listener) {
|
||||||
|
Contact contact = conversation.getContact();
|
||||||
|
if (contact == null) {
|
||||||
|
showAddToRosterDialog(conversation);
|
||||||
|
} else {
|
||||||
|
Presences presences = contact.getPresences();
|
||||||
|
if (presences.size() == 0) {
|
||||||
|
conversation.setNextPresence(null);
|
||||||
|
listener.onPresenceSelected();
|
||||||
|
} else if (presences.size() == 1) {
|
||||||
|
String presence = (String) presences.asStringArray()[0];
|
||||||
|
conversation.setNextPresence(presence);
|
||||||
|
listener.onPresenceSelected();
|
||||||
|
} else {
|
||||||
|
final StringBuilder presence = new StringBuilder();
|
||||||
|
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||||
|
builder.setTitle(getString(R.string.choose_presence));
|
||||||
|
final String[] presencesArray = presences.asStringArray();
|
||||||
|
int preselectedPresence = 0;
|
||||||
|
for (int i = 0; i < presencesArray.length; ++i) {
|
||||||
|
if (presencesArray[i].equals(contact.lastseen.presence)) {
|
||||||
|
preselectedPresence = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
presence.append(presencesArray[preselectedPresence]);
|
||||||
|
builder.setSingleChoiceItems(presencesArray,
|
||||||
|
preselectedPresence,
|
||||||
|
new DialogInterface.OnClickListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog,
|
||||||
|
int which) {
|
||||||
|
presence.delete(0, presence.length());
|
||||||
|
presence.append(presencesArray[which]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
builder.setNegativeButton(R.string.cancel, null);
|
||||||
|
builder.setPositiveButton(R.string.ok, new OnClickListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
conversation.setNextPresence(presence.toString());
|
||||||
|
listener.onPresenceSelected();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
builder.create().show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue