From 035f2ce97395d60448be7e751f586080e39d4c31 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Tue, 3 Apr 2018 21:14:17 +0200 Subject: use fab in choose contact activity. scan qr not yet working --- .../pixart/messenger/ui/ChooseContactActivity.java | 129 ++++++++++----------- 1 file changed, 61 insertions(+), 68 deletions(-) (limited to 'src/main/java/de/pixart/messenger/ui/ChooseContactActivity.java') diff --git a/src/main/java/de/pixart/messenger/ui/ChooseContactActivity.java b/src/main/java/de/pixart/messenger/ui/ChooseContactActivity.java index 4450c8759..647330c71 100644 --- a/src/main/java/de/pixart/messenger/ui/ChooseContactActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ChooseContactActivity.java @@ -13,7 +13,6 @@ import android.view.MenuItem; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.AbsListView.MultiChoiceModeListener; -import android.widget.AdapterView; import android.widget.ListView; import java.util.ArrayList; @@ -32,12 +31,32 @@ import de.pixart.messenger.entities.MucOptions; import rocks.xmpp.addr.Jid; public class ChooseContactActivity extends AbstractSearchableListItemActivity { + public static final String EXTRA_TITLE_RES_ID = "extra_title_res_id"; private List mActivatedAccounts = new ArrayList<>(); private List mKnownHosts; - private Set selected; private Set filterContacts; - public static final String EXTRA_TITLE_RES_ID = "extra_title_res_id"; + + public static Intent create(Activity activity, Conversation conversation) { + final Intent intent = new Intent(activity, ChooseContactActivity.class); + List contacts = new ArrayList<>(); + if (conversation.getMode() == Conversation.MODE_MULTI) { + for (MucOptions.User user : conversation.getMucOptions().getUsers(false)) { + Jid jid = user.getRealJid(); + if (jid != null) { + contacts.add(jid.asBareJid().toString()); + } + } + } else { + contacts.add(conversation.getJid().asBareJid().toString()); + } + intent.putExtra("filter_contacts", contacts.toArray(new String[contacts.size()])); + intent.putExtra("conversation", conversation.getUuid()); + intent.putExtra("multiple", true); + intent.putExtra("show_enter_jid", true); + intent.putExtra(EXTRA_ACCOUNT, conversation.getAccount().getJid().asBareJid().toString()); + return intent; + } @Override public void onCreate(final Bundle savedInstanceState) { @@ -60,8 +79,7 @@ public class ChooseContactActivity extends AbstractSearchableListItemActivity { @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); + imm.hideSoftInputFromWindow(getSearchEditText().getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.select_multiple, menu); selected = new HashSet<>(); @@ -109,32 +127,32 @@ public class ChooseContactActivity extends AbstractSearchableListItemActivity { }); } - 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().asBareJid().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(); + getListView().setOnItemClickListener((parent, view, position, 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().asBareJid().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(); }); - + final Intent i = getIntent(); + boolean showEnterJid = i != null && i.getBooleanExtra("show_enter_jid", false); + if (showEnterJid) { + this.binding.fab.setOnClickListener((v) -> showEnterJidDialog()); + } else { + this.binding.fab.setVisibility(View.GONE); + } } @Override @@ -158,7 +176,7 @@ public class ChooseContactActivity extends AbstractSearchableListItemActivity { super.onCreateOptionsMenu(menu); final Intent i = getIntent(); boolean showEnterJid = i != null && i.getBooleanExtra("show_enter_jid", false); - menu.findItem(R.id.action_create_contact).setVisible(showEnterJid); + menu.findItem(R.id.action_scan_qr_code).setVisible(showEnterJid); return true; } @@ -191,7 +209,6 @@ public class ChooseContactActivity extends AbstractSearchableListItemActivity { return result.toArray(new String[result.size()]); } - public void refreshUiReal() { //nothing to do. This Activity doesn't implement any listeners } @@ -199,8 +216,8 @@ public class ChooseContactActivity extends AbstractSearchableListItemActivity { @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { - case R.id.action_create_contact: - showEnterJidDialog(); + case R.id.action_scan_qr_code: + ScanActivity.scan(this); return true; } return super.onOptionsItemSelected(item); @@ -213,22 +230,19 @@ public class ChooseContactActivity extends AbstractSearchableListItemActivity { null, getIntent().getStringExtra(EXTRA_ACCOUNT), true, xmppConnectionService.multipleAccounts() ); - dialog.setOnEnterJidDialogPositiveListener(new EnterJidDialog.OnEnterJidDialogPositiveListener() { - @Override - public boolean onEnterJidDialogPositive(Jid accountJid, Jid contactJid) throws EnterJidDialog.JidError { - final Intent request = getIntent(); - final Intent data = new Intent(); - data.putExtra("contact", contactJid.toString()); - data.putExtra(EXTRA_ACCOUNT, accountJid.toString()); - data.putExtra("conversation", - request.getStringExtra("conversation")); - data.putExtra("multiple", false); - data.putExtra("subject", request.getStringExtra("subject")); - setResult(RESULT_OK, data); - finish(); + dialog.setOnEnterJidDialogPositiveListener((accountJid, contactJid) -> { + final Intent request = getIntent(); + final Intent data = new Intent(); + data.putExtra("contact", contactJid.toString()); + data.putExtra(EXTRA_ACCOUNT, accountJid.toString()); + data.putExtra("conversation", + request.getStringExtra("conversation")); + data.putExtra("multiple", false); + data.putExtra("subject", request.getStringExtra("subject")); + setResult(RESULT_OK, data); + finish(); - return true; - } + return true; }); dialog.show(); @@ -250,25 +264,4 @@ public class ChooseContactActivity extends AbstractSearchableListItemActivity { } this.mKnownHosts = xmppConnectionService.getKnownHosts(); } - - public static Intent create(Activity activity, Conversation conversation) { - final Intent intent = new Intent(activity, ChooseContactActivity.class); - List contacts = new ArrayList<>(); - if (conversation.getMode() == Conversation.MODE_MULTI) { - for (MucOptions.User user : conversation.getMucOptions().getUsers(false)) { - Jid jid = user.getRealJid(); - if (jid != null) { - contacts.add(jid.asBareJid().toString()); - } - } - } else { - contacts.add(conversation.getJid().asBareJid().toString()); - } - intent.putExtra("filter_contacts", contacts.toArray(new String[contacts.size()])); - intent.putExtra("conversation", conversation.getUuid()); - intent.putExtra("multiple", true); - intent.putExtra("show_enter_jid", true); - intent.putExtra(EXTRA_ACCOUNT, conversation.getAccount().getJid().asBareJid().toString()); - return intent; - } } -- cgit v1.2.3