mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-06-06 08:29:08 +00:00
172 lines
6.2 KiB
Java
172 lines
6.2 KiB
Java
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
package org.mozilla.goanna.fxa.activities;
|
|
|
|
import java.util.Locale;
|
|
|
|
import org.mozilla.goanna.Locales;
|
|
import org.mozilla.goanna.R;
|
|
import org.mozilla.goanna.background.common.log.Logger;
|
|
import org.mozilla.goanna.background.fxa.FxAccountAgeLockoutHelper;
|
|
import org.mozilla.goanna.background.fxa.FxAccountUtils;
|
|
import org.mozilla.goanna.fxa.FirefoxAccounts;
|
|
import org.mozilla.goanna.fxa.FxAccountConstants;
|
|
import org.mozilla.goanna.sync.setup.activities.ActivityUtils;
|
|
|
|
import android.accounts.AccountAuthenticatorActivity;
|
|
import android.content.Intent;
|
|
import android.os.Bundle;
|
|
import android.os.SystemClock;
|
|
import android.view.View;
|
|
import android.view.View.OnClickListener;
|
|
import android.view.animation.AlphaAnimation;
|
|
import android.view.animation.Animation;
|
|
import android.view.animation.AnimationSet;
|
|
import android.view.animation.TranslateAnimation;
|
|
import android.widget.TextView;
|
|
|
|
/**
|
|
* Activity which displays sign up/sign in screen to the user.
|
|
*/
|
|
public class FxAccountGetStartedActivity extends AccountAuthenticatorActivity {
|
|
protected static final String LOG_TAG = FxAccountGetStartedActivity.class.getSimpleName();
|
|
|
|
private static final int CHILD_REQUEST_CODE = 1;
|
|
|
|
/**
|
|
* {@inheritDoc}
|
|
*/
|
|
@Override
|
|
public void onCreate(Bundle icicle) {
|
|
Logger.setThreadLogTag(FxAccountConstants.GLOBAL_LOG_TAG);
|
|
Logger.debug(LOG_TAG, "onCreate(" + icicle + ")");
|
|
|
|
Locales.initializeLocale(getApplicationContext());
|
|
|
|
super.onCreate(icicle);
|
|
|
|
setContentView(R.layout.fxaccount_get_started);
|
|
|
|
linkifyOldFirefoxLink();
|
|
|
|
View button = findViewById(R.id.get_started_button);
|
|
button.setOnClickListener(new OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
Bundle extras = null; // startFlow accepts null.
|
|
if (getIntent() != null) {
|
|
extras = getIntent().getExtras();
|
|
}
|
|
startFlow(extras);
|
|
}
|
|
});
|
|
|
|
animateIconIn();
|
|
}
|
|
|
|
/**
|
|
* Float the icon up, starting from below and moving up to its final layout
|
|
* position. Also, fade the icon in.
|
|
* <p>
|
|
* We animate relative to the size of the icon rather than from the bottom of
|
|
* the containing view for two reasons: first, the distance from bottom could
|
|
* be large on tablets; two, animating with absolute values requires that
|
|
* measurement has happened first, which requires a (sometimes buggy)
|
|
* onPreDrawListener.
|
|
*/
|
|
protected void animateIconIn() {
|
|
final AlphaAnimation a = new AlphaAnimation(0.0f, 1.0f);
|
|
final TranslateAnimation t = new TranslateAnimation(
|
|
Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f,
|
|
Animation.RELATIVE_TO_SELF, 2.0f, Animation.RELATIVE_TO_SELF, 0.0f);
|
|
|
|
final AnimationSet animationSet = new AnimationSet(true);
|
|
animationSet.setDuration(150 * 7); // Straight outta... fxa-content-server.
|
|
animationSet.addAnimation(a);
|
|
animationSet.addAnimation(t);
|
|
|
|
final View iconView = findViewById(R.id.icon);
|
|
iconView.startAnimation(animationSet);
|
|
}
|
|
|
|
protected void startFlow(Bundle extras) {
|
|
final Intent intent = new Intent(this, FxAccountCreateAccountActivity.class);
|
|
// Per http://stackoverflow.com/a/8992365, this triggers a known bug with
|
|
// the soft keyboard not being shown for the started activity. Why, Android, why?
|
|
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
|
|
if (extras != null) {
|
|
intent.putExtras(extras);
|
|
}
|
|
startActivityForResult(intent, CHILD_REQUEST_CODE);
|
|
}
|
|
|
|
@Override
|
|
public void onResume() {
|
|
super.onResume();
|
|
|
|
Intent intent = null;
|
|
if (FxAccountAgeLockoutHelper.isLockedOut(SystemClock.elapsedRealtime())) {
|
|
intent = new Intent(this, FxAccountCreateAccountNotAllowedActivity.class);
|
|
} else if (FirefoxAccounts.firefoxAccountsExist(this)) {
|
|
intent = new Intent(this, FxAccountStatusActivity.class);
|
|
}
|
|
|
|
if (intent != null) {
|
|
this.setAccountAuthenticatorResult(null);
|
|
setResult(RESULT_CANCELED);
|
|
// Per http://stackoverflow.com/a/8992365, this triggers a known bug with
|
|
// the soft keyboard not being shown for the started activity. Why, Android, why?
|
|
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
|
|
this.startActivity(intent);
|
|
this.finish();
|
|
}
|
|
|
|
// If we've been launched with extras (namely custom server URLs), continue
|
|
// past go and collect 200 dollars. If we ever get back here (for example,
|
|
// if the user hits the back button), forget that we had extras entirely, so
|
|
// that we don't enter a loop.
|
|
Bundle extras = null;
|
|
if (getIntent() != null) {
|
|
extras = getIntent().getExtras();
|
|
}
|
|
if (extras != null && extras.containsKey(FxAccountAbstractSetupActivity.EXTRA_EXTRAS)) {
|
|
getIntent().replaceExtras(Bundle.EMPTY);
|
|
startFlow((Bundle) extras.clone());
|
|
return;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* We started the CreateAccount activity for a result; this returns it to the
|
|
* authenticator.
|
|
*/
|
|
@Override
|
|
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
Logger.debug(LOG_TAG, "onActivityResult: " + requestCode + ", " + resultCode);
|
|
if (requestCode != CHILD_REQUEST_CODE) {
|
|
super.onActivityResult(requestCode, resultCode, data);
|
|
return;
|
|
}
|
|
|
|
this.setResult(requestCode, data);
|
|
if (data != null) {
|
|
this.setAccountAuthenticatorResult(data.getExtras());
|
|
|
|
// We want to drop ourselves off the back stack if the user successfully
|
|
// created or signed in to an account. We can easily determine this by
|
|
// checking for the presence of response data.
|
|
this.finish();
|
|
}
|
|
}
|
|
|
|
protected void linkifyOldFirefoxLink() {
|
|
TextView oldFirefox = (TextView) findViewById(R.id.old_firefox);
|
|
String text = getResources().getString(R.string.fxaccount_getting_started_old_firefox);
|
|
final String url = FirefoxAccounts.getOldSyncUpgradeURL(getResources(), Locale.getDefault());
|
|
FxAccountUtils.pii(LOG_TAG, "Old Firefox url is: " + url); // Don't want to leak locale in particular.
|
|
ActivityUtils.linkTextView(oldFirefox, text, url);
|
|
}
|
|
}
|