package com.videogo.ui.message; import android.app.AlertDialog; import android.app.Dialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.TextUtils; import android.text.format.DateFormat; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.TextView; import com.videogo.EzvizApplication; import ezviz.ezopensdkcommon.common.RootActivity; import com.videogo.alarm.AlarmLogInfoManager; import com.videogo.constant.Constant; import com.videogo.constant.IntentConsts; import com.videogo.errorlayer.ErrorInfo; import com.videogo.exception.BaseException; import com.videogo.exception.ErrorCode; import com.videogo.openapi.EZConstants.EZAlarmStatus; import com.videogo.openapi.bean.EZAlarmInfo; import com.videogo.ui.util.ActivityUtils; import com.videogo.ui.util.VerifyCodeInput; import com.videogo.util.ConnectionDetector; import com.videogo.util.LogUtil; import com.videogo.widget.CheckTextButton; import com.videogo.widget.PinnedSectionListView; import com.videogo.widget.PullToRefreshFooter; import com.videogo.widget.PullToRefreshFooter.Style; import com.videogo.widget.PullToRefreshHeader; import com.videogo.widget.TitleBar; import com.videogo.widget.WaitDialog; import com.videogo.widget.pulltorefresh.IPullToRefresh.Mode; import com.videogo.widget.pulltorefresh.IPullToRefresh.OnRefreshListener; import com.videogo.widget.pulltorefresh.LoadingLayout; import com.videogo.widget.pulltorefresh.PullToRefreshBase; import com.videogo.widget.pulltorefresh.PullToRefreshBase.LoadingLayoutCreator; import com.videogo.widget.pulltorefresh.PullToRefreshBase.Orientation; import com.videogo.widget.pulltorefresh.PullToRefreshPinnedSectionListView; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import ezviz.ezopensdk.R; public class EZMessageActivity2 extends RootActivity implements VerifyCodeInput.VerifyCodeErrorListener{ private static final String TAG = "EMessageActivity2"; private static final int REQUEST_CODE_SINGLE_DETAIL = 1; private static final int REQUEST_CODE_MULTI_DETAIL = 2; public static final int ERROR_WEB_NO_ERROR = 100000; // /< No error public static final int ERROR_WEB_NO_DATA = 100000 - 2; // /< The data is empty or does not exist private TitleBar mTitleBar; private PullToRefreshPinnedSectionListView mMessageListView; private ViewGroup mMainLayout; private ViewGroup mNoMessageLayout; private TextView mNoMessageTextView; private Button mNoMessageButton; private ViewGroup mRefreshLayout; private Button mRefreshButton; private TextView mRefreshTipView; private View mNoMoreView; private CheckTextButton mCheckModeButton; private ViewGroup mCheckModeTopLayout; private View mCheckModeTopDivider; private CheckBox mCheckAllView; private ViewGroup mCheckModeBottomLayout; private View mCheckModeBottomDivider; private Button mDeleteButton; private Button mReadButton; private EZMessageListAdapter2 mAdapter; private AlarmLogInfoManager mAlarmLogInfoManager; /** 消息处理 Message processing*/ // private MessageCtrl mMessageCtrl; private List mMessageList; private long mLastLoadTime; private UIHandler mUIHandler; private int mDataType = Constant.MESSAGE_LIST; private String mDeviceSerial; private int mCameraNo; private int mMenuPosition; private BroadcastReceiver mReceiver; private boolean mCheckMode; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.ez_message_page); findViews(); initData(); initTitleBar(); initViews(); setListner(); } @Override protected void onResume() { super.onResume(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Constant.ALARM_MESSAGE_DISPLAY_ACTION); registerReceiver(mReceiver, intentFilter); if (mAdapter.getCount() > 0) { setRefreshLayoutVisibility(false); setNoMessageLayoutVisibility(false); } if (mDataType == Constant.MESSAGE_INNER_PUSH) getPushAlarmMessageList(); if (mDataType == Constant.MESSAGE_LIST && System.currentTimeMillis() - mLastLoadTime >= Constant.RELOAD_INTERVAL) { refreshButtonClicked(); } mAdapter.notifyDataSetChanged(); } @Override protected void onPause() { super.onPause(); unregisterReceiver(mReceiver); } private void findViews() { mTitleBar = (TitleBar) findViewById(R.id.title_bar); mMessageListView = (PullToRefreshPinnedSectionListView) findViewById(R.id.message_list); mNoMessageLayout = (ViewGroup) findViewById(R.id.no_message_layout); mNoMessageTextView = (TextView) findViewById(R.id.no_message_text); mNoMessageButton = (Button) findViewById(R.id.no_message_button); mRefreshLayout = (ViewGroup) findViewById(R.id.refresh_layout); mRefreshButton = (Button) mRefreshLayout.findViewById(R.id.retry_button); mRefreshTipView = (TextView) mRefreshLayout.findViewById(R.id.error_prompt); mMainLayout = (ViewGroup) findViewById(R.id.main_layout); mCheckModeTopLayout = (ViewGroup) findViewById(R.id.check_mode_top); mCheckModeTopDivider = findViewById(R.id.check_mode_top_divider); mCheckAllView = (CheckBox) findViewById(R.id.check_all); mCheckModeBottomLayout = (ViewGroup) findViewById(R.id.check_mode_bottom); mCheckModeBottomDivider = findViewById(R.id.check_mode_bottom_divider); mDeleteButton = (Button) findViewById(R.id.del_button); mReadButton = (Button) findViewById(R.id.read_button); } private void initData() { mAlarmLogInfoManager = AlarmLogInfoManager.getInstance(); // mMessageCtrl = MessageCtrl.getInstance(); mMessageList = new ArrayList(); mDeviceSerial = getIntent().getStringExtra(IntentConsts.EXTRA_DEVICE_ID); mCameraNo = getIntent().getIntExtra(IntentConsts.EXTRA_CAMERA_NO,1); mAdapter = new EZMessageListAdapter2(this, mMessageList, mDeviceSerial,this); mAdapter.setNoMenu(mDataType != Constant.MESSAGE_LIST); mUIHandler = new UIHandler(); } private void initTitleBar() { if (mDataType == Constant.MESSAGE_LIST) { mTitleBar.setTitle(R.string.ez_event_message); mCheckModeButton = mTitleBar.addRightCheckedText(getText(R.string.edit_txt), getText(R.string.cancel), new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { } setCheckMode(isChecked); } }); } mTitleBar.addBackButton(new OnClickListener() { @Override public void onClick(View v) { onBackPressed(); } }); } private void initViews() { if (mDataType == Constant.MESSAGE_LIST) { mNoMoreView = getLayoutInflater().inflate(R.layout.no_more_footer, null); ((TextView) mNoMoreView.findViewById(R.id.no_more_hint)).setText(R.string.no_more_alarm_tip); mMessageListView.setLoadingLayoutCreator(new LoadingLayoutCreator() { @Override public LoadingLayout create(Context context, boolean headerOrFooter, Orientation orientation) { if (headerOrFooter) return new PullToRefreshHeader(context); else return new PullToRefreshFooter(context, Style.EMPTY_NO_MORE); } }); mMessageListView.setMode(Mode.BOTH); mMessageListView.setOnRefreshListener(new OnRefreshListener() { @Override public void onRefresh(PullToRefreshBase refreshView, boolean headerOrFooter) { getAlarmMessageList(true, headerOrFooter); } }); mMessageListView.getRefreshableView().addFooterView(mNoMoreView); mMessageListView.setAdapter(mAdapter); mMessageListView.getRefreshableView().removeFooterView(mNoMoreView); mCheckModeButton.setVisibility(View.GONE); } // boolean hasDevice = DeviceManager.getInstance().haveAlarmDevice(); // mNoMessageTextView.setVisibility(hasDevice ? View.GONE : View.VISIBLE); // mNoMessageButton.setVisibility(hasDevice ? View.GONE : View.VISIBLE); } private void setListner() { OnClickListener clickListener = new OnClickListener() { @Override public void onClick(View v) { int id = v.getId(); if (id == R.id.retry_button) { refreshButtonClicked(); } else if (id == R.id.no_message_layout) { refreshButtonClicked(); } else if (id == R.id.check_mode_top) { mCheckAllView.toggle(); if (mCheckAllView.isChecked()) { } if (mCheckAllView.isChecked()) mAdapter.checkAll(); else mAdapter.uncheckAll(); setupCheckModeLayout(false); } else if (id == R.id.check_all) { if (mCheckAllView.isChecked()) { } if (mCheckAllView.isChecked()) mAdapter.checkAll(); else mAdapter.uncheckAll(); setupCheckModeLayout(false); } else if (id == R.id.del_button) { deleteMessage(mAdapter.getCheckedIds()); } else if (id == R.id.read_button) { new CheckAlarmInfoTask2(true).execute(mAdapter.getCheckedIds()); } else if (id == R.id.no_message_button) {// WebUtils.openYsStore(EZMessageActivity2.this, null); } } }; mRefreshButton.setOnClickListener(clickListener); mNoMessageLayout.setOnClickListener(clickListener); mNoMessageButton.setOnClickListener(clickListener); mCheckModeTopLayout.setOnClickListener(clickListener); mCheckAllView.setOnClickListener(clickListener); mDeleteButton.setOnClickListener(clickListener); mReadButton.setOnClickListener(clickListener); mAdapter.setOnClickListener(new EZMessageListAdapter2.OnClickListener() { @Override public void onItemLongClick(BaseAdapter adapter, View view, int position) { mMenuPosition = position; } @Override public void onItemClick(BaseAdapter adapter, View view, int position) { EZAlarmInfo alarmInfo = (EZAlarmInfo) adapter.getItem(position); setAlarmInfoChecked(alarmInfo); Intent intent = new Intent(EZMessageActivity2.this, EZMessageImageActivity2.class); intent.putExtra(IntentConsts.EXTRA_ALARM_INFO, alarmInfo); startActivity(intent); //startActivityForResult(intent, REQUEST_CODE_MULTI_DETAIL); } @Override public void onCheckClick(BaseAdapter adapter, View view, int position, boolean checked) { setupCheckModeLayout(false); } }); mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (mDataType == Constant.MESSAGE_INNER_PUSH) getPushAlarmMessageList(); mAdapter.notifyDataSetChanged(); }; }; } private void deleteMessage(final Object param) { Context context = (getParent() == null ? this : getParent()); new AlertDialog.Builder(context).setMessage(R.string.delete_confirm) .setPositiveButton(R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }).setNegativeButton(R.string.delete, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { new DeleteAlarmMessageTask().execute(param); } }).show(); } private void refreshButtonClicked() { setRefreshLayoutVisibility(false); setNoMessageLayoutVisibility(false); getAlarmMessageList(false, true); } private void setAlarmInfoChecked(EZAlarmInfo alarmInfo) { // 判断是否已读 if (alarmInfo.getIsRead() == 0) new CheckAlarmInfoTask2(false).execute(alarmInfo); } private void getAlarmMessageList(boolean pullOrClick, boolean headerOrFooter) { if (pullOrClick) { String lastTime = ""; if (!headerOrFooter) { if (mMessageList != null && mMessageList.size() > 0) lastTime = mMessageList.get(mMessageList.size() - 1).getAlarmStartTime(); } new GetAlarmMessageTask(headerOrFooter).execute(lastTime); } else { mMessageListView.setRefreshing(); } } private void getPushAlarmMessageList() { //mj // mMessageList.addAll(0, mAlarmLogInfoManager.getPushListFromNotifierByCamera(this, mDeviceSerial, mChannelNo, // AlarmLogInfoEx.ALARMTYPE)); mAdapter.setList(mMessageList); mAdapter.notifyDataSetChanged(); } public void setCheckMode(boolean checkMode) { if (mCheckMode != checkMode) { mCheckMode = checkMode; // mCheckModeTopLayout.setVisibility(mCheckMode ? View.VISIBLE : View.GONE); mCheckModeTopDivider.setVisibility(mCheckMode ? View.VISIBLE : View.GONE); mCheckModeBottomLayout.setVisibility(mCheckMode ? View.VISIBLE : View.GONE); mCheckModeBottomDivider.setVisibility(mCheckMode ? View.VISIBLE : View.GONE); if (mCheckMode) setupCheckModeLayout(true); mAdapter.setCheckMode(mCheckMode); } } private void setNoMessageLayoutVisibility(boolean visible) { if (mCheckModeButton != null) { // Edit TextCheck mCheckModeButton.setVisibility((visible || mMainLayout.getVisibility() != View.VISIBLE) ? View.GONE // : View.VISIBLE); } mNoMessageLayout.setVisibility(visible ? View.VISIBLE : View.GONE); } private void setRefreshLayoutVisibility(boolean visible) { if (mCheckModeButton != null) { // mCheckModeButton.setVisibility(visible ? View.GONE : View.VISIBLE); } mRefreshLayout.setVisibility(visible ? View.VISIBLE : View.GONE); } private void setupCheckModeLayout(boolean init) { if (mCheckMode) { List ids = new ArrayList(); boolean checkAll = false; if (!init) { ids.addAll(mAdapter.getCheckedIds()); checkAll = mAdapter.isCheckAll(); } mCheckAllView.setChecked(checkAll); if (ids.size() == 0) { mDeleteButton.setText(R.string.delete); mDeleteButton.setEnabled(false); mReadButton.setEnabled(true); } else { mDeleteButton.setText(getString(R.string.delete) + '(' + ids.size() + ')'); mDeleteButton.setEnabled(true); mReadButton.setEnabled(true); } } } @Override public boolean onContextItemSelected(MenuItem item) { if (mAdapter == null || mAdapter.getCount() == 0) { return true; } EZAlarmInfo alarmInfo = (EZAlarmInfo) mAdapter.getItem(mMenuPosition); if (alarmInfo == null) { return true; } switch (item.getItemId()) { case EZMessageListAdapter2.MENU_DEL_ID: deleteMessage(alarmInfo); break; // case MessageListAdapter.MENU_MORE_ID: // mCheckModeButton.setChecked(true); // break; } return super.onContextItemSelected(item); } @Override public void onBackPressed() { super.onBackPressed(); } @Override public void startActivityForResult(Intent intent, int requestCode) { if (getParent() == null) super.startActivityForResult(intent, requestCode); else getParent().startActivityForResult(intent, requestCode); } private void setAlarmRead(EZAlarmInfo alarmInfo) { if(mMessageList != null && mMessageList.size() > 0) { for(EZAlarmInfo info : mMessageList) { if(info.getAlarmId().equals(alarmInfo.getAlarmId())) { info.setIsRead(1); } } } } private void setAlarmRead(String alarmId) { if(mMessageList != null && mMessageList.size() > 0) { for(EZAlarmInfo info : mMessageList) { if(info.getAlarmId().equals(alarmId)) { info.setIsRead(1); } } } } private void deleteAlarmFromList(String alarmId) { if(mMessageList != null && mMessageList.size() > 0) { for(int i = 0 ; i < mMessageList.size(); i ++) { EZAlarmInfo info = mMessageList.get(i); if(info.getAlarmId().equals(alarmId)) { mMessageList.remove(info); } } } } @Override public void verifyCodeError() { runOnUiThread(new Runnable() { @Override public void run() { if (mAdapter != null){ mAdapter.setVerifyCodeDialog(); } } }); } // @Override // protected void onActivityResult(int requestCode, int resultCode, Intent intent) { // if (requestCode == REQUEST_CODE_SINGLE_DETAIL) { // finish(); // // } else if (requestCode == REQUEST_CODE_MULTI_DETAIL) { // if (resultCode == RESULT_OK) { // if (intent.hasExtra(IntentConstants.EXTRA_ALARM_LIST)) // mMessageList = intent.getParcelableArrayListExtra(IntentConstants.EXTRA_ALARM_LIST); // mAdapter.setList(mMessageList); // mAdapter.notifyDataSetChanged(); // } // // if (intent != null) { // long lastLoadTime = intent.getLongExtra(IntentConstants.EXTRA_LAST_LOAD_TIME, 0); // if (lastLoadTime > 0) // mLastLoadTime = lastLoadTime; // } // } // } private class GetAlarmMessageTask extends AsyncTask> { private boolean mHeaderOrFooter; private int mErrorCode = 100000;// ErrorCode.ERROR_WEB_NO_ERROR; public GetAlarmMessageTask(boolean headerOrFooter) { mHeaderOrFooter = headerOrFooter; } @Override protected List doInBackground(String... params) { if (mHeaderOrFooter) { } else { } if (!ConnectionDetector.isNetworkAvailable(EZMessageActivity2.this)) { mErrorCode = ErrorCode.ERROR_WEB_NET_EXCEPTION; return null; } // try { List result = null; Calendar mStartTime; Calendar mEndTime; mStartTime = Calendar.getInstance(); mStartTime.set(Calendar.AM_PM, 0); mStartTime.set(mStartTime.get(Calendar.YEAR), mStartTime.get(Calendar.MONTH), mStartTime.get(Calendar.DAY_OF_MONTH), 0, 0, 0); mEndTime = Calendar.getInstance(); mEndTime.set(Calendar.AM_PM, 0); mEndTime.set(mEndTime.get(Calendar.YEAR), mEndTime.get(Calendar.MONTH), mEndTime.get(Calendar.DAY_OF_MONTH), 23, 59, 59); int pageSize = 10; int pageStart = 0; if(mHeaderOrFooter) { pageStart = 0; } else { pageStart = mAdapter.getCount() / pageSize; } try { result = EzvizApplication.getOpenSDK().getAlarmList(mDeviceSerial, pageStart, pageSize,mStartTime, mEndTime); } catch (BaseException e) { // TODO Auto-generated catch block e.printStackTrace(); ErrorInfo errorInfo = (ErrorInfo) e.getObject(); mErrorCode = errorInfo.errorCode; LogUtil.d("EM", errorInfo.toString()); } return result; // } catch (VideoGoNetSDKException e) { // mErrorCode = e.getErrorCode(); // if (mErrorCode == ErrorCode.ERROR_WEB_NO_DATA) { // try { // mMessageCtrl.fetchUnreadMsgCount(EZMessageActivity2.this); // } catch (VideoGoNetSDKException ex) { // } // return new ArrayList(); // } else { // return null; // } // } } @Override protected void onPostExecute(List result) { super.onPostExecute(result); mMessageListView.onRefreshComplete(); int pageSize = 10; if (result == null){ if (mErrorCode != ERROR_WEB_NO_ERROR) onError(mErrorCode); return; } if (mHeaderOrFooter && (mErrorCode == ERROR_WEB_NO_ERROR || mErrorCode == ERROR_WEB_NO_DATA)) { CharSequence dateText = DateFormat.format("yyyy-MM-dd kk:mm:ss", new Date()); for (LoadingLayout layout : mMessageListView.getLoadingLayoutProxy(true, false).getLayouts()) { ((PullToRefreshHeader) layout).setLastRefreshTime(":" + dateText); } mMessageListView.setFooterRefreshEnabled(true); mMessageListView.getRefreshableView().removeFooterView(mNoMoreView); // mAdapter.(); mMessageList.clear(); } if(mAdapter.getCount() == 0 && result.size() == 0) { // show no message ui } else if (result.size() < pageSize) { mMessageListView.setFooterRefreshEnabled(false); mMessageListView.getRefreshableView().addFooterView(mNoMoreView); } else if (mHeaderOrFooter) { mMessageListView.setFooterRefreshEnabled(true); mMessageListView.getRefreshableView().removeFooterView(mNoMoreView); } if (result != null && result.size() > 0) { mMessageList.addAll(result); mAdapter.setList(mMessageList); setupCheckModeLayout(false); mAdapter.notifyDataSetChanged(); mLastLoadTime = System.currentTimeMillis(); } else { mErrorCode = ERROR_WEB_NO_DATA; } sendUIMessage(mUIHandler, UI_MSG_LIST_CHANGE, 0, 0); if (mMessageList.size() > 0) { setNoMessageLayoutVisibility(false); } if (mErrorCode != ERROR_WEB_NO_ERROR) onError(mErrorCode); } protected void onError(int errorCode) { if (errorCode == ERROR_WEB_NO_DATA) { if (mMessageList.size() == 0) { setRefreshLayoutVisibility(false); setNoMessageLayoutVisibility(true); mMessageListView.getRefreshableView().removeFooterView(mNoMoreView); } else { setRefreshLayoutVisibility(false); mMessageListView.setFooterRefreshEnabled(false); mMessageListView.getRefreshableView().addFooterView(mNoMoreView); } /*case ErrorCode.ERROR_WEB_SESSION_ERROR: ActivityUtils.handleSessionException(EZMessageActivity2.this); break; case ErrorCode.ERROR_WEB_HARDWARE_SIGNATURE_ERROR: ActivityUtils.handleHardwareError(EZMessageActivity2.this, null); break; case ErrorCode.ERROR_WEB_SERVER_EXCEPTION: showError(getText(R.string.message_refresh_fail_server_exception)); break; case ErrorCode.ERROR_WEB_NET_EXCEPTION: showError(getText(R.string.message_refresh_fail_network_exception)); break;*/ } else { showError(getErrorTip(R.string.get_message_fail_service_exception, errorCode)); } } private void showError(CharSequence text) { if (mHeaderOrFooter && mMessageList.size() == 0) { mRefreshTipView.setText(text); setRefreshLayoutVisibility(true); } else { showToast(text); } } } private class DeleteAlarmMessageTask extends AsyncTask { private Dialog mWaitDialog; private int mErrorCode = ERROR_WEB_NO_ERROR; @Override protected void onPreExecute() { super.onPreExecute(); mWaitDialog = new WaitDialog(EZMessageActivity2.this, android.R.style.Theme_Translucent_NoTitleBar); mWaitDialog.setCancelable(false); mWaitDialog.show(); } @Override protected Object doInBackground(Object... params) { if (!ConnectionDetector.isNetworkAvailable(EZMessageActivity2.this)) { mErrorCode = ErrorCode.ERROR_WEB_NET_EXCEPTION; return null; } List deleteIds = new ArrayList(); if (params[0] instanceof EZAlarmInfo) { // 单个删除 Single delete EZAlarmInfo info = (EZAlarmInfo) params[0]; if (TextUtils.isEmpty(info.getAlarmId())) { } else { deleteIds.add(info.getAlarmId()); } } else if (params[0] instanceof List) { // 批量删除 batch deletion List ids = (List) params[0]; if (ids != null && ids.size() > 0) deleteIds.addAll(ids); } try { EzvizApplication.getOpenSDK().deleteAlarm(deleteIds); } catch (BaseException e) { e.printStackTrace(); ErrorInfo errorInfo = (ErrorInfo) e.getObject(); mErrorCode = errorInfo.errorCode; LogUtil.d(TAG, errorInfo.toString()); } return params[0]; // } catch (VideoGoNetSDKException e) { // mErrorCode = e.getErrorCode(); // return null; // } } @Override protected void onPostExecute(Object result) { super.onPostExecute(result); mWaitDialog.dismiss(); if (result != null) { if (result instanceof EZAlarmInfo) { EZAlarmInfo info = (EZAlarmInfo) result; //mAlarmLogInfoManager.deleteAlarmLogList(info); //mj if (mDataType == Constant.MESSAGE_INNER_PUSH) if (mDataType == Constant.MESSAGE_LIST) mMessageList.remove(info); } else if (result instanceof List) { List ids = (List) result; for (String id : ids) { deleteAlarmFromList(id); } } // 如果删除到最后会重新获取的 If deleted to the last will be re-acquired if (mDataType == Constant.MESSAGE_LIST && mMessageList.size() == 0) { setNoMessageLayoutVisibility(true); refreshButtonClicked(); } mAdapter.setList(mMessageList); setupCheckModeLayout(false); mAdapter.notifyDataSetChanged(); showToast(getText(R.string.alarm_message_del_success_txt)); mCheckModeButton.setChecked(false); } if (mErrorCode != ERROR_WEB_NO_ERROR) onError(mErrorCode); } protected void onError(int errorCode) { if (errorCode == ErrorCode.ERROR_WEB_SESSION_ERROR) { ActivityUtils.handleSessionException(EZMessageActivity2.this); } else if (errorCode == ErrorCode.ERROR_WEB_HARDWARE_SIGNATURE_ERROR) { ActivityUtils.handleSessionException(EZMessageActivity2.this); } else if (errorCode == ErrorCode.ERROR_WEB_SERVER_EXCEPTION) { showToast(getText(R.string.alarm_message_del_fail_txt)); } else if (errorCode == ErrorCode.ERROR_WEB_NET_EXCEPTION) { showToast(getText(R.string.alarm_message_del_fail_network_exception)); } else { showToast(R.string.alarm_message_del_fail_txt, errorCode); } } } private class CheckAlarmInfoTask extends AsyncTask { private Dialog mWaitDialog; private boolean mCheckAll; private int mErrorCode = ERROR_WEB_NO_ERROR; private EZAlarmInfo info; public CheckAlarmInfoTask(boolean checkAll) { mCheckAll = checkAll; } @Override protected void onPreExecute() { super.onPreExecute(); if (mCheckAll) { mWaitDialog = new WaitDialog(EZMessageActivity2.this, android.R.style.Theme_Translucent_NoTitleBar); mWaitDialog.setCancelable(false); mWaitDialog.show(); } } @Override protected Boolean doInBackground(EZAlarmInfo... params) { if (!ConnectionDetector.isNetworkAvailable(EZMessageActivity2.this)) { mErrorCode = ErrorCode.ERROR_WEB_NET_EXCEPTION; return false; } info = params[0]; List alarmIds = new ArrayList(); if(info != null) alarmIds.add(info.getAlarmId()); try { EzvizApplication.getOpenSDK().setAlarmStatus(alarmIds, EZAlarmStatus.EZAlarmStatusRead); setAlarmRead(info); return true; } catch (BaseException e) { e.printStackTrace(); ErrorInfo errorInfo = (ErrorInfo) e.getObject(); mErrorCode = errorInfo.errorCode; LogUtil.d("EM", errorInfo.toString()); return false; } // try { // if (mCheckAll) { // mMessageCtrl.setAllAlarmInfoChecked(); // } else { // // 单独已读 // info = params[0]; // if (TextUtils.isEmpty(info.getAlarmLogId())) // mMessageCtrl.setAlarmInfoChecked(info.getDeviceSerial(), info.getChannelNo(), // info.getAlarmType(), info.getAlarmStartTime()); // else // mMessageCtrl.setAlarmInfoChecked(info.getAlarmLogId()); // info.setCheckState(1); // } // return true; // } catch (VideoGoNetSDKException e) { // mErrorCode = e.getErrorCode(); // return false; // } } @Override protected void onPostExecute(Boolean result) { super.onPostExecute(result); if (mCheckAll) mWaitDialog.dismiss(); if (result) { if (mCheckAll) { // // 本地的全部标识已读 // mAlarmLogInfoManager.checkAllAlarmLogInfoList(); // // // 清除所有应用外推送 ,提示栏已经显示了,所以清除掉 // Utils.clearAllNotification(EZMessageActivity2.this); // mAlarmLogInfoManager.clearNotifierMessageList(AlarmLogInfoEx.ALARMTYPE); // // // 遍历本地摄像机标识本地的未读信息 // CameraManager.getInstance().clearAlarmCount(); // mMessageCtrl.checkAllUnReadCameraMessage(EZMessageActivity2.this); // showToast(getText(R.string.alarm_message_check_success)); // mCheckModeButton.setChecked(false); } else { // mAlarmLogInfoManager.getAlarmLogInfoFromNotifier().remove(info); // mMessageCtrl.decreaseUnreadCameraMessageCount(EZMessageActivity2.this); } mAdapter.notifyDataSetChanged(); } if (mErrorCode != ERROR_WEB_NO_ERROR) onError(mErrorCode); } protected void onError(int errorCode) { if (errorCode == ErrorCode.ERROR_WEB_SESSION_ERROR) { ActivityUtils.handleSessionException(EZMessageActivity2.this); } else if (errorCode == ErrorCode.ERROR_WEB_HARDWARE_SIGNATURE_ERROR) { ActivityUtils.handleSessionException(EZMessageActivity2.this); } else if (errorCode == ErrorCode.ERROR_WEB_SERVER_EXCEPTION) { showToast(getText(R.string.alarm_message_check_fail)); } else if (errorCode == ErrorCode.ERROR_WEB_NET_EXCEPTION) { showToast(getText(R.string.alarm_message_check_fail_network_exception)); } else { showToast(R.string.alarm_message_check_fail, errorCode); } } } private class CheckAlarmInfoTask2 extends AsyncTask { private Dialog mWaitDialog; private boolean mCheckAll; private int mErrorCode = ERROR_WEB_NO_ERROR; private EZAlarmInfo info; public CheckAlarmInfoTask2(boolean checkAll) { mCheckAll = checkAll; } @Override protected void onPreExecute() { super.onPreExecute(); if (mCheckAll) { mWaitDialog = new WaitDialog(EZMessageActivity2.this, android.R.style.Theme_Translucent_NoTitleBar); mWaitDialog.setCancelable(false); mWaitDialog.show(); } } @Override protected Boolean doInBackground(Object... params) { if (!ConnectionDetector.isNetworkAvailable(EZMessageActivity2.this)) { mErrorCode = ErrorCode.ERROR_WEB_NET_EXCEPTION; return false; } List alarmIds = new ArrayList(); if (params[0] instanceof EZAlarmInfo) { EZAlarmInfo info = (EZAlarmInfo) params[0]; if (TextUtils.isEmpty(info.getAlarmId())) { } else { alarmIds.add(info.getAlarmId()); } } else if (params[0] instanceof List) { List ids = (List) params[0]; if (ids != null && ids.size() > 0) alarmIds.addAll(ids); } try { EzvizApplication.getOpenSDK().setAlarmStatus(alarmIds, EZAlarmStatus.EZAlarmStatusRead); for(String alarmId : alarmIds) { setAlarmRead(alarmId); } return true; } catch (BaseException e) { e.printStackTrace(); ErrorInfo errorInfo = (ErrorInfo) e.getObject(); mErrorCode = errorInfo.errorCode; LogUtil.d("EM", errorInfo.toString()); return false; } // try { // if (mCheckAll) { // mMessageCtrl.setAllAlarmInfoChecked(); // } else { // // 单独已读 // info = params[0]; // if (TextUtils.isEmpty(info.getAlarmLogId())) // mMessageCtrl.setAlarmInfoChecked(info.getDeviceSerial(), info.getChannelNo(), // info.getAlarmType(), info.getAlarmStartTime()); // else // mMessageCtrl.setAlarmInfoChecked(info.getAlarmLogId()); // info.setCheckState(1); // } // return true; // } catch (VideoGoNetSDKException e) { // mErrorCode = e.getErrorCode(); // return false; // } } @Override protected void onPostExecute(Boolean result) { super.onPostExecute(result); if (mCheckAll) mWaitDialog.dismiss(); if (result) { setupCheckModeLayout(false); mAdapter.notifyDataSetChanged(); // showToast(getText(R.string.ez_alarm_message_check_success)); mCheckModeButton.setChecked(false); } if (mErrorCode != ERROR_WEB_NO_ERROR) onError(mErrorCode); } protected void onError(int errorCode) { if (errorCode == ErrorCode.ERROR_WEB_SESSION_ERROR) { ActivityUtils.handleSessionException(EZMessageActivity2.this); } else if (errorCode == ErrorCode.ERROR_WEB_HARDWARE_SIGNATURE_ERROR) { ActivityUtils.handleSessionException(EZMessageActivity2.this); } else if (errorCode == ErrorCode.ERROR_WEB_SERVER_EXCEPTION) { showToast(getText(R.string.alarm_message_check_fail)); } else if (errorCode == ErrorCode.ERROR_WEB_NET_EXCEPTION) { showToast(getText(R.string.alarm_message_check_fail_network_exception)); } else { showToast(R.string.alarm_message_check_fail, errorCode); } } } private void sendUIMessage(Handler handler, int what, int arg1, int arg2) { Message msg = Message.obtain(); msg.what = what; msg.arg1 = arg1; msg.arg2 = arg2; handler.sendMessage(msg); } private static final int UI_MSG_BASE = 500; private static final int UI_MSG_EMPTY_LIST = UI_MSG_BASE + 1; private static final int UI_MSG_LIST_CHANGE = UI_MSG_BASE + 2; private class UIHandler extends Handler { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == UI_MSG_EMPTY_LIST) { } else if (msg.what == UI_MSG_LIST_CHANGE) { if (mMessageList.size() == 0) { mCheckModeButton.setVisibility(View.GONE); } else { mCheckModeButton.setVisibility(View.VISIBLE); } } } } }