Skip to content
Snippets Groups Projects
Verified Commit 09493111 authored by Julian Dehm's avatar Julian Dehm
Browse files

modifiy setup wizard

parent c00565f4
No related branches found
No related tags found
No related merge requests found
...@@ -6,11 +6,10 @@ import org.briarproject.mailbox.android.AndroidComponent; ...@@ -6,11 +6,10 @@ import org.briarproject.mailbox.android.AndroidComponent;
import org.briarproject.mailbox.android.StartupFailureActivity; import org.briarproject.mailbox.android.StartupFailureActivity;
import org.briarproject.mailbox.android.fragment.ScreenFilterDialogFragment; import org.briarproject.mailbox.android.fragment.ScreenFilterDialogFragment;
import org.briarproject.mailbox.android.keyagreement.ContactExchangeErrorFragment; 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.KeyAgreementActivity;
import org.briarproject.mailbox.android.keyagreement.KeyAgreementFragment; import org.briarproject.mailbox.android.keyagreement.KeyAgreementFragment;
import org.briarproject.mailbox.android.keyagreement.MailboxExchangeActivity; 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.ChangePasswordActivity;
import org.briarproject.mailbox.android.login.DozeFragment; import org.briarproject.mailbox.android.login.DozeFragment;
import org.briarproject.mailbox.android.login.OpenDatabaseActivity; import org.briarproject.mailbox.android.login.OpenDatabaseActivity;
...@@ -63,13 +62,14 @@ public interface ActivityComponent { ...@@ -63,13 +62,14 @@ public interface ActivityComponent {
void inject(UnlockActivity activity); void inject(UnlockActivity activity);
// Fragments // Fragments
void inject(AuthorNameFragment fragment); void inject(IntroFragment fragment);
void inject(PasswordFragment fragment); void inject(PasswordFragment fragment);
void inject(DozeFragment fragment); void inject(DozeFragment fragment);
void inject(IntroFragment fragment); void inject(
org.briarproject.mailbox.android.keyagreement.IntroFragment fragment);
void inject(KeyAgreementFragment fragment); void inject(KeyAgreementFragment fragment);
......
package org.briarproject.mailbox.android.login; package org.briarproject.mailbox.android.login;
import android.os.Bundle; import android.os.Bundle;
import android.support.design.widget.TextInputEditText;
import android.support.design.widget.TextInputLayout;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
...@@ -10,29 +8,21 @@ import android.widget.Button; ...@@ -10,29 +8,21 @@ import android.widget.Button;
import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
import org.briarproject.bramble.util.StringUtils;
import org.briarproject.mailbox.R; import org.briarproject.mailbox.R;
import org.briarproject.mailbox.android.activity.ActivityComponent; import org.briarproject.mailbox.android.activity.ActivityComponent;
import javax.annotation.Nullable; 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 @MethodsNotNullByDefault
@ParametersNotNullByDefault @ParametersNotNullByDefault
public class AuthorNameFragment extends SetupFragment { public class IntroFragment extends SetupFragment {
private final static String TAG = AuthorNameFragment.class.getName(); private final static String TAG = IntroFragment.class.getName();
private TextInputLayout authorNameWrapper;
private TextInputEditText authorNameInput;
private Button nextButton; private Button nextButton;
public static AuthorNameFragment newInstance() { public static IntroFragment newInstance() {
return new AuthorNameFragment(); return new IntroFragment();
} }
@Override @Override
...@@ -40,15 +30,10 @@ public class AuthorNameFragment extends SetupFragment { ...@@ -40,15 +30,10 @@ public class AuthorNameFragment extends SetupFragment {
@Nullable ViewGroup container, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) { @Nullable Bundle savedInstanceState) {
getActivity().setTitle(getString(R.string.setup_title)); getActivity().setTitle(getString(R.string.setup_title));
View v = inflater.inflate(R.layout.fragment_setup_author_name, View v = inflater.inflate(R.layout.fragment_setup_intro,
container, false); container, false);
authorNameWrapper = v.findViewById(R.id.nickname_entry_wrapper);
authorNameInput = v.findViewById(R.id.nickname_entry);
nextButton = v.findViewById(R.id.next); nextButton = v.findViewById(R.id.next);
authorNameInput.addTextChangedListener(this);
nextButton.setOnClickListener(this); nextButton.setOnClickListener(this);
return v; return v;
} }
...@@ -62,27 +47,13 @@ public class AuthorNameFragment extends SetupFragment { ...@@ -62,27 +47,13 @@ public class AuthorNameFragment extends SetupFragment {
component.inject(this); 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 @Override
public void onClick(View view) { public void onClick(View view) {
setupController.setAuthorName(authorNameInput.getText().toString());
setupController.showPasswordFragment(); setupController.showPasswordFragment();
} }
@Override
protected String getHelpText() {
return null;
}
} }
...@@ -44,7 +44,7 @@ public class SetupActivity extends BaseActivity ...@@ -44,7 +44,7 @@ public class SetupActivity extends BaseActivity
if (state == null) { if (state == null) {
if (accountManager.accountExists()) throw new AssertionError(); if (accountManager.accountExists()) throw new AssertionError();
showInitialFragment(AuthorNameFragment.newInstance()); showInitialFragment(IntroFragment.newInstance());
} else { } else {
authorName = state.getString(STATE_KEY_AUTHOR_NAME); authorName = state.getString(STATE_KEY_AUTHOR_NAME);
password = state.getString(STATE_KEY_PASSWORD); password = state.getString(STATE_KEY_PASSWORD);
...@@ -85,13 +85,11 @@ public class SetupActivity extends BaseActivity ...@@ -85,13 +85,11 @@ public class SetupActivity extends BaseActivity
} }
void showPasswordFragment() { void showPasswordFragment() {
if (authorName == null) throw new IllegalStateException();
showNextFragment(PasswordFragment.newInstance()); showNextFragment(PasswordFragment.newInstance());
} }
@TargetApi(23) @TargetApi(23)
void showDozeFragment() { void showDozeFragment() {
if (authorName == null) throw new IllegalStateException();
if (password == null) throw new IllegalStateException(); if (password == null) throw new IllegalStateException();
showNextFragment(DozeFragment.newInstance()); showNextFragment(DozeFragment.newInstance());
} }
......
...@@ -92,8 +92,7 @@ public class SetupControllerImpl extends PasswordControllerImpl ...@@ -92,8 +92,7 @@ public class SetupControllerImpl extends PasswordControllerImpl
void createAccount(ResultHandler<Boolean> resultHandler) { void createAccount(ResultHandler<Boolean> resultHandler) {
SetupActivity setupActivity = this.setupActivity; SetupActivity setupActivity = this.setupActivity;
if (setupActivity == null) throw new IllegalStateException(); if (setupActivity == null) throw new IllegalStateException();
String authorName = setupActivity.getAuthorName(); String authorName = "user";
if (authorName == null) throw new IllegalStateException();
String password = setupActivity.getPassword(); String password = setupActivity.getPassword();
if (password == null) throw new IllegalStateException(); if (password == null) throw new IllegalStateException();
ioExecutor.execute(() -> { ioExecutor.execute(() -> {
......
...@@ -25,7 +25,7 @@ import java.util.logging.Logger; ...@@ -25,7 +25,7 @@ import java.util.logging.Logger;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import javax.annotation.ParametersAreNonnullByDefault; import javax.annotation.ParametersAreNonnullByDefault;
import static android.view.View.INVISIBLE; import static android.view.View.GONE;
import static android.view.View.VISIBLE; import static android.view.View.VISIBLE;
import static org.briarproject.mailbox.R.drawable.contact_offline; import static org.briarproject.mailbox.R.drawable.contact_offline;
import static org.briarproject.mailbox.R.drawable.contact_online; import static org.briarproject.mailbox.R.drawable.contact_online;
...@@ -72,15 +72,22 @@ public class OverviewFragment extends BaseEventFragment { ...@@ -72,15 +72,22 @@ public class OverviewFragment extends BaseEventFragment {
super.onViewCreated(view, savedInstanceState); super.onViewCreated(view, savedInstanceState);
ownerStatus = view.findViewById(R.id.ownerStatus); ownerStatus = view.findViewById(R.id.ownerStatus);
ownerName = view.findViewById(R.id.ownerName); ownerName = view.findViewById(R.id.ownerName);
TextView ownerText = view.findViewById(R.id.ownerText);
TextView emptyText = view.findViewById(R.id.emptyText);
final MailboxOwnerStatusViewModel final MailboxOwnerStatusViewModel
viewModel = ViewModelProviders.of(this) viewModel = ViewModelProviders.of(this)
.get(MailboxOwnerStatusViewModel.class); .get(MailboxOwnerStatusViewModel.class);
viewModel.mailboxOwnerStatusLiveData.observe(this, viewModel.mailboxOwnerStatusLiveData.observe(this,
mailboxOwnerStatus -> { mailboxOwnerStatus -> {
if (mailboxOwnerStatus == null) { if (mailboxOwnerStatus == null) {
ownerName.setText(R.string.mailbox_unpaired); ownerName.setVisibility(GONE);
ownerStatus.setVisibility(INVISIBLE); ownerStatus.setVisibility(GONE);
ownerText.setVisibility(GONE);
emptyText.setVisibility(VISIBLE);
} else { } else {
emptyText.setVisibility(GONE);
ownerText.setVisibility(VISIBLE);
ownerName.setVisibility(VISIBLE);
ownerName.setText(mailboxOwnerStatus.getName()); ownerName.setText(mailboxOwnerStatus.getName());
ownerStatus.setVisibility(VISIBLE); ownerStatus.setVisibility(VISIBLE);
if (mailboxOwnerStatus.isOnline()) if (mailboxOwnerStatus.isOnline())
......
...@@ -5,7 +5,19 @@ ...@@ -5,7 +5,19 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="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 <TextView
android:id="@+id/ownerText" android:id="@+id/ownerText"
...@@ -14,6 +26,7 @@ ...@@ -14,6 +26,7 @@
android:layout_margin="8dp" android:layout_margin="8dp"
android:text="Paired with:" android:text="Paired with:"
android:textColor="@color/briar_text_primary" android:textColor="@color/briar_text_primary"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/> app:layout_constraintTop_toTopOf="parent"/>
...@@ -24,6 +37,7 @@ ...@@ -24,6 +37,7 @@
android:layout_margin="8dp" android:layout_margin="8dp"
android:text="@string/mailbox_unpaired" android:text="@string/mailbox_unpaired"
android:textColor="@color/briar_text_primary" android:textColor="@color/briar_text_primary"
android:visibility="gone"
app:layout_constraintStart_toEndOf="@id/ownerText" app:layout_constraintStart_toEndOf="@id/ownerText"
app:layout_constraintTop_toTopOf="parent"/> app:layout_constraintTop_toTopOf="parent"/>
...@@ -33,6 +47,7 @@ ...@@ -33,6 +47,7 @@
android:layout_height="15dp" android:layout_height="15dp"
android:layout_margin="8dp" android:layout_margin="8dp"
android:scaleType="fitCenter" android:scaleType="fitCenter"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@+id/ownerName" app:layout_constraintBottom_toBottomOf="@+id/ownerName"
app:layout_constraintStart_toEndOf="@id/ownerName" app:layout_constraintStart_toEndOf="@id/ownerName"
app:layout_constraintTop_toTopOf="@id/ownerName" app:layout_constraintTop_toTopOf="@id/ownerName"
...@@ -45,6 +60,8 @@ ...@@ -45,6 +60,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="8dp" android:layout_margin="8dp"
android:text="@string/transport_bt" android:text="@string/transport_bt"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ownerText"/> app:layout_constraintTop_toBottomOf="@id/ownerText"/>
<Switch <Switch
...@@ -53,6 +70,8 @@ ...@@ -53,6 +70,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="8dp" android:layout_margin="8dp"
android:text="@string/transport_lan" android:text="@string/transport_lan"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/btToggle"/> app:layout_constraintTop_toBottomOf="@id/btToggle"/>
<Switch <Switch
...@@ -61,6 +80,8 @@ ...@@ -61,6 +80,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="8dp" android:layout_margin="8dp"
android:text="@string/transport_tor" android:text="@string/transport_tor"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/wifiToggle"/> app:layout_constraintTop_toBottomOf="@id/wifiToggle"/>
</android.support.constraint.ConstraintLayout> </android.support.constraint.ConstraintLayout>
...@@ -17,28 +17,15 @@ ...@@ -17,28 +17,15 @@
android:paddingStart="@dimen/margin_activity_horizontal" android:paddingStart="@dimen/margin_activity_horizontal"
android:paddingTop="@dimen/margin_activity_vertical"> android:paddingTop="@dimen/margin_activity_vertical">
<android.support.design.widget.TextInputLayout <TextView
android:id="@+id/nickname_entry_wrapper" android:id="@+id/introExplanationText"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="0dp"
android:layout_marginTop="@dimen/margin_medium" android:text="Brief explanation of what the mailbox is and does"
app:errorEnabled="true" app:layout_constraintEnd_toEndOf="parent"
app:hintEnabled="false" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="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>
<Button <Button
android:id="@+id/next" android:id="@+id/next"
...@@ -46,15 +33,13 @@ ...@@ -46,15 +33,13 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_activity_horizontal" android:layout_marginTop="@dimen/margin_activity_horizontal"
android:enabled="false"
android:text="@string/setup_next" android:text="@string/setup_next"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="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" app:layout_constraintVertical_bias="1.0"
tools:enabled="true"/> tools:enabled="true"/>
</android.support.constraint.ConstraintLayout> </android.support.constraint.ConstraintLayout>
</ScrollView> </ScrollView>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment