package com.athena.asm; import android.app.ProgressDialog; import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; import android.os.Handler; import android.text.method.LinkMovementMethod; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import com.actionbarsherlock.app.SherlockFragmentActivity; import com.athena.asm.util.SmthSupport; import com.athena.asm.util.StringUtility; public class LoginActivity extends SherlockFragmentActivity implements OnClickListener { private EditText m_userNameEditText; private EditText m_passwordEditText; private SmthSupport m_smthSupport; private Handler m_handler = new Handler(); @Override public void onCreate(Bundle savedInstanceState) { setTheme(R.style.Theme_Sherlock_Light); super.onCreate(savedInstanceState); // requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.login); m_smthSupport = SmthSupport.getInstance(); String userName = aSMApplication.getCurrentApplication().getAutoUserName(); String password = aSMApplication.getCurrentApplication().getAutoPassword(); m_userNameEditText = (EditText) findViewById(R.id.username_edit); m_userNameEditText.setText(userName); m_passwordEditText = (EditText) findViewById(R.id.password_edit); m_passwordEditText.setText(password); TextView registerLink = (TextView) findViewById(R.id.register_link); registerLink.setMovementMethod(LinkMovementMethod.getInstance()); TextView asmHelpLink = (TextView) findViewById(R.id.asm_help_link); asmHelpLink.setMovementMethod(LinkMovementMethod.getInstance()); Button button = (Button) findViewById(R.id.signin_button); button.setOnClickListener(this); Button gbutton = (Button) findViewById(R.id.guest_button); gbutton.setOnClickListener(this); setRequestedOrientation(aSMApplication.ORIENTATION); } @Override public void onConfigurationChanged(Configuration newConfig) { // do nothing to stop onCreated super.onConfigurationChanged(newConfig); } public void showSuccessToast() { m_handler.post(new Runnable() { public void run() { Toast.makeText(getApplicationContext(), "登录成功.", Toast.LENGTH_SHORT).show(); } }); } public void showAuthenticationFailedToast() { m_handler.post(new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(), "用户名或密码错.", Toast.LENGTH_SHORT).show(); } }); } public void showConnectionFailedToast() { m_handler.post(new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(), "连接错误,请检查网络.", Toast.LENGTH_SHORT).show(); } }); } @Override public void onClick(View view) { m_smthSupport.restore(); if (view.getId() == R.id.signin_button) { final String newUserName = m_userNameEditText.getText().toString(); final String newPassword = m_passwordEditText.getText().toString(); // login final ProgressDialog pdialog = new ProgressDialog(this); pdialog.setMessage("登录中..."); // pdialog.setMax(1); // pdialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pdialog.show(); Thread th = new Thread() { @Override public void run() { m_smthSupport.setUserid(newUserName); m_smthSupport.setPasswd(newPassword); int result = m_smthSupport.login(); if (result == 0) { showAuthenticationFailedToast(); } else if(result == -1){ showConnectionFailedToast(); } else { // showSuccessToast(); aSMApplication.getCurrentApplication() .updateAutoUserNameAndPassword(newUserName, newPassword); Intent intent = new Intent(); intent.setClassName("com.athena.asm", "com.athena.asm.HomeActivity"); intent.putExtra(StringUtility.LOGINED, true); intent.putExtra(StringUtility.GUEST_LOGINED, false); intent.putExtra(StringUtility.LOGINED_ID, newUserName); startActivity(intent); finish(); } pdialog.cancel(); } }; th.start(); } else if (view.getId() == R.id.guest_button) { // login with userid = "guest" final ProgressDialog pdialog = new ProgressDialog(this); pdialog.setMessage("匿名登录中..."); // pdialog.setMax(1); // pdialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pdialog.show(); Thread th = new Thread() { @Override public void run() { m_smthSupport.setUserid("guest"); m_smthSupport.setPasswd(""); int result = m_smthSupport.login(); if (result == -1) { showConnectionFailedToast(); } else { Intent intent = new Intent(); intent.setClassName("com.athena.asm", "com.athena.asm.HomeActivity"); intent.putExtra(StringUtility.LOGINED, false); intent.putExtra(StringUtility.GUEST_LOGINED, true); startActivity(intent); finish(); } pdialog.cancel(); } }; th.start(); } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { Boolean rememberUser = aSMApplication.getCurrentApplication().isRememberUser(); if (!rememberUser) { aSMApplication.getCurrentApplication() .updateAutoUserNameAndPassword("", ""); } aSMApplication.getCurrentApplication().syncPreferences(); finish(); android.os.Process.killProcess(android.os.Process.myPid()); return true; } else { return super.onKeyDown(keyCode, event); } } }