From 7f7d8b8fcd776a1a3eab5e38f924c55246d4dd1c Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Sun, 8 Apr 2018 20:41:28 +0200 Subject: dynamically get known hosts in dialog --- .../de/pixart/messenger/ui/EnterJidDialog.java | 41 +++++++++++++++++----- 1 file changed, 32 insertions(+), 9 deletions(-) (limited to 'src/main/java/de/pixart/messenger/ui/EnterJidDialog.java') diff --git a/src/main/java/de/pixart/messenger/ui/EnterJidDialog.java b/src/main/java/de/pixart/messenger/ui/EnterJidDialog.java index 26e9017f9..d0c7980fd 100644 --- a/src/main/java/de/pixart/messenger/ui/EnterJidDialog.java +++ b/src/main/java/de/pixart/messenger/ui/EnterJidDialog.java @@ -1,5 +1,6 @@ package de.pixart.messenger.ui; +import android.app.Activity; import android.app.Dialog; import android.databinding.DataBindingUtil; import android.os.Bundle; @@ -11,17 +12,17 @@ import android.widget.ArrayAdapter; import java.util.ArrayList; import java.util.Collection; -import java.util.HashSet; 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.interfaces.OnBackendConnected; import de.pixart.messenger.ui.util.DelayedHintHelper; import rocks.xmpp.addr.Jid; -public class EnterJidDialog extends DialogFragment { +public class EnterJidDialog extends DialogFragment implements OnBackendConnected { private static final String TITLE_KEY = "title"; private static final String POSITIVE_BUTTON_KEY = "positive_button"; @@ -30,13 +31,13 @@ public class EnterJidDialog extends DialogFragment { 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 OnEnterJidDialogPositiveListener mListener = null; - public static EnterJidDialog newInstance( - Collection knownHosts, final List activatedAccounts, - final String title, final String positiveButton, - final String prefilledJid, final String account, boolean allowEditJid, boolean multipleAccounts) { + private KnownHostsAdapter knownHostsAdapter; + + public static EnterJidDialog newInstance(final List activatedAccounts, + final String title, final String positiveButton, + final String prefilledJid, final String account, boolean allowEditJid, boolean multipleAccounts) { EnterJidDialog dialog = new EnterJidDialog(); Bundle bundle = new Bundle(); bundle.putString(TITLE_KEY, title); @@ -46,7 +47,6 @@ public class EnterJidDialog extends DialogFragment { bundle.putBoolean(ALLOW_EDIT_JID_KEY, allowEditJid); bundle.putBoolean(MULTIPLE_ACCOUNTS, multipleAccounts); bundle.putStringArrayList(ACCOUNTS_LIST_KEY, (ArrayList) activatedAccounts); - bundle.putSerializable(CONFERENCE_HOSTS_KEY, (HashSet) knownHosts); dialog.setArguments(bundle); return dialog; } @@ -57,13 +57,23 @@ public class EnterJidDialog extends DialogFragment { setRetainInstance(true); } + @Override + public void onStart() { + super.onStart(); + final Activity activity = getActivity(); + if (activity instanceof XmppActivity && ((XmppActivity) activity).xmppConnectionService != null) { + refreshKnownHosts(); + } + } + @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(getArguments().getString(TITLE_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) getArguments().getSerializable(CONFERENCE_HOSTS_KEY))); + this.knownHostsAdapter = new KnownHostsAdapter(getActivity(), R.layout.simple_list_item); + binding.jid.setAdapter(this.knownHostsAdapter); String prefilledJid = getArguments().getString(PREFILLED_JID_KEY); if (prefilledJid != null) { binding.jid.append(prefilledJid); @@ -144,6 +154,19 @@ public class EnterJidDialog extends DialogFragment { this.mListener = listener; } + @Override + public void onBackendConnected() { + refreshKnownHosts(); + } + + private void refreshKnownHosts() { + Activity activity = getActivity(); + if (activity instanceof XmppActivity) { + Collection hosts = ((XmppActivity) activity).xmppConnectionService.getKnownHosts(); + this.knownHostsAdapter.refresh(hosts); + } + } + @Override public void onDestroyView() { Dialog dialog = getDialog(); -- cgit v1.2.3