Mostly working simple login page in the welcome walkthrough

pull/14/head
Sam Bosley 13 years ago
parent 4d1f009aef
commit 56cd3d4beb

@ -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$

@ -0,0 +1,29 @@
<?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:src="@drawable/astrid_com_logo" />
<Button
android:id="@+id/quick_login_google"
android:layout_width="250dip"
android:layout_height="60dip"
android:layout_marginTop="30dip"
android:layout_marginBottom="15dip"/>
<TextView
android:id="@+id/quick_login_reject"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="60dip"
android:text="Not this person"/>
</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>

@ -25,7 +25,7 @@ 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 +34,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 +43,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,14 +52,14 @@ 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,
R.layout.welcome_walkthrough_page,
R.layout.welcome_walkthrough_page,
R.layout.welcome_walkthrough_page,
R.layout.welcome_walkthrough_login_page,
R.layout.welcome_walkthrough_simple_login,
};
private final Context context;
@ -91,6 +91,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,6 +6,14 @@
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;
@ -13,16 +21,22 @@ import android.support.v4.view.ViewPager;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextPaint;
import android.text.TextUtils;
import android.text.style.ClickableSpan;
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.viewpagerindicator.CirclePageIndicator;
import com.viewpagerindicator.PageIndicator;
@ -68,6 +82,90 @@ public class WelcomeWalkthrough extends ActFmLoginActivity {
}
}
@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] != R.layout.welcome_walkthrough_login_page)
mAdapter.changeLoginPage(R.layout.welcome_walkthrough_login_page);
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) {
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();
}
});
} 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) {
mAdapter.changeLoginPage(R.layout.welcome_walkthrough_login_page);
mPager.setAdapter(mAdapter);
mPager.setCurrentItem(mAdapter.layouts.length - 1, false);
initializeUI();
}
});
}
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$
}
});
}
public void onPageChanged(View view, int position) {
currentPage = position;
currentView = view;

Loading…
Cancel
Save