New login screen that is more streamlined

pull/14/head
Tim Su 15 years ago
parent 5aad0b95cf
commit e9c0a9f23f

@ -416,7 +416,12 @@
</receiver>
<!-- actfm -->
<activity android:name="com.todoroo.astrid.actfm.ActFmLoginActivity" />
<activity android:name="com.todoroo.astrid.actfm.ActFmLoginActivity">
<intent-filter>
<action android:name="com.todoroo.astrid.SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name="com.todoroo.astrid.actfm.OAuthLoginActivity" />
<activity android:name="com.todoroo.astrid.actfm.ActFmPreferences"
android:theme="@android:style/Theme"

@ -33,16 +33,22 @@ import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.PixelFormat;
import android.os.Build;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextPaint;
import android.text.method.PasswordTransformationMethod;
import android.text.style.ClickableSpan;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.ToggleButton;
import com.facebook.android.AsyncFacebookRunner;
import com.facebook.android.AsyncFacebookRunner.RequestListener;
@ -126,9 +132,7 @@ public class ActFmLoginActivity extends Activity implements AuthListener {
"publish_stream"
});
findViewById(R.id.gg_login).setOnClickListener(googleListener);
findViewById(R.id.pw_signup).setOnClickListener(signUpListener);
findViewById(R.id.pw_login).setOnClickListener(loginListener);
initializeUI();
getWindow().setFormat(PixelFormat.RGBA_8888);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);
@ -138,6 +142,29 @@ public class ActFmLoginActivity extends Activity implements AuthListener {
setResult(RESULT_CANCELED);
}
private void initializeUI() {
findViewById(R.id.gg_login).setOnClickListener(googleListener);
TextView pwLogin = (TextView) findViewById(R.id.pw_login);
pwLogin.setOnClickListener(signUpListener);
String pwLoginBase = getString(R.string.actfm_ALA_pw_login);
SpannableString link = new SpannableString(String.format("%s %s", //$NON-NLS-1$
pwLoginBase, getString(R.string.actfm_ALA_pw_link)));
ClickableSpan linkSpan = new ClickableSpan() {
@Override
public void onClick(View widget) {
signUpListener.onClick(widget);
}
@Override
public void updateDrawState(TextPaint ds) {
ds.setUnderlineText(true);
ds.linkColor = Color.rgb(255, 96, 0);
}
};
link.setSpan(linkSpan, pwLoginBase.length() + 1, link.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
pwLogin.setText(link);
}
// --- event handler
private final OnClickListener googleListener = new OnClickListener() {
@ -166,43 +193,18 @@ public class ActFmLoginActivity extends Activity implements AuthListener {
final EditText name = addEditField(body, R.string.actfm_ALA_name_label);
final EditText email = addEditField(body, R.string.actfm_ALA_email_label);
getCredentials(new OnGetCredentials() {
final ToggleButton toggle = new ToggleButton(ActFmLoginActivity.this);
toggle.setTextOff(getString(R.string.actfm_ALA_pw_returning));
toggle.setTextOn(getString(R.string.actfm_ALA_pw_new));
toggle.setOnClickListener(new OnClickListener() {
@Override
public void getCredentials(String[] accounts) {
if(accounts != null && accounts.length > 0)
email.setText(accounts[0]);
public void onClick(View v) {
name.setVisibility(toggle.isChecked() ? View.VISIBLE : View.GONE);
}
});
body.addView(toggle, 0);
final EditText password = addEditField(body, R.string.actfm_ALA_password_label);
password.setTransformationMethod(new PasswordTransformationMethod());
new AlertDialog.Builder(ActFmLoginActivity.this)
.setTitle(R.string.actfm_ALA_signup_title)
.setView(body)
.setIcon(R.drawable.icon_32)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
authenticate(email.getText().toString(), name.getText().toString(),
ActFmInvoker.PROVIDER_PASSWORD, password.getText().toString());
StatisticsService.reportEvent("actfm-signup-pw"); //$NON-NLS-1$
}
})
.setNegativeButton(android.R.string.cancel, null)
.show().setOwnerActivity(ActFmLoginActivity.this);
}
};
private final OnClickListener loginListener = new OnClickListener() {
@Override
public void onClick(View arg0) {
LinearLayout body = new LinearLayout(ActFmLoginActivity.this);
body.setOrientation(LinearLayout.VERTICAL);
body.setPadding(10, 0, 10, 0);
final EditText email = addEditField(body, R.string.actfm_ALA_username_email_label);
final EditText email = addEditField(body, R.string.actfm_ALA_email_label);
getCredentials(new OnGetCredentials() {
@Override
public void getCredentials(String[] accounts) {
@ -215,15 +217,21 @@ public class ActFmLoginActivity extends Activity implements AuthListener {
password.setTransformationMethod(new PasswordTransformationMethod());
new AlertDialog.Builder(ActFmLoginActivity.this)
.setTitle(R.string.actfm_ALA_login_title)
.setTitle(R.string.actfm_ALA_signup_title)
.setView(body)
.setIcon(R.drawable.icon_32)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
authenticate(email.getText().toString(), null,
boolean isNew = toggle.isChecked();
String nameString = isNew ? name.getText().toString() : null;
authenticate(email.getText().toString(), nameString,
ActFmInvoker.PROVIDER_PASSWORD, password.getText().toString());
StatisticsService.reportEvent("actfm-login-pw"); //$NON-NLS-1$
if(isNew)
StatisticsService.reportEvent("actfm-login-pw"); //$NON-NLS-1$
else
StatisticsService.reportEvent("actfm-signup-pw"); //$NON-NLS-1$
}
})
.setNegativeButton(android.R.string.cancel, null)

@ -3,7 +3,7 @@
android:shape="rectangle">
<gradient
android:type="radial"
android:startColor="#0663be"
android:startColor="#035ab6"
android:endColor="#003471"
android:gradientRadius="300"
android:centerX="0.5"

@ -44,66 +44,51 @@
android:src="@drawable/astrid_com_logo" />
<TextView
android:id="@+id/notice"
android:id="@+id/pw_login"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:gravity="center"
android:layout_marginBottom="20dip"
android:layout_marginBottom="10dip"
android:textSize="12sp"
android:textColor="#cccccc" />
<TextView
android:id="@+id/notice"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@id/pw_login"
android:layout_alignParentLeft="true"
android:gravity="center"
android:layout_marginBottom="5dip"
android:textSize="12sp"
android:textColor="#cccccc"
android:text="@string/actfm_ALA_notice" />
<Button
android:id="@+id/pw_signup"
<com.facebook.android.LoginButton
android:id="@+id/fb_login"
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="45dip"
android:layout_above="@id/notice"
android:layout_alignParentLeft="true"
android:layout_marginBottom="15dip"
android:paddingLeft="20dip"
android:paddingRight="20dip"
android:layout_marginBottom="20dip"
android:textSize="16sp"
android:text="@string/actfm_ALA_pw_signup" />
android:drawableLeft="@drawable/facebook"
android:text="@string/actfm_ALA_fb_login" />
<Button
android:id="@+id/pw_login"
android:id="@+id/gg_login"
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="45dip"
android:layout_above="@id/pw_signup"
android:layout_alignParentLeft="true"
android:layout_marginBottom="3dip"
android:layout_above="@id/fb_login"
android:paddingLeft="20dip"
android:paddingRight="20dip"
android:textSize="16sp"
android:text="@string/actfm_ALA_pw_login" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@id/pw_login"
android:layout_alignParentLeft="true"
android:layout_marginBottom="3dip">
<Button
android:id="@+id/gg_login"
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="45dip"
android:textSize="16sp"
android:drawableLeft="@drawable/google"
android:text="@string/actfm_ALA_gg_login" />
<com.facebook.android.LoginButton
android:id="@+id/fb_login"
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="45dip"
android:textSize="16sp"
android:drawableLeft="@drawable/facebook"
android:text="@string/actfm_ALA_fb_login" />
</LinearLayout>
android:drawableLeft="@drawable/google"
android:text="@string/actfm_ALA_gg_login" />
</RelativeLayout>

@ -136,19 +136,25 @@
<!-- share login: Sharing Description -->
<string name="actfm_ALA_body">Astrid.com lets you access your tasks online,
share, and delegate with others. Perfect for personal use, friends, family, and coworkers!</string>
share, and delegate with others.</string>
<!-- share login: Sharing Login FB Prompt -->
<string name="actfm_ALA_fb_login">Facebook</string>
<string name="actfm_ALA_fb_login">Sign in with Facebook</string>
<!-- share login: Sharing Login GG Prompt -->
<string name="actfm_ALA_gg_login">Google</string>
<string name="actfm_ALA_gg_login">Sign in with Google</string>
<!-- share login: Sharing Login Password Prompt -->
<string name="actfm_ALA_pw_login">Login</string>
<!-- share login: Sharing Footer Password Label -->
<string name="actfm_ALA_pw_login">Don\'t have a Google or Facebook Account?</string>
<!-- share login: Sharing Sign Up Prompt -->
<string name="actfm_ALA_pw_signup">Join Now</string>
<!-- share login: Sharing Password Link -->
<string name="actfm_ALA_pw_link">Sign In Here</string>
<!-- share login: Password New User -->
<string name="actfm_ALA_pw_new">New User</string>
<!-- share login: Password Returning User -->
<string name="actfm_ALA_pw_returning">Returning</string>
<!-- share login: Name -->
<string name="actfm_ALA_name_label">Name</string>
@ -172,8 +178,7 @@
<string name="actfm_OLA_prompt">Please connect to Google:</string>
<!-- share login: Sharing notice -->
<string name="actfm_ALA_notice">We promise not to post messages or send
e-mails without your permission.</string>
<string name="actfm_ALA_notice">Astrid won\'t send messages e-mails without permission.</string>
<!-- ================================================ Synchronization == -->

Loading…
Cancel
Save