package com.ckkj.water.plan; import android.os.Bundle; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; import android.view.View; import com.bigkoo.pickerview.builder.TimePickerBuilder; import com.bigkoo.pickerview.listener.OnTimeSelectListener; import com.bigkoo.pickerview.view.TimePickerView; import com.chad.library.adapter.base.BaseQuickAdapter; import com.ckkj.water.R; import com.ckkj.water.base.BaseActivity; import com.ckkj.water.base.BaseFragment; import com.ckkj.water.databinding.WaterConfigFragmentLayoutBinding; import com.ckkj.water.network.BaseBean; import com.ckkj.water.plan.adapter.WaterPlanWeekAdapter; 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.show.ToastUtil; import com.ckkj.water.utils.text.TextUtil; import com.ckkj.water.utils.time.ZYTimeUtils; import com.google.gson.Gson; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * 配置信息页面 */ public class WaterConfigFragment extends BaseFragment implements WaterPlanContract.WaterPlanView { private List mConfigList = new ArrayList<>(); private WaterPlanWeekEntity mConfigEntity; private WaterPlanWeekAdapter mWeekAdapter; private String mPlanName = ""; public static boolean isConfigSave; @Override public void initData(Bundle state) { mConfigEntity = new WaterPlanWeekEntity(); List list = new ArrayList<>(); for(int i = 0; i < 7; i++){ WaterPlanWeekEntity.DetailsBean bean = new WaterPlanWeekEntity.DetailsBean(); bean.setWeekday(i + 1); bean.setStatus("0"); bean.setWeekName(ZYTimeUtils.getWeekName(i)); list.add(bean); } mConfigEntity.setDetails(list); mWeekAdapter = new WaterPlanWeekAdapter(mContext,R.layout.plan_week_config_item, mConfigEntity.getDetails()); viewBinding.rvWeekConfig.setAdapter(mWeekAdapter); initListener(); } private void initListener() { setClick(viewBinding.tvCommit); mWeekAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() { @Override public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { switch (view.getId()){ case R.id.linear_week://选中 case R.id.checkbox: if(mConfigEntity.getDetails().get(position).getStatus().equals("1")){ mConfigEntity.getDetails().get(position).setStatus("0"); }else{ mConfigEntity.getDetails().get(position).setStatus("1"); } mWeekAdapter.notifyItemChanged(position); break; case R.id.tv_select_time: selectStartTime(position); break; case R.id.tv_plan_duration: inputDuration(position); break; } } }); viewBinding.etPlanName.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {} @Override public void onTextChanged(CharSequence s, int start, int before, int count) {} @Override public void afterTextChanged(Editable s) { if(!TextUtils.isEmpty(s.toString())){ mPlanName = s.toString(); mConfigEntity.setName(s.toString()); } } }); } public void onClick(View v){ switch (v.getId()){ case R.id.tv_commit: if(checkConfigFinish()){ mPresenter.saveConfig(mConfigEntity); } break; } } public void commitConfig(){ if(checkConfigFinish()){ mPresenter.saveConfig(mConfigEntity); } } private void inputDuration(int position) { showEditDialog(getString(R.string.device_work_times_title), getString(R.string.input_water_plan_time), mConfigEntity.getDetails().get(position).getDurationMin() == 0 ? "" : mConfigEntity.getDetails().get(position).getDurationMin() + "", true, getString(R.string.cancel_text), getString(R.string.confirm_text), BaseFragment.INPUT_TYPE_NUMBER, new BaseActivity.OnDialogClick() { @Override public void onCancelClick() { } @Override public void onConfirmClisk() { } @Override public void onConfirmClisk(String content) { if(Integer.parseInt(content) <= 0){ ToastUtil.showShort(mContext, getString(R.string.input_water_plan_time_error)); return; } mConfigEntity.getDetails().get(position).setDurationMin(Integer.parseInt(content)); mWeekAdapter.notifyItemChanged(position); } @Override public void onView1Click() { } }); } private void selectStartTime(int position) { boolean times[] = {false, false, false, true, true, false}; //时间选择器 TimePickerView pvTime = new TimePickerBuilder(mContext, new OnTimeSelectListener() { @Override public void onTimeSelect(Date date, View v) { //用于提交接口 mConfigEntity.getDetails().get(position).setStartTime(ZYTimeUtils.getStrTimeData(date)); mWeekAdapter.notifyItemChanged(position); } }).setType(times) .setCancelColor(mContext.getColor(R.color.color_999999)) .setSubmitColor(mContext.getColor(R.color.color_zhu)) .setTextColorCenter(mContext.getColor(R.color.color_zhu)) .build(); pvTime.show(); } private void setClick(View view) { view.setOnClickListener(this::onClick); } /** * 检查配置信息是否完成 * @return */ public boolean checkConfigFinish() { if(TextUtils.isEmpty(viewBinding.etPlanName.getText().toString())){ ToastUtil.showShort(mContext,getString(R.string.plan_name_text_empty_hint)); return false; } List list = mConfigEntity.getDetails(); //是否勾选了排程日期 boolean isSelectOne = false; if(list != null){ for(WaterPlanWeekEntity.DetailsBean bean : list){ if(bean.getStatus().equals("1")){ isSelectOne = true; } } } if(!isSelectOne){ ToastUtil.showShort(mContext,getString(R.string.plan_week_empty_hint)); return false; } //是否配置了排程日期的时间 boolean isPlanConfig = false; for(WaterPlanWeekEntity.DetailsBean bean : list){ if(bean.getStatus().equals("1")){ if((TextUtils.isEmpty(bean.getStartTime()) || bean.getDurationMin() == 0)){ ToastUtil.showShort(mContext,"请完成" + bean.getWeekName() + "的时间配置"); return false; } } } return true; } @Override public void saveConfigSuccess(WaterPlanWeekEntity entity) { ToastUtil.showShort(mContext, "排程新增成功"); isConfigSave = true; } @Override public WaterPlanPresenter createPresenter() { return new WaterPlanPresenter(new WaterPlanImpl()); } @Override public void onNetChange(int netModel) { } @Override public void showError(String message) { } @Override public void logOut(BaseBean bean) { } }