ChooseContactActivity.java

 1package eu.siacs.conversations.ui;
 2
 3import android.content.Context;
 4import android.content.Intent;
 5import android.os.Bundle;
 6import android.view.View;
 7import android.view.inputmethod.InputMethodManager;
 8import android.widget.AdapterView;
 9
10import java.util.Collections;
11
12import eu.siacs.conversations.entities.Account;
13import eu.siacs.conversations.entities.Contact;
14import eu.siacs.conversations.entities.ListItem;
15
16public class ChooseContactActivity extends AbstractSearchableListItemActivity {
17	@Override
18	public void onCreate(final Bundle savedInstanceState) {
19		super.onCreate(savedInstanceState);
20		getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
21
22			@Override
23			public void onItemClick(final AdapterView<?> parent, final View view,
24					final int position, final long id) {
25				final InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
26				imm.hideSoftInputFromWindow(getSearchEditText().getWindowToken(),
27						InputMethodManager.HIDE_IMPLICIT_ONLY);
28				final Intent request = getIntent();
29				final Intent data = new Intent();
30				final ListItem mListItem = getListItems().get(position);
31				data.putExtra("contact", mListItem.getJid().toString());
32				String account = request.getStringExtra("account");
33				if (account == null && mListItem instanceof Contact) {
34					account = ((Contact) mListItem).getAccount().getJid().toBareJid().toString();
35				}
36				data.putExtra("account", account);
37				data.putExtra("conversation",
38						request.getStringExtra("conversation"));
39				setResult(RESULT_OK, data);
40				finish();
41			}
42		});
43
44	}
45
46	protected void filterContacts(final String needle) {
47		getListItems().clear();
48		for (final Account account : xmppConnectionService.getAccounts()) {
49			if (account.getStatus() != Account.State.DISABLED) {
50				for (final Contact contact : account.getRoster().getContacts()) {
51					if (contact.showInRoster() && contact.match(needle)) {
52						getListItems().add(contact);
53					}
54				}
55			}
56		}
57		Collections.sort(getListItems());
58		getListItemAdapter().notifyDataSetChanged();
59	}
60}