diff options
Diffstat (limited to 'src/main/java/de/pixart/messenger/ui/EnterJidDialog.java')
-rw-r--r-- | src/main/java/de/pixart/messenger/ui/EnterJidDialog.java | 94 |
1 files changed, 45 insertions, 49 deletions
diff --git a/src/main/java/de/pixart/messenger/ui/EnterJidDialog.java b/src/main/java/de/pixart/messenger/ui/EnterJidDialog.java index 604bfc8d2..26e9017f9 100644 --- a/src/main/java/de/pixart/messenger/ui/EnterJidDialog.java +++ b/src/main/java/de/pixart/messenger/ui/EnterJidDialog.java @@ -1,15 +1,13 @@ package de.pixart.messenger.ui; import android.app.Dialog; +import android.databinding.DataBindingUtil; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.app.DialogFragment; import android.support.v7.app.AlertDialog; import android.view.View; import android.widget.ArrayAdapter; -import android.widget.AutoCompleteTextView; -import android.widget.Spinner; -import android.widget.TextView; import java.util.ArrayList; import java.util.Collection; @@ -18,21 +16,22 @@ import java.util.List; import de.pixart.messenger.Config; import de.pixart.messenger.R; +import de.pixart.messenger.databinding.EnterJidDialogBinding; import de.pixart.messenger.ui.adapter.KnownHostsAdapter; import de.pixart.messenger.ui.util.DelayedHintHelper; import rocks.xmpp.addr.Jid; public class EnterJidDialog extends DialogFragment { - private OnEnterJidDialogPositiveListener mListener = null; private static final String TITLE_KEY = "title"; - private static final String POSITIVE_BUTTON_KEY = "positive_button"; - private static final String PREFILLED_JID_KEY = "prefilled_jid"; - private static final String ACCOUNT_KEY = "account"; - private static final String ALLOW_EDIT_JID_KEY = "allow_edit_jid"; + private static final String POSITIVE_BUTTON_KEY = "positive_button"; + private static final String PREFILLED_JID_KEY = "prefilled_jid"; + private static final String ACCOUNT_KEY = "account"; + private static final String ALLOW_EDIT_JID_KEY = "allow_edit_jid"; private static final String MULTIPLE_ACCOUNTS = "multiple_accounts_enabled"; - private static final String ACCOUNTS_LIST_KEY = "activated_accounts_list"; - private static final String CONFERENCE_HOSTS_KEY = "known_conference_hosts"; + private static final String ACCOUNTS_LIST_KEY = "activated_accounts_list"; + private static final String CONFERENCE_HOSTS_KEY = "known_conference_hosts"; + private OnEnterJidDialogPositiveListener mListener = null; public static EnterJidDialog newInstance( Collection<String> knownHosts, final List<String> activatedAccounts, @@ -63,79 +62,76 @@ public class EnterJidDialog extends DialogFragment { public Dialog onCreateDialog(Bundle savedInstanceState) { final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(getArguments().getString(TITLE_KEY)); - View dialogView = getActivity().getLayoutInflater().inflate(R.layout.enter_jid_dialog, null); - final TextView yourAccount = dialogView.findViewById(R.id.your_account); - final Spinner spinner = dialogView.findViewById(R.id.account); - final AutoCompleteTextView jid = dialogView.findViewById(R.id.jid); - jid.setAdapter(new KnownHostsAdapter(getActivity(), R.layout.simple_list_item, (Collection<String>) getArguments().getSerializable(CONFERENCE_HOSTS_KEY))); + EnterJidDialogBinding binding = DataBindingUtil.inflate(getActivity().getLayoutInflater(), R.layout.enter_jid_dialog, null, false); + binding.jid.setAdapter(new KnownHostsAdapter(getActivity(), R.layout.simple_list_item, (Collection<String>) getArguments().getSerializable(CONFERENCE_HOSTS_KEY))); String prefilledJid = getArguments().getString(PREFILLED_JID_KEY); if (prefilledJid != null) { - jid.append(prefilledJid); + binding.jid.append(prefilledJid); if (!getArguments().getBoolean(ALLOW_EDIT_JID_KEY)) { - jid.setFocusable(false); - jid.setFocusableInTouchMode(false); - jid.setClickable(false); - jid.setCursorVisible(false); + binding.jid.setFocusable(false); + binding.jid.setFocusableInTouchMode(false); + binding.jid.setClickable(false); + binding.jid.setCursorVisible(false); } } - DelayedHintHelper.setHint(R.string.account_settings_example_jabber_id, jid); + DelayedHintHelper.setHint(R.string.account_settings_example_jabber_id, binding.jid); String account = getArguments().getString(ACCOUNT_KEY); if (getArguments().getBoolean(MULTIPLE_ACCOUNTS)) { - yourAccount.setVisibility(View.VISIBLE); - spinner.setVisibility(View.VISIBLE); + binding.yourAccount.setVisibility(View.VISIBLE); + binding.account.setVisibility(View.VISIBLE); } else { - yourAccount.setVisibility(View.GONE); - spinner.setVisibility(View.GONE); + binding.yourAccount.setVisibility(View.GONE); + binding.account.setVisibility(View.GONE); } if (account == null) { - StartConversationActivity.populateAccountSpinner(getActivity(), getArguments().getStringArrayList(ACCOUNTS_LIST_KEY), spinner); + StartConversationActivity.populateAccountSpinner(getActivity(), getArguments().getStringArrayList(ACCOUNTS_LIST_KEY), binding.account); } else { ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(), R.layout.simple_list_item, new String[]{account}); - spinner.setEnabled(false); + binding.account.setEnabled(false); adapter.setDropDownViewResource(R.layout.simple_list_item); - spinner.setAdapter(adapter); + binding.account.setAdapter(adapter); } - builder.setView(dialogView); + builder.setView(binding.getRoot()); builder.setNegativeButton(R.string.cancel, null); builder.setPositiveButton(getArguments().getString(POSITIVE_BUTTON_KEY), null); AlertDialog dialog = builder.create(); View.OnClickListener dialogOnClick = v -> { final Jid accountJid; - if (!spinner.isEnabled() && account == null) { + if (!binding.account.isEnabled() && account == null) { return; } try { if (Config.DOMAIN_LOCK != null) { - accountJid = Jid.of((String) spinner.getSelectedItem(), Config.DOMAIN_LOCK, null); + accountJid = Jid.of((String) binding.account.getSelectedItem(), Config.DOMAIN_LOCK, null); } else { - accountJid = Jid.of((String) spinner.getSelectedItem()); + accountJid = Jid.of((String) binding.account.getSelectedItem()); } - } catch (final IllegalArgumentException e) { + } catch (final IllegalArgumentException e) { return; } final Jid contactJid; try { - contactJid = Jid.of(jid.getText().toString()); - } catch (final IllegalArgumentException e) { - jid.setError(getActivity().getString(R.string.invalid_jid)); + contactJid = Jid.of(binding.jid.getText().toString()); + } catch (final IllegalArgumentException e) { + binding.jid.setError(getActivity().getString(R.string.invalid_jid)); return; } - if(mListener != null) { + if (mListener != null) { try { - if(mListener.onEnterJidDialogPositive(accountJid, contactJid)) { + if (mListener.onEnterJidDialogPositive(accountJid, contactJid)) { dialog.dismiss(); } - } catch(JidError error) { - jid.setError(error.toString()); + } catch (JidError error) { + binding.jid.setError(error.toString()); } } }; @@ -148,6 +144,15 @@ public class EnterJidDialog extends DialogFragment { this.mListener = listener; } + @Override + public void onDestroyView() { + Dialog dialog = getDialog(); + if (dialog != null && getRetainInstance()) { + dialog.setDismissMessage(null); + } + super.onDestroyView(); + } + public interface OnEnterJidDialogPositiveListener { boolean onEnterJidDialogPositive(Jid account, Jid contact) throws EnterJidDialog.JidError; } @@ -163,13 +168,4 @@ public class EnterJidDialog extends DialogFragment { return msg; } } - - @Override - public void onDestroyView() { - Dialog dialog = getDialog(); - if (dialog != null && getRetainInstance()) { - dialog.setDismissMessage(null); - } - super.onDestroyView(); - } } |