package cn.edu.zafu.jwc.activity;
import java.io.UnsupportedEncodingException;
import java.util.List;
import org.apache.http.Header;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.TextView;
import android.widget.Toast;
import cn.edu.zafu.jwc.adapter.MenuAdapter;
import cn.edu.zafu.jwc.application.JWCApplication;
import cn.edu.zafu.jwc.model.LinkNode;
import cn.edu.zafu.jwc.service.CourseService;
import cn.edu.zafu.jwc.service.LinkService;
import cn.edu.zafu.jwc.util.CommonUtil;
import cn.edu.zafu.jwc.util.FileUtil;
import cn.edu.zafu.jwc.util.HttpUtil;
import cn.edu.zafu.jwc.util.HttpUtil.QueryCallback;
import cn.edu.zafu.jwc.util.LinkUtil;
import cn.edu.zafu.jwc.util.SharedPreferenceUtil;
import com.loopj.android.http.AsyncHttpResponseHandler;
/**
* @author lizhangqu
* @date 2015-2-1
*/
public class MainActivity extends Activity {
private GridView gridView;
private LinkService linkService;
private CourseService courseService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initValue();// 变量初始化
initView();// 视图初始话
initEvent();// 事件初始化
}
private void initValue() {
JWCApplication application = ((JWCApplication) getApplicationContext());
linkService = application.getLinkService();
courseService = application.getCourseService();
}
/**
* 初始化View
*/
private void initView() {
gridView = (GridView) findViewById(R.id.gridview);
List<LinkNode> objects = linkService.findAll();
gridView.setAdapter(new MenuAdapter(getApplicationContext(),
R.layout.item_linknode_layout, objects));
}
/**
* 初始事件
*/
private void initEvent() {
// 一些列点击事件的初始化
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
TextView temp = (TextView) view.findViewById(R.id.title);
String title = temp.getText().toString();
if (title.equals(LinkUtil.XSGRKB)) {
jump2Kb(false);
} else if (title.equals(LinkUtil.JWGG)) {
HttpUtil.getQuery(MainActivity.this, linkService, LinkUtil.JWGG, callback);
} else {
Toast.makeText(getApplicationContext(), title,
Toast.LENGTH_SHORT).show();
}
}
});
}
private QueryCallback callback=new QueryCallback() {
@Override
public String handleResult(String result) {
FileUtil util=new FileUtil(getApplicationContext());
util.save("ceshi", result);
return null;
}
};
/**
* 跳到课表页面
*/
private void jump2Kb(boolean flag) {
SharedPreferenceUtil util = new SharedPreferenceUtil(
getApplicationContext(), "flag");
if (flag) {
util.setKeyData(LinkUtil.XSGRKB, "TRUE");
Intent intent = new Intent(MainActivity.this, CourseActivity.class);
startActivity(intent);
} else {
String keyData = util.getKeyData(LinkUtil.XSGRKB);
if (keyData.equals("TRUE")) {
Intent intent = new Intent(MainActivity.this,
CourseActivity.class);
startActivity(intent);
} else {
getKB();
}
}
}
/**
* 获取课表,存入数据库
*/
private void getKB() {
final ProgressDialog dialog = CommonUtil.getProcessDialog(
MainActivity.this, "正在获取课表!!!");
dialog.show();
String link = linkService.getLinkByName(LinkUtil.XSGRKB);
if (link != null) {
HttpUtil.URL_QUERY = HttpUtil.URL_QUERY.replace("QUERY", link);
} else {
Toast.makeText(getApplicationContext(), "链接出现错误",
Toast.LENGTH_SHORT).show();
return;
}
HttpUtil.getClient().addHeader("Referer", HttpUtil.URL_MAIN);
HttpUtil.getClient().setURLEncodingEnabled(true);
HttpUtil.get(HttpUtil.URL_QUERY, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
dialog.dismiss();
String resultContent;
try {
resultContent = new String(arg2, "gb2312");
String ret = courseService.parseCourse(resultContent);
Toast.makeText(getApplicationContext(), "课表获取成功!!!",
Toast.LENGTH_SHORT).show();
jump2Kb(true);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(int arg0, Header[] arg1, byte[] arg2,
Throwable arg3) {
dialog.dismiss();
Toast.makeText(getApplicationContext(), "课表获取失败!!!",
Toast.LENGTH_SHORT).show();
}
});
}
}