package com.hyrt.ceiphone.phonestudy;
import java.util.ArrayList;
import java.util.List;
import com.hyrt.cei.application.CeiApplication;
import com.hyrt.cei.util.MyTools;
import com.hyrt.cei.util.XmlUtil;
import com.hyrt.cei.vo.Courseware;
import com.hyrt.cei.webservice.service.Service;
import com.hyrt.ceiphone.R;
import com.hyrt.ceiphone.adapter.PhoneStudyAdapter;
import com.hyrt.ceiphone.phonestudy.data.DataHelper;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Handler;
import android.os.Message;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.LinearLayout;
public class FoundationActivity extends Activity implements OnClickListener,
OnItemClickListener {
// 维护activity集合
public static final List<Activity> activitys = new ArrayList<Activity>();
// 获取免费课件的数据标志
public static final int FREE_DATA_KEY = 1;
// 获取详细课件的数据标志
public static final int DETAIL_DATA_KEY = 2;
// 获取业务课件的数据标志
public static final int SERVICE_DATA_KEY = 3;
// 获取种类课件的数据标志
public static final int KIND_DATA_KEY = 4;
// 获取课件搜索的数据标志
public static final int SEARCH_DATA_KEY = 5;
// 获取最新课件的数据标志
public static final int NEW_DATA_KEY = 6;
// 获取自选课件的数据标志
public static final int SELF_DATA_KEY = 7;
// 获取讨论组课件的数据标志
public static final int SAY_DATA_KEY = 8;
// 获取学习记录课件的数据标志
public static final int RECORD_DATA_KEY = 9;
// 课件下载的标志
public static final int PRELOAD_DATA_KEY = 10;
// 讨论详细的标志
public static final int SAYGROUP_DATA_KEY = 11;
// 当前页面
protected int CURRENT_KEY;
// 数据列表视图控件
public ListView phoneStudyListView;
// 当前页码
public int index = 0;
// 更多数据按钮
//private LinearLayout footer;
private View footer;
// 原始全部的数据列表
public List<Courseware> allCoursewares = new ArrayList<Courseware>();
// 分页列表数据
public List<Courseware> coursewares = new ArrayList<Courseware>();
// 适配器
public BaseAdapter phoneStudyAdapter;
// 所有的列表数据
public List<Courseware> courses = new ArrayList<Courseware>();
// 所有的列表数据
// 获取数据的工具类并通知handler
private DataHelper dataHelper;
// 当前课件列表所对应的课件种类id
public String currentFunctionId;
public static final String WELLCLASS_NAME = "置顶课件";
public static String MODEL_NAME = "移动学习";
public static final String PHONE_NAME = "移动课堂";
public static final String FREE_NAME = "免费课件";
public static final int LVDATA_KEY = 1;
public static final int NO_NET = 2;
public static final String FLASH_GATE = "/apad.html";
public static final String FLASH_POSTFIX = ".zip";
public static final String FLASH_UNPOSTFIX = ".yepeng";
// 用户名
private String loginName;
// 数据视图附加handler
public Handler dataHandler = new Handler() {
@Override
public void dispatchMessage(Message msg) {
switch (msg.arg1) {
case LVDATA_KEY:
coursewares.clear();
if(courses.size() == 0){
footer.setVisibility(View.GONE);
MyTools.exitShow(FoundationActivity.this, FoundationActivity.this.getWindow().getDecorView(), "没有查到您需要的信息!");
}
if(CURRENT_KEY == SELF_DATA_KEY || CURRENT_KEY == RECORD_DATA_KEY){
for (int i = index * 888; i < (index + 1) * 888
&& i < courses.size(); i++) {
if (i == courses.size() - 1) {
footer.setVisibility(View.GONE);
} else {
if (footer.getVisibility() == View.GONE)
footer.setVisibility(View.VISIBLE);
}
coursewares.add(courses.get(i));
}
}else{
for (int i = index * 20; i < (index + 1) * 20
&& i < courses.size(); i++) {
if (i == courses.size() - 1) {
footer.setVisibility(View.GONE);
} else {
if (footer.getVisibility() == View.GONE)
footer.setVisibility(View.VISIBLE);
}
coursewares.add(courses.get(i));
}
}
if(phoneStudyAdapter == null){
switch (CURRENT_KEY) {
case FREE_DATA_KEY:
phoneStudyAdapter = new PhoneStudyAdapter(
FoundationActivity.this,
R.layout.phone_study_listivewitem_one, coursewares,
phoneStudyListView,false);
break;
case SELF_DATA_KEY:
phoneStudyAdapter = new PhoneStudyAdapter(
FoundationActivity.this,
R.layout.phone_study_listivewitem_two, coursewares,
phoneStudyListView,allCoursewares,true);
break;
case NEW_DATA_KEY:
phoneStudyAdapter = new PhoneStudyAdapter(
FoundationActivity.this,
R.layout.phone_study_listivewitem_one, coursewares,
phoneStudyListView,false);
break;
case SERVICE_DATA_KEY:
phoneStudyAdapter = new PhoneStudyAdapter(
FoundationActivity.this,
R.layout.phone_study_listivewitem_two, coursewares,
phoneStudyListView,true);
break;
case KIND_DATA_KEY:
phoneStudyAdapter = new PhoneStudyAdapter(
FoundationActivity.this,
R.layout.phone_study_listivewitem_two, coursewares,
phoneStudyListView,false);
break;
case SEARCH_DATA_KEY:
phoneStudyAdapter = new PhoneStudyAdapter(
FoundationActivity.this,
R.layout.phone_study_listivewitem_three,
coursewares, phoneStudyListView,false);
break;
case SAY_DATA_KEY:
phoneStudyAdapter = new PhoneStudyAdapter(
FoundationActivity.this,
R.layout.phone_study_listivewitem_four,
coursewares, phoneStudyListView,false);
break;
case RECORD_DATA_KEY:
phoneStudyAdapter = new PhoneStudyAdapter(
FoundationActivity.this,
R.layout.phone_study_listivewitem_five,
coursewares, phoneStudyListView,true);
break;
}
phoneStudyListView.setAdapter(phoneStudyAdapter);
}else{
phoneStudyAdapter.notifyDataSetChanged();
}
break;
case NO_NET:
MyTools.exitShow(FoundationActivity.this, ((Activity)FoundationActivity.this).getWindow().getDecorView(), "网络有问题!");
break;
}
}
};
/**
* 做初始化工作
*/
@Override
protected void onResume() {
SharedPreferences settings = getSharedPreferences("loginInfo",Activity.MODE_PRIVATE);
loginName = settings.getString("LOGINNAME", "");
activitys.add(this);
/*if (activitys.size() > 10) {
activitys.get(0).finish();
activitys.remove(0);
}*/
if (dataHelper == null)
dataHelper = new DataHelper(this);
if (coursewares.size() == 0 || CURRENT_KEY == RECORD_DATA_KEY) {
initChangedElements();
registCommonEvent();
getDataForListView();
/*
* new Handler().postDelayed(new Runnable() {
*
* @Override public void run() { new Progresser().alertProgress(); }
* }, 200);
*/
}
super.onResume();
}
/**
* 初始化变动的页面元素
*/
private void initChangedElements() {
switch (CURRENT_KEY) {
case NEW_DATA_KEY:
((TextView) findViewById(R.id.phone_study_title))
.setText("移动学习");
break;
case FREE_DATA_KEY:
((TextView) findViewById(R.id.phone_study_title))
.setText("免费学习");
break;
case PRELOAD_DATA_KEY:
((TextView) findViewById(R.id.phone_study_title))
.setText("下载管理");
break;
case DETAIL_DATA_KEY:
((TextView) findViewById(R.id.phone_study_title))
.setText("课件详细");
break;
case SERVICE_DATA_KEY:
((TextView) findViewById(R.id.phone_study_title))
.setText("推荐课程");
break;
case KIND_DATA_KEY:
((TextView) findViewById(R.id.phone_study_title))
.setText("课程分类");
break;
case SEARCH_DATA_KEY:
((TextView) findViewById(R.id.phone_study_title))
.setText("课件搜索");
break;
case SELF_DATA_KEY:
((TextView) findViewById(R.id.phone_study_title))
.setText("自选课程");
break;
case SAY_DATA_KEY:
((TextView) findViewById(R.id.phone_study_title))
.setText("课程讨论");
break;
case SAYGROUP_DATA_KEY:
((TextView) findViewById(R.id.phone_study_title))
.setText("课程讨论");
break;
case RECORD_DATA_KEY:
((TextView) findViewById(R.id.phone_study_title))
.setText("课程学习");
break;
}
registEventForTopFirst(CURRENT_KEY);
}
// 为头部第一个按钮注册事件
private void registEventForTopFirst(int currentPage) {
if (currentPage == NEW_DATA_KEY) {
((TextView) findViewById(R.id.phone_study_basetitle))
.setText("中经智库");
((TextView) findViewById(R.id.phone_study_basetitle))
.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
for(int i=0;i<activitys.size();i++){
activitys.get(i).finish();
}
}
});
} else {
((TextView) findViewById(R.id.phone_study_basetitle)).setText("移动学习");
((TextView) findViewById(R.id.phone_study_basetitle))
.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(FoundationActivity.this,PhoneStudyActivity.class);
startActivity(intent);
}
});
}
}
/**
* 为公共控件注册事件
*/
private void registCommonEvent() {
LinearLayout bottomParent = (LinearLayout) findViewById(R.id.bottoms_parent);
for (int i = 0; bottomParent != null
&& i < bottomParent.getChildCount(); i++) {
bottomParent.getChildAt(i).setOnClickListener(this);
}
findViewById(R.id.phone_study_search).setOnClickListener(this);
}
/**
* 获取listview列表数据
*/
private void getDataForListView() {
if (phoneStudyListView == null) {
phoneStudyListView = (ListView) findViewById(R.id.phone_study_listview);
if (phoneStudyListView == null)
return;
//footer = (LinearLayout) LayoutInflater.from(this).inflate(R.layout.phone_study_listview_bottom, null);
footer = findViewById(R.id.phone_study_morebtn);
footer.setOnClickListener(this);
//footer.findViewById(R.id.phone_study_morebtn).setOnClickListener(this);
/*try {
phoneStudyListView.removeFooterView(footer);
} catch (Exception e) {
e.printStackTrace();
}
phoneStudyListView.addFooterView(footer);*/
}
if (phoneStudyListView != null) {
switch (CURRENT_KEY) {
case FREE_DATA_KEY:
dataHelper.loadFreeData();
break;
case NEW_DATA_KEY:
dataHelper.getNewData();
break;
case SELF_DATA_KEY:
footer.setVisibility(View.GONE);
dataHelper.getSelCourseData();
break;
case SAY_DATA_KEY:
dataHelper.getSayListData();
break;
case RECORD_DATA_KEY:
dataHelper.getStudyRecords();
case KIND_DATA_KEY:
footer.setVisibility(View.GONE);
break;
case SEARCH_DATA_KEY:
footer.setVisibility(View.GONE);
break;
}
}
}
public void getServiceDataByServiceId(String serviceId) {
index = 0;
if (dataHelper == null)
dataHelper = new DataHelper(this);
dataHelper.loadDataByServiceId(serviceId);
}
public void getServiceDataByKindId(String kindId) {
index = 0;
if (dataHelper == null)
dataHelper = new DataHelper(this);
dataHelper.loadClassesByKind(kindId);
}
public void getServiceDataByClassName(String className) {
index = 0;
if (dataHelper == null)
dataHelper = new DataHelper(this);
dataHelper.loadClassesBySearch(className);
}
@Override
public void onItemClick(AdapterView<?> adapter, View view, int position,
long id) {
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.phone_study_self:
if (CURRENT_KEY == SELF_DATA_KEY)
return;
Intent intent11 = new Intent(this, SelfActivity.class);
if (!loginName.equals(""))
startActivity(intent11);
else
MyTools.exitShow(FoundationActivity.this, ((Activity)FoundationActivity.this).getWindow().getDecorView(), "请登陆后查看!");
break;
case R.id.phone_study_say:
if (CURRENT_KEY == SAY_DATA_KEY)
return;
Intent intent12 = new Intent(this, SayActivity.class);
if (!loginName.equals(""))
startActivity(intent12);
else
MyTools.exitShow(FoundationActivity.this, ((Activity)FoundationActivity.this).getWindow().getDecorView(), "请登陆后查看!");
break;
case R.id.phone_study_down:
if (CURRENT_KEY == PRELOAD_DATA_KEY)
return;
Intent intent22 = new Intent(this, PreloadActivity.class);
startActivity(intent22);
break;
case R.id.phone_study_kind:
if (CURRENT_KEY == KIND_DATA_KEY)
return;
Intent intent1 = new Intent(this, KindsActivity.class);
startActivity(intent1);
break;
case R.id.phone_study_free:
if (CURRENT_KEY == FREE_DATA_KEY)
return;
Intent intent3 = new Intent(this, FreeActivity.class);
startActivity(intent3);
break;
case R.id.phone_study_nominate:
if (CURRENT_KEY == SERVICE_DATA_KEY)
return;
Intent intent = new Intent(this, NominateActivity.class);
startActivity(intent);
break;
case R.id.phone_study_mymore:
if (CURRENT_KEY == RECORD_DATA_KEY)
return;
Intent intent4 = new Intent(this, StudyRecordActivity.class);
if (!loginName.equals(""))
startActivity(intent4);
else
MyTools.exitShow(FoundationActivity.this, ((Activity)FoundationActivity.this).getWindow().getDecorView(), "请登陆后查看!");
break;
case R.id.phone_study_search:
if (CURRENT_KEY == SEARCH_DATA_KEY)
return;
Intent intent2 = new Intent(this, SearchActivity.class);
startActivity(intent2);
break;
case R.id.phone_study_morebtn:
if(phoneStudyAdapter == null)
return;
index++;
switch (CURRENT_KEY) {
case KIND_DATA_KEY:
new Thread(new Runnable() {
@Override
public void run() {
List<Courseware> selfselCourseware = new ArrayList<Courseware>();
List<Courseware> moreCoursewares = new ArrayList<Courseware>();
String result = Service.queryClassTypeByClass(
currentFunctionId, index + 1);
if (XmlUtil.parseReturnCode(result).equals("")) {
XmlUtil.parseCoursewares(result, moreCoursewares);
result = Service
.queryCourse(((CeiApplication) (getApplication())).columnEntry
.getUserId());
XmlUtil.parseCoursewares(result, selfselCourseware);
for (int i = 0; i < moreCoursewares.size(); i++) {
for (int j = 0; j < selfselCourseware.size(); j++) {
if (moreCoursewares
.get(i)
.getClassId()
.equals(selfselCourseware.get(j)
.getClassId())) {
moreCoursewares.get(i).setSelfCourse(
true);
}
}
moreCoursewares.get(i).setParentId(
currentFunctionId);
((CeiApplication) getApplication()).dataHelper
.saveCourseware(courses.get(i));
}
courses.addAll(moreCoursewares);
Message msg = dataHandler.obtainMessage();
msg.arg1 = LVDATA_KEY;
dataHandler.sendMessage(msg);
} else {
Message msg = dataHandler.obtainMessage();
msg.arg1 = NO_NET;
dataHandler.sendMessage(msg);
}
}
}).start();
break;
default:
if(CURRENT_KEY == SELF_DATA_KEY || CURRENT_KEY == RECORD_DATA_KEY){
for (int i = index * 888; i < (index + 1) * 888
&& i < courses.size(); i++) {
if (i == courses.size() - 1)
footer.setVisibility(View.GONE);
coursewares.add(courses.get(i));
}
}else{
for (int i = index * 20; i < (index + 1) * 20
&& i < courses.size(); i++) {
if (i == courses.size() - 1)
footer.setVisibility(View.GONE);
coursewares.add(courses.get(i));
}
}
phoneStudyAdapter.notifyDataSetChanged();
break;
}
}
}
/**
* 做销毁工作
*/
@Override
protected void onDestroy() {
activitys.remove(this);
super.onDestroy();
}
/**
*
* 转圈
*/
class Progresser {
private PopupWindow popWin;
private void alertProgress() {
View popView = FoundationActivity.this.getLayoutInflater().inflate(
R.layout.phone_study_progress, null);
popWin = new PopupWindow(popView, LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT);
popWin.setFocusable(true);
popWin.showAtLocation(findViewById(R.id.full_view), Gravity.CENTER,
0, 0);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
popWin.dismiss();
}
}, 2000);
}
}
}