/**
* @Author Benson
* @Time 2013-11-22
*/
package zjut.soft.finalwork.ui;
import zjut.soft.finalwork.R;
import zjut.soft.finalwork.core.StudentManager;
import zjut.soft.finalwork.core.YCApplication;
import zjut.soft.finalwork.core.YCStudentManager;
import zjut.soft.finalwork.dbs.DBManager;
import zjut.soft.finalwork.util.Constant;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
public class LoginUI extends Activity {
private EditText passwordET;
private AutoCompleteTextView userNameET;
private Button loginBtn;
private Spinner spinner;
private AnimationDrawable mFrameAnimation;
private static final String[] ips = { Constant.OUTER_URL,
Constant.INNER_URL_1, Constant.INNER_URL_2 };
private static final String[] ipNames = { "ԭ����������", "ԭ����������1", "ԭ����������2" };
private Handler mHandler;
private SharedPreferences sp;
private YCApplication app;
private DBManager dbManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.login_ui);
initWidgets();
}
@Override
public void onResume() {
super.onResume();
tryToAutoLogin();
}
private void tryToAutoLogin() {
String username = sp.getString("username", null);
String password = sp.getString("password",null);
String url = sp.getString("url",null);
System.out.println("username:" + username + "password:" + password);
if(url != null && username != null && password != null) {
tryToLogin(url,username,password);
}
}
private void initWidgets() {
dbManager = new DBManager(this);
mHandler = new Handler();
sp = getSharedPreferences(Constant.PREFERENCES_NAME, Context.MODE_PRIVATE);
app = (YCApplication) getApplication();
userNameET = (AutoCompleteTextView) findViewById(R.id.username_et);
ArrayAdapter<String> unadapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, dbManager.query());
userNameET.setAdapter(unadapter);
passwordET = (EditText) findViewById(R.id.password_et);
loginBtn = (Button) findViewById(R.id.login_btn);
spinner = (Spinner) findViewById(R.id.login_spinner);
loginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
tryToLogin();
}
});
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.spinner_item, ipNames);
// ���������б�ķ��
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// ��adapter ��ӵ�spinner��
spinner.setAdapter(adapter);
// Ĭ������
spinner.setSelection(0);
// ����¼�Spinner�¼�����
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
String selectedIp = ips[arg2];
((YCApplication) getApplication())
.put("selectedIp", selectedIp);
System.out.println(selectedIp);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}
private void tryToLogin() {
// Ĭ��
((YCApplication) getApplication())
.put("selectedIp", ips[spinner.getSelectedItemPosition()]);
final String username = userNameET.getText().toString();
final String password = passwordET.getText().toString();
// ��Ч����֤
if (username == null || username.equals("") || username.length() != 12) {
Toast.makeText(this, "�û�����������,����������!", Toast.LENGTH_SHORT).show();
return;
}
if (password == null || password.equals("")) {
Toast.makeText(this, "������������,����������!", Toast.LENGTH_SHORT).show();
return;
}
loginBtn.setEnabled(false);
// ��¼���档ԲȦת��ת...
loginBtn.setCompoundDrawablesWithIntrinsicBounds(0,
R.drawable.login_progress_anim, 0, 0);
loginBtn.setText("���ڵ�¼...");
mFrameAnimation = (AnimationDrawable) loginBtn.getCompoundDrawables()[1];
mFrameAnimation.start();
new Thread(new Runnable() {
@Override
public void run() {
StudentManager manager = new YCStudentManager();
final String url = ips[spinner.getSelectedItemPosition()];
final String result = manager.login(LoginUI.this,url,username,
password);
if (result.equals("��¼�ɹ�")) {
mHandler.post(new Runnable() {
@Override
public void run() {
mFrameAnimation.stop();
// �洢�û���������
sp.edit().putString("username", username)
.putString("password", password)
.putString("url", url)
.commit();
// �洢ѧ�ŵ����ݿ�
dbManager.addUsername(username);
loginBtn.setText("��¼�ɹ�");
Intent i = new Intent();
i.setClass(LoginUI.this, SlidingActivity.class);
LoginUI.this.startActivity(i);
LoginUI.this.finish();
}
});
} else {
mHandler.post(new Runnable() {
@Override
public void run() {
mFrameAnimation.stop();
loginBtn.setCompoundDrawablesWithIntrinsicBounds(0,
0, 0, 0);
loginBtn.setText("��¼");
loginBtn.setEnabled(true);
Toast.makeText(LoginUI.this, result,
Toast.LENGTH_SHORT).show();
}
});
}
}
}).start();
}
private void tryToLogin(final String url,final String username,final String password) {
userNameET.setText(username);
passwordET.setText(password);
for(int i=0;i<ips.length;i++) {
if(ips[i].equals(url)) {
spinner.setSelection(i);
}
}
userNameET.setEnabled(false);
passwordET.setEnabled(false);
spinner.setEnabled(false);
loginBtn.setEnabled(false);
// ��¼���档ԲȦת��ת...
loginBtn.setCompoundDrawablesWithIntrinsicBounds(0,
R.drawable.login_progress_anim, 0, 0);
loginBtn.setText("���ڵ�¼...");
mFrameAnimation = (AnimationDrawable) loginBtn.getCompoundDrawables()[1];
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mFrameAnimation.start(); // trick to turn it work
}
}, 100);
new Thread(new Runnable() {
@Override
public void run() {
StudentManager manager = new YCStudentManager();
final String result = manager.login(LoginUI.this,url, username,
password);
if (result.equals("��¼�ɹ�")) {
mHandler.post(new Runnable() {
@Override
public void run() {
mFrameAnimation.stop();
// �洢�û���������
sp.edit().putString("username", username)
.putString("password", password)
.putString("url", url)
.commit();
loginBtn.setText("��¼�ɹ�");
Intent i = new Intent();
i.setClass(LoginUI.this, SlidingActivity.class);
LoginUI.this.startActivity(i);
LoginUI.this.finish();
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
}
});
} else {
mHandler.post(new Runnable() {
@Override
public void run() {
mFrameAnimation.stop();
loginBtn.setCompoundDrawablesWithIntrinsicBounds(0,
0, 0, 0);
loginBtn.setText("��¼");
loginBtn.setEnabled(true);
userNameET.setEnabled(true);
passwordET.setEnabled(true);
spinner.setEnabled(true);
// �����������
sp.edit().putString("username", null)
.putString("password", null)
.putString("url", null)
.commit();
Toast.makeText(LoginUI.this, result,
Toast.LENGTH_SHORT).show();
}
});
}
}
}).start();
}
}