package com.amlogic.tzr.charismatic_yichang.activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.TextInputLayout; import android.text.Editable; import android.text.SpannableString; import android.text.Spanned; import android.text.TextWatcher; import android.text.style.StyleSpan; import android.util.Log; import android.view.View; import android.widget.AutoCompleteTextView; import android.widget.EditText; import android.widget.TextView; import com.amlogic.tzr.charismatic_yichang.AppManager; import com.amlogic.tzr.charismatic_yichang.ApplicationController; import com.amlogic.tzr.charismatic_yichang.BaseActivity; import com.amlogic.tzr.charismatic_yichang.R; import com.amlogic.tzr.charismatic_yichang.bean.User; import com.amlogic.tzr.charismatic_yichang.event.LoginEvent; import com.gc.materialdesign.views.ButtonFlat; import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; import com.google.android.gms.common.SignInButton; import cn.bmob.v3.BmobUser; import cn.bmob.v3.exception.BmobException; import cn.bmob.v3.listener.LogInListener; import de.greenrobot.event.EventBus; /** * A login screen that offers login via email/password and via Google+ sign in. * <p/> * ************ IMPORTANT SETUP NOTES: ************ * In order for Google+ sign in to work with your app, you must first go to: * https://developers.google.com/+/mobile/android/getting-started#step_1_enable_the_google_api * and follow the steps in "Step 1" to create an OAuth 2.0 client for your package. */ public class LoginActivity extends BaseActivity implements View.OnClickListener{ /** * Keep track of the login task to ensure we can cancel it if requested. */ // private UserLoginTask mAuthTask = null; // UI references. private AutoCompleteTextView mEmailView; private EditText mPasswordView; private View mEmailLoginFormView; private SignInButton mPlusSignInButton; private View mSignOutButtons; private View mLoginFormView; private Context mContext; private EditText et_userName,et_passWord; private TextInputLayout til_userName,til_passWord; private TextView tv_title; private ButtonFlat btn_login,btn_register; private ProgressBarCircularIndeterminate mProgressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); mContext=LoginActivity.this; initView(); // Set up the login form. // mEmailView = (AutoCompleteTextView) findViewById(R.id.email); // populateAutoComplete(); // // 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; // } // }); // Button mEmailSignInButton = (Button) findViewById(R.id.email_sign_in_button); // mEmailSignInButton.setOnClickListener(new OnClickListener() { // @Override // public void onClick(View view) { // attemptLogin(); // } // }); // mLoginFormView = findViewById(R.id.login_form); // mProgressView = findViewById(R.id.login_progress); // mEmailLoginFormView = findViewById(R.id.email_login_form); // mSignOutButtons = findViewById(R.id.plus_sign_out_buttons); } private void initView() { et_userName= (EditText) findViewById(R.id.et_name); et_passWord= (EditText) findViewById(R.id.et_pw); mProgressBar = (ProgressBarCircularIndeterminate)findViewById(R.id.pb_al_progress); til_userName= (TextInputLayout) findViewById(R.id.til_name); til_passWord= (TextInputLayout) findViewById(R.id.til_pwd); til_userName.setHint(getResources().getString(R.string.prompt_account)); til_passWord.setHint(getResources().getString(R.string.prompt_password)); et_userName.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { if (s.toString().length() < 6) { btn_login.setEnabled(false); til_userName.setError(getResources().getString(R.string.error_invalid_account)); til_userName.setErrorEnabled(true); } else { btn_login.setEnabled(true); til_userName.setErrorEnabled(false); } } }); et_passWord.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { if (s.toString().length() <6) { btn_login.setEnabled(false); til_passWord.setError(getResources().getString(R.string.error_invalid_password)); til_passWord.setErrorEnabled(true); } else { btn_login.setEnabled(true); til_passWord.setErrorEnabled(false); } } }); tv_title= (TextView) findViewById(R.id.tv_al_title); btn_login= (ButtonFlat) findViewById(R.id.btn_al_login); btn_register= (ButtonFlat) findViewById(R.id.btn_al_register); btn_register.setOnClickListener(this); btn_login.setOnClickListener(this); SpannableString msp = new SpannableString(getResources().getString(R.string.app_name)); msp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC),0,4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); tv_title.setText(msp); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn_al_register: startActivity(new Intent(LoginActivity.this, RegisterPhoneActivity.class)); // startActivity(new Intent(LoginActivity.this, RegisterActivity.class)); finish(); break; case R.id.btn_al_login: mProgressBar.setVisibility(View.VISIBLE); String user_name=et_userName.getText().toString().trim(); String user_pw=et_passWord.getText().toString().trim(); BmobUser.loginByAccount(this,user_name, user_pw, new LogInListener<User>() { @Override public void done(User user, BmobException e) { // TODO Auto-generated method stub mProgressBar.setVisibility(View.GONE); if (user != null) { ApplicationController.getInstance().setUser(BmobUser.getCurrentUser(mContext, User.class)); Log.e("LoginActivity","user=="+user.toString()); EventBus.getDefault().post((new LoginEvent(true, user))); AppManager.getAppManager().finishActivity(); } } }); break; } } // private void populateAutoComplete() { // getLoaderManager().initLoader(0, null, this); // } /** * 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. // String email = mEmailView.getText().toString(); // String password = mPasswordView.getText().toString(); // // boolean cancel = false; // View focusView = null; // // // Check for a valid password, if the user entered one. // if (!TextUtils.isEmpty(password) && !isPasswordValid(password)) { // mPasswordView.setError(getString(R.string.error_invalid_password)); // focusView = mPasswordView; // cancel = true; // } // // // Check for a valid email address. // if (TextUtils.isEmpty(email)) { // mEmailView.setError(getString(R.string.error_field_required)); // focusView = mEmailView; // cancel = true; // } else if (!isEmailValid(email)) { // 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. // showProgress(true); // mAuthTask = new UserLoginTask(email, password); // mAuthTask.execute((Void) null); // } // } // // private boolean isEmailValid(String email) { // //TODO: Replace this with your own logic // return email.contains("@"); // } // // private boolean isPasswordValid(String password) { // //TODO: Replace this with your own logic // return password.length() > 4; // } // // /** // * Shows the progress UI and hides the login form. // */ // @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2) // public 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); // // mLoginFormView.setVisibility(show ? View.GONE : 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); // } // }); // // mProgressView.setVisibility(show ? View.VISIBLE : View.GONE); // mProgressView.animate().setDuration(shortAnimTime).alpha( // show ? 1 : 0).setListener(new AnimatorListenerAdapter() { // @Override // public void onAnimationEnd(Animator animation) { // mProgressView.setVisibility(show ? View.VISIBLE : View.GONE); // } // }); // } else { // // The ViewPropertyAnimator APIs are not available, so simply show // // and hide the relevant UI components. // mProgressView.setVisibility(show ? View.VISIBLE : View.GONE); // mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE); // } // } // // // // // /** // * Check if the device supports Google Play Services. It's best // * practice to check first rather than handling this as an error case. // * // * @return whether the device supports Google Play Services // */ // private boolean supportsGooglePlayServices() { // return GooglePlayServicesUtil.isGooglePlayServicesAvailable(this) == // ConnectionResult.SUCCESS; // } // // // private void addEmailsToAutoComplete(List<String> emailAddressCollection) { // //Create adapter to tell the AutoCompleteTextView what to show in its dropdown list. // ArrayAdapter<String> adapter = // new ArrayAdapter<String>(LoginActivity.this, // android.R.layout.simple_dropdown_item_1line, emailAddressCollection); // // mEmailView.setAdapter(adapter); // } // // /** // * Represents an asynchronous login/registration task used to authenticate // * the user. // */ // public class UserLoginTask extends AsyncTask<Void, Void, Boolean> { // // private final String mEmail; // private final String mPassword; // // UserLoginTask(String email, String password) { // mEmail = email; // mPassword = password; // } // // @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); // } // } }