Update registration flow

This commit is contained in:
Moxie Marlinspike
2017-11-08 12:20:11 -08:00
parent e56e55363d
commit 90ff0e58b0
25 changed files with 1488 additions and 947 deletions

View File

@@ -1,137 +1,203 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true"
android:background="@drawable/background_pattern_repeat">
<LinearLayout android:padding="16dp"
android:paddingBottom="0dp"
android:layout_marginTop="20dp"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:animateLayoutChanges="true"
android:orientation="vertical">
android:layout_height="fill_parent"
xmlns:tools="http://schemas.android.com/tools"
android:fillViewport="true"
android:background="@color/white"
tools:context=".RegistrationActivity">
<Spinner android:id="@+id/country_spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dip" />
<RelativeLayout android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout android:orientation="horizontal"
android:layoutDirection="ltr"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:layout_width="wrap_content"
<LinearLayout android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:orientation="vertical"
android:background="@color/signal_primary"
android:padding="16dp">
<TextView android:id="@+id/verify_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="16dp"
android:text="@string/registration_activity__verify_your_number"
android:textSize="20sp"
style="@style/Registration.Constant"
android:text="+" />
android:textStyle="bold"
android:textColor="@color/white"
android:layout_gravity="center"
android:gravity="center"/>
<EditText android:id="@+id/country_code"
android:layout_width="55dip"
<TextView android:id="@+id/verify_subheader"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:gravity="center"
android:inputType="phone"
android:digits="0123456789"
android:maxLength="3" />
<EditText android:id="@+id/number"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="phone"
android:hint="@string/registration_activity__phone_number"
android:gravity="center"
android:singleLine="true"/>
android:paddingBottom="25dp"
android:textColor="@color/white"
android:text="@string/registration_activity__please_enter_your_mobile_number_to_receive_a_verification_code_carrier_rates_may_apply"
android:gravity="center"/>
</LinearLayout>
<TextView style="@style/Registration.Description"
android:layout_width="fill_parent"
android:layout_marginBottom="8dip"
android:layout_marginTop="16dip"
android:gravity="start"
android:text="@string/registration_activity__verify_your_number_to_connect_with_signal"/>
<android.support.design.widget.FloatingActionButton
app:fabSize="normal"
app:backgroundTint="@color/white"
app:elevation="1dp"
android:id="@+id/fab"
android:transitionName="icon"
android:src="@drawable/ic_action_name"
android:tint="@color/grey_700"
android:rotation="15"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/header"
android:layout_centerHorizontal="true"
android:layout_marginBottom="-32dp"/>
<TextView style="@style/Registration.Description"
android:id="@+id/registration_information"
android:layout_width="fill_parent"
android:gravity="start"
android:visibility="gone"
android:layout_marginBottom="16dp"
android:text="@string/registration_activity__registration_will_transmit_some_contact_information_to_the_server_temporariliy"/>
<LinearLayout android:id="@+id/registration_container"
android:padding="16dp"
android:paddingBottom="0dp"
android:layout_marginTop="30dp"
android:layout_below="@id/header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:animateLayoutChanges="true"
android:orientation="vertical"
tools:visibility="invisible">
<LinearLayout android:id="@+id/information_link_container"
android:clickable="true"
android:orientation="horizontal"
<Spinner android:id="@+id/country_spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dip" />
<LinearLayout android:orientation="horizontal"
android:layoutDirection="ltr"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
style="@style/Registration.Constant"
android:text="+" />
<EditText android:id="@+id/country_code"
android:layout_width="55dip"
android:layout_height="wrap_content"
android:singleLine="true"
android:gravity="center"
android:inputType="phone"
android:digits="0123456789"
android:maxLength="3" />
<EditText android:id="@+id/number"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="phone"
android:hint="@string/registration_activity__phone_number"
android:gravity="center"
android:singleLine="true"/>
</LinearLayout>
<com.dd.CircularProgressButton
android:id="@+id/registerButton"
app:cpb_textIdle="Register"
app:cpb_selectorIdle="@drawable/progress_button_state"
app:cpb_colorIndicator="@color/white"
app:cpb_colorProgress="@color/textsecure_primary"
app:cpb_cornerRadius="50dp"
android:background="@color/signal_primary"
android:textColor="@color/white"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="20dp"
android:layout_gravity="center_horizontal"/>
<TextView android:id="@+id/skip_button"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="16dip">
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="false"
android:src="@drawable/ic_info_white_18dp"
android:tint="#73B7F0"/>
android:layout_marginTop="20dp"
android:textColor="@color/gray50"
android:text="@android:string/cancel"/>
<TextView style="@style/Registration.Description"
android:id="@+id/information_label"
android:clickable="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:layout_gravity="center_vertical"
android:textColor="#73B7F0"
android:text="@string/RegistrationActivity_more_information"/>
</LinearLayout>
android:id="@+id/registration_information"
android:layout_width="fill_parent"
android:gravity="start"
android:visibility="gone"
android:layout_marginBottom="16dp"
android:layout_marginTop="16dp"
android:text="@string/registration_activity__registration_will_transmit_some_contact_information_to_the_server_temporariliy"/>
<LinearLayout android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dip"
android:layout_marginBottom="16dip"
android:layout_gravity="right"
android:orientation="horizontal">
<LinearLayout android:id="@+id/information_link_container"
android:clickable="true"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dip">
<TextView android:id="@+id/skipButton"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingTop="15dp"
android:paddingBottom="15dp"
android:text="@android:string/cancel"
android:textColor="@color/white"
android:background="@drawable/pill_button"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_marginRight="5dip"
android:layout_height="wrap_content"/>
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="false"
android:src="@drawable/ic_info_white_18dp"
android:tint="#73B7F0"/>
<TextView style="@style/Registration.Description"
android:id="@+id/information_label"
android:clickable="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:layout_gravity="center_vertical"
android:textColor="#73B7F0"
android:text="@string/RegistrationActivity_more_information"/>
</LinearLayout>
<TextView android:id="@+id/registerButton"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingTop="15dp"
android:paddingBottom="15dp"
android:text="@string/registration_activity__register"
android:textColor="@color/white"
android:background="@drawable/pill_button"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"/>
</LinearLayout>
<ImageView android:id="@+id/twilio_shoutout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_twilio_shoutout_white"
android:layout_gravity="right"
android:tint="@color/grey_800"
android:contentDescription="@string/registration_activity__powered_by_twilio"/>
<RelativeLayout android:id="@+id/verification_container"
android:visibility="invisible"
android:layout_below="@id/header"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:visibility="visible">
<org.thoughtcrime.securesms.components.registration.VerificationCodeView
android:id="@+id/code"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:vcv_inputWidth="30dp"
app:vcv_spacing="10dp"
app:vcv_textColor="@color/signal_primary"
app:vcv_inputColor="@color/grey_600"/>
<org.thoughtcrime.securesms.components.registration.CallMeCountDownView
android:id="@+id/call_me_count_down"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/code"
android:layout_marginTop="30dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"/>
<org.thoughtcrime.securesms.components.registration.VerificationPinKeyboard
android:id="@+id/keyboard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
</RelativeLayout>
</LinearLayout>
</ScrollView>

View File

@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:parentTag="android.widget.RelativeLayout">
<ImageView android:id="@+id/phone_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:src="@drawable/ic_phone_grey600_32dp"/>
<TextView android:id="@+id/call_me_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/phone_icon"
android:layout_toEndOf="@id/phone_icon"
android:layout_centerVertical="true"
android:layout_marginStart="10dp"
android:layout_marginLeft="10dp"
android:gravity="center_vertical"
android:textSize="16sp"
android:text="Call me instead"/>
<TextView android:id="@+id/available_in_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/countdown"
android:layout_toStartOf="@+id/countdown"
android:layout_centerVertical="true"
android:gravity="center_vertical"
android:textSize="16sp"
android:text="Available in: "/>
<TextView android:id="@+id/countdown"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:textSize="16sp"
tools:text="1:04"/>
</merge>

View File

@@ -0,0 +1,154 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center">
<LinearLayout android:id="@+id/container_zero"
android:orientation="vertical"
android:gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:id="@+id/code_zero"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:textStyle="bold"
tools:text="1"/>
<View android:id="@+id/space_zero"
android:layout_width="20dp"
android:layout_height="1dp"
android:background="@color/black"/>
</LinearLayout>
<LinearLayout android:id="@+id/container_one"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginLeft="5dp">
<TextView android:id="@+id/code_one"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:textStyle="bold"
tools:text="2"/>
<View android:id="@+id/space_one"
android:layout_width="20dp"
android:layout_height="1dp"
android:background="@color/black"/>
</LinearLayout>
<LinearLayout android:id="@+id/container_two"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginLeft="5dp">
<TextView android:id="@+id/code_two"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:textStyle="bold"
tools:text="2"/>
<View android:id="@+id/space_two"
android:layout_width="20dp"
android:layout_height="1dp"
android:background="@color/black"/>
</LinearLayout>
<LinearLayout android:id="@+id/separator_container"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginLeft="5dp">
<TextView android:id="@+id/separator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:textStyle="bold"
android:text="-"/>
<View
android:layout_width="20dp"
android:layout_height="1dp"/>
</LinearLayout>
<LinearLayout android:id="@+id/container_three"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginLeft="5dp">
<TextView android:id="@+id/code_three"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:textStyle="bold"
tools:text="2"/>
<View android:id="@+id/space_three"
android:layout_width="20dp"
android:layout_height="1dp"
android:background="@color/black"/>
</LinearLayout>
<LinearLayout android:id="@+id/container_four"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginLeft="5dp">
<TextView android:id="@+id/code_four"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:textStyle="bold"
tools:text="2"/>
<View android:id="@+id/space_four"
android:layout_width="20dp"
android:layout_height="1dp"
android:background="@color/black"/>
</LinearLayout>
<LinearLayout android:id="@+id/container_five"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginLeft="5dp">
<TextView android:id="@+id/code_five"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:textStyle="bold"
tools:text="2"/>
<View android:id="@+id/space_five"
android:layout_width="20dp"
android:layout_height="1dp"
android:background="@color/black"/>
</LinearLayout>
</LinearLayout>

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<android.inputmethodservice.KeyboardView
android:id="@+id/keyboard_view"
android:keyBackground="@color/grey_300"
android:background="@color/grey_300"
android:keyTextColor="@color/black"
android:shadowColor="@color/transparent"
android:keyTextSize="30sp"
android:elevation="3dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<ProgressBar android:id="@+id/progress"
android:layout_gravity="center"
android:layout_width="96dp"
android:layout_height="96dp"
android:indeterminate="true"/>
<org.thoughtcrime.securesms.components.SquareImageView
android:id="@+id/success"
android:layout_width="96dp"
android:layout_height="96dp"
android:layout_gravity="center"
android:background="@drawable/circle_tintable"
android:backgroundTint="@color/green_400"
android:gravity="center_vertical"
android:src="@drawable/ic_check_white_48dp"/>
<org.thoughtcrime.securesms.components.SquareImageView
android:id="@+id/failure"
android:layout_width="96dp"
android:layout_height="96dp"
android:layout_gravity="center"
android:background="@drawable/circle_tintable"
android:backgroundTint="@color/green_400"
android:gravity="center_vertical"
android:src="@drawable/ic_close_white_48dp"/>
</merge>