package com.ckkj.water.plan; import android.os.Bundle; import android.os.Handler; import android.text.TextUtils; import android.view.MotionEvent; import android.view.View; import com.ckkj.water.R; import com.ckkj.water.base.BaseActivity; import com.ckkj.water.base.BaseFragment; import com.ckkj.water.databinding.WaterPlanDetailLayoutBinding; import com.ckkj.water.index.entity.WaterDeviceEntity; import com.ckkj.water.network.BaseBean; //import com.ckkj.water.plan.adapter.PlanDetailDeviceAdapter; //import com.ckkj.water.plan.adapter.PlanDetailTimeAdapter; import com.ckkj.water.plan.adapter.PlanDetailDeviceAdapter; import com.ckkj.water.plan.adapter.PlanDetailTimeAdapter; import com.ckkj.water.plan.adapter.PlanWeekDaysAdapter; import com.ckkj.water.plan.entity.WaterPlanWeekEntity; import com.ckkj.water.plan.mvp.WaterPlanContract; import com.ckkj.water.plan.mvp.WaterPlanImpl; import com.ckkj.water.plan.mvp.WaterPlanPresenter; import com.ckkj.water.utils.manager.ThemeManager; import com.ckkj.water.utils.show.ToastUtil; import com.ckkj.water.utils.time.ZYTimeUtils; import com.google.gson.Gson; import com.gyf.immersionbar.ImmersionBar; import java.util.ArrayList; import java.util.List; /** * 排程详情页面 */ public class PlanDetailActivity extends BaseActivity implements WaterPlanContract.WaterPlanView { //列表页面传的的,用于获取详情 private WaterPlanWeekEntity mPlanEntity; //查询到的排程详情 private WaterPlanWeekEntity mDetailEntity; private PlanWeekDaysAdapter mAdapter; private PlanDetailDeviceAdapter deviceAdapter; private List mList = new ArrayList<>(); @Override protected void onResume() { super.onResume(); showLoadingDialog(); mPresenter.getPlanDetailInfo(mPlanEntity); } @Override public void initData(Bundle savedInstanceState) { super.initData(savedInstanceState); Bundle bundle = getIntent().getExtras(); if(bundle != null){ mPlanEntity = (WaterPlanWeekEntity) bundle.getSerializable("plan_entity"); } String jsonContent = getString(R.string.plan_water_entity_json); WaterPlanWeekEntity entity = new Gson().fromJson(jsonContent, WaterPlanWeekEntity.class); ImmersionBar.with(this) .statusBarDarkFont(ThemeManager.isAppThemeLight(mContext)) // 白色状态栏图标 .navigationBarColor(R.color.color_gray_theme) .titleBar(viewBinding.rlTitle) .init(); viewBinding.includedTitle.tvTitle.setText(R.string.plan_detail_title); initListener(); mAdapter = new PlanWeekDaysAdapter(R.layout.single_recycleview_item,mList); viewBinding.rvPlanTime.setAdapter(mAdapter); List deviceList = new ArrayList<>(); deviceAdapter = new PlanDetailDeviceAdapter(R.layout.plan_detail_bind_device_item,deviceList); viewBinding.rvBindDevices.setAdapter(deviceAdapter); } private void initListener() { setClick(viewBinding.includedTitle.imgBack); setClick(viewBinding.btnEdit); setClick(viewBinding.btnDelete); setClick(viewBinding.switchButton); // viewBinding.switchButton.setOnTouchListener(new View.OnTouchListener() { // @Override // public boolean onTouch(View v, MotionEvent event) { // if (event.getAction() == MotionEvent.ACTION_DOWN) { // if (viewBinding.switchButton.isChecked()) { // // 当前是开启状态,下一步将是关闭 -> 屏蔽动画(时长设为0) // 0 // } else { // // 当前是关闭状态,下一步将是开启 -> 开启动画(恢复默认的 250ms 或你想要的时长) // viewBinding.switchButton.setAnimationDuration(250); // } // } // // 返回 false 以便将触摸事件继续传递给 SwitchButton 内部的点击/滑动逻辑 // return false; // } // }); } private void setClick(View view) { view.setOnClickListener(this::onClick); } public void onClick(View v){ switch (v.getId()){ case R.id.img_back: finish(); break; case R.id.btn_edit://编辑 if(mDetailEntity != null){ Bundle bundle = new Bundle(); bundle.putSerializable("plan_entity", mDetailEntity); bundle.putBoolean("is_edit", true); goTo(mContext, AddWaterPlanActivity.class,bundle); } break; case R.id.btn_delete://删除 showDialogtext(null, false, false, true, getString(R.string.tip_text), getString(R.string.delete_plan_tip), getString(R.string.cancel_text), getString(R.string.confirm_text), new BaseFragment.OnDialogClick() { @Override public void onCancelClick() { } @Override public void onConfirmClick() { mPresenter.deletePlan(mDetailEntity); } }); break; case R.id.switch_button://切换状态 // 先恢复 Switch 到原始状态,避免点击时立即改变 viewBinding.switchButton.setChecked(mDetailEntity.getStatus().equals("1")); if(mDetailEntity.getStatus().equals("1")){ showDialogtext(null, false, false, true, getString(R.string.tip_text), getString(R.string.close_plan_dialog_tip), getString(R.string.cancel_text), getString(R.string.confirm_text), new BaseFragment.OnDialogClick() { @Override public void onCancelClick() { // 取消操作,恢复 Switch 状态 viewBinding.switchButton.setChecked(true); } @Override public void onConfirmClick() { // 确认关闭任务,调用接口后再更新 Switch showLoadingDialog(); mPresenter.updatePlanStatus(mDetailEntity, "0"); } }); }else{ // 开启任务,调用接口后再更新 Switch mPresenter.updatePlanStatus(mDetailEntity, "1"); } break; } } /** * 获取配成详情成功 * @param entity */ @Override public void getPlanDetailInfo(WaterPlanWeekEntity entity) { hideDialogLoading(); mDetailEntity = entity; viewBinding.tvPlanName.setText(entity.getName()); if(entity.getStatus().equals("1")){ viewBinding.switchButton.setChecked(true); viewBinding.tvPlanStatus.setText(getString(R.string.plan_on)); }else{ viewBinding.switchButton.setChecked(false); viewBinding.tvPlanStatus.setText(getString(R.string.plan_off)); } //针对周一 --- 周日的日期,只显示勾选的日期 List list = new ArrayList<>(); for(WaterPlanWeekEntity.DetailsBean bean : entity.getDetails()){ if(bean.getStatus().equals("1")){ // 检查该日期是否有有效的时间配置 boolean hasValidTime = false; if(bean.getTimeData() != null){ for(WaterPlanWeekEntity.TimeDataBean timeBean : bean.getTimeData()){ if(!TextUtils.isEmpty(timeBean.getStartTime()) && timeBean.getDurationMin() != 0){ hasValidTime = true; bean.setWeekName(ZYTimeUtils.getWeekName(bean.getWeekday() - 1,mContext)); break; } } } if(hasValidTime){ list.add(bean); } } } //日期显示 if(mAdapter != null){ mAdapter.setNewData(list); } //设备显示 if(deviceAdapter != null){ deviceAdapter.setNewData(entity.getDeviceNos()); if(deviceAdapter.getItemCount() == 0){ viewBinding.rvBindDevices.setVisibility(View.GONE); viewBinding.tvNoDevice.setVisibility(View.VISIBLE); }else{ viewBinding.rvBindDevices.setVisibility(View.VISIBLE); viewBinding.tvNoDevice.setVisibility(View.GONE); } } } /** * 删除排程成功 * @param bean */ @Override public void deletePlanSuccess(BaseBean bean) { hideDialogLoading(); ToastUtil.showShort(mContext,getString(R.string.delete_plan_success)); new Handler().postDelayed(new Runnable() { @Override public void run() { finish(); } },500); } @Override public void planUnbindDeviceSuccess(BaseBean bean, int position) { } /** * 更新排程状态成功 * * @param bean * @param status */ @Override public void updatePlanStatusSuccess(BaseBean bean, String status) { hideDialogLoading(); mDetailEntity.setStatus(status); if(status.equals("1")){ showCenterTipDialog(R.mipmap.icon_dialog_success,getString(R.string.task_started)); viewBinding.switchButton.setChecked(true); viewBinding.tvPlanStatus.setText(getString(R.string.plan_on)); }else{ viewBinding.switchButton.setChecked(false); viewBinding.tvPlanStatus.setText(getString(R.string.plan_off)); } } @Override public void getPlanBindDeviceList(WaterDeviceEntity bean) { } @Override public void planBindDeviceSuccess(BaseBean bean) { } @Override public WaterPlanPresenter createPresenter() { return new WaterPlanPresenter(new WaterPlanImpl()); } @Override public int getLayoutResId(Bundle savedInstanceState) { return 0; } @Override public void showError(String message) { hideDialogLoading(); ToastUtil.showShort(mContext,message); } @Override public void logOut(BaseBean bean) { } @Override public void getWaterConfigListSuccess(List list,int total) { } @Override public void saveConfigSuccess(WaterPlanWeekEntity entity) { } @Override public void updateConfigSuccess(WaterPlanWeekEntity entity) { } }