package com.pandocloud.freeiot.ui.login; import com.loopj.android.http.BaseJsonHttpResponseHandler; import com.pandocloud.android.api.interfaces.RequestListener; import com.pandocloud.android.api.interfaces.SimpleRequestListener; import com.pandocloud.freeiot.R; import com.pandocloud.freeiot.api.UserApi; import com.pandocloud.freeiot.api.WrapperBaseJsonHttpResponseHandler; import com.pandocloud.freeiot.ui.MainActivity; import com.pandocloud.freeiot.ui.app.AppConstants; import com.pandocloud.freeiot.ui.app.UserState; import com.pandocloud.freeiot.ui.base.BaseActivity; import com.pandocloud.freeiot.ui.bean.http.UserLoginResponse; import com.pandocloud.freeiot.ui.helper.ProductInfoHelper; import com.pandocloud.freeiot.ui.urlconfig.UrlConfigActivity; import com.pandocloud.freeiot.utils.ActivityUtils; import com.pandocloud.freeiot.utils.AnalyticsUtils; import com.pandocloud.freeiot.utils.CommonUtils; import com.pandocloud.freeiot.utils.ErrorCodeHelper; import com.pandocloud.freeiot.utils.GsonUtils; import com.pandocloud.freeiot.utils.LogUtils; import com.umeng.analytics.MobclickAgent; import org.apache.http.Header; import android.content.DialogInterface; import android.content.DialogInterface.OnDismissListener; import android.content.Intent; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.widget.EditText; public class LoginActivity extends BaseActivity implements OnClickListener { public static final int REIGSTER_REQUEST_CODE = 11; private EditText mPhoneEditView; private EditText mPasswordEditView; private ProductInfoHelper mProductInfoHelper; @Override protected void onCreate(Bundle savedInstances) { super.onCreate(savedInstances); setContentView(R.layout.activity_login); mPhoneEditView = (EditText) findViewById(R.id.mobile); mPasswordEditView = (EditText)findViewById(R.id.pwd); findViewById(R.id.login_btn).setOnClickListener(this); findViewById(R.id.register_btn).setOnClickListener(this); findViewById(R.id.reset_btn).setOnClickListener(this); findViewById(R.id.title).setOnClickListener(this); mProductInfoHelper = new ProductInfoHelper(requestListener); } @Override protected void onResume() { super.onResume(); MobclickAgent.onPageStart(AnalyticsUtils.AnalyticsViewKeys.VIEW_LOGIN_ACTIVITY); MobclickAgent.onResume(this); } @Override protected void onPause() { super.onPause(); MobclickAgent.onPageEnd(AnalyticsUtils.AnalyticsViewKeys.VIEW_LOGIN_ACTIVITY); MobclickAgent.onPause(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.title: handlerTitleClick(); break; case R.id.login_btn: login(); break; case R.id.register_btn: ActivityUtils.start(LoginActivity.this, RegisterActivity.class, REIGSTER_REQUEST_CODE, R.anim.slide_in_from_right, R.anim.slide_out_to_left); break; case R.id.reset_btn: ActivityUtils.start(LoginActivity.this, ResetPwdActivity.class, R.anim.slide_in_from_right, R.anim.slide_out_to_left); break; default: break; } } private int count = 0; private long lastClickTime = 0; public void handlerTitleClick() { long currentTime = System.currentTimeMillis(); if (currentTime - lastClickTime < 500) { lastClickTime = currentTime; count ++; if (count > 6) { count = 0; ActivityUtils.start(LoginActivity.this, UrlConfigActivity.class, UrlConfigActivity.URL_CONFIG_REQUEST_CODE, R.anim.slide_in_from_right, R.anim.slide_out_to_left); } } else { lastClickTime = currentTime; count = 1; } } public void login() { String phone = mPhoneEditView.getText().toString().trim(); if (TextUtils.isEmpty(phone)) { CommonUtils.ToastMsg(this, R.string.error_empty_mobile); return; } String pwd = mPasswordEditView.getText().toString().trim(); if (TextUtils.isEmpty(pwd)) { CommonUtils.ToastMsg(this, R.string.error_login_pwd_empty); return; } MobclickAgent.onEvent(this, AnalyticsUtils.AnalyticsEventKeys.EVENT_LOGIN); UserApi.login(LoginActivity.this, AppConstants.PRODUCT_KEY, null, phone, null, pwd, new BaseJsonHttpResponseHandler<UserLoginResponse>() { @Override public void onStart() { requestListener.onPrepare(); } @Override public void onFailure(int statusCode, Header[] headers, Throwable throwable, String rawJsonData, UserLoginResponse errorResponse) { CommonUtils.dismissDialog(); WrapperBaseJsonHttpResponseHandler.handlerFailedToast(LoginActivity.this, statusCode, throwable); } @Override public void onSuccess(int statusCode, Header[] headers, String rawJsonData, UserLoginResponse response) { if (response.isSuccess()) { if (response.data != null) { UserState.getInstances(LoginActivity.this).saveAccessToken(response.data.access_token); } mProductInfoHelper.getProductInfo(LoginActivity.this); } else { CommonUtils.dismissDialog(); CommonUtils.ToastMsg(LoginActivity.this, ErrorCodeHelper.getInstances(LoginActivity.this).getErrorMessage(response.code)); } } @Override protected UserLoginResponse parseResponse(String rawJsonData, boolean isFailure) throws Throwable { LogUtils.d("UserApi#login-> parseResponse: " + rawJsonData); if (!isFailure && !TextUtils.isEmpty(rawJsonData)) { return GsonUtils.getInstance().getGson().fromJson(rawJsonData, UserLoginResponse.class); } return null; } }); } private RequestListener requestListener = new SimpleRequestListener() { public void onPrepare() { CommonUtils.showProgressDialog(LoginActivity.this, null, getString(R.string.logining), new OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { LogUtils.d("progress dialog onDissmiss Listener, cancel login..."); UserApi.cancel(LoginActivity.this, true); } }); } @Override public void onSuccess() { CommonUtils.ToastMsg(LoginActivity.this, R.string.login_success); ActivityUtils.start(LoginActivity.this, MainActivity.class, R.anim.slide_in_from_right, R.anim.slide_out_to_left); finish(); } @Override public void onFinish() { CommonUtils.dismissDialog(); } @Override public void onFail(Exception e) { UserState.getInstances(LoginActivity.this).clear(); CommonUtils.ToastMsg(LoginActivity.this, R.string.login_failed); } }; @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { if (requestCode == REIGSTER_REQUEST_CODE) { finish(); } } super.onActivityResult(requestCode, resultCode, data); } @Override protected void onDestroy() { UserApi.cancel(LoginActivity.this, true); super.onDestroy(); } }