Minor copy and layout updates for the astrid login activity

pull/14/head
Sam Bosley 13 years ago
parent 79acc329b7
commit 587c5574b6

@ -9,8 +9,6 @@ import java.io.FileNotFoundException;
import java.io.IOException; import java.io.IOException;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.util.Random; import java.util.Random;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
@ -31,6 +29,7 @@ import android.text.Spanned;
import android.text.TextPaint; import android.text.TextPaint;
import android.text.method.PasswordTransformationMethod; import android.text.method.PasswordTransformationMethod;
import android.text.style.ClickableSpan; import android.text.style.ClickableSpan;
import android.text.style.UnderlineSpan;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.view.WindowManager; import android.view.WindowManager;
@ -187,7 +186,7 @@ public class ActFmLoginActivity extends FragmentActivity implements AuthListener
String tosBase = getString(R.string.welcome_login_tos_base); String tosBase = getString(R.string.welcome_login_tos_base);
String tosLink = getString(R.string.welcome_login_tos_link); String tosLink = getString(R.string.welcome_login_tos_link);
SpannableString link = getLinkStringWithCustomInterval(tosBase, tosLink, tosBase.length() + 2, -1, SpannableString link = getLinkStringWithCustomInterval(tosBase, tosLink, tosBase.length() + 1, 0,
showTosListener); showTosListener);
tos.setText(link); tos.setText(link);
} }
@ -212,6 +211,13 @@ public class ActFmLoginActivity extends FragmentActivity implements AuthListener
return link; return link;
} }
private void setupSignIn(TextView signIn) {
signIn.setOnClickListener(signInListener);
SpannableString content = new SpannableString(getString(R.string.welcome_sign_in));
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
signIn.setText(content);
}
@SuppressWarnings("nls") @SuppressWarnings("nls")
protected void initializeUI() { protected void initializeUI() {
facebook = new Facebook(APP_ID); facebook = new Facebook(APP_ID);
@ -229,8 +235,12 @@ public class ActFmLoginActivity extends FragmentActivity implements AuthListener
if(AmazonMarketStrategy.isKindleFire()) if(AmazonMarketStrategy.isKindleFire())
googleLogin.setVisibility(View.GONE); googleLogin.setVisibility(View.GONE);
googleLogin.setOnClickListener(googleListener); googleLogin.setOnClickListener(googleListener);
Button pwLogin = (Button) findViewById(R.id.pw_login); Button signUp = (Button) findViewById(R.id.pw_signup);
pwLogin.setOnClickListener(signUpListener); signUp.setOnClickListener(signUpListener);
TextView signIn = (TextView) findViewById(R.id.pw_login);
setupSignIn(signIn);
setupTermsOfService((TextView) findViewById(R.id.tos)); setupTermsOfService((TextView) findViewById(R.id.tos));
} }
@ -248,7 +258,7 @@ public class ActFmLoginActivity extends FragmentActivity implements AuthListener
protected final OnClickListener signUpListener = new OnClickListener() { protected final OnClickListener signUpListener = new OnClickListener() {
@Override @Override
public void onClick(View arg0) { public void onClick(View v) {
final LinearLayout body = new LinearLayout(ActFmLoginActivity.this); final LinearLayout body = new LinearLayout(ActFmLoginActivity.this);
body.setOrientation(LinearLayout.VERTICAL); body.setOrientation(LinearLayout.VERTICAL);
body.setPadding(10, 0, 10, 0); body.setPadding(10, 0, 10, 0);
@ -265,35 +275,49 @@ public class ActFmLoginActivity extends FragmentActivity implements AuthListener
InputType.TYPE_TEXT_VARIATION_PERSON_NAME | InputType.TYPE_TEXT_VARIATION_PERSON_NAME |
InputType.TYPE_TEXT_FLAG_CAP_WORDS); InputType.TYPE_TEXT_FLAG_CAP_WORDS);
final AtomicReference<AlertDialog> dialog = new AtomicReference<AlertDialog>(); final EditText email = addEditField(body,
final AtomicBoolean isNew = new AtomicBoolean(true); R.string.actfm_ALA_email_label);
final Button toggleNew = new Button(ActFmLoginActivity.this); email.setInputType(InputType.TYPE_CLASS_TEXT |
toggleNew.setOnClickListener(new OnClickListener() { InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
getCredentials(new OnGetCredentials() {
@Override @Override
public void onClick(View v) { public void getCredentials(String[] accounts) {
isNew.set(!isNew.get()); if (accounts != null && accounts.length > 0)
int nameIndex = body.indexOfChild(lastNameField); email.setText(accounts[0]);
int visibility = isNew.get() ? View.VISIBLE : View.GONE;
int passwordVisibility = isNew.get() ? View.GONE : View.VISIBLE;
toggleNew.setText(isNew.get() ? R.string.actfm_ALA_pw_returning
: R.string.actfm_ALA_pw_new);
dialog.get().setTitle(
isNew.get() ? R.string.actfm_ALA_signup_title
: R.string.actfm_ALA_login_title);
body.getChildAt(nameIndex - 3).setVisibility(visibility);
body.getChildAt(nameIndex - 2).setVisibility(visibility);
body.getChildAt(nameIndex - 1).setVisibility(visibility);
body.getChildAt(nameIndex).setVisibility(visibility);
EditText password = (EditText) body.getChildAt(nameIndex + 4);
String passwordText = isNew.get() ? generateRandomPassword() : ""; //$NON-NLS-1$
password.setText(passwordText);
body.getChildAt(nameIndex + 3).setVisibility(passwordVisibility);
body.getChildAt(nameIndex + 4).setVisibility(passwordVisibility);
} }
}); });
toggleNew.setText(R.string.actfm_ALA_pw_returning);
body.addView(toggleNew, 0); ScrollView bodyScroll = new ScrollView(ActFmLoginActivity.this);
bodyScroll.addView(body);
new AlertDialog.Builder(ActFmLoginActivity.this).setView(
bodyScroll).setIcon(R.drawable.icon_32).setTitle(
R.string.actfm_ALA_signup_title).setPositiveButton(
android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dlg, int which) {
String firstName = firstNameField.getText().toString();
String lastName =lastNameField.getText().toString();
AndroidUtilities.hideSoftInputForViews(ActFmLoginActivity.this, firstNameField, lastNameField, email);
authenticate(email.getText().toString(),
firstName, lastName, ActFmInvoker.PROVIDER_PASSWORD, generateRandomPassword());
StatisticsService.reportEvent(StatisticsConstants.ACTFM_SIGNUP_PW);
}
}).setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dlg, int which) {
AndroidUtilities.hideSoftInputForViews(ActFmLoginActivity.this, firstNameField, lastNameField, email);
}
}).show();
}
};
protected final OnClickListener signInListener = new OnClickListener() {
public void onClick(View v) {
final LinearLayout body = new LinearLayout(ActFmLoginActivity.this);
body.setOrientation(LinearLayout.VERTICAL);
body.setPadding(10, 0, 10, 0);
final EditText email = addEditField(body, final EditText email = addEditField(body,
R.string.actfm_ALA_email_label); R.string.actfm_ALA_email_label);
@ -313,42 +337,27 @@ public class ActFmLoginActivity extends FragmentActivity implements AuthListener
InputType.TYPE_TEXT_VARIATION_PASSWORD); InputType.TYPE_TEXT_VARIATION_PASSWORD);
password.setTransformationMethod(new PasswordTransformationMethod()); password.setTransformationMethod(new PasswordTransformationMethod());
password.setText(generateRandomPassword());
body.getChildAt(body.indexOfChild(password) - 1).setVisibility(View.GONE);
password.setVisibility(View.GONE);
ScrollView bodyScroll = new ScrollView(ActFmLoginActivity.this); ScrollView bodyScroll = new ScrollView(ActFmLoginActivity.this);
bodyScroll.addView(body); bodyScroll.addView(body);
dialog.set(new AlertDialog.Builder(ActFmLoginActivity.this).setView( new AlertDialog.Builder(ActFmLoginActivity.this).setView(
bodyScroll).setIcon(R.drawable.icon_32).setTitle( bodyScroll).setIcon(R.drawable.icon_32).setTitle(
R.string.actfm_ALA_signup_title).setPositiveButton( R.string.actfm_ALA_login_title).setPositiveButton(
android.R.string.ok, new DialogInterface.OnClickListener() { android.R.string.ok, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dlg, int which) { public void onClick(DialogInterface dlg, int which) {
String firstName = isNew.get() ? firstNameField.getText().toString() AndroidUtilities.hideSoftInputForViews(ActFmLoginActivity.this, email, password);
: null;
String lastName = isNew.get() ? lastNameField.getText().toString()
: null;
AndroidUtilities.hideSoftInputForViews(ActFmLoginActivity.this, firstNameField, lastNameField, email, password);
authenticate(email.getText().toString(), authenticate(email.getText().toString(),
firstName, lastName, ActFmInvoker.PROVIDER_PASSWORD, "", "", ActFmInvoker.PROVIDER_PASSWORD, //$NON-NLS-1$//$NON-NLS-2$
password.getText().toString()); password.getText().toString());
StatisticsService.reportEvent(StatisticsConstants.ACTFM_LOGIN_PW);
if (isNew.get())
StatisticsService.reportEvent(StatisticsConstants.ACTFM_LOGIN_PW);
else
StatisticsService.reportEvent(StatisticsConstants.ACTFM_SIGNUP_PW);
} }
}).setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { }).setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dlg, int which) { public void onClick(DialogInterface dlg, int which) {
AndroidUtilities.hideSoftInputForViews(ActFmLoginActivity.this, firstNameField, lastNameField, email, password); AndroidUtilities.hideSoftInputForViews(ActFmLoginActivity.this, email, password);
} }
}).show()); }).show();
dialog.get().setOwnerActivity(ActFmLoginActivity.this);
} }
}; };

@ -92,7 +92,7 @@
android:layout_gravity="center_horizontal" /> android:layout_gravity="center_horizontal" />
<Button <Button
android:id="@+id/pw_login" android:id="@+id/pw_signup"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="45dp" android:layout_height="45dp"
android:paddingLeft="17dip" android:paddingLeft="17dip"
@ -103,6 +103,17 @@
android:textSize="12sp" android:textSize="12sp"
android:text="@string/welcome_login_pw" android:text="@string/welcome_login_pw"
android:layout_gravity="center_horizontal" /> android:layout_gravity="center_horizontal" />
<TextView
android:id="@+id/pw_login"
android:layout_width="wrap_content"
android:layout_height="35dip"
android:gravity="center"
android:layout_gravity="center_horizontal"
android:layout_above="@id/tos"
android:textColor="#444"
android:textSize="16sp"
android:text="@string/welcome_sign_in"/>
<TextView <TextView
android:id="@+id/tos" android:id="@+id/tos"

@ -48,25 +48,46 @@
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:paddingTop="5dip"> android:paddingTop="5dip">
<TextView
android:id="@+id/tos"
android:layout_width="fill_parent"
android:layout_height="35dip"
android:layout_alignParentBottom="true"
android:gravity="center"
android:paddingLeft="20dip"
android:paddingRight="20dip"
android:textSize="12.5sp"
android:textColor="#ffffff" />
<TextView
android:id="@+id/pw_login"
android:layout_width="wrap_content"
android:layout_height="35dip"
android:gravity="center"
android:layout_centerHorizontal="true"
android:layout_above="@id/tos"
android:textColor="#444"
android:textSize="16sp"
android:text="@string/welcome_sign_in"/>
<Button <Button
android:id="@+id/pw_login" android:id="@+id/pw_signup"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="45dip" android:layout_height="45dip"
android:layout_alignParentBottom="true" android:layout_above="@id/pw_login"
android:paddingLeft="17dip" android:paddingLeft="17dip"
android:paddingRight="20dip" android:paddingRight="20dip"
android:layout_marginLeft="15dip" android:layout_marginLeft="15dip"
android:layout_marginRight="15dip" android:layout_marginRight="15dip"
android:layout_marginBottom="20dip"
android:drawableLeft="@drawable/notif_astrid" android:drawableLeft="@drawable/notif_astrid"
android:textSize="14sp" android:textSize="16sp"
android:text="@string/welcome_login_pw"/> android:text="@string/welcome_login_pw"/>
<com.facebook.android.LoginButton <com.facebook.android.LoginButton
android:id="@+id/fb_login" android:id="@+id/fb_login"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="45dip" android:layout_height="45dip"
android:layout_above="@id/pw_login" android:layout_above="@id/pw_signup"
android:paddingLeft="20dip" android:paddingLeft="20dip"
android:paddingRight="20dip" android:paddingRight="20dip"
android:layout_marginLeft="15dip" android:layout_marginLeft="15dip"
@ -88,15 +109,5 @@
android:drawableLeft="@drawable/google" android:drawableLeft="@drawable/google"
android:text="@string/actfm_ALA_gg_login" /> android:text="@string/actfm_ALA_gg_login" />
<TextView
android:id="@+id/tos"
android:layout_width="fill_parent"
android:layout_height="35dip"
android:layout_above="@id/gg_login"
android:gravity="center"
android:paddingLeft="20dip"
android:paddingRight="20dip"
android:textSize="12.5sp"
android:textColor="#ffffff" />
</RelativeLayout> </RelativeLayout>
</LinearLayout> </LinearLayout>

@ -80,7 +80,7 @@
android:text="@string/actfm_ALA_fb_login" /> android:text="@string/actfm_ALA_fb_login" />
<Button <Button
android:id="@+id/pw_login" android:id="@+id/pw_signup"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="45dip" android:layout_height="45dip"
android:layout_below="@id/fb_login" android:layout_below="@id/fb_login"
@ -89,7 +89,18 @@
android:layout_marginLeft="15dip" android:layout_marginLeft="15dip"
android:layout_marginRight="15dip" android:layout_marginRight="15dip"
android:textSize="16sp" android:textSize="16sp"
android:text="@string/welcome_login_pw"/> android:text="@string/welcome_login_pw"/>
<TextView
android:id="@+id/pw_login"
android:layout_width="wrap_content"
android:layout_height="35dip"
android:gravity="center"
android:layout_centerHorizontal="true"
android:layout_below="@id/pw_signup"
android:textColor="#444"
android:textSize="16sp"
android:text="@string/welcome_sign_in"/>
<TextView <TextView
android:id="@+id/login_later" android:id="@+id/login_later"

@ -260,10 +260,10 @@
<string name="actfm_ALA_password_label">Password</string> <string name="actfm_ALA_password_label">Password</string>
<!-- share login: Sign Up Title --> <!-- share login: Sign Up Title -->
<string name="actfm_ALA_signup_title">Create New Account</string> <string name="actfm_ALA_signup_title">Sign Up</string>
<!-- share login: Login Title --> <!-- share login: Login Title -->
<string name="actfm_ALA_login_title">Login to Astrid.com</string> <string name="actfm_ALA_login_title">Sign In</string>
<!-- share login: Google Auth title --> <!-- share login: Google Auth title -->
<string name="actfm_GAA_title">Select the Google account you want to use:</string> <string name="actfm_GAA_title">Select the Google account you want to use:</string>

@ -39,10 +39,12 @@
<!-- slide 7b --> <!-- slide 7b -->
<string name="welcome_login_tos_base">By using Astrid you agree to the</string> <string name="welcome_login_tos_base">By using Astrid you agree to the</string>
<string name="welcome_login_tos_link">\"Terms of Service\"</string> <string name="welcome_login_tos_link">Terms of Service</string>
<!-- slide 7e --> <!-- slide 7e -->
<string name="welcome_login_pw">Login with Username/Password</string> <string name="welcome_login_pw">Sign up with email</string>
<string name="welcome_sign_in">Sign in</string>
<!-- slide 7f --> <!-- slide 7f -->
<string name="welcome_login_later">Connect Later</string> <string name="welcome_login_later">Connect Later</string>

@ -91,7 +91,7 @@ public class WelcomeWalkthrough extends ActFmLoginActivity {
} }
protected void setupPWLogin() { protected void setupPWLogin() {
Button pwLogin = (Button) findViewById(R.id.pw_login); Button pwLogin = (Button) findViewById(R.id.pw_signup);
pwLogin.setOnClickListener(signUpListener); pwLogin.setOnClickListener(signUpListener);
} }

Loading…
Cancel
Save