1package eu.siacs.conversations.ui;
2
3import java.util.ArrayList;
4import java.util.Collections;
5import java.util.Comparator;
6import java.util.HashSet;
7import java.util.List;
8import java.util.Set;
9
10import eu.siacs.conversations.R;
11import eu.siacs.conversations.entities.Account;
12import eu.siacs.conversations.entities.Contact;
13import eu.siacs.conversations.entities.Conversation;
14import eu.siacs.conversations.utils.UIHelper;
15import android.content.Intent;
16import android.graphics.Bitmap;
17import android.os.Bundle;
18import android.util.Log;
19import android.view.View;
20import android.view.View.OnClickListener;
21import android.widget.ImageView;
22import android.widget.LinearLayout;
23import android.widget.TextView;
24
25public class ShareWithActivity extends XmppActivity {
26
27 private LinearLayout conversations;
28 private LinearLayout contacts;
29
30 private OnClickListener click = new OnClickListener() {
31
32 @Override
33 public void onClick(View v) {
34 // TODO Auto-generated method stub
35
36 }
37 };
38
39 @Override
40 protected void onCreate(Bundle savedInstanceState) {
41
42 super.onCreate(savedInstanceState);
43
44 setContentView(R.layout.share_with);
45 setTitle("Share with Conversation");
46
47 contacts = (LinearLayout) findViewById(R.id.contacts);
48 conversations = (LinearLayout) findViewById(R.id.conversations);
49
50 }
51
52
53 public View createContactView(String name, String msgTxt, Bitmap bm) {
54 View view = (View) getLayoutInflater().inflate(R.layout.contact, null);
55 view.setBackgroundResource(R.drawable.greybackground);
56 TextView contactName =(TextView) view.findViewById(R.id.contact_display_name);
57 contactName.setText(name);
58 TextView msg = (TextView) view.findViewById(R.id.contact_jid);
59 msg.setText(msgTxt);
60 ImageView imageView = (ImageView) view.findViewById(R.id.contact_photo);
61 imageView.setImageBitmap(bm);
62 return view;
63 }
64
65
66
67 @Override
68 void onBackendConnected() {
69 Set<String> displayedContacts = new HashSet<String>();
70 conversations.removeAllViews();
71 List<Conversation> convList = xmppConnectionService.getConversations();
72 Collections.sort(convList, new Comparator<Conversation>() {
73 @Override
74 public int compare(Conversation lhs, Conversation rhs) {
75 return (int) (rhs.getLatestMessage().getTimeSent() - lhs.getLatestMessage().getTimeSent());
76 }
77 });
78 for(final Conversation conversation : convList) {
79 View view = createContactView(conversation.getName(), conversation.getLatestMessage().getBody().trim(), UIHelper.getContactPicture(conversation.getContact(),conversation.getName(), 90,this.getApplicationContext()));
80 view.setOnClickListener(new OnClickListener() {
81
82 @Override
83 public void onClick(View v) {
84 String sharedText = getIntent().getStringExtra(Intent.EXTRA_TEXT);
85 switchToConversation(conversation, sharedText);
86 finish();
87 }
88 });
89 conversations.addView(view);
90 if (conversation.getContact() != null) {
91 displayedContacts.add(conversation.getContact().getUuid());
92 }
93 }
94 contacts.removeAllViews();
95 final List<Contact> contactsList = new ArrayList<Contact>();
96 for(Account account : xmppConnectionService.getAccounts()) {
97 for(final Contact contact : xmppConnectionService.getRoster(account)) {
98 if (!displayedContacts.contains(contact.getUuid())) {
99 contactsList.add(contact);
100 }
101 }
102 }
103
104 Collections.sort(contactsList, new Comparator<Contact>() {
105 @Override
106 public int compare(Contact lhs, Contact rhs) {
107 return lhs.getDisplayName().compareToIgnoreCase(rhs.getDisplayName());
108 }
109 });
110
111 for(int i = 0; i < contactsList.size(); ++i) {
112 final Contact con = contactsList.get(i);
113 View view = createContactView(con.getDisplayName(), con.getJid(), UIHelper.getContactPicture(con,null, 90,this.getApplicationContext()));
114 view.setOnClickListener(new OnClickListener() {
115
116 @Override
117 public void onClick(View v) {
118 String sharedText = getIntent().getStringExtra(Intent.EXTRA_TEXT);
119 Conversation conversation = xmppConnectionService.findOrCreateConversation(con.getAccount(), con.getJid(), false);
120 switchToConversation(conversation, sharedText);
121 finish();
122 }
123 });
124 contacts.addView(view);
125 }
126 }
127
128}