Quick setup: behavior improvement

This commit is contained in:
M66B
2023-04-03 22:10:09 +02:00
parent 4e1ac8c86b
commit 4ecef5ce5b
2 changed files with 43 additions and 6 deletions

View File

@@ -79,6 +79,7 @@ public class FragmentQuickSetup extends FragmentBase {
private TextView tvPatience;
private TextView tvProgress;
private TextView tvArgument;
private TextView tvError;
private TextView tvErrorHint;
private Button btnManual;
@@ -148,6 +149,7 @@ public class FragmentQuickSetup extends FragmentBase {
tvPatience = view.findViewById(R.id.tvPatience);
tvProgress = view.findViewById(R.id.tvProgress);
tvArgument = view.findViewById(R.id.tvArgument);
tvError = view.findViewById(R.id.tvError);
tvErrorHint = view.findViewById(R.id.tvErrorHint);
btnManual = view.findViewById(R.id.btnManual);
@@ -269,6 +271,7 @@ public class FragmentQuickSetup extends FragmentBase {
tvPatience.setVisibility(View.GONE);
tvProgress.setVisibility(View.GONE);
pbSave.setVisibility(View.GONE);
tvArgument.setVisibility(View.GONE);
tvInstructions.setVisibility(View.GONE);
tvInstructions.setMovementMethod(LinkMovementMethod.getInstance());
btnManual.setVisibility(View.GONE);
@@ -309,6 +312,7 @@ public class FragmentQuickSetup extends FragmentBase {
tvPatience.setVisibility(check ? View.VISIBLE : View.GONE);
pbSave.setVisibility(check ? View.GONE : View.VISIBLE);
grpError.setVisibility(View.GONE);
tvArgument.setVisibility(View.GONE);
tvInstructions.setVisibility(View.GONE);
btnManual.setVisibility(View.GONE);
btnHelp.setVisibility(View.GONE);
@@ -337,13 +341,13 @@ public class FragmentQuickSetup extends FragmentBase {
EmailProvider best = args.getParcelable("best");
if (TextUtils.isEmpty(name))
throw new IllegalArgumentException(context.getString(R.string.title_no_name));
throw new ArgumentException(context.getString(R.string.title_no_name));
if (TextUtils.isEmpty(email))
throw new IllegalArgumentException(context.getString(R.string.title_no_email));
throw new ArgumentException(context.getString(R.string.title_no_email));
if (!Helper.EMAIL_ADDRESS.matcher(email).matches())
throw new IllegalArgumentException(context.getString(R.string.title_email_invalid, email));
throw new ArgumentException(context.getString(R.string.title_email_invalid, email));
if (TextUtils.isEmpty(password))
throw new IllegalArgumentException(context.getString(R.string.title_no_password));
throw new ArgumentException(context.getString(R.string.title_no_password));
int at = email.indexOf('@');
String username = email.substring(0, at);
@@ -351,7 +355,7 @@ public class FragmentQuickSetup extends FragmentBase {
ConnectivityManager cm = Helper.getSystemService(context, ConnectivityManager.class);
NetworkInfo ani = (cm == null ? null : cm.getActiveNetworkInfo());
if (ani == null || !ani.isConnected())
throw new IllegalArgumentException(context.getString(R.string.title_no_internet));
throw new ArgumentException(context.getString(R.string.title_no_internet));
Throwable fail = null;
List<EmailProvider> providers;
@@ -691,6 +695,20 @@ public class FragmentQuickSetup extends FragmentBase {
etEmail.clearFocus();
Helper.hideKeyboard(view);
if (ex instanceof ArgumentException) {
tvArgument.setText(ex.getMessage());
tvArgument.setVisibility(View.VISIBLE);
getMainHandler().post(new Runnable() {
@Override
public void run() {
if (!getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED))
return;
scroll.smoothScrollTo(0, tvArgument.getBottom());
}
});
return;
}
if (ex instanceof AuthenticationFailedException) {
String message = getString(R.string.title_setup_no_auth_hint);
if (provider != null && provider.appPassword)
@@ -820,4 +838,10 @@ public class FragmentQuickSetup extends FragmentBase {
Log.e(ex);
}
}
private static class ArgumentException extends IllegalArgumentException {
public ArgumentException(String text) {
super(text);
}
}
}