Search in sources :

Example 1 with ListItem

use of eu.siacs.conversations.entities.ListItem in project Conversations by siacs.

the class ChooseContactActivity method onCreate.

@Override
public void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    filterContacts = new HashSet<>();
    String[] contacts = getIntent().getStringArrayExtra("filter_contacts");
    if (contacts != null) {
        Collections.addAll(filterContacts, contacts);
    }
    if (getIntent().getBooleanExtra("multiple", false)) {
        getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
        getListView().setMultiChoiceModeListener(new MultiChoiceModeListener() {

            @Override
            public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
                return false;
            }

            @Override
            public boolean onCreateActionMode(ActionMode mode, Menu menu) {
                final InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(getSearchEditText().getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
                MenuInflater inflater = getMenuInflater();
                inflater.inflate(R.menu.select_multiple, menu);
                selected = new HashSet<Contact>();
                return true;
            }

            @Override
            public void onDestroyActionMode(ActionMode mode) {
            }

            @Override
            public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
                switch(item.getItemId()) {
                    case R.id.selection_submit:
                        final Intent request = getIntent();
                        final Intent data = new Intent();
                        data.putExtra("conversation", request.getStringExtra("conversation"));
                        String[] selection = getSelectedContactJids();
                        data.putExtra("contacts", selection);
                        data.putExtra("multiple", true);
                        data.putExtra(EXTRA_ACCOUNT, request.getStringExtra(EXTRA_ACCOUNT));
                        data.putExtra("subject", request.getStringExtra("subject"));
                        setResult(RESULT_OK, data);
                        finish();
                        return true;
                }
                return false;
            }

            @Override
            public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
                Contact item = (Contact) getListItems().get(position);
                if (checked) {
                    selected.add(item);
                } else {
                    selected.remove(item);
                }
                int numSelected = selected.size();
                MenuItem selectButton = mode.getMenu().findItem(R.id.selection_submit);
                String buttonText = getResources().getQuantityString(R.plurals.select_contact, numSelected, numSelected);
                selectButton.setTitle(buttonText);
            }
        });
    }
    getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(final AdapterView<?> parent, final View view, final int position, final long id) {
            final InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(getSearchEditText().getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
            final Intent request = getIntent();
            final Intent data = new Intent();
            final ListItem mListItem = getListItems().get(position);
            data.putExtra("contact", mListItem.getJid().toString());
            String account = request.getStringExtra(EXTRA_ACCOUNT);
            if (account == null && mListItem instanceof Contact) {
                account = ((Contact) mListItem).getAccount().getJid().toBareJid().toString();
            }
            data.putExtra(EXTRA_ACCOUNT, account);
            data.putExtra("conversation", request.getStringExtra("conversation"));
            data.putExtra("multiple", false);
            data.putExtra("subject", request.getStringExtra("subject"));
            setResult(RESULT_OK, data);
            finish();
        }
    });
}
Also used : MenuInflater(android.view.MenuInflater) InputMethodManager(android.view.inputmethod.InputMethodManager) MenuItem(android.view.MenuItem) Intent(android.content.Intent) View(android.view.View) AdapterView(android.widget.AdapterView) ListView(android.widget.ListView) Contact(eu.siacs.conversations.entities.Contact) ActionMode(android.view.ActionMode) AdapterView(android.widget.AdapterView) Menu(android.view.Menu) ListItem(eu.siacs.conversations.entities.ListItem) MultiChoiceModeListener(android.widget.AbsListView.MultiChoiceModeListener) HashSet(java.util.HashSet)

Example 2 with ListItem

use of eu.siacs.conversations.entities.ListItem in project Conversations by siacs.

the class ListItemAdapter method getView.

@Override
public View getView(int position, View view, ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    ListItem item = getItem(position);
    if (view == null) {
        view = inflater.inflate(R.layout.contact, parent, false);
    }
    TextView tvName = (TextView) view.findViewById(R.id.contact_display_name);
    TextView tvJid = (TextView) view.findViewById(R.id.contact_jid);
    ImageView picture = (ImageView) view.findViewById(R.id.contact_photo);
    FlowLayout tagLayout = (FlowLayout) view.findViewById(R.id.tags);
    List<ListItem.Tag> tags = item.getTags(activity);
    if (tags.size() == 0 || !this.showDynamicTags) {
        tagLayout.setVisibility(View.GONE);
    } else {
        tagLayout.setVisibility(View.VISIBLE);
        tagLayout.removeAllViewsInLayout();
        for (ListItem.Tag tag : tags) {
            TextView tv = (TextView) inflater.inflate(R.layout.list_item_tag, tagLayout, false);
            tv.setText(tag.getName());
            tv.setBackgroundColor(tag.getColor());
            tv.setOnClickListener(this.onTagTvClick);
            tagLayout.addView(tv);
        }
    }
    final String jid = item.getDisplayJid();
    if (jid != null) {
        tvJid.setVisibility(View.VISIBLE);
        tvJid.setText(jid);
    } else {
        tvJid.setVisibility(View.GONE);
    }
    tvName.setText(item.getDisplayName());
    loadAvatar(item, picture);
    return view;
}
Also used : FlowLayout(com.wefika.flowlayout.FlowLayout) LayoutInflater(android.view.LayoutInflater) TextView(android.widget.TextView) ListItem(eu.siacs.conversations.entities.ListItem) ImageView(android.widget.ImageView)

Aggregations

ListItem (eu.siacs.conversations.entities.ListItem)2 Intent (android.content.Intent)1 ActionMode (android.view.ActionMode)1 LayoutInflater (android.view.LayoutInflater)1 Menu (android.view.Menu)1 MenuInflater (android.view.MenuInflater)1 MenuItem (android.view.MenuItem)1 View (android.view.View)1 InputMethodManager (android.view.inputmethod.InputMethodManager)1 MultiChoiceModeListener (android.widget.AbsListView.MultiChoiceModeListener)1 AdapterView (android.widget.AdapterView)1 ImageView (android.widget.ImageView)1 ListView (android.widget.ListView)1 TextView (android.widget.TextView)1 FlowLayout (com.wefika.flowlayout.FlowLayout)1 Contact (eu.siacs.conversations.entities.Contact)1 HashSet (java.util.HashSet)1