package com.cheng.mvpframestudy.themvp.presenter.activity; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.Toast; import com.cheng.mvpframestudy.R; import com.cheng.mvpframestudy.themvp.frame.presenter.ActivityPresenter; import com.cheng.mvpframestudy.themvp.model.i.ILoginModel; import com.cheng.mvpframestudy.themvp.model.impl.LoginModelImpl; import com.cheng.mvpframestudy.themvp.presenter.i.OnLoginListener; import com.cheng.mvpframestudy.themvp.ui.delegate.LoginDelegate; import com.cheng.utils.Logger; import de.greenrobot.event.EventBus; public class LoginActivity extends ActivityPresenter<LoginDelegate> implements View .OnClickListener, OnLoginListener { private ILoginModel mLoginModel; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initData(); initEventBus(); } private void initData() { Logger.TAG = LoginActivity.class.getSimpleName(); mLoginModel = new LoginModelImpl(); } private void initEventBus() { EventBus.getDefault().register(this); } @Override protected void bindEventListener() { super.bindEventListener(); viewDelegate.setOnClickListener(this, R.id.email_sign_in_button); } @Override protected Class<LoginDelegate> getDelegateClass() { return LoginDelegate.class; } @Override public void onClick(View v) { switch (v.getId()) { case R.id.email_sign_in_button: login(); break; } } private void login() { // Reset errors. viewDelegate.setEmailError(null); viewDelegate.setPasswordError(null); // Store values at the time of the login attempt. String email = viewDelegate.getEmail(); String password = viewDelegate.getPassword(); boolean cancel = false; int focusView = 0; // Check for a valid password, if the user entered one. if (!TextUtils.isEmpty(password) && !isPasswordValid(password)) { viewDelegate.setPasswordError(viewDelegate.getStringFromResource(R.string.error_invalid_password)); focusView = 1; cancel = true; } // Check for a valid email address. if (TextUtils.isEmpty(email)) { viewDelegate.setEmailError(viewDelegate.getStringFromResource(R.string.error_field_required)); focusView = 0; cancel = true; } else if (!isEmailValid(email)) { viewDelegate.setEmailError(viewDelegate.getStringFromResource(R.string.error_invalid_email)); focusView = 0; cancel = true; } if (cancel) { if (focusView == 0) { viewDelegate.emailRequestFocus(); } else { viewDelegate.passwordRequestFocus(); } } else { viewDelegate.showProgress(true); mLoginModel.login(email, password, this); mLoginModel.login(email, password); } } private boolean isEmailValid(String email) { return email.contains("@"); } private boolean isPasswordValid(String password) { return password.length() > 4; } public void onEventMainThread(LoginModelImpl loginModel) { Logger.e(loginModel.toString()); } @Override public void onSuccess() { Toast.makeText(this.getApplicationContext(), "Login Success", 1).show(); } @Override public void onError() { Logger.e("Error"); } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); } }