312 lines
11 KiB
Java
312 lines
11 KiB
Java
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<WaterPlanDetailLayoutBinding, WaterPlanPresenter>
|
||
implements WaterPlanContract.WaterPlanView {
|
||
//列表页面传的的,用于获取详情
|
||
private WaterPlanWeekEntity mPlanEntity;
|
||
//查询到的排程详情
|
||
private WaterPlanWeekEntity mDetailEntity;
|
||
private PlanWeekDaysAdapter mAdapter;
|
||
private PlanDetailDeviceAdapter deviceAdapter;
|
||
private List<WaterPlanWeekEntity.DetailsBean> 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<WaterDeviceEntity> 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<WaterPlanWeekEntity.DetailsBean> 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<WaterPlanWeekEntity> list,int total) {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void saveConfigSuccess(WaterPlanWeekEntity entity) {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void updateConfigSuccess(WaterPlanWeekEntity entity) {
|
||
|
||
}
|
||
|
||
|
||
}
|