ShareWithActivity.java

  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}