diff options
Diffstat (limited to 'templates/activities/LoginActivity/root')
7 files changed, 0 insertions, 411 deletions
diff --git a/templates/activities/LoginActivity/root/AndroidManifest.xml.ftl b/templates/activities/LoginActivity/root/AndroidManifest.xml.ftl deleted file mode 100644 index c5f02d2..0000000 --- a/templates/activities/LoginActivity/root/AndroidManifest.xml.ftl +++ /dev/null @@ -1,19 +0,0 @@ -<manifest xmlns:android="http://schemas.android.com/apk/res/android" > - - <application> - <activity android:name=".${activityClass}" - <#if isNewProject> - android:label="@string/app_name" - <#else> - android:label="@string/title_${simpleName}" - </#if> - android:windowSoftInputMode="adjustResize|stateVisible" - <#if buildApi gte 16 && parentActivityClass != "">android:parentActivityName="${parentActivityClass}"</#if>> - <#if parentActivityClass != ""> - <meta-data android:name="android.support.PARENT_ACTIVITY" - android:value="${parentActivityClass}" /> - </#if> - </activity> - </application> - -</manifest> diff --git a/templates/activities/LoginActivity/root/res/layout/activity_login.xml.ftl b/templates/activities/LoginActivity/root/res/layout/activity_login.xml.ftl deleted file mode 100644 index 9434e5b..0000000 --- a/templates/activities/LoginActivity/root/res/layout/activity_login.xml.ftl +++ /dev/null @@ -1,69 +0,0 @@ -<merge xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - tools:context=".${activityClass}"> - - <!-- Login progress --> - <LinearLayout android:id="@+id/login_status" - android:visibility="gone" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center" - android:gravity="center_horizontal" - android:orientation="vertical"> - <ProgressBar style="?android:attr/progressBarStyleLarge" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginBottom="8dp"/> - <TextView - android:id="@+id/login_status_message" - android:textAppearance="?android:attr/textAppearanceMedium" - android:fontFamily="sans-serif-light" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginBottom="16dp" - android:text="@string/login_progress_signing_in" /> - </LinearLayout> - - <!-- Login form --> - <ScrollView - android:id="@+id/login_form" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - <LinearLayout style="@style/LoginFormContainer" - android:orientation="vertical"> - - <EditText - android:id="@+id/email" - android:singleLine="true" - android:maxLines="1" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:inputType="textEmailAddress" - android:hint="@string/prompt_email" /> - - <EditText - android:id="@+id/password" - android:singleLine="true" - android:maxLines="1" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:hint="@string/prompt_password" - android:inputType="textPassword" - android:imeActionLabel="@string/action_sign_in_short" - android:imeActionId="@+id/login" - android:imeOptions="actionUnspecified" /> - - <Button android:id="@+id/sign_in_button" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="16dp" - android:text="@string/action_sign_in_register" - android:paddingLeft="32dp" - android:paddingRight="32dp" - android:layout_gravity="right" /> - - </LinearLayout> - - </ScrollView> -</merge> diff --git a/templates/activities/LoginActivity/root/res/menu/activity_login.xml b/templates/activities/LoginActivity/root/res/menu/activity_login.xml deleted file mode 100644 index 2965794..0000000 --- a/templates/activities/LoginActivity/root/res/menu/activity_login.xml +++ /dev/null @@ -1,5 +0,0 @@ -<menu xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:id="@+id/action_forgot_password" - android:title="@string/action_forgot_password" - android:showAsAction="never" /> -</menu> diff --git a/templates/activities/LoginActivity/root/res/values-large/styles.xml b/templates/activities/LoginActivity/root/res/values-large/styles.xml deleted file mode 100644 index 7b56acd..0000000 --- a/templates/activities/LoginActivity/root/res/values-large/styles.xml +++ /dev/null @@ -1,10 +0,0 @@ -<resources> - - <style name="LoginFormContainer"> - <item name="android:layout_width">400dp</item> - <item name="android:layout_height">wrap_content</item> - <item name="android:layout_gravity">center</item> - <item name="android:padding">16dp</item> - </style> - -</resources> diff --git a/templates/activities/LoginActivity/root/res/values/strings.xml.ftl b/templates/activities/LoginActivity/root/res/values/strings.xml.ftl deleted file mode 100644 index def1b2f..0000000 --- a/templates/activities/LoginActivity/root/res/values/strings.xml.ftl +++ /dev/null @@ -1,21 +0,0 @@ -<resources> - <#if !isNewProject> - <string name="title_${simpleName}">${escapeXmlString(activityTitle)}</string> - </#if> - - <!-- Strings related to login --> - <string name="prompt_email">Email</string> - <string name="prompt_password">Password</string> - - <string name="action_sign_in_register"><b>Sign in</b> or register</string> - <string name="action_sign_in_short">Sign in</string> - - <string name="action_forgot_password">Recover lost password</string> - - <string name="login_progress_signing_in">Signing in…</string> - - <string name="error_invalid_email">This email address is invalid</string> - <string name="error_invalid_password">This password is too short</string> - <string name="error_incorrect_password">This password is incorrect</string> - <string name="error_field_required">This field is required</string> -</resources> diff --git a/templates/activities/LoginActivity/root/res/values/styles.xml b/templates/activities/LoginActivity/root/res/values/styles.xml deleted file mode 100644 index eaec28d..0000000 --- a/templates/activities/LoginActivity/root/res/values/styles.xml +++ /dev/null @@ -1,9 +0,0 @@ -<resources> - - <style name="LoginFormContainer"> - <item name="android:layout_width">match_parent</item> - <item name="android:layout_height">wrap_content</item> - <item name="android:padding">16dp</item> - </style> - -</resources> diff --git a/templates/activities/LoginActivity/root/src/app_package/LoginActivity.java.ftl b/templates/activities/LoginActivity/root/src/app_package/LoginActivity.java.ftl deleted file mode 100644 index 8defdc7..0000000 --- a/templates/activities/LoginActivity/root/src/app_package/LoginActivity.java.ftl +++ /dev/null @@ -1,278 +0,0 @@ -package ${packageName}; - -import android.animation.Animator; -import android.animation.AnimatorListenerAdapter; -import android.annotation.TargetApi; -import android.app.Activity; -import android.os.AsyncTask; -import android.os.Build; -import android.os.Bundle; -import android.text.TextUtils; -import android.view.KeyEvent; -import android.view.Menu; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.EditText; -import android.widget.TextView; -<#if parentActivityClass != ""> -import android.view.MenuItem; -import android.support.v4.app.NavUtils; -</#if> - -/** - * Activity which displays a login screen to the user, offering registration as - * well. - */ -public class ${activityClass} extends Activity { - /** - * A dummy authentication store containing known user names and passwords. - * TODO: remove after connecting to a real authentication system. - */ - private static final String[] DUMMY_CREDENTIALS = new String[]{ - "foo@example.com:hello", - "bar@example.com:world" - }; - - /** - * The default email to populate the email field with. - */ - public static final String EXTRA_EMAIL = "com.example.android.authenticatordemo.extra.EMAIL"; - - /** - * Keep track of the login task to ensure we can cancel it if requested. - */ - private UserLoginTask mAuthTask = null; - - // Values for email and password at the time of the login attempt. - private String mEmail; - private String mPassword; - - // UI references. - private EditText mEmailView; - private EditText mPasswordView; - private View mLoginFormView; - private View mLoginStatusView; - private TextView mLoginStatusMessageView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - setContentView(R.layout.${layoutName}); - <#if parentActivityClass != ""> - setupActionBar(); - </#if> - - // Set up the login form. - mEmail = getIntent().getStringExtra(EXTRA_EMAIL); - mEmailView = (EditText) findViewById(R.id.email); - mEmailView.setText(mEmail); - - mPasswordView = (EditText) findViewById(R.id.password); - mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) { - if (id == R.id.login || id == EditorInfo.IME_NULL) { - attemptLogin(); - return true; - } - return false; - } - }); - - mLoginFormView = findViewById(R.id.login_form); - mLoginStatusView = findViewById(R.id.login_status); - mLoginStatusMessageView = (TextView) findViewById(R.id.login_status_message); - - findViewById(R.id.sign_in_button).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - attemptLogin(); - } - }); - } - - <#if parentActivityClass != ""> - /** - * Set up the {@link android.app.ActionBar}, if the API is available. - */ - @TargetApi(Build.VERSION_CODES.HONEYCOMB) - private void setupActionBar() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - // Show the Up button in the action bar. - getActionBar().setDisplayHomeAsUpEnabled(true); - } - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - // This ID represents the Home or Up button. In the case of this - // activity, the Up button is shown. Use NavUtils to allow users - // to navigate up one level in the application structure. For - // more details, see the Navigation pattern on Android Design: - // - // http://developer.android.com/design/patterns/navigation.html#up-vs-back - // - // TODO: If Settings has multiple levels, Up should navigate up - // that hierarchy. - NavUtils.navigateUpFromSameTask(this); - return true; - } - return super.onOptionsItemSelected(item); - } - </#if> - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - super.onCreateOptionsMenu(menu); - getMenuInflater().inflate(R.menu.${menuName}, menu); - return true; - } - - /** - * Attempts to sign in or register the account specified by the login form. - * If there are form errors (invalid email, missing fields, etc.), the - * errors are presented and no actual login attempt is made. - */ - public void attemptLogin() { - if (mAuthTask != null) { - return; - } - - // Reset errors. - mEmailView.setError(null); - mPasswordView.setError(null); - - // Store values at the time of the login attempt. - mEmail = mEmailView.getText().toString(); - mPassword = mPasswordView.getText().toString(); - - boolean cancel = false; - View focusView = null; - - // Check for a valid password. - if (TextUtils.isEmpty(mPassword)) { - mPasswordView.setError(getString(R.string.error_field_required)); - focusView = mPasswordView; - cancel = true; - } else if (mPassword.length() < 4) { - mPasswordView.setError(getString(R.string.error_invalid_password)); - focusView = mPasswordView; - cancel = true; - } - - // Check for a valid email address. - if (TextUtils.isEmpty(mEmail)) { - mEmailView.setError(getString(R.string.error_field_required)); - focusView = mEmailView; - cancel = true; - } else if (!mEmail.contains("@")) { - mEmailView.setError(getString(R.string.error_invalid_email)); - focusView = mEmailView; - cancel = true; - } - - if (cancel) { - // There was an error; don't attempt login and focus the first - // form field with an error. - focusView.requestFocus(); - } else { - // Show a progress spinner, and kick off a background task to - // perform the user login attempt. - mLoginStatusMessageView.setText(R.string.login_progress_signing_in); - showProgress(true); - mAuthTask = new UserLoginTask(); - mAuthTask.execute((Void) null); - } - } - - /** - * Shows the progress UI and hides the login form. - */ - @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2) - private void showProgress(final boolean show) { - // On Honeycomb MR2 we have the ViewPropertyAnimator APIs, which allow - // for very easy animations. If available, use these APIs to fade-in - // the progress spinner. - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) { - int shortAnimTime = getResources().getInteger(android.R.integer.config_shortAnimTime); - - mLoginStatusView.setVisibility(View.VISIBLE); - mLoginStatusView.animate() - .setDuration(shortAnimTime) - .alpha(show ? 1 : 0) - .setListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - mLoginStatusView.setVisibility(show ? View.VISIBLE : View.GONE); - } - }); - - mLoginFormView.setVisibility(View.VISIBLE); - mLoginFormView.animate() - .setDuration(shortAnimTime) - .alpha(show ? 0 : 1) - .setListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE); - } - }); - } else { - // The ViewPropertyAnimator APIs are not available, so simply show - // and hide the relevant UI components. - mLoginStatusView.setVisibility(show ? View.VISIBLE : View.GONE); - mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE); - } - } - - /** - * Represents an asynchronous login/registration task used to authenticate - * the user. - */ - public class UserLoginTask extends AsyncTask<Void, Void, Boolean> { - @Override - protected Boolean doInBackground(Void... params) { - // TODO: attempt authentication against a network service. - - try { - // Simulate network access. - Thread.sleep(2000); - } catch (InterruptedException e) { - return false; - } - - for (String credential : DUMMY_CREDENTIALS) { - String[] pieces = credential.split(":"); - if (pieces[0].equals(mEmail)) { - // Account exists, return true if the password matches. - return pieces[1].equals(mPassword); - } - } - - // TODO: register the new account here. - return true; - } - - @Override - protected void onPostExecute(final Boolean success) { - mAuthTask = null; - showProgress(false); - - if (success) { - finish(); - } else { - mPasswordView.setError(getString(R.string.error_incorrect_password)); - mPasswordView.requestFocus(); - } - } - - @Override - protected void onCancelled() { - mAuthTask = null; - showProgress(false); - } - } -} |