package com.nsmss.scuol.personal;
import java.text.DecimalFormat;
import java.util.Calendar;
import com.nsmss.scuol.R;
import com.nsmss.scuol.bean.GlobalInfo;
import com.nsmss.scuol.bean.PersonalInfo;
import com.nsmss.scuol.bean.UserData;
import com.nsmss.scuol.common.NetHelper;
import com.nsmss.scuol.dao.GlobalInfoDao;
import com.nsmss.scuol.dao.PersonalInfoDao;
import com.nsmss.scuol.dao.UserDataDao;
import com.nsmss.scuol.main.MainActivity;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class PersonalActivity extends Activity {
/**
* 静态成员变量
*/
private static Context context;
/**
* UI相关成员变量
*/
private ProgressDialog progressDialog;
/**
* View相关成员变量
*/
private View backView;
private View refreshView;
private View bannerView;
private TextView nameTextView;
private TextView numberTextView;
private TextView daysTextView;
private TextView percentTextView;
private TextView avarageTextView;
private TextView GPATextView;
private View rollView;
private View planView;
private View passwdView;
private View checkView;
/**
* Dao成员变量
*/
private GlobalInfoDao gDao;
private UserDataDao uDao;
private PersonalInfoDao pDao;
/**
* 数据模型变量
*/
private GlobalInfo gInfo;
private UserData uData;
private PersonalInfo pInfo;
/**
* 数据存储变量
*/
/**
* 状态变量
*/
/**
* 临时变量
*/
int uid;
/**
* Activity回调函数
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
// 继承父类方法,绑定View
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_personal);
// 初始化context
context = getApplicationContext();
// 初始化View成员变量
// 初始化Dao成员变量
gDao = new GlobalInfoDao(context);
uDao = new UserDataDao(context);
pDao = new PersonalInfoDao(context);
// 初始化数据模型变量
gInfo = gDao.query();
uid = gInfo.getActiveUserUid();
uData = uDao.query(uid);
pInfo = pDao.query(uid);
// 初始化状态变量
// 初始化临时变量
// 自定义函数
initView();
initListener();
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onStop() {
super.onStop();
}
@Override
protected void onResume() {
super.onResume();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
jumpToMain();
return true;
}
return super.onKeyDown(keyCode, event);
}
/**
* 线程对象
*/
// 连接线程
private Runnable connRunnable = new Runnable() {
@Override
public void run() {
NetHelper nHelper = new NetHelper();
pInfo = nHelper.getPersonalInfo(uData);
// 如果连接成功,返回了更新数据
if (pInfo != null) {
// 判断状态对话框是否显示
if (progressDialog.isShowing()) {
if (pDao.update(pInfo)) {
progressDialog.dismiss();
runOnUiThread(succRunnable);
}
else {
progressDialog.dismiss();
runOnUiThread(errURunnable);
}
}
}
// 连接错误
else {
// 判断状态对话框是否显示
if (progressDialog.isShowing()) {
progressDialog.dismiss();
runOnUiThread(errRunnable);
}
}
}
};
// 连接成功线程
private Runnable succRunnable = new Runnable() {
@Override
public void run() {
updatePInfo();
}
};
// 连接错误线程
private Runnable errRunnable = new Runnable() {
@Override
public void run() {
Toast.makeText(PersonalActivity.this, "连接错误!请检查网络连接!", Toast.LENGTH_SHORT).show();
}
};
// 更新错误线程
private Runnable errURunnable = new Runnable() {
@Override
public void run() {
Toast.makeText(PersonalActivity.this, "更新错误!", Toast.LENGTH_SHORT).show();
}
};
/**
* 自定义成员对象
*/
/**
* 自定义方法
*/
private void initView() {
backView = findViewById(R.id.Btn_Personal_Back);
refreshView = findViewById(R.id.Btn_Personal_Refresh);
bannerView = findViewById(R.id.View_Personal_Banner);
Calendar calendar = Calendar.getInstance();
int month = calendar.get(Calendar.MONTH);
if (month==0||month==1||month==11) {
bannerView.setBackgroundResource(R.drawable.bg_personal_banner4);
}
else if (month==2||month==3||month==4) {
bannerView.setBackgroundResource(R.drawable.bg_personal_banner1);
}
else if (month==5||month==6||month==7) {
bannerView.setBackgroundResource(R.drawable.bg_personal_banner2);
}
else {
bannerView.setBackgroundResource(R.drawable.bg_personal_banner3);
}
nameTextView = (TextView) this.findViewById(R.id.Text_Personal_Name);
numberTextView = (TextView) this.findViewById(R.id.Text_Personal_Number);
daysTextView = (TextView) this.findViewById(R.id.Text_Personal_Days);
percentTextView = (TextView) this.findViewById(R.id.Text_Personal_Percent);
avarageTextView = (TextView) this.findViewById(R.id.Text_Personal_Score);
GPATextView = (TextView) this.findViewById(R.id.Text_Personal_Credit);
rollView = findViewById(R.id.Btn_Personal_Roll);
planView = findViewById(R.id.Btn_Personal_Plan);
passwdView = findViewById(R.id.Btn_Personal_Passwd);
checkView = findViewById(R.id.Btn_Personal_Check);
if (uData != null) {
numberTextView.setText("学号:"+uData.getNum());
updatePInfo();
}
}
private void initListener() {
backView.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
jumpToMain();
}
});
refreshView.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
refreshPInfo();
}
});
rollView.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
jumpToRoll();
}
});
passwdView.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
jumpToPassword();
}
});
}
private void jumpToMain() {
Intent intent=new Intent();
intent.setClass(PersonalActivity.this, MainActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.slide_left_in, R.anim.slide_right_out);
finish();
}
private void jumpToRoll() {
Intent intent=new Intent();
intent.setClass(PersonalActivity.this, RollActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.slide_right_in, R.anim.slide_left_out);
finish();
}
private void jumpToPassword() {
Intent intent=new Intent();
intent.setClass(PersonalActivity.this, ChangePasswordActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.slide_right_in, R.anim.slide_left_out);
finish();
}
private void refreshPInfo() {
// 显示状态对话框
progressDialog = new ProgressDialog(this);
progressDialog.setIndeterminate(true);
progressDialog.setMessage(getResources().getString(R.string.loading_tip));
progressDialog.setCancelable(true);
progressDialog.show();
// 开启连接线程
new Thread(connRunnable).start();
}
private void updatePInfo() {
if (pInfo == null) {
return;
}
DecimalFormat dFormat = new DecimalFormat("##0.00");
nameTextView.setText(pInfo.getName()+",你好");
daysTextView.setText(pInfo.getDays()+"");
percentTextView.setText((int)(pInfo.getPercent())+"%");
avarageTextView.setText(dFormat.format(pInfo.getAvarage()));
GPATextView.setText(dFormat.format(pInfo.getGpa()));
}
}