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">
+
+
+
+
+
+
+ app:layout_constraintStart_toStartOf="parent" />
-
-
\ No newline at end of file
diff --git a/briar-android/src/main/res/layout/fragment_setup_author_name.xml b/briar-android/src/main/res/layout/fragment_setup_author_name.xml
index f8b8ca9c6..71ef3f98f 100644
--- a/briar-android/src/main/res/layout/fragment_setup_author_name.xml
+++ b/briar-android/src/main/res/layout/fragment_setup_author_name.xml
@@ -16,16 +16,44 @@
android:paddingRight="@dimen/margin_activity_horizontal"
android:paddingBottom="@dimen/margin_activity_vertical">
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/intro">
+
+
diff --git a/briar-android/src/main/res/layout/fragment_setup_doze.xml b/briar-android/src/main/res/layout/fragment_setup_doze.xml
index 5a94c3592..19ea23ed2 100644
--- a/briar-android/src/main/res/layout/fragment_setup_doze.xml
+++ b/briar-android/src/main/res/layout/fragment_setup_doze.xml
@@ -11,20 +11,36 @@
android:layout_height="wrap_content"
android:padding="@dimen/margin_activity_vertical">
+
+
+ app:layout_constraintTop_toBottomOf="@+id/logo" />
@@ -34,6 +50,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/margin_large"
+ app:layout_constraintBottom_toTopOf="@+id/xiaomiRecentAppsView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/huaweiProtectedAppsView" />
@@ -43,6 +60,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/margin_large"
+ app:layout_constraintBottom_toTopOf="@+id/xiaomiLockAppsView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/huaweiAppLaunchView" />
@@ -52,6 +70,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/margin_large"
+ app:layout_constraintBottom_toTopOf="@+id/next"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/xiaomiRecentAppsView" />
@@ -66,8 +85,6 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/xiaomiLockAppsView"
- app:layout_constraintVertical_bias="1.0"
tools:enabled="true" />
+
+
+
+
+
+
Confirm your password
Name is too long
Password is too weak
+ Password is okay
+ Password is strong
Passwords do not match
Create Account
More Information
@@ -41,8 +43,9 @@
Wrong password, try again
Cannot Check Password
Briar cannot check your password. Please try rebooting your device to solve this problem.
+ Sign into Briar
Sign In
- I have forgotten my password
+ Forgot your password?
Lost Password
Your Briar account is stored encrypted on your device, not in the cloud, so we can\'t reset your password. Would you like to delete your account and start again?\n\nCaution: Your identities, contacts and messages will be permanently lost.
Briar Startup Failure