aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/ui/EnterJidDialog.java
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2018-04-08 20:41:28 +0200
committerChristian Schneppe <christian@pix-art.de>2018-04-08 20:41:28 +0200
commit7f7d8b8fcd776a1a3eab5e38f924c55246d4dd1c (patch)
tree5475af912e571299c311b328b88f664617b8a797 /src/main/java/de/pixart/messenger/ui/EnterJidDialog.java
parent8886fade18b64d128aaa4b4bc0600f6afe964bd2 (diff)
dynamically get known hosts in dialog
Diffstat (limited to 'src/main/java/de/pixart/messenger/ui/EnterJidDialog.java')
-rw-r--r--src/main/java/de/pixart/messenger/ui/EnterJidDialog.java41
1 files changed, 32 insertions, 9 deletions
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<String> knownHosts, final List<String> 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<String> 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<String>) 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<String>) 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);
@@ -145,6 +155,19 @@ public class EnterJidDialog extends DialogFragment {
}
@Override
+ public void onBackendConnected() {
+ refreshKnownHosts();
+ }
+
+ private void refreshKnownHosts() {
+ Activity activity = getActivity();
+ if (activity instanceof XmppActivity) {
+ Collection<String> hosts = ((XmppActivity) activity).xmppConnectionService.getKnownHosts();
+ this.knownHostsAdapter.refresh(hosts);
+ }
+ }
+
+ @Override
public void onDestroyView() {
Dialog dialog = getDialog();
if (dialog != null && getRetainInstance()) {