Newer
Older
dxcgt / app / src / main / java / com / smartdot / cgt / activity / FrmMyTask.java
wangxitong on 6 Apr 2021 13 KB first commit
package com.smartdot.cgt.activity;

import java.util.HashMap;
import java.util.List;

import android.content.DialogInterface;
import android.content.Intent;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.TextView;

import com.smartdot.cgt.R;
import com.smartdot.cgt.model.CaseModel;
import com.smartdot.cgt.model.ResponseResult;
import com.smartdot.cgt.request.Request;
import com.smartdot.cgt.util.ApplicationMain;
import com.smartdot.cgt.util.BaseThread;
import com.smartdot.cgt.util.HandlerStatus;
import com.smartdot.cgt.util.Msg;
import com.smartdot.cgt.util.NotificationCreater;
import com.smartdot.cgt.view.ListModelAdapterUseListItemView;
import com.smartdot.cgt.view.TitleBar;

/**
 * @ClassName: FrmMyTask 
 * @Description: 我的任务页面
 * @author zhaosw email:vvtale@gmail.com
 * @date 2014年4月22日 上午12:55:46  
 */
public class FrmMyTask extends BaseActivity
{
	private final String THREADGETCHECKTASK = "CHECKTASK";
	private final String THREADGETRECHECKTASK = "RECHECKTASK";
	private ListView listCheckProblem;
	private ListView listReCheckProblem;
	private TextView labelCheckTask;
	private TextView labelReCheckTask;
	protected int nowPageReCheck = 0;
	private int totalCountReCheck = 0;
	protected int nowPageCheck = 0;
	private int totalCountCheck = 0;
	private HashMap<String, BaseThread> threadList = new HashMap<String, BaseThread>(
			2);
	private ListView nowMaxView;
	private DialogHandler dialogHandler;

	@Override
	protected void setLayout()
	{
		initActivity();
		setContentView(R.layout.mytask);
		listCheckProblem = (ListView) findViewById(R.id.listCheckProblem);
		listReCheckProblem = (ListView) findViewById(R.id.listReCheckProblem);
		labelCheckTask = (TextView) findViewById(R.id.labelCheckTask);
		labelReCheckTask = (TextView) findViewById(R.id.labelReCheckTask);

		TitleBar titlebar = (TitleBar) this.findViewById(R.id.titlebar);

		titlebar.setTitleText(R.string.module_mytask);
		dialogHandler = new DialogHandler();
	}

	@Override
	protected void doInit()
	{
		getProblemCheckList();
		getProblemReCheckList();
	}

	@Override
	protected void onResume()
	{
		super.onResume();
		NotificationCreater.closeNotification(FrmMyTask.this,
				R.drawable.notification_task);
	}

	@Override
	protected void addEventListener()
	{
		labelCheckTask.setOnClickListener(onClickListener);

		labelReCheckTask.setOnClickListener(onClickListener);

		listCheckProblem.setOnItemClickListener(onItemClickListener);
		listCheckProblem.setOnScrollListener(onScrollListener);

		listReCheckProblem.setOnItemClickListener(onItemClickListener);
		listReCheckProblem.setOnScrollListener(onScrollListener);
	}

	@SuppressWarnings("unchecked")
	@Override
	protected void handleMessage(Message msg)
	{
		if (msg.what == HandlerStatus.REQUEST_GETPROBLEMCHECKLIST)
		{
			threadList.get(THREADGETCHECKTASK).interrupt();
			if (msg.arg1 == HandlerStatus.HANDLE_OK)
			{
				if (msg.obj != null)
				{
					ResponseResult<List<CaseModel>> listItem = (ResponseResult<List<CaseModel>>) msg.obj;

					if (listItem != null)
					{

						totalCountCheck = listItem.getAllCount();

						if (listItem.getAllCount() <= 0)
						{
							Log.d(TAG, "xxxxxxxxxxx");
							Msg.showInfo(FrmMyTask.this, "未查询到任何核实任务项");
						}
						if (nowPageCheck == 0)
						{
							ListModelAdapterUseListItemView<CaseModel> listItemAdapter = new ListModelAdapterUseListItemView<CaseModel>(
									FrmMyTask.this,
									listItem.getResultObj(),// 数据源
									R.layout.listitemview,// ListItem的XML实现
									// 动态数组与ImageItem对应的子项
									new String[] { "caseId", "caseSituation",
											"startTimeDate", "startTimeTime" },
									new int[] { R.id.caseId,
											R.id.caseDescription,
											R.id.startTimeDate,
											R.id.startTimeTime },
									R.id.btnViewDetail, itemClick);
							listCheckProblem.setAdapter(listItemAdapter);
						}
						else
						{
							ListModelAdapterUseListItemView<CaseModel> adapter = (ListModelAdapterUseListItemView<CaseModel>) listCheckProblem
									.getAdapter();
							adapter.addData(listItem.getResultObj());
							adapter.notifyDataSetChanged();
						}
						nowPageCheck++;// 获取成功后修改当前页
					}
				}
			}
			else
			{
				Msg.showInfo(FrmMyTask.this, "获取案卷核实列表时出错!");
			}
			if (!threadList.containsKey(THREADGETRECHECKTASK)
					|| !threadList.get(THREADGETRECHECKTASK).getIsThreadGoing())
			{
				// TODO 离线版用handler来关闭Dialog
				 closeProgress();
			}
		}
		else if (msg.what == HandlerStatus.REQUEST_GETPROBLEMRECHECKLIST)
		{
			threadList.get(THREADGETRECHECKTASK).interrupt();
			if (msg.arg1 == HandlerStatus.HANDLE_OK)
			{
				if (msg.obj != null)
				{
					ResponseResult<List<CaseModel>> listItem = (ResponseResult<List<CaseModel>>) msg.obj;

					if (listItem != null)
					{
						totalCountReCheck = listItem.getAllCount();
						if (listItem.getAllCount() <= 0)
						{
							Msg.showInfo(FrmMyTask.this, "未查询到任何核查任务项");
						}
						if (nowPageReCheck == 0)
						{
							ListModelAdapterUseListItemView<CaseModel> listItemAdapter = new ListModelAdapterUseListItemView<CaseModel>(
									FrmMyTask.this,
									listItem.getResultObj(),// 数据源
									R.layout.listitemview,// ListItem的XML实现
									// 动态数组与ImageItem对应的子项
									new String[] { "caseId", "caseSituation",
											"startTimeDate", "startTimeTime" },
									new int[] { R.id.caseId,
											R.id.caseDescription,
											R.id.startTimeDate,
											R.id.startTimeTime },
									R.id.btnViewDetail, itemClick);
							listReCheckProblem.setAdapter(listItemAdapter);
						}
						else
						{
							ListModelAdapterUseListItemView<CaseModel> adapter = (ListModelAdapterUseListItemView<CaseModel>) listReCheckProblem
									.getAdapter();
							adapter.addData(listItem.getResultObj());
							adapter.notifyDataSetChanged();
						}
						nowPageReCheck++;// 获取成功后修改当前页
					}
				}
			}
			else
			{
				Msg.showInfo(FrmMyTask.this, "获取案卷核查列表时出错!");
			}
			if (!threadList.containsKey(THREADGETCHECKTASK)
					|| !threadList.get(THREADGETCHECKTASK).getIsThreadGoing())
			{
				// TODO 离线版用handler来关闭Dialog
				 closeProgress();
			}
		}
	}

	private OnClickListener onClickListener = new OnClickListener()
	{
		@Override
		public void onClick(View arg0)
		{
			if (arg0 == labelCheckTask)
			{
				setMaxView(listCheckProblem);
			}
			else if (arg0 == labelReCheckTask)
			{
				setMaxView(listReCheckProblem);
			}
		}
	};

	private OnItemClickListener itemClick = new OnItemClickListener()
	{

		@Override
		public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
				long arg3)
		{
			if (arg0 == listCheckProblem)
			{
				CaseModel item = (CaseModel) listCheckProblem
						.getItemAtPosition(arg2);
				Intent intent = new Intent(FrmMyTask.this,
						FrmProblemCheckDetail.class);
				intent.putExtra("checkedProblemItem", item);
				startActivity(intent);
			}
			else if (arg0 == listReCheckProblem)
			{
				CaseModel item = (CaseModel) listReCheckProblem
						.getItemAtPosition(arg2);
				Intent intent = new Intent(FrmMyTask.this,
						FrmProblemReCheckDetail.class);
				intent.putExtra("reCheckedProblemItem", item);
				startActivity(intent);
			}
		}
	};

	private OnItemClickListener onItemClickListener = new OnItemClickListener()
	{

		@SuppressWarnings("unchecked")
		@Override
		public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
				long arg3)
		{
			if (arg0 == listCheckProblem)
			{
				setMaxView(listCheckProblem);
				ListModelAdapterUseListItemView<CaseModel> adapter = (ListModelAdapterUseListItemView<CaseModel>) listCheckProblem
						.getAdapter();
				adapter.setItemIndex(arg2);
				// TODO 直接跳转到详细页面
				CaseModel item = (CaseModel) listCheckProblem
						.getItemAtPosition(arg2);
				Intent intent = new Intent(FrmMyTask.this,
						FrmProblemCheckDetail.class);
				intent.putExtra("checkedProblemItem", item);
				startActivity(intent);
			}
			else if (arg0 == listReCheckProblem)
			{
				setMaxView(listReCheckProblem);
				ListModelAdapterUseListItemView<CaseModel> adapter = (ListModelAdapterUseListItemView<CaseModel>) listReCheckProblem
						.getAdapter();
				adapter.setItemIndex(arg2);
				// TODO 直接跳转到详细页面
				CaseModel item = (CaseModel) listReCheckProblem
						.getItemAtPosition(arg2);
				Intent intent = new Intent(FrmMyTask.this,
						FrmProblemReCheckDetail.class);
				intent.putExtra("reCheckedProblemItem", item);
				startActivity(intent);
			}
		}
	};

	private OnScrollListener onScrollListener = new OnScrollListener()
	{

		@Override
		public void onScrollStateChanged(AbsListView view, int scrollState)
		{
			if (scrollState == OnScrollListener.SCROLL_STATE_IDLE
					&& view.getLastVisiblePosition() + 1 == view.getCount())
			{
				if (view == listCheckProblem)
				{
					if (!threadList.containsKey(THREADGETCHECKTASK)
							|| !threadList.get(THREADGETCHECKTASK)
									.getIsThreadGoing())
					{
						if (nowPageCheck < Math.ceil((double) totalCountCheck
								/ ApplicationMain.getInstance().getCgtConfig()
										.getPageSize()))
						{
							getProblemCheckList();
						}
					}
				}
				else if (view == listReCheckProblem)
				{
					if (!threadList.containsKey(THREADGETRECHECKTASK)
							|| !threadList.get(THREADGETRECHECKTASK)
									.getIsThreadGoing())
					{
						if (nowPageReCheck < Math
								.ceil((double) totalCountReCheck
										/ ApplicationMain.getInstance()
												.getCgtConfig().getPageSize()))
						{
							getProblemReCheckList();
						}
					}
				}
			}
		}

		@Override
		public void onScroll(AbsListView view, int firstVisibleItem,
				int visibleItemCount, int totalItemCount)
		{
		}
	};

	@Override
	protected void onCancelProgress(DialogInterface arg0)
	{
		for (BaseThread thread : threadList.values())
		{
			if (thread != null)
			{
				thread.interrupt();
			}
		}
		threadList.clear();
		FrmMyTask.this.finish();
	}

	// TODO 不用该函数
	private void setMaxView(final ListView listView)
	{
		if (nowMaxView != listView)
		{
			if (nowMaxView == null)
			{
				if (listView == listCheckProblem)
				{
					nowMaxView = listReCheckProblem;
				}
				else
				{
					nowMaxView = listCheckProblem;
				}
			}
			// nowMaxView.setVisibility(View.GONE);
			// listView.setVisibility(View.VISIBLE);
			nowMaxView = listView;
		}
	}

	/**
	 * 
	 */
	private void getProblemCheckList()
	{
		BaseThread thread = new BaseThread(baseHandler)
		{

			@Override
			public void runThread()
			{
				BaseThread checkTaskThread = threadList.get(THREADGETCHECKTASK);
				Message msg = checkTaskThread.obtainMessage();
				if (msg != null)
				{
					msg.what = HandlerStatus.REQUEST_GETPROBLEMCHECKLIST;
					try
					{
						// TODO 测试数据
//						ResponseResult<List<CaseModel>> listItem = TestDataUtil
//								.getCaseModel3();
						 ResponseResult<List<CaseModel>> listItem = Request
						 .getRequest().getProblemCheckList(
						 ApplicationMain.getInstance()
						 .getUserModel().getBgAdminId(),
						 nowPageCheck + 1,
						 ApplicationMain.getInstance()
						 .getCgtConfig().getPageSize());
						msg.arg1 = HandlerStatus.HANDLE_OK;
						msg.obj = listItem;
					}
					catch (Exception e)
					{
						msg.arg1 = HandlerStatus.HANDLE_ERROR;
						e.printStackTrace();
					}
					checkTaskThread.sendMessage(msg);
				}
			}
		};
		threadList.put(THREADGETCHECKTASK, thread);
		showProgress("我的任务列表查询中。。。", "我的任务");
		// TODO 延迟1s关闭Dialog
//		dialogHandler.sendEmptyMessageDelayed(4, 1000);
		thread.start();
	}

	private void getProblemReCheckList()
	{

		BaseThread thread = new BaseThread(baseHandler)
		{

			@Override
			public void runThread()
			{
				BaseThread reCheckTaskThread = threadList
						.get(THREADGETRECHECKTASK);
				Message msg = reCheckTaskThread.obtainMessage();
				if (msg != null)
				{
					msg.what = HandlerStatus.REQUEST_GETPROBLEMRECHECKLIST;
					try
					{
						 ResponseResult<List<CaseModel>> listItem = Request
						 .getRequest().getProblemReCheckList(
						 ApplicationMain.getInstance()
						 .getUserModel().getBgAdminId(),
						 nowPageReCheck + 1,
						 ApplicationMain.getInstance()
						 .getCgtConfig().getPageSize());
						// TODO 测试数据
//						ResponseResult<List<CaseModel>> listItem = TestDataUtil
//								.getCaseModel();
						msg.arg1 = HandlerStatus.HANDLE_OK;
						msg.obj = listItem;
					}
					catch (Exception e)
					{
						msg.arg1 = HandlerStatus.HANDLE_ERROR;
						e.printStackTrace();
					}
					reCheckTaskThread.sendMessage(msg);
				}
			}
		};
		threadList.put(THREADGETRECHECKTASK, thread);
		showProgress("我的任务列表查询中。。。", "我的任务");
		// TODO 延迟1s关闭Dialog
//		dialogHandler.sendEmptyMessageDelayed(4, 1000);
		thread.start();

	}

	public void refreshReCheckList()
	{
		nowPageReCheck = 0;
		totalCountReCheck = 0;
		getProblemReCheckList();
	}

	public void refreshCheckList()
	{
		nowPageCheck = 0;
		totalCountCheck = 0;
		getProblemCheckList();
	}
	//TODO
	class DialogHandler extends Handler
	{
		@Override
		public void handleMessage(Message msg)
		{
			super.handleMessage(msg);
			closeProgress();
		}
	}

}