diff --git a/briar-android/src/main/AndroidManifest.xml b/briar-android/src/main/AndroidManifest.xml index afbf84980..dbec1d89e 100644 --- a/briar-android/src/main/AndroidManifest.xml +++ b/briar-android/src/main/AndroidManifest.xml @@ -109,12 +109,12 @@ + android:theme="@style/BriarTheme.NoActionBar" /> + android:theme="@style/BriarTheme.NoActionBar" /> + showOnboardingDialog(requireContext(), getHelpText())); nextButton.setOnClickListener(this); return v; } + @Override + public void onStart() { + super.onStart(); + hideViewOnSmallScreen(requireView().findViewById(R.id.logo)); + } + @Override public String getUniqueTag() { return TAG; diff --git a/briar-android/src/main/java/org/briarproject/briar/android/account/DozeFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/account/DozeFragment.java index 64c313941..ab1a79b4a 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/account/DozeFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/account/DozeFragment.java @@ -23,6 +23,7 @@ import static android.view.View.VISIBLE; import static android.widget.Toast.LENGTH_LONG; import static org.briarproject.android.dontkillmelib.DozeUtils.getDozeWhitelistingIntent; import static org.briarproject.briar.android.activity.RequestCodes.REQUEST_DOZE_WHITELISTING; +import static org.briarproject.briar.android.util.UiUtils.hideViewOnSmallScreen; import static org.briarproject.briar.android.util.UiUtils.showOnboardingDialog; @MethodsNotNullByDefault @@ -79,6 +80,12 @@ public class DozeFragment extends SetupFragment return v; } + @Override + public void onStart() { + super.onStart(); + hideViewOnSmallScreen(requireView().findViewById(R.id.logo)); + } + @Override public String getUniqueTag() { return TAG; diff --git a/briar-android/src/main/java/org/briarproject/briar/android/account/SetPasswordFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/account/SetPasswordFragment.java index 601cb59ff..e263394ac 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/account/SetPasswordFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/account/SetPasswordFragment.java @@ -28,10 +28,12 @@ import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.os.Build.VERSION.SDK_INT; import static android.view.View.INVISIBLE; import static android.view.View.VISIBLE; -import static android.view.inputmethod.EditorInfo.IME_ACTION_DONE; import static androidx.core.content.ContextCompat.checkSelfPermission; import static org.briarproject.bramble.api.crypto.PasswordStrengthEstimator.QUITE_WEAK; +import static org.briarproject.bramble.api.crypto.PasswordStrengthEstimator.STRONG; +import static org.briarproject.briar.android.util.UiUtils.hideViewOnSmallScreen; import static org.briarproject.briar.android.util.UiUtils.setError; +import static org.briarproject.briar.android.util.UiUtils.showOnboardingDialog; @MethodsNotNullByDefault @ParametersNotNullByDefault @@ -57,7 +59,6 @@ public class SetPasswordFragment extends SetupFragment { public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - requireActivity().setTitle(getString(R.string.setup_password_intro)); View v = inflater.inflate(R.layout.fragment_setup_password, container, false); @@ -67,17 +68,18 @@ public class SetPasswordFragment extends SetupFragment { passwordConfirmationWrapper = v.findViewById(R.id.password_confirm_wrapper); passwordConfirmation = v.findViewById(R.id.password_confirm); + Button infoButton = v.findViewById(R.id.info_button); nextButton = v.findViewById(R.id.next); ProgressBar progressBar = v.findViewById(R.id.progress); passwordEntry.addTextChangedListener(this); passwordConfirmation.addTextChangedListener(this); + infoButton.setOnClickListener(view -> + showOnboardingDialog(requireContext(), getHelpText())); nextButton.setOnClickListener(this); if (!viewModel.needToShowDozeFragment()) { nextButton.setText(R.string.create_account_button); - int options = passwordConfirmation.getImeOptions(); - passwordConfirmation.setImeOptions(options | IME_ACTION_DONE); } viewModel.getIsCreatingAccount() @@ -94,6 +96,12 @@ public class SetPasswordFragment extends SetupFragment { return v; } + @Override + public void onStart() { + super.onStart(); + hideViewOnSmallScreen(requireView().findViewById(R.id.logo)); + } + @Override public String getUniqueTag() { return TAG; @@ -110,17 +118,27 @@ public class SetPasswordFragment extends SetupFragment { String password2 = passwordConfirmation.getText().toString(); boolean passwordsMatch = password1.equals(password2); - strengthMeter - .setVisibility(password1.length() > 0 ? VISIBLE : INVISIBLE); + strengthMeter.setVisibility(!password1.isEmpty() ? VISIBLE : INVISIBLE); float strength = viewModel.estimatePasswordStrength(password1); strengthMeter.setStrength(strength); boolean strongEnough = strength >= QUITE_WEAK; + if (!password1.isEmpty()) { + if (strength >= STRONG) { + passwordEntryWrapper.setHelperText( + getString(R.string.password_strong)); + } else if (strength >= QUITE_WEAK) { + passwordEntryWrapper.setHelperText( + getString(R.string.password_quite_strong)); + } else { + passwordEntryWrapper.setHelperTextEnabled(false); + } + } setError(passwordEntryWrapper, getString(R.string.password_too_weak), - password1.length() > 0 && !strongEnough); + !password1.isEmpty() && !strongEnough); setError(passwordConfirmationWrapper, getString(R.string.passwords_do_not_match), - password2.length() > 0 && !passwordsMatch); + !password2.isEmpty() && !passwordsMatch); boolean enabled = passwordsMatch && strongEnough; nextButton.setEnabled(enabled); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordFragment.java index 7f5640444..ceab9ce6d 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordFragment.java @@ -40,6 +40,7 @@ import static org.briarproject.bramble.api.crypto.DecryptionResult.SUCCESS; import static org.briarproject.briar.android.login.LoginUtils.createKeyStrengthenerErrorDialog; import static org.briarproject.briar.android.util.UiUtils.enterPressed; import static org.briarproject.briar.android.util.UiUtils.hideSoftKeyboard; +import static org.briarproject.briar.android.util.UiUtils.hideViewOnSmallScreen; import static org.briarproject.briar.android.util.UiUtils.setError; import static org.briarproject.briar.android.util.UiUtils.showSoftKeyboard; @@ -100,6 +101,12 @@ public class PasswordFragment extends BaseFragment implements TextWatcher { return v; } + @Override + public void onStart() { + super.onStart(); + hideViewOnSmallScreen(requireView().findViewById(R.id.logo)); + } + @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { diff --git a/briar-android/src/main/res/layout/fragment_password.xml b/briar-android/src/main/res/layout/fragment_password.xml index 410de2f56..59554648c 100644 --- a/briar-android/src/main/res/layout/fragment_password.xml +++ b/briar-android/src/main/res/layout/fragment_password.xml @@ -4,6 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:fillViewport="true" tools:context=".android.login.PasswordFragment"> + + + + + +