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);
// }
// }
}