Merge branch '121203_sb_auto_signin_take2'

pull/14/head
Sam Bosley 13 years ago
commit 476743391b

@ -41,7 +41,7 @@ import com.todoroo.astrid.service.StatisticsService;
*/
public class ActFmGoogleAuthActivity extends ListActivity {
private static final String AUTH_TOKEN_TYPE = "oauth2:https://www.googleapis.com/auth/userinfo.profile"; //$NON-NLS-1$
public static final String AUTH_TOKEN_TYPE = "oauth2:https://www.googleapis.com/auth/userinfo.profile"; //$NON-NLS-1$
public static final String RESULT_EMAIL = "email"; //$NON-NLS-1$
public static final String RESULT_TOKEN = "token"; //$NON-NLS-1$

@ -36,7 +36,6 @@ import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ScrollView;
@ -215,13 +214,6 @@ public class ActFmLoginActivity extends FragmentActivity implements AuthListener
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")
protected void initializeUI() {
facebook = new Facebook(APP_ID);
@ -239,11 +231,11 @@ public class ActFmLoginActivity extends FragmentActivity implements AuthListener
if(AmazonMarketStrategy.isKindleFire())
googleLogin.setVisibility(View.GONE);
googleLogin.setOnClickListener(googleListener);
Button signUp = (Button) findViewById(R.id.pw_signup);
TextView signUp = (TextView) findViewById(R.id.pw_signup);
signUp.setOnClickListener(signUpListener);
TextView signIn = (TextView) findViewById(R.id.pw_login);
setupSignIn(signIn);
signIn.setOnClickListener(signInListener);
setupTermsOfService((TextView) findViewById(R.id.tos));
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

@ -8,8 +8,8 @@
android:shape="rectangle">
<gradient
android:type="radial"
android:startColor="#88d0f4"
android:endColor="#60abd6"
android:startColor="#70cef1"
android:endColor="#2d8db6"
android:gradientRadius="300"
android:centerX="0.5"
android:centerY="0.5" />

@ -12,121 +12,116 @@
android:background="@drawable/astrid_com_gradient"
android:orientation="vertical" >
<TextView
android:id="@+id/intro"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_alignParentLeft="true"
android:textSize="16sp"
android:paddingTop="20dip"
android:textColor="#ffffff"
android:text="@string/actfm_ALA_body" />
<TextView
android:id="@+id/error"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#ff0000"
android:textSize="16sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<LinearLayout
android:layout_weight="1"
android:orientation="horizontal">
<ImageView
android:id="@+id/logo"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="50"
android:orientation="vertical" >
<ImageView
android:id="@+id/logo"
android:layout_width="fill_parent"
android:layout_height="110dip"
android:scaleType="fitCenter"
android:paddingLeft="20dip"
android:paddingRight="20dip"
android:paddingBottom="10dip"
android:src="@drawable/astrid_com_logo"
android:layout_gravity="center"
android:layout_weight="1" />
</LinearLayout>
android:scaleType="center"
android:paddingLeft="20dip"
android:paddingRight="20dip"
android:paddingBottom="10dip"
android:src="@drawable/astrid_com_logo_new"
android:layout_weight="1" />
<LinearLayout
android:id="@+id/LinearLayout1"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="50"
android:layout_weight="1"
android:gravity="center_vertical"
android:paddingTop="5dip" >
<Button
android:id="@+id/gg_login"
android:layout_width="match_parent"
android:layout_height="45dip"
android:layout_marginLeft="15dip"
android:layout_marginRight="15dip"
android:drawableLeft="@drawable/google"
android:paddingLeft="20dip"
android:paddingRight="20dip"
android:text="@string/actfm_ALA_gg_login"
android:textSize="12sp"
android:layout_gravity="center_horizontal" />
<com.facebook.android.LoginButton
android:id="@+id/fb_login"
android:layout_width="match_parent"
android:layout_height="45dip"
android:layout_marginLeft="15dip"
android:layout_marginRight="15dip"
android:drawableLeft="@drawable/facebook"
android:paddingLeft="20dip"
android:paddingRight="20dip"
android:text="@string/actfm_ALA_fb_login"
android:textSize="12sp"
android:layout_gravity="center_horizontal" />
<Button
android:id="@+id/pw_signup"
android:layout_width="match_parent"
android:layout_height="45dp"
android:paddingLeft="17dip"
android:paddingRight="20dip"
android:layout_marginLeft="15dip"
android:layout_marginRight="15dip"
android:drawableLeft="@drawable/notif_astrid"
android:textSize="12sp"
android:text="@string/welcome_login_pw"
android:layout_gravity="center_horizontal" />
android:id="@+id/fb_login"
android:layout_width="fill_parent"
android:layout_height="45dip"
android:layout_marginLeft="15dip"
android:layout_marginRight="15dip"
android:layout_marginBottom="15dip"
android:layout_marginTop="15dip"
android:paddingLeft="70dip"
android:textSize="14sp"
android:gravity="left|center_vertical"
android:background="@drawable/fb_login_background"
android:textColor="@android:color/white"
android:text="@string/actfm_ALA_fb_login" />
<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"/>
<Button
android:id="@+id/gg_login"
android:layout_width="fill_parent"
android:layout_height="45dip"
android:layout_marginLeft="15dip"
android:layout_marginRight="15dip"
android:paddingLeft="70dip"
android:textSize="14sp"
android:gravity="left|center_vertical"
android:background="@drawable/google_login_background"
android:textColor="@android:color/white"
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" />
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:visibility="invisible"
android:textColor="#ffffff" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="45dip"
android:orientation="horizontal">
<TextView
android:id="@+id/login_later"
android:text="@string/welcome_login_later"
android:layout_width="fill_parent"
android:layout_height="45dip"
android:gravity="center"
android:layout_weight="1"
android:textSize="16sp"
android:textColor="@android:color/white"
android:visibility="gone"/>
<TextView
android:id="@+id/pw_login"
android:layout_width="fill_parent"
android:layout_height="45dip"
android:layout_weight="1"
android:gravity="center"
android:textColor="@android:color/white"
android:textSize="16sp"
android:text="@string/welcome_sign_in"/>
<TextView
android:id="@+id/pw_signup"
android:layout_width="fill_parent"
android:layout_height="45dip"
android:layout_weight="1"
android:gravity="center"
android:textColor="@android:color/white"
android:textSize="16sp"
android:text="@string/welcome_login_pw"/>
</LinearLayout>
<TextView
android:id="@+id/error"
android:layout_width="fill_parent"
android:layout_height="45dip"
android:gravity="center"
android:textColor="#ff0000"
android:textSize="16sp"
android:textStyle="bold"
android:visibility="gone"/>
</LinearLayout>

@ -13,101 +13,99 @@
android:background="@drawable/astrid_com_gradient"
android:orientation="vertical">
<TextView
android:id="@+id/intro"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_alignParentLeft="true"
android:textSize="16sp"
android:paddingTop="20dip"
android:textColor="#ffffff"
android:text="@string/actfm_ALA_body" />
<ImageView
android:id="@+id/logo"
android:layout_width="fill_parent"
android:layout_height="110dip"
android:scaleType="fitCenter"
android:paddingLeft="20dip"
android:paddingRight="20dip"
android:paddingBottom="10dip"
android:src="@drawable/astrid_com_logo" />
android:layout_height="fill_parent"
android:layout_weight="1"
android:paddingTop="95dip"
android:scaleType="center"
android:src="@drawable/astrid_com_logo_new" />
<TextView
android:id="@+id/error"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_height="45dip"
android:gravity="center"
android:textColor="#ff0000"
android:textSize="16sp"
android:textStyle="bold" />
<RelativeLayout
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
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
android:id="@+id/pw_signup"
android:layout_width="fill_parent"
android:layout_height="45dip"
android:layout_above="@id/pw_login"
android:paddingLeft="17dip"
android:paddingRight="20dip"
android:layout_marginLeft="15dip"
android:layout_marginRight="15dip"
android:drawableLeft="@drawable/notif_astrid"
android:textSize="16sp"
android:text="@string/welcome_login_pw"/>
android:layout_height="wrap_content"
android:orientation="vertical">
<com.facebook.android.LoginButton
android:id="@+id/fb_login"
android:layout_width="fill_parent"
android:layout_height="45dip"
android:layout_above="@id/pw_signup"
android:paddingLeft="20dip"
android:paddingRight="20dip"
android:layout_marginLeft="15dip"
android:layout_marginRight="15dip"
android:layout_marginBottom="15dip"
android:paddingLeft="70dip"
android:textSize="16sp"
android:drawableLeft="@drawable/facebook"
android:gravity="left|center_vertical"
android:background="@drawable/fb_login_background"
android:textColor="@android:color/white"
android:text="@string/actfm_ALA_fb_login" />
<Button
android:id="@+id/gg_login"
android:layout_width="fill_parent"
android:layout_height="45dip"
android:layout_above="@id/fb_login"
android:paddingLeft="20dip"
android:paddingRight="20dip"
android:layout_marginLeft="15dip"
android:layout_marginRight="15dip"
android:paddingLeft="70dip"
android:textSize="16sp"
android:drawableLeft="@drawable/google"
android:gravity="left|center_vertical"
android:background="@drawable/google_login_background"
android:textColor="@android:color/white"
android:text="@string/actfm_ALA_gg_login" />
</RelativeLayout>
<TextView
android:id="@+id/tos"
android:layout_width="fill_parent"
android:layout_height="35dip"
android:gravity="center"
android:paddingLeft="20dip"
android:paddingRight="20dip"
android:textSize="12.5sp"
android:visibility="invisible"
android:textColor="#ffffff" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="45dip"
android:orientation="horizontal">
<TextView
android:id="@+id/login_later"
android:text="@string/welcome_login_later"
android:layout_width="fill_parent"
android:layout_height="45dip"
android:gravity="center"
android:layout_weight="1"
android:textSize="16sp"
android:textColor="@android:color/white"
android:visibility="gone"/>
<TextView
android:id="@+id/pw_login"
android:layout_width="fill_parent"
android:layout_height="45dip"
android:layout_weight="1"
android:gravity="center"
android:textColor="@android:color/white"
android:textSize="16sp"
android:text="@string/welcome_sign_in"/>
<TextView
android:id="@+id/pw_signup"
android:layout_width="fill_parent"
android:layout_height="45dip"
android:layout_weight="1"
android:gravity="center"
android:textColor="@android:color/white"
android:textSize="16sp"
android:text="@string/welcome_login_pw"/>
</LinearLayout>
</LinearLayout>

@ -112,6 +112,7 @@
android:paddingRight="20dip"
android:paddingBottom="5dip"
android:textSize="16sp"
android:text="@string/welcome_login_later"
android:textColor="#444444" />
</RelativeLayout>

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/astrid_com_gradient"
android:gravity="center_horizontal">
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:paddingTop="39dip"
android:src="@drawable/astrid_com_logo_new"
android:scaleType="center" />
<Button
android:id="@+id/quick_login_google"
android:layout_width="280dip"
android:layout_height="45dip"
android:textSize="16sp"
android:background="@drawable/google_login_background"
android:layout_marginBottom="15dip"/>
<TextView
android:id="@+id/quick_login_reject"
android:layout_width="wrap_content"
android:layout_height="45dip"
android:layout_marginBottom="70dip"
android:textSize="16sp"
android:textColor="@android:color/white"/>
</LinearLayout>

@ -234,15 +234,11 @@
<!-- share login: Sharing Login GG Prompt -->
<string name="actfm_ALA_gg_login">Connect with Google</string>
<!-- share login: Sharing Footer Password Label -->
<!-- share login: Quickly log in as <%s -> email> -->
<string name="actfm_quick_login">Sign in: %s</string>
<!-- share login: Sharing Password Link -->
<!-- share login: Password Are you a New User? -->
<!-- share login: Password Are you a Returning User? -->
<!-- share login: Name -->
<!-- share login: Reject quick login -->
<string name="actfm_quick_login_reject">Not %s?</string>
<!-- share login: Name -->
<string name="actfm_ALA_firstname_label">First Name</string>

@ -38,12 +38,12 @@
<string name="welcome_login_tos_link">Terms of Service</string>
<!-- slide 7e -->
<string name="welcome_login_pw">Sign up with email</string>
<string name="welcome_login_pw">Sign up</string>
<string name="welcome_sign_in">Sign in</string>
<string name="welcome_sign_in">Log in</string>
<!-- slide 7f -->
<string name="welcome_login_later">Connect Later</string>
<string name="welcome_login_later">Later</string>
<string name="welcome_login_confirm_later_title">Why not sign in?</string>

@ -201,6 +201,8 @@ public class StartupService {
final int finalLatestVersion = latestSetVersion;
abTests.externalInit(context);
abChooser.makeChoicesForAllTests(latestSetVersion == 0, taskService.getUserActivationStatus());
abTestInvoker.reportAcquisition();

@ -78,6 +78,9 @@ public class StatisticsConstants {
public static final String PREMIUM_PAGE_VIEWED = "premium-page-viewed";
public static final String FEATURED_LIST_CLONED = "featured-list-cloned";
public static final String ACTFM_LOGIN_SIMPLE = "actfm-login-simple";
public static final String ACTFM_LOGIN_SIMPLE_REJECTED = "actfm-login-simple-rejected";
public static final String SUBTASKS_HAS_TASKS = "subtasks-has-tasks";
public static final String SUBTASKS_ORDER_USED = "subtasks-order-used";
public static final String SUBTASKS_INDENT_USED = "subtasks-indent-used";

@ -8,6 +8,11 @@ package com.todoroo.astrid.service.abtesting;
import java.util.HashMap;
import java.util.Set;
import android.accounts.Account;
import android.content.Context;
import com.google.api.client.googleapis.extensions.android2.auth.GoogleAccountManager;
/**
* Helper class to define options with their probabilities and descriptions
* @author Sam Bosley <sam@astrid.com>
@ -20,6 +25,30 @@ public class ABTests {
initialize();
}
/**
* Initialization for any tests that require a context or other logic
* to be initialized should go here. This method is called from the startup
* service before any test choices are made, so it is safe to add
* tests here. It's also ok if this method is a no-op sometimes.
* @param context
*/
public void externalInit(Context context) {
// The outer 'if' statement is to prevent one test from being added one time
// and the other from being added later if the accounts changed
if (ABChooser.readChoiceForTest(AB_NEW_LOGIN_NO_GOOGLE) == ABChooser.NO_OPTION
&& ABChooser.readChoiceForTest(AB_NEW_LOGIN_YES_GOOGLE) == ABChooser.NO_OPTION) {
GoogleAccountManager am = new GoogleAccountManager(context);
Account[] accounts = am.getAccounts();
if (accounts == null || accounts.length == 0) {
addTest(AB_NEW_LOGIN_NO_GOOGLE, new int[] { 1, 1 },
new int[] { 1, 0 }, new String[] { "old-welcome", "new-welcome" }); //$NON-NLS-1$//$NON-NLS-2$
} else {
addTest(AB_NEW_LOGIN_YES_GOOGLE, new int[] { 1, 1, 1 },
new int[] { 1, 0, 0 }, new String[] { "old-welcome", "new-welcome", "new-quick-welcome" }); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
}
}
}
/**
* Gets the integer array of weighted probabilities for an option key
* @param key
@ -127,6 +156,10 @@ public class ABTests {
public static final String AB_DEFAULT_EDIT_TAB = "android_default_edit_tab"; //$NON-NLS-1$
public static final String AB_NEW_LOGIN_NO_GOOGLE = "android_new_login_n_google"; //$NON-NLS-1$
public static final String AB_NEW_LOGIN_YES_GOOGLE = "android_new_login_y_google"; //$NON-NLS-1$
private void initialize() {
addTest(AB_FEATURED_LISTS, new int[] { 1, 1 },

@ -21,11 +21,13 @@ import com.timsu.astrid.R;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.astrid.actfm.sync.ActFmPreferenceService;
import com.todoroo.astrid.service.abtesting.ABChooser;
import com.todoroo.astrid.service.abtesting.ABTests;
import com.viewpagerindicator.TitleProvider;
public class WelcomePagerAdapter extends PagerAdapter implements TitleProvider
{
private static int[] images = new int[] {
private final int[] images = new int[] {
R.drawable.welcome_walkthrough_1,
R.drawable.welcome_walkthrough_2,
R.drawable.welcome_walkthrough_3,
@ -34,7 +36,7 @@ public class WelcomePagerAdapter extends PagerAdapter implements TitleProvider
R.drawable.welcome_walkthrough_6,
0
};
private static int[] title = new int[] {
private final int[] title = new int[] {
R.string.welcome_title_1,
R.string.welcome_title_2,
R.string.welcome_title_3,
@ -43,7 +45,7 @@ public class WelcomePagerAdapter extends PagerAdapter implements TitleProvider
R.string.welcome_title_6,
R.string.welcome_title_7,
};
private static int[] body = new int[] {
private final int[] body = new int[] {
R.string.welcome_body_1,
R.string.welcome_body_2,
R.string.welcome_body_3,
@ -52,7 +54,7 @@ public class WelcomePagerAdapter extends PagerAdapter implements TitleProvider
R.string.welcome_body_6,
R.string.welcome_body_7,
};
private static int[] layouts = new int[] {
public final int[] layouts = new int[] {
R.layout.welcome_walkthrough_page,
R.layout.welcome_walkthrough_page,
R.layout.welcome_walkthrough_page,
@ -62,6 +64,8 @@ public class WelcomePagerAdapter extends PagerAdapter implements TitleProvider
R.layout.welcome_walkthrough_login_page,
};
public int fallbackLoginPage;
private final Context context;
public WelcomeWalkthrough parent;
@Autowired ActFmPreferenceService actFmPreferenceService;
@ -75,6 +79,28 @@ public class WelcomePagerAdapter extends PagerAdapter implements TitleProvider
title[title.length - 1] = R.string.welcome_title_7_return;
images[images.length - 1] = R.drawable.welcome_walkthrough_1;
body[body.length - 1] = R.string.welcome_body_7_return;
} else {
// Setup login page from AB tests
if (ABChooser.readChoiceForTest(ABTests.AB_NEW_LOGIN_YES_GOOGLE) != ABChooser.NO_OPTION) {
int choice = ABChooser.readChoiceForTest(ABTests.AB_NEW_LOGIN_YES_GOOGLE);
switch (choice) {
case 1:
fallbackLoginPage = layouts[layouts.length - 1] = R.layout.actfm_login_activity;
break;
case 2:
layouts[layouts.length - 1] = R.layout.welcome_walkthrough_simple_login;
fallbackLoginPage = R.layout.actfm_login_activity;
break;
default:
fallbackLoginPage = layouts[layouts.length - 1];
break;
}
} else if (ABChooser.readChoiceForTest(ABTests.AB_NEW_LOGIN_NO_GOOGLE) != ABChooser.NO_OPTION) {
int choice = ABChooser.readChoiceForTest(ABTests.AB_NEW_LOGIN_NO_GOOGLE);
fallbackLoginPage = layouts[layouts.length - 1];
if (choice == 1)
fallbackLoginPage = layouts[layouts.length - 1] = R.layout.actfm_login_activity;
}
}
}
@ -91,6 +117,11 @@ public class WelcomePagerAdapter extends PagerAdapter implements TitleProvider
return layouts.length;
}
public void changeLoginPage(int newLayout) {
layouts[layouts.length - 1] = newLayout;
notifyDataSetChanged();
}
@Override
public Object instantiateItem(final View pager, final int position) {
LayoutInflater inflater = LayoutInflater.from(context);

@ -6,23 +6,34 @@
package com.todoroo.astrid.welcome.tutorial;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.accounts.AccountManagerCallback;
import android.accounts.AccountManagerFuture;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextPaint;
import android.text.style.ClickableSpan;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.google.api.client.googleapis.extensions.android2.auth.GoogleAccountManager;
import com.timsu.astrid.R;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.actfm.ActFmGoogleAuthActivity;
import com.todoroo.astrid.actfm.ActFmLoginActivity;
import com.todoroo.astrid.gtasks.auth.ModernAuthManager;
import com.todoroo.astrid.service.StatisticsConstants;
import com.todoroo.astrid.service.StatisticsService;
import com.viewpagerindicator.CirclePageIndicator;
import com.viewpagerindicator.PageIndicator;
@ -68,6 +79,109 @@ public class WelcomeWalkthrough extends ActFmLoginActivity {
}
}
private int getLoginPageLayout() {
return mAdapter.fallbackLoginPage;
}
@Override
protected void initializeUI() {
String[] accounts = ModernAuthManager.getAccounts(this);
String email = null;
if (accounts != null && accounts.length > 0) {
email = accounts[0];
}
Button simpleLogin = (Button) findViewById(R.id.quick_login_google);
if (simpleLogin != null && !TextUtils.isEmpty(email)) {
initializeSimpleUI(email);
} else {
if (mAdapter != null && mAdapter.layouts[mAdapter.layouts.length - 1] != getLoginPageLayout())
mAdapter.changeLoginPage(getLoginPageLayout());
super.initializeUI();
}
}
private void initializeSimpleUI(final String email) {
Button simpleLogin = (Button) findViewById(R.id.quick_login_google);
simpleLogin.setText(getString(R.string.actfm_quick_login, email));
simpleLogin.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
StatisticsService.reportEvent(StatisticsConstants.ACTFM_LOGIN_SIMPLE);
final ProgressDialog pd = DialogUtilities.progressDialog(WelcomeWalkthrough.this, getString(R.string.gtasks_GLA_authenticating));
pd.show();
GoogleAccountManager accountManager = new GoogleAccountManager(WelcomeWalkthrough.this);
Account a = accountManager.getAccountByName(email);
AccountManagerCallback<Bundle> callback = new AccountManagerCallback<Bundle>() {
public void run(final AccountManagerFuture<Bundle> future) {
new Thread() {
@Override
public void run() {
try {
Bundle bundle = future.getResult(30, TimeUnit.SECONDS);
if (bundle.containsKey(AccountManager.KEY_AUTHTOKEN)) {
String authToken = bundle.getString(AccountManager.KEY_AUTHTOKEN);
onAuthTokenSuccess(email, authToken);
}
} catch (final Exception e) {
Log.e("actfm-google-auth", "Login Error", e); //$NON-NLS-1$ //$NON-NLS-2$
runOnUiThread(new Runnable() {
@Override
public void run() {
int error = e instanceof IOException ? R.string.gtasks_GLA_errorIOAuth :
R.string.gtasks_GLA_errorAuth;
Toast.makeText(WelcomeWalkthrough.this,
error,
Toast.LENGTH_LONG).show();
onAuthError();
}
});
} finally {
DialogUtilities.dismissDialog(WelcomeWalkthrough.this, pd);
}
}
}.start();
}
};
accountManager.manager.getAuthToken(a, ActFmGoogleAuthActivity.AUTH_TOKEN_TYPE, null, WelcomeWalkthrough.this, callback, null);
}
});
TextView rejectQuickLogin = (TextView) findViewById(R.id.quick_login_reject);
rejectQuickLogin.setText(getString(R.string.actfm_quick_login_reject, email));
rejectQuickLogin.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
StatisticsService.reportEvent(StatisticsConstants.ACTFM_LOGIN_SIMPLE_REJECTED);
switchToLoginPage();
}
});
}
private void onAuthTokenSuccess(final String email, final String authToken) {
runOnUiThread(new Runnable() {
@Override
public void run() {
authenticate(email, email, "", "google", authToken); //$NON-NLS-1$ //$NON-NLS-2$
}
});
}
private void onAuthError() {
runOnUiThread(new Runnable() {
@Override
public void run() {
switchToLoginPage();
}
});
}
private void switchToLoginPage() {
mAdapter.changeLoginPage(getLoginPageLayout());
mPager.setAdapter(mAdapter);
mPager.setCurrentItem(mAdapter.layouts.length - 1, false);
initializeUI();
}
public void onPageChanged(View view, int position) {
currentPage = position;
currentView = view;
@ -88,6 +202,7 @@ public class WelcomeWalkthrough extends ActFmLoginActivity {
currentView.findViewById(R.id.welcome_walkthrough_image).setOnClickListener(done);
}
}
((CirclePageIndicator) mIndicator).setVisibility(currentPage == mAdapter.getCount()-1 ? View.GONE : View.VISIBLE);
}
protected void setupPWLogin() {
@ -98,21 +213,7 @@ public class WelcomeWalkthrough extends ActFmLoginActivity {
protected void setupLoginLater() {
TextView loginLater = (TextView)currentView.findViewById(R.id.login_later);
loginLater.setOnClickListener(loginLaterListener);
String loginLaterBase = getString(R.string.welcome_login_later);
SpannableString loginLaterLink = new SpannableString(String.format("%s", loginLaterBase)); //$NON-NLS-1$
ClickableSpan laterSpan = new ClickableSpan() {
@Override
public void onClick(View widget) {
loginLaterListener.onClick(widget);
}
@Override
public void updateDrawState(TextPaint ds) {
ds.setUnderlineText(true);
ds.setColor(Color.rgb(68, 68, 68));
}
};
loginLaterLink.setSpan(laterSpan, 0, loginLaterBase.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
loginLater.setText(loginLaterLink);
loginLater.setVisibility(View.VISIBLE);
}

Loading…
Cancel
Save