package com.andbase.login; import java.util.List; import android.content.Intent; import android.os.Bundle; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.EditText; import android.widget.ImageButton; import com.ab.activity.AbActivity; import com.ab.db.storage.AbSqliteStorage; import com.ab.db.storage.AbSqliteStorageListener.AbDataInsertListener; import com.ab.db.storage.AbSqliteStorageListener.AbDataSelectListener; import com.ab.db.storage.AbStorageQuery; import com.ab.task.AbTask; import com.ab.task.AbTaskItem; import com.ab.task.AbTaskListener; import com.ab.util.AbDialogUtil; import com.ab.util.AbSharedUtil; import com.ab.util.AbStrUtil; import com.ab.util.AbToastUtil; import com.ab.view.titlebar.AbTitleBar; import com.andbase.R; import com.andbase.friend.UserDao; import com.andbase.global.Constant; import com.andbase.global.MyApplication; import com.andbase.im.util.IMUtil; import com.andbase.model.User; public class LoginActivity extends AbActivity { private EditText userName = null; private EditText userPwd = null; private MyApplication application; private String mStrName = null; private String mStrPwd = null; private ImageButton mClear1; private ImageButton mClear2; private AbTitleBar mAbTitleBar = null; private Button loginBtn = null; //数据库操作类 public AbSqliteStorage mAbSqliteStorage = null; public UserDao mUserDao = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setAbContentView(R.layout.login); application = (MyApplication)abApplication; //初始化AbSqliteStorage mAbSqliteStorage = AbSqliteStorage.getInstance(this); //初始化数据库操作实现类 mUserDao = new UserDao(LoginActivity.this); mAbTitleBar = this.getTitleBar(); mAbTitleBar.setTitleText(R.string.im_login); mAbTitleBar.setLogo(R.drawable.button_selector_back); mAbTitleBar.setTitleBarBackground(R.drawable.top_bg); mAbTitleBar.setTitleTextMargin(10, 0, 0, 0); mAbTitleBar.setLogoLine(R.drawable.line); userName = (EditText)this.findViewById(R.id.userName); userPwd = (EditText)this.findViewById(R.id.userPwd); CheckBox checkBox = (CheckBox) findViewById(R.id.login_check); mClear1 = (ImageButton)findViewById(R.id.clearName); mClear2 = (ImageButton)findViewById(R.id.clearPwd); loginBtn = (Button)this.findViewById(R.id.loginBtn); Button register = (Button)this.findViewById(R.id.registerBtn); loginBtn.setOnClickListener(new LoginOnClickListener()); Button pwdBtn = (Button) findViewById(R.id.pwdBtn); pwdBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(LoginActivity.this, FindPwdActivity.class); startActivity(intent); } }); mAbTitleBar.getLogoView().setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); register.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(LoginActivity.this,RegisterActivity.class); startActivity(intent); finish(); } }); checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { AbSharedUtil.putBoolean(LoginActivity.this, Constant.USERPASSWORDREMEMBERCOOKIE, isChecked); application.userPasswordRemember = isChecked; } }); String name = AbSharedUtil.getString(LoginActivity.this, Constant.USERNAMECOOKIE); String password = AbSharedUtil.getString(LoginActivity.this, Constant.USERPASSWORDCOOKIE); boolean userPwdRemember = AbSharedUtil.getBoolean(LoginActivity.this,Constant.USERPASSWORDREMEMBERCOOKIE, false); if(userPwdRemember){ userName.setText(name); userPwd.setText(password); checkBox.setChecked(true); }else{ userName.setText(""); userPwd.setText(""); checkBox.setChecked(false); } userName.setText("15150509589"); userPwd.setText("123456"); initTitleRightLayout(); userName.addTextChangedListener(new TextWatcher() { public void onTextChanged(CharSequence s, int start, int before, int count) { String str = userName.getText().toString().trim(); int length = str.length(); if (length > 0) { mClear1.setVisibility(View.VISIBLE); if(!AbStrUtil.isNumberLetter(str)){ str = str.substring(0, length-1); userName.setText(str); String str1 = userName.getText().toString().trim(); userName.setSelection(str1.length()); AbToastUtil.showToast(LoginActivity.this,R.string.error_name_expr); } mClear1.postDelayed(new Runnable(){ @Override public void run() { mClear1.setVisibility(View.INVISIBLE); } }, 5000); } else { mClear1.setVisibility(View.INVISIBLE); } } public void beforeTextChanged(CharSequence s, int start, int count, int after) { } public void afterTextChanged(Editable s) { } }); userPwd.addTextChangedListener(new TextWatcher() { public void onTextChanged(CharSequence s, int start, int before, int count) { String str = userPwd.getText().toString().trim(); int length = str.length(); if (length > 0) { mClear2.setVisibility(View.VISIBLE); if(!AbStrUtil.isNumberLetter(str)){ str = str.substring(0, length-1); userPwd.setText(str); String str1 = userPwd.getText().toString().trim(); userPwd.setSelection(str1.length()); AbToastUtil.showToast(LoginActivity.this,R.string.error_pwd_expr); } mClear2.postDelayed(new Runnable(){ @Override public void run() { mClear2.setVisibility(View.INVISIBLE); } }, 5000); } else { mClear2.setVisibility(View.INVISIBLE); } } public void beforeTextChanged(CharSequence s, int start, int count, int after) { } public void afterTextChanged(Editable s) { } }); mClear1.setOnClickListener(new OnClickListener() { public void onClick(View v) { userName.setText(""); } }); mClear2.setOnClickListener(new OnClickListener() { public void onClick(View v) { userPwd.setText(""); } }); } private void initTitleRightLayout(){ } public class LoginOnClickListener implements View.OnClickListener{ @Override public void onClick(View v) { if(v == loginBtn){ mStrName = userName.getText().toString(); mStrPwd = userPwd.getText().toString(); if (TextUtils.isEmpty(mStrName)) { AbToastUtil.showToast(LoginActivity.this,R.string.error_name); userName.setFocusable(true); userName.requestFocus(); return; } if (!AbStrUtil.isNumberLetter(mStrName)) { AbToastUtil.showToast(LoginActivity.this,R.string.error_name_expr); userName.setFocusable(true); userName.requestFocus(); return; } if (AbStrUtil.strLength(mStrName)<3) { AbToastUtil.showToast(LoginActivity.this,R.string.error_name_length1); userName.setFocusable(true); userName.requestFocus(); return; } if (AbStrUtil.strLength(mStrName)>20) { AbToastUtil.showToast(LoginActivity.this,R.string.error_name_length2); userName.setFocusable(true); userName.requestFocus(); return; } if (AbStrUtil.isEmpty(mStrPwd)) { AbToastUtil.showToast(LoginActivity.this,R.string.error_pwd); userPwd.setFocusable(true); userPwd.requestFocus(); return; } if (AbStrUtil.strLength(mStrPwd)<6) { AbToastUtil.showToast(LoginActivity.this,R.string.error_pwd_length1); userPwd.setFocusable(true); userPwd.requestFocus(); return; } if (AbStrUtil.strLength(mStrPwd)>20) { AbToastUtil.showToast(LoginActivity.this,R.string.error_pwd_length2); userPwd.setFocusable(true); userPwd.requestFocus(); return; } login(mStrName,mStrPwd); } } } public void login(final String userName, final String password){ AbDialogUtil.showProgressDialog(LoginActivity.this, 0, "正在登录..."); AbTask task = AbTask.newInstance(); //定义异步执行的对象 final AbTaskItem item = new AbTaskItem(); item.setListener(new AbTaskListener() { @Override public void update() { AbDialogUtil.removeDialog(LoginActivity.this); AbToastUtil.showToast(LoginActivity.this,"登录成功!"); User user = new User(); user.setUserName(userName); user.setPassword(password); user.setLoginUser(true); application.updateLoginParams(user); saveUserData(user); setResult(RESULT_OK); finish(); } @Override public void get() { try { IMUtil.login(LoginActivity.this,userName, password); } catch (Exception e) { e.printStackTrace(); } }; }); task.execute(item); } /** * 保存登录数据 * */ public void saveUserData(final User user) { // 查询数据 AbStorageQuery mAbStorageQuery = new AbStorageQuery(); mAbStorageQuery.equals("user_name", user.getUserName()); mAbStorageQuery.equals("is_login_user", true); mAbSqliteStorage.findData(mAbStorageQuery, mUserDao, new AbDataSelectListener() { @Override public void onFailure(int errorCode, String errorMessage) { AbToastUtil.showToast(LoginActivity.this,errorMessage); } @Override public void onSuccess(List<?> paramList) { if (paramList == null || paramList.size() == 0) { mAbSqliteStorage.insertData(user, mUserDao, new AbDataInsertListener() { @Override public void onSuccess(long id) { } @Override public void onFailure(int errorCode, String errorMessage) { AbToastUtil.showToast(LoginActivity.this,errorMessage); } }); } } }); } }