changed spacing in create dialogs and notify user when no accounts are activated

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/ui/EnterJidDialog.java            | 23 
src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java | 26 
src/main/res/layout/enter_jid_dialog.xml                               |  5 
src/main/res/layout/join_conference_dialog.xml                         | 11 
src/main/res/values/strings.xml                                        |  1 
5 files changed, 43 insertions(+), 23 deletions(-)

Detailed changes

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);

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

src/main/res/layout/enter_jid_dialog.xml 🔗

@@ -25,7 +25,7 @@
         android:id="@+id/jabber_id"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_marginTop="16dp"
+        android:layout_marginTop="8dp"
         android:text="@string/account_settings_jabber_id"
         android:textColor="@color/black87"
         android:textSize="?attr/TextSizeBody"/>
@@ -37,6 +37,7 @@
         android:hint="@string/account_settings_example_jabber_id"
         android:inputType="textEmailAddress"
         android:textColor="@color/black87"
-        android:textColorHint="@color/black54"/>
+        android:textColorHint="@color/black54"
+        android:textSize="?attr/TextSizeBody" />
 
 </LinearLayout>

src/main/res/layout/join_conference_dialog.xml 🔗

@@ -25,7 +25,7 @@
         android:id="@+id/jabber_id"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_marginTop="16dp"
+        android:layout_marginTop="8dp"
         android:text="@string/conference_address"
         android:textColor="@color/black87"
         android:textSize="?attr/TextSizeBody" />
@@ -37,14 +37,17 @@
         android:hint="@string/conference_address_example"
         android:inputType="textEmailAddress"
         android:textColor="@color/black87"
-        android:textColorHint="@color/black54" />
+        android:textColorHint="@color/black54"
+        android:textSize="?attr/TextSizeBody"/>
 
     <CheckBox
         android:id="@+id/bookmark"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_marginTop="16dp"
+        android:layout_marginTop="8dp"
         android:checked="true"
-        android:text="@string/save_as_bookmark" />
+        android:text="@string/save_as_bookmark"
+        android:textColor="@color/black87"
+        android:textSize="?attr/TextSizeBody"/>
 
 </LinearLayout>

src/main/res/values/strings.xml 🔗

@@ -580,4 +580,5 @@
 	<string name="battery_optimizations_enabled_dialog">Your device is doing some heavy battery optimizations on Conversations that might lead to delayed notifications or even message loss.\n\nYou will now be asked to disable those.</string>
 	<string name="disable">Disable</string>
 	<string name="selection_too_large">The selected area is too large</string>
+	<string name="no_accounts">(No activated accounts)</string>
 </resources>