aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/eu/siacs/conversations
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/eu/siacs/conversations')
-rw-r--r--src/main/java/eu/siacs/conversations/ui/EnterJidDialog.java23
-rw-r--r--src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java26
2 files changed, 32 insertions, 17 deletions
diff --git a/src/main/java/eu/siacs/conversations/ui/EnterJidDialog.java b/src/main/java/eu/siacs/conversations/ui/EnterJidDialog.java
index a9bffb559..bb55420d5 100644
--- a/src/main/java/eu/siacs/conversations/ui/EnterJidDialog.java
+++ b/src/main/java/eu/siacs/conversations/ui/EnterJidDialog.java
@@ -19,8 +19,8 @@ import eu.siacs.conversations.xmpp.jid.InvalidJidException;
import eu.siacs.conversations.xmpp.jid.Jid;
public class EnterJidDialog {
- public static interface OnEnterJidDialogPositiveListener {
- public boolean onEnterJidDialogPositive(Jid account, Jid contact) throws EnterJidDialog.JidError;
+ public interface OnEnterJidDialogPositiveListener {
+ boolean onEnterJidDialogPositive(Jid account, Jid contact) throws EnterJidDialog.JidError;
}
public static class JidError extends Exception {
@@ -40,7 +40,7 @@ public class EnterJidDialog {
protected OnEnterJidDialogPositiveListener listener = null;
public EnterJidDialog(
- final Context context, List<String> knownHosts, List<String> activatedAccounts,
+ final Context context, List<String> knownHosts, final List<String> activatedAccounts,
final String title, final String positiveButton,
final String prefilledJid, final String account, boolean allowEditJid
) {
@@ -60,17 +60,17 @@ public class EnterJidDialog {
}
}
- ArrayAdapter<String> adapter;
+
if (account == null) {
- adapter = new ArrayAdapter<>(context,
- android.R.layout.simple_spinner_item, activatedAccounts);
+ StartConversationActivity.populateAccountSpinner(context, activatedAccounts, spinner);
} else {
- adapter = new ArrayAdapter<>(context,
- android.R.layout.simple_spinner_item, new String[] { account });
+ ArrayAdapter<String> adapter = new ArrayAdapter<>(context,
+ android.R.layout.simple_spinner_item,
+ new String[] { account });
spinner.setEnabled(false);
+ adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ spinner.setAdapter(adapter);
}
- adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- spinner.setAdapter(adapter);
builder.setView(dialogView);
builder.setNegativeButton(R.string.cancel, null);
@@ -81,6 +81,9 @@ public class EnterJidDialog {
@Override
public void onClick(final View v) {
final Jid accountJid;
+ if (!spinner.isEnabled() && account == null) {
+ return;
+ }
try {
if (Config.DOMAIN_LOCK != null) {
accountJid = Jid.fromParts((String) spinner.getSelectedItem(), Config.DOMAIN_LOCK, null);
diff --git a/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java
index 0bf4178f5..00a501f39 100644
--- a/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java
+++ b/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java
@@ -393,7 +393,7 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU
if (prefilledJid != null) {
jid.append(prefilledJid);
}
- populateAccountSpinner(spinner);
+ populateAccountSpinner(this, mActivatedAccounts, spinner);
final Checkable bookmarkCheckBox = (CheckBox) dialogView
.findViewById(R.id.bookmark);
builder.setView(dialogView);
@@ -411,7 +411,6 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU
}
final Account account = getSelectedAccount(spinner);
if (account == null) {
- dialog.dismiss();
return;
}
final Jid conferenceJid;
@@ -459,6 +458,9 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU
}
private Account getSelectedAccount(Spinner spinner) {
+ if (!spinner.isEnabled()) {
+ return null;
+ }
Jid jid;
try {
if (Config.DOMAIN_LOCK != null) {
@@ -479,11 +481,21 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU
switchToConversation(conversation);
}
- private void populateAccountSpinner(Spinner spinner) {
- ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
- android.R.layout.simple_spinner_item, mActivatedAccounts);
- adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- spinner.setAdapter(adapter);
+ public static void populateAccountSpinner(Context context, List<String> accounts, Spinner spinner) {
+ if (accounts.size() > 0) {
+ ArrayAdapter<String> adapter = new ArrayAdapter<>(context,
+ android.R.layout.simple_spinner_item, accounts);
+ adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ spinner.setAdapter(adapter);
+ spinner.setEnabled(true);
+ } else {
+ ArrayAdapter<String> adapter = new ArrayAdapter<>(context,
+ android.R.layout.simple_spinner_item,
+ Arrays.asList(new String[]{context.getString(R.string.no_accounts)}));
+ adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ spinner.setAdapter(adapter);
+ spinner.setEnabled(false);
+ }
}
@Override