diff --git a/mailbox-android/src/main/java/org/briarproject/mailbox/android/activity/ActivityComponent.java b/mailbox-android/src/main/java/org/briarproject/mailbox/android/activity/ActivityComponent.java index 164dc4f0ddc3dc40beffeefb14f420046d0d0190..a3cb355f346d2ba3e5cbd030161659f8add74f18 100644 --- a/mailbox-android/src/main/java/org/briarproject/mailbox/android/activity/ActivityComponent.java +++ b/mailbox-android/src/main/java/org/briarproject/mailbox/android/activity/ActivityComponent.java @@ -6,11 +6,10 @@ import org.briarproject.mailbox.android.AndroidComponent; import org.briarproject.mailbox.android.StartupFailureActivity; import org.briarproject.mailbox.android.fragment.ScreenFilterDialogFragment; import org.briarproject.mailbox.android.keyagreement.ContactExchangeErrorFragment; -import org.briarproject.mailbox.android.keyagreement.IntroFragment; import org.briarproject.mailbox.android.keyagreement.KeyAgreementActivity; import org.briarproject.mailbox.android.keyagreement.KeyAgreementFragment; import org.briarproject.mailbox.android.keyagreement.MailboxExchangeActivity; -import org.briarproject.mailbox.android.login.AuthorNameFragment; +import org.briarproject.mailbox.android.login.IntroFragment; import org.briarproject.mailbox.android.login.ChangePasswordActivity; import org.briarproject.mailbox.android.login.DozeFragment; import org.briarproject.mailbox.android.login.OpenDatabaseActivity; @@ -63,13 +62,14 @@ public interface ActivityComponent { void inject(UnlockActivity activity); // Fragments - void inject(AuthorNameFragment fragment); + void inject(IntroFragment fragment); void inject(PasswordFragment fragment); void inject(DozeFragment fragment); - void inject(IntroFragment fragment); + void inject( + org.briarproject.mailbox.android.keyagreement.IntroFragment fragment); void inject(KeyAgreementFragment fragment); diff --git a/mailbox-android/src/main/java/org/briarproject/mailbox/android/login/AuthorNameFragment.java b/mailbox-android/src/main/java/org/briarproject/mailbox/android/login/AuthorNameFragment.java deleted file mode 100644 index b5f09e9adda7479bdd317390575f642001baf99b..0000000000000000000000000000000000000000 --- a/mailbox-android/src/main/java/org/briarproject/mailbox/android/login/AuthorNameFragment.java +++ /dev/null @@ -1,88 +0,0 @@ -package org.briarproject.mailbox.android.login; - -import android.os.Bundle; -import android.support.design.widget.TextInputEditText; -import android.support.design.widget.TextInputLayout; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; - -import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; -import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; -import org.briarproject.bramble.util.StringUtils; -import org.briarproject.mailbox.R; -import org.briarproject.mailbox.android.activity.ActivityComponent; - -import javax.annotation.Nullable; - -import static android.view.inputmethod.EditorInfo.IME_ACTION_NEXT; -import static android.view.inputmethod.EditorInfo.IME_ACTION_NONE; -import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH; -import static org.briarproject.mailbox.android.util.UiUtils.setError; - -@MethodsNotNullByDefault -@ParametersNotNullByDefault -public class AuthorNameFragment extends SetupFragment { - - private final static String TAG = AuthorNameFragment.class.getName(); - - private TextInputLayout authorNameWrapper; - private TextInputEditText authorNameInput; - private Button nextButton; - - public static AuthorNameFragment newInstance() { - return new AuthorNameFragment(); - } - - @Override - public View onCreateView(LayoutInflater inflater, - @Nullable ViewGroup container, - @Nullable Bundle savedInstanceState) { - getActivity().setTitle(getString(R.string.setup_title)); - View v = inflater.inflate(R.layout.fragment_setup_author_name, - container, false); - authorNameWrapper = v.findViewById(R.id.nickname_entry_wrapper); - authorNameInput = v.findViewById(R.id.nickname_entry); - nextButton = v.findViewById(R.id.next); - - authorNameInput.addTextChangedListener(this); - nextButton.setOnClickListener(this); - - return v; - } - - @Override - public String getUniqueTag() { - return TAG; - } - - @Override - public void injectFragment(ActivityComponent component) { - component.inject(this); - } - - @Override - protected String getHelpText() { - return getString(R.string.setup_name_explanation); - } - - @Override - public void onTextChanged(CharSequence authorName, int i, int i1, int i2) { - int authorNameLength = StringUtils.toUtf8(authorName.toString()).length; - boolean error = authorNameLength > MAX_AUTHOR_NAME_LENGTH; - setError(authorNameWrapper, getString(R.string.name_too_long), error); - boolean enabled = authorNameLength > 0 && !error; - authorNameInput - .setImeOptions(enabled ? IME_ACTION_NEXT : IME_ACTION_NONE); - authorNameInput.setOnEditorActionListener(enabled ? this : null); - nextButton.setEnabled(enabled); - } - - @Override - public void onClick(View view) { - setupController.setAuthorName(authorNameInput.getText().toString()); - setupController.showPasswordFragment(); - } - -} diff --git a/mailbox-android/src/main/java/org/briarproject/mailbox/android/login/IntroFragment.java b/mailbox-android/src/main/java/org/briarproject/mailbox/android/login/IntroFragment.java new file mode 100644 index 0000000000000000000000000000000000000000..86ac8fefd6992cb23f1c5460d9755348d8b61dbb --- /dev/null +++ b/mailbox-android/src/main/java/org/briarproject/mailbox/android/login/IntroFragment.java @@ -0,0 +1,59 @@ +package org.briarproject.mailbox.android.login; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; + +import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; +import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; +import org.briarproject.mailbox.R; +import org.briarproject.mailbox.android.activity.ActivityComponent; + +import javax.annotation.Nullable; + +@MethodsNotNullByDefault +@ParametersNotNullByDefault +public class IntroFragment extends SetupFragment { + + private final static String TAG = IntroFragment.class.getName(); + + private Button nextButton; + + public static IntroFragment newInstance() { + return new IntroFragment(); + } + + @Override + public View onCreateView(LayoutInflater inflater, + @Nullable ViewGroup container, + @Nullable Bundle savedInstanceState) { + getActivity().setTitle(getString(R.string.setup_title)); + View v = inflater.inflate(R.layout.fragment_setup_intro, + container, false); + nextButton = v.findViewById(R.id.next); + nextButton.setOnClickListener(this); + return v; + } + + @Override + public String getUniqueTag() { + return TAG; + } + + @Override + public void injectFragment(ActivityComponent component) { + component.inject(this); + } + + @Override + public void onClick(View view) { + setupController.showPasswordFragment(); + } + + @Override + protected String getHelpText() { + return null; + } +} diff --git a/mailbox-android/src/main/java/org/briarproject/mailbox/android/login/SetupActivity.java b/mailbox-android/src/main/java/org/briarproject/mailbox/android/login/SetupActivity.java index 5eb024a83485a63933db5706843689b23d777bbf..4cc621e03ee46dd6cea66ad95d6382eda1be5389 100644 --- a/mailbox-android/src/main/java/org/briarproject/mailbox/android/login/SetupActivity.java +++ b/mailbox-android/src/main/java/org/briarproject/mailbox/android/login/SetupActivity.java @@ -44,7 +44,7 @@ public class SetupActivity extends BaseActivity if (state == null) { if (accountManager.accountExists()) throw new AssertionError(); - showInitialFragment(AuthorNameFragment.newInstance()); + showInitialFragment(IntroFragment.newInstance()); } else { authorName = state.getString(STATE_KEY_AUTHOR_NAME); password = state.getString(STATE_KEY_PASSWORD); @@ -85,13 +85,11 @@ public class SetupActivity extends BaseActivity } void showPasswordFragment() { - if (authorName == null) throw new IllegalStateException(); showNextFragment(PasswordFragment.newInstance()); } @TargetApi(23) void showDozeFragment() { - if (authorName == null) throw new IllegalStateException(); if (password == null) throw new IllegalStateException(); showNextFragment(DozeFragment.newInstance()); } diff --git a/mailbox-android/src/main/java/org/briarproject/mailbox/android/login/SetupControllerImpl.java b/mailbox-android/src/main/java/org/briarproject/mailbox/android/login/SetupControllerImpl.java index 82ab5b6abec84492b900228d0c4c71f61a5ea0f9..8310aa24d98392c4ab4588c5751f4a1884c80231 100644 --- a/mailbox-android/src/main/java/org/briarproject/mailbox/android/login/SetupControllerImpl.java +++ b/mailbox-android/src/main/java/org/briarproject/mailbox/android/login/SetupControllerImpl.java @@ -92,8 +92,7 @@ public class SetupControllerImpl extends PasswordControllerImpl void createAccount(ResultHandler<Boolean> resultHandler) { SetupActivity setupActivity = this.setupActivity; if (setupActivity == null) throw new IllegalStateException(); - String authorName = setupActivity.getAuthorName(); - if (authorName == null) throw new IllegalStateException(); + String authorName = "user"; String password = setupActivity.getPassword(); if (password == null) throw new IllegalStateException(); ioExecutor.execute(() -> { diff --git a/mailbox-android/src/main/java/org/briarproject/mailbox/android/overview/OverviewFragment.java b/mailbox-android/src/main/java/org/briarproject/mailbox/android/overview/OverviewFragment.java index 3e833f6d51f3ac91880d5ac05dd65618ebada7f6..b4d9ffc93362981245d96b78ac387acb17748ed6 100644 --- a/mailbox-android/src/main/java/org/briarproject/mailbox/android/overview/OverviewFragment.java +++ b/mailbox-android/src/main/java/org/briarproject/mailbox/android/overview/OverviewFragment.java @@ -25,7 +25,7 @@ import java.util.logging.Logger; import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; -import static android.view.View.INVISIBLE; +import static android.view.View.GONE; import static android.view.View.VISIBLE; import static org.briarproject.mailbox.R.drawable.contact_offline; import static org.briarproject.mailbox.R.drawable.contact_online; @@ -72,15 +72,21 @@ public class OverviewFragment extends BaseEventFragment { super.onViewCreated(view, savedInstanceState); ownerStatus = view.findViewById(R.id.ownerStatus); ownerName = view.findViewById(R.id.ownerName); + TextView ownerText = view.findViewById(R.id.ownerText); + TextView emptyText = view.findViewById(R.id.emptyText); final MailboxOwnerStatusViewModel viewModel = ViewModelProviders.of(this) .get(MailboxOwnerStatusViewModel.class); viewModel.mailboxOwnerStatusLiveData.observe(this, mailboxOwnerStatus -> { if (mailboxOwnerStatus == null) { - ownerName.setText(R.string.mailbox_unpaired); - ownerStatus.setVisibility(INVISIBLE); + ownerName.setVisibility(GONE); + ownerStatus.setVisibility(GONE); + ownerText.setVisibility(GONE); + emptyText.setVisibility(VISIBLE); } else { + emptyText.setVisibility(GONE); + ownerText.setVisibility(VISIBLE); ownerName.setText(mailboxOwnerStatus.getName()); ownerStatus.setVisibility(VISIBLE); if (mailboxOwnerStatus.isOnline()) diff --git a/mailbox-android/src/main/res/layout/fragment_overview.xml b/mailbox-android/src/main/res/layout/fragment_overview.xml index 082da4c8b71946a029db6c64820cfc2dbec3a76b..e80f43662c8673b52062b8fa52f0130e10651051 100644 --- a/mailbox-android/src/main/res/layout/fragment_overview.xml +++ b/mailbox-android/src/main/res/layout/fragment_overview.xml @@ -5,7 +5,19 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context="org.briarproject.mailbox.navdrawer.NavDrawerActivity"> + tools:context="org.briarproject.mailbox.android.navdrawer.NavDrawerActivity"> + + <TextView + android:id="@+id/emptyText" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_margin="8dp" + android:text="Your mailbox is not paired with a Briar account. + Press + to pair with Briar." + android:textColor="@color/briar_text_primary" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"/> <TextView android:id="@+id/ownerText" @@ -14,6 +26,7 @@ android:layout_margin="8dp" android:text="Paired with:" android:textColor="@color/briar_text_primary" + android:visibility="gone" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"/> @@ -24,6 +37,7 @@ android:layout_margin="8dp" android:text="@string/mailbox_unpaired" android:textColor="@color/briar_text_primary" + android:visibility="gone" app:layout_constraintStart_toEndOf="@id/ownerText" app:layout_constraintTop_toTopOf="parent"/> @@ -33,6 +47,7 @@ android:layout_height="15dp" android:layout_margin="8dp" android:scaleType="fitCenter" + android:visibility="gone" app:layout_constraintBottom_toBottomOf="@+id/ownerName" app:layout_constraintStart_toEndOf="@id/ownerName" app:layout_constraintTop_toTopOf="@id/ownerName" @@ -45,6 +60,8 @@ android:layout_height="wrap_content" android:layout_margin="8dp" android:text="@string/transport_bt" + android:visibility="gone" + app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/ownerText"/> <Switch @@ -53,6 +70,8 @@ android:layout_height="wrap_content" android:layout_margin="8dp" android:text="@string/transport_lan" + android:visibility="gone" + app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/btToggle"/> <Switch @@ -61,6 +80,8 @@ android:layout_height="wrap_content" android:layout_margin="8dp" android:text="@string/transport_tor" + android:visibility="gone" + app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/wifiToggle"/> </android.support.constraint.ConstraintLayout> diff --git a/mailbox-android/src/main/res/layout/fragment_setup_author_name.xml b/mailbox-android/src/main/res/layout/fragment_setup_intro.xml similarity index 60% rename from mailbox-android/src/main/res/layout/fragment_setup_author_name.xml rename to mailbox-android/src/main/res/layout/fragment_setup_intro.xml index 51f81a40a53c4b84372064a7debcce5b67174d74..9a4e26aeddf16db6c151634e4db8b02729e6f834 100644 --- a/mailbox-android/src/main/res/layout/fragment_setup_author_name.xml +++ b/mailbox-android/src/main/res/layout/fragment_setup_intro.xml @@ -17,28 +17,15 @@ android:paddingStart="@dimen/margin_activity_horizontal" android:paddingTop="@dimen/margin_activity_vertical"> - <android.support.design.widget.TextInputLayout - android:id="@+id/nickname_entry_wrapper" + <TextView + android:id="@+id/introExplanationText" android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="@dimen/margin_medium" - app:errorEnabled="true" - app:hintEnabled="false" - app:layout_constraintLeft_toLeftOf="parent" - app:layout_constraintRight_toRightOf="parent" - app:layout_constraintTop_toTopOf="parent"> - - <android.support.design.widget.TextInputEditText - android:id="@+id/nickname_entry" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:hint="@string/choose_nickname" - android:imeOptions="actionNext" - android:inputType="text|textCapWords" - android:maxLines="1"/> - - <requestFocus/> - </android.support.design.widget.TextInputLayout> + android:layout_height="0dp" + android:text="Brief explanation of what the mailbox is and does" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + /> <Button android:id="@+id/next" @@ -46,15 +33,13 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/margin_activity_horizontal" - android:enabled="false" android:text="@string/setup_next" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" - app:layout_constraintTop_toBottomOf="@+id/nickname_entry_wrapper" + app:layout_constraintTop_toBottomOf="@+id/introExplanationText" app:layout_constraintVertical_bias="1.0" tools:enabled="true"/> </android.support.constraint.ConstraintLayout> - </ScrollView>