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