package com.example.qingyangdemo.ui;
import android.content.Context;
import android.graphics.drawable.AnimationDrawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ViewSwitcher;
import com.example.qingyangdemo.R;
import com.example.qingyangdemo.base.AppException;
import com.example.qingyangdemo.base.AppManager;
import com.example.qingyangdemo.base.BaseActivity;
import com.example.qingyangdemo.base.BaseApplication;
import com.example.qingyangdemo.bean.User;
import com.example.qingyangdemo.common.StringUtil;
import com.example.qingyangdemo.common.UIHelper;
/**
* 用户登录对话框
*
* @author 赵庆洋
*
*/
public class LoginDialog extends BaseActivity implements OnClickListener {
private ViewSwitcher viewSwitcher;
private ImageButton btn_close;
private Button btn_login;
private AutoCompleteTextView account;
private EditText password;
private View loginLoading;
private CheckBox rememberMe;
private InputMethodManager imm;
private AnimationDrawable loadingAnimation;
private BaseApplication application;
private User user;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.login_dialog);
application = (BaseApplication) getApplication();
imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
initView();
}
private void initView() {
viewSwitcher = (ViewSwitcher) findViewById(R.id.logindialog_view_switcher);
loginLoading = (View) findViewById(R.id.login_loading);
account = (AutoCompleteTextView) findViewById(R.id.login_account);
password = (EditText) findViewById(R.id.login_password);
rememberMe = (CheckBox) findViewById(R.id.login_checkbox_rememberMe);
btn_close = (ImageButton) findViewById(R.id.login_close_button);
btn_login = (Button) findViewById(R.id.login_btn_login);
btn_login.setOnClickListener(this);
btn_close.setOnClickListener(this);
// 是否显示登录信息
BaseApplication application = (BaseApplication) getApplication();
User user = application.getLoginInfo();
if (user == null || !user.isRememberMe()) {
return;
}
if (!StringUtil.isEmpty(user.getName())) {
account.setText(user.getName());
account.selectAll();
rememberMe.setChecked(user.isRememberMe());
}
if (!StringUtil.isEmpty(user.getPassword())) {
password.setText(user.getPassword());
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.login_close_button:
finish();
break;
case R.id.login_btn_login:
// 隐藏软键盘
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
String username = account.getText().toString();
String pwd = password.getText().toString();
boolean isRememberMe = rememberMe.isChecked();
if (StringUtil.isEmpty(username)) {
UIHelper.ToastMessage(v.getContext(),
R.string.msg_login_email_null);
return;
}
if (StringUtil.isEmpty(pwd)) {
UIHelper.ToastMessage(v.getContext(),
R.string.msg_login_pwd_null);
return;
}
btn_close.setVisibility(View.GONE);
loadingAnimation = (AnimationDrawable) loginLoading.getBackground();
loadingAnimation.start();
viewSwitcher.showNext();
login(username, pwd, isRememberMe);
break;
}
}
// 登陆验证
private void login(final String username, final String pwd,
final boolean isRememberMe) {
putAsyncTask(new AsyncTask<Void, Void, Boolean>() {
@Override
protected Boolean doInBackground(Void... params) {
try {
user = application.loginVerify(username, pwd);
} catch (AppException e) {
return false;
}
return true;
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
if (result) {
if (!user.isErr()) {
UIHelper.ToastMessage(LoginDialog.this,
R.string.msg_login_success);
user.setRememberMe(isRememberMe);
application.saveLoginInfo(user);
finish();
} else {
UIHelper.ToastMessage(LoginDialog.this, user.getMsg());
viewSwitcher.showPrevious();
btn_close.setVisibility(View.VISIBLE);
application.cleanLoginInfo();
}
} else {
viewSwitcher.showPrevious();
btn_close.setVisibility(View.VISIBLE);
UIHelper.ToastMessage(LoginDialog.this,
R.string.msg_login_fail);
application.cleanLoginInfo();
}
}
});
}
@Override
protected void onDestroy() {
AppManager.getAppManager().finishActivity(this);
super.onDestroy();
}
}