/**
* @Author Benson
* @Time 2013-11-24
*/
package zjut.soft.finalwork.ui;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.message.BasicNameValuePair;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import zjut.soft.finalwork.R;
import zjut.soft.finalwork.beans.CourseInfo;
import zjut.soft.finalwork.core.YCApplication;
import zjut.soft.finalwork.core.YCStudentManager;
import zjut.soft.finalwork.util.Constant;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.Adapter;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
public class StudentGradeQueryUI extends Activity {
private Handler mHandler;
private TextView titleTV;
private ListView mListView;
private int queryType,timeType;
private String gradeDate;
private ProgressBar pb;
private Button backBtn;
private ImageView refreshIV;
private ArrayAdapter<CourseInfo> adapter;
private List<CourseInfo> courseInfos;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.student_grade_query_ui);
mHandler = new Handler();
mListView = (ListView) findViewById(R.id.student_grade_query_ui_lv);
YCApplication app = (YCApplication)getApplication();
queryType = (Integer) app.get("query_type");
timeType = (Integer) app.get("time_type");
gradeDate = (String) app.get("grade_date");
titleTV = (TextView) findViewById(R.id.student_query_ui_frag_title);
pb = (ProgressBar) findViewById(R.id.student_grade_query_progressbar);
backBtn = (Button) findViewById(R.id.student_grade_query_ui_btn);
refreshIV = (ImageView) findViewById(R.id.student_grade_refresh);
backBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
StudentGradeQueryUI.this.finish();
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
}
});
refreshIV.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
queryResultInBackground();
}
});
}
@Override
public void onResume() {
super.onResume();
createTitle(queryType,timeType,gradeDate);
queryResultInBackground();
}
private void queryResultInBackground() {
// ���֮ǰ������
if(courseInfos != null && courseInfos.size() > 0) {
courseInfos.clear();
adapter.notifyDataSetChanged();
mListView.setVisibility(View.GONE);
pb.setVisibility(View.VISIBLE);
}
new Thread(new Runnable() {
@Override
public void run() {
List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
// ѧ�ڻ���ѧ��
if(timeType == 0) {
urlParameters.add(new BasicNameValuePair("1", "rbtnXq"));
urlParameters.add(new BasicNameValuePair("ddlXq", gradeDate));
} else if (timeType == 1){
urlParameters.add(new BasicNameValuePair("1", "rbtnXn"));
urlParameters.add(new BasicNameValuePair("ddlXn", gradeDate));
}
// ��ѯ���пγ�
urlParameters.add(new BasicNameValuePair("ddlKc", "�����пγ̣�"));
if(queryType == 0) {
urlParameters.add(new BasicNameValuePair("Button1", "��ͨ���Գɼ���ѯ"));
} else if(queryType == 1) {
urlParameters.add(new BasicNameValuePair("Button2", "��ͨ���Բ��ϳɼ����ѯ"));
} else if (queryType == 2) {
urlParameters.add(new BasicNameValuePair("Button3", "�����γ̼��ɼ���ѯ"));
} else if (queryType == 3) {
urlParameters.add(new BasicNameValuePair("Button4", "���γ̼��ɼ���ѯ"));
}
YCApplication app = (YCApplication)getApplication();
HttpClient client = app.getClient();
String url = app.get("selectedIp") + Constant.gradeQuery;
HttpGet request = new HttpGet(url);
try {
HttpResponse response = client.execute(request);
InputStream is = response.getEntity().getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(is,Constant.ENCODING));
StringBuilder sb = new StringBuilder();
String temp = null;
while((temp = br.readLine()) != null) {
if(temp.contains("<script language")) {
break; // ��Լʱ��
}
sb.append(temp);
}
Document doc = Jsoup.parse(sb.toString());
Elements elements = doc.select("input");
for(Element element : elements ) {
if("__EVENTTARGET".equals(element.attr("name"))) {
urlParameters.add(new BasicNameValuePair("__EVENTTARGET", element.val()));
} else if("__EVENTARGUMENT".equals(element.attr("name"))) {
urlParameters.add(new BasicNameValuePair("__EVENTARGUMENT", element.val()));
} else if("__VIEWSTATE".equals(element.attr("name"))) {
urlParameters.add(new BasicNameValuePair("__VIEWSTATE", element.val()));
}
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// ������Ϣ
for(NameValuePair pair : urlParameters) {
Log.i(YCStudentManager.class.getName(),pair.getName() + ":" + pair.getValue());
}
HttpPost post = new HttpPost(url);
try {
post.setEntity(new UrlEncodedFormEntity(urlParameters,Constant.ENCODING));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
HttpResponse response = null;
try {
response = app.getClient().execute(post);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader rd = null;
try {
rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent(),Constant.ENCODING),8192);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
String temp = null;
StringBuilder sb = new StringBuilder();
try {
while((temp = rd.readLine()) != null) {
sb.append(temp);
System.out.println(temp);
}
} catch (IOException e) {
e.printStackTrace();
}
Document doc = Jsoup.parse(sb.toString());
Elements elements = doc.select("#DataGrid1");
Elements e = elements.select("tr");
courseInfos = new ArrayList<CourseInfo>();
for(int i=1;i<e.size(); i++) {
CourseInfo info = new CourseInfo();
Elements tds = e.get(i).select("td");
info.setSemester(" ʵ��ѧ��:" + tds.get(0).select("font").html());
info.setCourseName(" �����:" + tds.get(1).select("font").html());
info.setType(" ��������:" + tds.get(2).select("font").html());
info.setGrade(" �ɼ�:" + tds.get(3).select("font").html());
String classes = tds.get(4).select("font").html();
if(classes.equals(" ")) {
info.setClasses(" ѧʱ:��");
} else {
info.setClasses(" ѧʱ:" + tds.get(4).select("font").html());
}
String credit = tds.get(5).select("font").html();
if(credit.equals(" ")) {
info.setCredit(" ѧ��:��");
} else {
info.setCredit(" ѧ��:" + tds.get(5).select("font").html());
}
courseInfos.add(info);
}
mHandler.post(new Runnable() {
@Override
public void run() {
pb.setVisibility(View.GONE);
mListView.setVisibility(View.VISIBLE);
if(courseInfos.size() == 0) {
mListView.setVisibility(View.GONE);
((TextView)findViewById(R.id.student_grade_hint)).setVisibility(View.VISIBLE);
} else {
adapter = new CourseInfoAdapter(StudentGradeQueryUI.this, R.layout.query_system_listview_grade_result, courseInfos);
mListView.setAdapter(adapter);
}
}
});
}
}).start();
}
private void createTitle(int queryType,int timeType,String date) {
String queryName = null;
if(queryType == 0) {
queryName = "��ͨ���Գɼ���ѯ";
} else if(queryType == 1) {
queryName = "��ͨ���Բ��ϸ�ɼ���ѯ";
} else if(queryType == 2) {
queryName = "�����γ̼��ɼ���ѯ";
} else if(queryType == 3) {
queryName = "���γ̼��ɼ���ѯ";
}
titleTV.setText(queryName + " | " + date);
}
static class CourseInfoAdapter extends ArrayAdapter<CourseInfo> {
private int resourceId;
public CourseInfoAdapter(Context context, int textViewResourceId,
List<CourseInfo> objects) {
super(context, textViewResourceId, objects);
this.resourceId = textViewResourceId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
CourseInfo courseInfo = getItem(position);
if(convertView == null) {
LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(resourceId, null);
holder = new ViewHolder();
holder.actualSemester = (TextView)convertView.findViewById(R.id.query_system_listview_grade_result_actual_semesiter);
holder.courseName = (TextView)convertView.findViewById(R.id.query_system_listview_grade_result_course_name);
holder.property = (TextView)convertView.findViewById(R.id.query_system_listview_grade_result_property);
holder.grade = (TextView)convertView.findViewById(R.id.query_system_listview_grade_result_grade);
holder.hour = (TextView)convertView.findViewById(R.id.query_system_listview_grade_result_actual_hour);
holder.credit = (TextView)convertView.findViewById(R.id.query_system_listview_grade_result_actual_credit);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
int[] bgs = new int[] {
R.drawable.ic_course_bg_fen,
R.drawable.ic_course_bg_huang,
R.drawable.ic_course_bg_lan,
R.drawable.ic_course_bg_lv,
R.drawable.ic_course_bg_pulan,
R.drawable.ic_course_bg_qing,
R.drawable.ic_course_bg_tao,
R.drawable.ic_course_bg_zi
};
convertView.setBackgroundResource(bgs[position%bgs.length]);
holder.actualSemester.setText(courseInfo.getSemester());
holder.courseName.setText(courseInfo.getCourseName());
holder.property.setText(courseInfo.getType());
holder.grade.setText(courseInfo.getGrade());
holder.hour.setText(courseInfo.getClasses());
holder.credit.setText(courseInfo.getCredit());
return convertView;
}
static class ViewHolder {
TextView actualSemester;
TextView courseName;
TextView property;
TextView grade;
TextView hour;
TextView credit;
}
}
}