/**
* @Author Benson
* @Time 2013-11-23
*/
package zjut.soft.finalwork.fragment;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import zjut.soft.finalwork.R;
import zjut.soft.finalwork.core.YCApplication;
import zjut.soft.finalwork.ui.ChooseSemesterUI;
import zjut.soft.finalwork.ui.ChooseSemesterUIForCourseTable;
import zjut.soft.finalwork.ui.GraduationGPAQueryUI;
import zjut.soft.finalwork.ui.LevelGradeQueryUI;
import zjut.soft.finalwork.ui.PersonalDevelopScheduleUI;
import zjut.soft.finalwork.ui.SlidingActivity;
import zjut.soft.finalwork.ui.StudentCourseTableQueryUI;
import zjut.soft.finalwork.ui.StudentGradeQueryUI;
import zjut.soft.finalwork.util.Constant;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;
public class QuerySystemFragment extends Fragment {
private GridView gridView;
private ImageView menuIV,aboutTV;
private Handler mHandler;
private LayoutInflater inflater;
private Spinner mSpinner;
private ArrayAdapter<String> adapter3; // ʱ�䷶Χ����������
private Button positveBtn; // ʱ�䷶Χȷ����ť
private List<String> datas = new ArrayList<String>();
private SlidingActivity parent;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.query_system_frag, null);
gridView = (GridView) view.findViewById(R.id.query_system_frag_gridview);
menuIV = (ImageView) view.findViewById(R.id.query_system_frag_menu);
aboutTV = (ImageView) view.findViewById(R.id.query_system_frag_about_us);
mHandler = new Handler(getActivity().getMainLooper());
datas.add("���ڼ�������...");
menuIV.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
((SlidingActivity)getActivity()).showLeft();
}
});
aboutTV.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
parent.showRight();
}
});
return view;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
parent = (SlidingActivity) activity;
}
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
@Override
public void onResume() {
super.onResume();
inflater = (LayoutInflater)getActivity().getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
//���Ԫ�ظ�gridview
gridView.setAdapter(new ImageAdapter(this.getActivity()));
// gridView.setSelector(new ColorDrawable(Color.BLUE)); // ȥ�������ɫ����
// ����Gallery�ı���
// gridView.setBackgroundResource(R.drawable.bg0);
//�¼�����
gridView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
switch(position) {
case 0:
// ѧ���ɼ���ѯ
studentGradeQuery();
break;
case 1:
// ѧ���α��ѯ
studentCourseTableQuery();
break;
case 2:
// ���������ƻ���ѯ
personalDevelopmentScheduleQuery();
break;
case 3:
// �����ſ������ѯ
personalTestArrangementQuery();
break;
case 4:
// ��ҵ�����ѯ
graduationGPAQuery();
break;
case 5:
// �ȼ����Գɼ���ѯ
levelQuery();
break;
}
}
});
}
/**
* ���������ƻ���ѯ
*/
private void personalDevelopmentScheduleQuery() {
Intent i = new Intent(getActivity(),PersonalDevelopScheduleUI.class);
startActivity(i);
}
/**
* ѧ���α��ѯ
*/
private void studentCourseTableQuery() {
Intent i = new Intent(getActivity(),ChooseSemesterUIForCourseTable.class);
startActivity(i);
}
/**
* ��ҵ�����ѯ
*/
private void graduationGPAQuery() {
Intent i = new Intent(getActivity(),GraduationGPAQueryUI.class);
startActivity(i);
getActivity().overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
}
/**
* �ȼ����Գɼ���ѯ
*/
private void levelQuery() {
Intent i = new Intent();
i.setClass(getActivity(), LevelGradeQueryUI.class);
startActivity(i);
getActivity().overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
}
/**
* �����ſ������ѯ
*/
private void personalTestArrangementQuery() {
Intent i = new Intent();
i.setClass(getActivity(), ChooseSemesterUI.class);
startActivity(i);
getActivity().overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
}
/**
* ѧ���ɼ���ѯģ��
*/
private void studentGradeQuery() {
ListView lv = (ListView) inflater.inflate(R.layout.query_system_student_grade_query_type, null);
ListAdapter adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, new String[]{
"��ͨ���Գɼ���ѯ",
"��ͨ���Բ��ϸ�ɼ���ѯ",
"�����γ̼��ɼ���ѯ",
"���γ̼��ɼ���ѯ"
});
lv.setAdapter(adapter);
final AlertDialog queryDialog = new AlertDialog.Builder(getActivity())
.setTitle("��ѡ���ѯ����")
.setView(lv)
.setNegativeButton("ȡ��", null)
.create();
queryDialog.show();
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
final YCApplication app = (YCApplication)getActivity().getApplication();
switch(arg2) {
case 0:
case 1:
case 2:
case 3:
queryDialog.dismiss();
app.put("query_type", arg2);
ListAdapter adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, new String[]{
"ѧ�ڲ�ѯ",
"ѧ���ѯ"
});
ListView lv = (ListView) inflater.inflate(R.layout.query_system_student_grade_query_type, null);
lv.setAdapter(adapter);
final AlertDialog timeDialog = new AlertDialog.Builder(getActivity())
.setTitle("��ѡ��ʱ������")
.setNegativeButton("ȡ��", null)
.setView(lv)
.create();
timeDialog.show();
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0,
View arg1, final int arg2, long arg3) {
timeDialog.dismiss();
app.put("time_type", arg2);
adapter3 = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_spinner_item,datas);
mSpinner = (Spinner) inflater.inflate(R.layout.query_system_spinner, null);
mSpinner.setAdapter(adapter3);
final AlertDialog rangeDialog = new AlertDialog.Builder(getActivity())
.setTitle("��ѡ��ʱ�䷶Χ")
.setView(mSpinner)
.setPositiveButton("ȷ��", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
YCApplication app = (YCApplication)getActivity().getApplication();
if(arg2 == 0)
app.put("grade_date", ((List)app.get("semesters")).get(mSpinner.getSelectedItemPosition()));
else
app.put("grade_date", ((List)app.get("academics")).get(mSpinner.getSelectedItemPosition()));
tryToQueryGrade();
}
}).setNegativeButton("ȡ��", null)
.create();
rangeDialog.show();
positveBtn = rangeDialog.getButton(AlertDialog.BUTTON_POSITIVE);
if(app.get("semesters") == null || app.get("academics") == null) {
positveBtn.setEnabled(false);
}
switch(arg2) {
case 0:
// ��Լ����
if(app.get("semesters") == null) {
// �첽��������������
new Thread(new Runnable() {
@Override
public void run() {
loadSemAce("semesters");
}
}).start();
} else {
mHandler.post(new Runnable() {
@Override
public void run() {
showRangeDialog("semesters");
}
});
}
break;
case 1:
// ��Լ����
if(app.get("academics") == null) {
// �첽��������������
new Thread(new Runnable() {
@Override
public void run() {
loadSemAce("academics");
}
}).start();
} else {
mHandler.post(new Runnable() {
@Override
public void run() {
showRangeDialog("academics");
}
});
}
break;
}
}
});
}
}
});
}
private void showRangeDialog(String type) {
if(type.equals("semesters")) {
datas.clear();
YCApplication app = (YCApplication) getActivity().getApplication();
datas.addAll((List)app.get(type));
adapter3.notifyDataSetChanged();
} else if(type.equals("academics")) {
datas.clear();
YCApplication app = (YCApplication) getActivity().getApplication();
datas.addAll((List)app.get(type));
adapter3.notifyDataSetChanged();
}
positveBtn.setEnabled(true);
}
/**
* �����û���ѡ�������гɼ���ѯ
*/
private void tryToQueryGrade() {
Intent i = new Intent();
i.setClass(getActivity(), StudentGradeQueryUI.class);
getActivity().startActivity(i);
getActivity().overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
}
/**
* ����ѧ��ѧ������
*/
private void loadSemAce(final String type) {
YCApplication app = (YCApplication) getActivity().getApplication();
HttpGet request = new HttpGet(app.get("selectedIp") + Constant.gradeQuery);
StringBuilder sb = new StringBuilder();
try {
HttpResponse response = app.getClient().execute(request);
InputStream is = response.getEntity().getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(is,Constant.ENCODING));
String temp = null;
while((temp = br.readLine()) != null) {
sb.append(temp); // ��ȡhtml
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// ����html
Document doc = Jsoup.parse(sb.toString());
// ����ѧ������
Elements options = doc.select("select[name=ddlXq] option");
final List<String> semesters = new ArrayList<String>();
for(int i = 1; i < options.size(); i++) {
semesters.add(options.get(i).html());
}
app.put("semesters", semesters);
// ����ѧ������
options = doc.select("select[name=ddlXn] option");
final List<String> academics = new ArrayList<String>();
for(int i = 1; i < options.size(); i++) {
academics.add(options.get(i).html());
}
app.put("academics", academics);
mHandler.post(new Runnable() {
@Override
public void run() {
if(type.equals("semesters")) {
datas.clear();
datas.addAll(semesters);
adapter3.notifyDataSetChanged();
} else if(type.equals("academics")) {
datas.clear();
datas.addAll(academics);
adapter3.notifyDataSetChanged();
}
positveBtn.setEnabled(true);
}
});
}
private class ImageAdapter extends BaseAdapter
{
// ����Context
private Context mContext;
// ������������ ��ͼƬԴ
private Integer[] mImageIds =
{
R.drawable.q0,
R.drawable.q1,
R.drawable.q2,
R.drawable.q3,
R.drawable.q4,
R.drawable.q5
};
private String[] mImageTexts =
{
"ѧ���ɼ���ѯ",
"ѧ���α��ѯ",
"���������ƻ���ѯ",
"�����ſ������ѯ",
"��ҵ�ɼ������ѯ",
"�ȼ����Գɼ���ѯ"
};
public ImageAdapter(Context c)
{
mContext = c;
}
// ��ȡͼƬ�ĸ���
public int getCount()
{
return mImageIds.length;
}
// ��ȡͼƬ�ڿ��е�λ��
public Object getItem(int position)
{
return position;
}
// ��ȡͼƬID
public long getItemId(int position)
{
return position;
}
public View getView(int position, View convertView, ViewGroup parent)
{
ViewHolder holder;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater)getActivity().getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.user_conf_frag_gridview_viewholder, null);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.user_conf_frag_gridview_viewholder_tvs);
holder.icon = (ImageView) convertView.findViewById(R.id.user_conf_frag_gridview_viewholder_iv);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
convertView.setBackgroundResource(R.drawable.ic_found_item_bg_normal);
holder.text.setText(mImageTexts[position]);
holder.icon.setImageResource(mImageIds[position]);
return convertView;
}
class ViewHolder {
ImageView icon;
TextView text;
}
}
}