2014-03-13 20:37:27 +00:00
|
|
|
package eu.siacs.conversations.ui;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Collections;
|
|
|
|
import java.util.Comparator;
|
|
|
|
import java.util.HashSet;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Set;
|
|
|
|
|
|
|
|
import eu.siacs.conversations.R;
|
|
|
|
import eu.siacs.conversations.entities.Account;
|
|
|
|
import eu.siacs.conversations.entities.Contact;
|
|
|
|
import eu.siacs.conversations.entities.Conversation;
|
2014-06-15 10:01:46 +00:00
|
|
|
import eu.siacs.conversations.entities.Message;
|
2014-03-13 20:37:27 +00:00
|
|
|
import eu.siacs.conversations.utils.UIHelper;
|
2014-06-15 10:01:46 +00:00
|
|
|
import android.app.PendingIntent;
|
2014-03-13 20:37:27 +00:00
|
|
|
import android.content.Intent;
|
2014-03-14 21:40:56 +00:00
|
|
|
import android.content.SharedPreferences;
|
2014-03-13 20:37:27 +00:00
|
|
|
import android.graphics.Bitmap;
|
2014-06-03 12:10:18 +00:00
|
|
|
import android.net.Uri;
|
2014-03-13 20:37:27 +00:00
|
|
|
import android.os.Bundle;
|
2014-03-14 21:40:56 +00:00
|
|
|
import android.preference.PreferenceManager;
|
2014-03-13 20:37:27 +00:00
|
|
|
import android.view.View;
|
|
|
|
import android.view.View.OnClickListener;
|
|
|
|
import android.widget.ImageView;
|
|
|
|
import android.widget.LinearLayout;
|
|
|
|
import android.widget.TextView;
|
2014-07-01 10:57:28 +00:00
|
|
|
import android.widget.Toast;
|
2014-03-13 20:37:27 +00:00
|
|
|
|
|
|
|
public class ShareWithActivity extends XmppActivity {
|
2014-06-03 12:10:18 +00:00
|
|
|
|
2014-03-13 20:37:27 +00:00
|
|
|
private LinearLayout conversations;
|
|
|
|
private LinearLayout contacts;
|
2014-06-15 10:01:46 +00:00
|
|
|
private boolean isImage = false;
|
2014-07-01 10:57:28 +00:00
|
|
|
|
2014-06-15 10:01:46 +00:00
|
|
|
private UiCallback<Message> attachImageCallback = new UiCallback<Message>() {
|
2014-07-01 10:57:28 +00:00
|
|
|
|
2014-06-15 10:01:46 +00:00
|
|
|
@Override
|
|
|
|
public void userInputRequried(PendingIntent pi, Message object) {
|
|
|
|
// TODO Auto-generated method stub
|
2014-07-01 10:57:28 +00:00
|
|
|
|
2014-06-15 10:01:46 +00:00
|
|
|
}
|
2014-07-01 10:57:28 +00:00
|
|
|
|
2014-06-15 10:01:46 +00:00
|
|
|
@Override
|
|
|
|
public void success(Message message) {
|
|
|
|
xmppConnectionService.sendMessage(message);
|
|
|
|
}
|
2014-07-01 10:57:28 +00:00
|
|
|
|
2014-06-15 10:01:46 +00:00
|
|
|
@Override
|
|
|
|
public void error(int errorCode, Message object) {
|
|
|
|
// TODO Auto-generated method stub
|
2014-07-01 10:57:28 +00:00
|
|
|
|
2014-06-15 10:01:46 +00:00
|
|
|
}
|
|
|
|
};
|
2014-06-03 12:10:18 +00:00
|
|
|
|
2014-03-13 20:37:27 +00:00
|
|
|
@Override
|
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
|
|
|
|
|
|
super.onCreate(savedInstanceState);
|
|
|
|
|
|
|
|
setContentView(R.layout.share_with);
|
2014-05-29 16:17:21 +00:00
|
|
|
setTitle(getString(R.string.title_activity_sharewith));
|
2014-06-03 12:10:18 +00:00
|
|
|
|
2014-03-13 20:37:27 +00:00
|
|
|
contacts = (LinearLayout) findViewById(R.id.contacts);
|
|
|
|
conversations = (LinearLayout) findViewById(R.id.conversations);
|
2014-06-03 12:10:18 +00:00
|
|
|
|
2014-03-13 20:37:27 +00:00
|
|
|
}
|
2014-06-03 12:10:18 +00:00
|
|
|
|
2014-03-13 20:37:27 +00:00
|
|
|
public View createContactView(String name, String msgTxt, Bitmap bm) {
|
|
|
|
View view = (View) getLayoutInflater().inflate(R.layout.contact, null);
|
|
|
|
view.setBackgroundResource(R.drawable.greybackground);
|
2014-06-03 12:10:18 +00:00
|
|
|
TextView contactName = (TextView) view
|
|
|
|
.findViewById(R.id.contact_display_name);
|
2014-03-13 20:37:27 +00:00
|
|
|
contactName.setText(name);
|
|
|
|
TextView msg = (TextView) view.findViewById(R.id.contact_jid);
|
|
|
|
msg.setText(msgTxt);
|
|
|
|
ImageView imageView = (ImageView) view.findViewById(R.id.contact_photo);
|
|
|
|
imageView.setImageBitmap(bm);
|
|
|
|
return view;
|
|
|
|
}
|
2014-06-03 12:10:18 +00:00
|
|
|
|
2014-03-13 20:37:27 +00:00
|
|
|
@Override
|
|
|
|
void onBackendConnected() {
|
2014-07-01 10:57:28 +00:00
|
|
|
this.isImage = (getIntent().getType() != null && getIntent().getType()
|
|
|
|
.startsWith("image/"));
|
2014-06-03 12:10:18 +00:00
|
|
|
SharedPreferences preferences = PreferenceManager
|
|
|
|
.getDefaultSharedPreferences(this);
|
2014-03-14 21:40:56 +00:00
|
|
|
boolean useSubject = preferences.getBoolean("use_subject_in_muc", true);
|
2014-06-03 12:10:18 +00:00
|
|
|
|
2014-05-19 13:39:50 +00:00
|
|
|
Set<Contact> displayedContacts = new HashSet<Contact>();
|
2014-03-13 20:37:27 +00:00
|
|
|
conversations.removeAllViews();
|
2014-07-12 10:41:37 +00:00
|
|
|
List<Conversation> convList = new ArrayList<Conversation>();
|
|
|
|
xmppConnectionService.populateWithOrderedConversations(convList);
|
2014-03-13 20:37:27 +00:00
|
|
|
Collections.sort(convList, new Comparator<Conversation>() {
|
|
|
|
@Override
|
|
|
|
public int compare(Conversation lhs, Conversation rhs) {
|
2014-06-03 12:10:18 +00:00
|
|
|
return (int) (rhs.getLatestMessage().getTimeSent() - lhs
|
|
|
|
.getLatestMessage().getTimeSent());
|
2014-03-13 20:37:27 +00:00
|
|
|
}
|
|
|
|
});
|
2014-06-03 12:10:18 +00:00
|
|
|
for (final Conversation conversation : convList) {
|
|
|
|
if (!isImage || conversation.getMode() == Conversation.MODE_SINGLE) {
|
|
|
|
View view = createContactView(
|
|
|
|
conversation.getName(useSubject),
|
|
|
|
conversation.getLatestMessage().getBody().trim(),
|
|
|
|
UIHelper.getContactPicture(conversation, 48,
|
|
|
|
this.getApplicationContext(), false));
|
|
|
|
view.setOnClickListener(new OnClickListener() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
2014-06-15 10:01:46 +00:00
|
|
|
share(conversation);
|
2014-06-03 12:10:18 +00:00
|
|
|
}
|
|
|
|
});
|
|
|
|
conversations.addView(view);
|
|
|
|
displayedContacts.add(conversation.getContact());
|
|
|
|
}
|
2014-03-13 20:37:27 +00:00
|
|
|
}
|
|
|
|
contacts.removeAllViews();
|
2014-05-19 13:39:50 +00:00
|
|
|
List<Contact> contactsList = new ArrayList<Contact>();
|
2014-06-03 12:10:18 +00:00
|
|
|
for (Account account : xmppConnectionService.getAccounts()) {
|
|
|
|
for (Contact contact : account.getRoster().getContacts()) {
|
|
|
|
if (!displayedContacts.contains(contact)
|
|
|
|
&& (contact.showInRoster())) {
|
2014-03-13 20:37:27 +00:00
|
|
|
contactsList.add(contact);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2014-06-03 12:10:18 +00:00
|
|
|
|
2014-03-13 20:37:27 +00:00
|
|
|
Collections.sort(contactsList, new Comparator<Contact>() {
|
|
|
|
@Override
|
|
|
|
public int compare(Contact lhs, Contact rhs) {
|
2014-06-03 12:10:18 +00:00
|
|
|
return lhs.getDisplayName().compareToIgnoreCase(
|
|
|
|
rhs.getDisplayName());
|
2014-03-13 20:37:27 +00:00
|
|
|
}
|
|
|
|
});
|
2014-06-03 12:10:18 +00:00
|
|
|
|
|
|
|
for (int i = 0; i < contactsList.size(); ++i) {
|
2014-03-13 20:37:27 +00:00
|
|
|
final Contact con = contactsList.get(i);
|
2014-06-03 12:10:18 +00:00
|
|
|
View view = createContactView(
|
|
|
|
con.getDisplayName(),
|
|
|
|
con.getJid(),
|
|
|
|
UIHelper.getContactPicture(con, 48,
|
|
|
|
this.getApplicationContext(), false));
|
2014-03-13 20:37:27 +00:00
|
|
|
view.setOnClickListener(new OnClickListener() {
|
2014-06-03 12:10:18 +00:00
|
|
|
|
2014-03-13 20:37:27 +00:00
|
|
|
@Override
|
|
|
|
public void onClick(View v) {
|
2014-06-03 12:10:18 +00:00
|
|
|
Conversation conversation = xmppConnectionService
|
|
|
|
.findOrCreateConversation(con.getAccount(),
|
|
|
|
con.getJid(), false);
|
2014-06-15 10:01:46 +00:00
|
|
|
share(conversation);
|
2014-03-13 20:37:27 +00:00
|
|
|
}
|
|
|
|
});
|
|
|
|
contacts.addView(view);
|
|
|
|
}
|
|
|
|
}
|
2014-07-01 10:57:28 +00:00
|
|
|
|
2014-06-16 12:21:22 +00:00
|
|
|
private void share(final Conversation conversation) {
|
2014-06-15 10:01:46 +00:00
|
|
|
String sharedText = null;
|
|
|
|
if (isImage) {
|
2014-07-01 10:57:28 +00:00
|
|
|
final Uri uri = (Uri) getIntent().getParcelableExtra(
|
|
|
|
Intent.EXTRA_STREAM);
|
2014-06-16 12:21:22 +00:00
|
|
|
selectPresence(conversation, new OnPresenceSelected() {
|
|
|
|
@Override
|
|
|
|
public void onPresenceSelected() {
|
2014-07-01 10:57:28 +00:00
|
|
|
Toast.makeText(getApplicationContext(),
|
|
|
|
getText(R.string.preparing_image),
|
|
|
|
Toast.LENGTH_LONG).show();
|
|
|
|
ShareWithActivity.this.xmppConnectionService
|
|
|
|
.attachImageToConversation(conversation, uri,
|
|
|
|
attachImageCallback);
|
|
|
|
switchToConversation(conversation, null, true);
|
|
|
|
finish();
|
2014-06-16 12:21:22 +00:00
|
|
|
}
|
|
|
|
});
|
2014-07-01 10:57:28 +00:00
|
|
|
|
2014-06-15 10:01:46 +00:00
|
|
|
} else {
|
2014-07-01 10:57:28 +00:00
|
|
|
sharedText = getIntent().getStringExtra(Intent.EXTRA_TEXT);
|
|
|
|
switchToConversation(conversation, sharedText, true);
|
|
|
|
finish();
|
2014-06-15 10:01:46 +00:00
|
|
|
}
|
2014-07-01 10:57:28 +00:00
|
|
|
|
2014-06-15 10:01:46 +00:00
|
|
|
}
|
2014-03-13 20:37:27 +00:00
|
|
|
|
|
|
|
}
|