294 lines
9.6 KiB
Java
294 lines
9.6 KiB
Java
package com.ckkj.water.plan;
|
||
|
||
import static android.view.View.GONE;
|
||
import static android.view.View.VISIBLE;
|
||
|
||
import android.os.Bundle;
|
||
import android.text.TextUtils;
|
||
import android.view.View;
|
||
|
||
import androidx.fragment.app.Fragment;
|
||
|
||
import com.ckkj.water.R;
|
||
import com.ckkj.water.base.BaseActivity;
|
||
import com.ckkj.water.base.BaseFragment;
|
||
import com.ckkj.water.databinding.AddWaterPlanLayoutBinding;
|
||
import com.ckkj.water.index.entity.WaterDeviceEntity;
|
||
import com.ckkj.water.network.BaseBean;
|
||
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.plate.adapter.ViewPagerAdapter;
|
||
import com.ckkj.water.utils.show.ToastUtil;
|
||
import com.gyf.immersionbar.ImmersionBar;
|
||
|
||
import java.util.ArrayList;
|
||
import java.util.List;
|
||
|
||
/**
|
||
* 添加/编辑浇水排程
|
||
*/
|
||
public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding, WaterPlanPresenter>
|
||
implements WaterPlanContract.WaterPlanView {
|
||
|
||
private List<Fragment> mFragmentList = new ArrayList<>();
|
||
private boolean mIsEditMode = false;
|
||
private WaterPlanWeekEntity mEditEntity;
|
||
private WaterPlanWeekEntity mNewAddEntity;
|
||
// private List<WaterPlanWeekEntity.DeviceEntity> mSelectedDevices = new ArrayList<>();
|
||
//
|
||
// public List<WaterPlanWeekEntity.DeviceEntity> getSelectedDevices() {
|
||
// return mSelectedDevices;
|
||
// }
|
||
//
|
||
// public void setSelectedDevices(List<WaterPlanWeekEntity.DeviceEntity> selectedDevices) {
|
||
// this.mSelectedDevices = selectedDevices;
|
||
// }
|
||
|
||
@Override
|
||
public WaterPlanPresenter createPresenter() {
|
||
return new WaterPlanPresenter(new WaterPlanImpl());
|
||
}
|
||
|
||
|
||
@Override
|
||
public void initData(Bundle savedInstanceState) {
|
||
super.initData(savedInstanceState);
|
||
|
||
ImmersionBar.with(this)
|
||
.statusBarColor(R.color.color_F9F9F9) // 设置状态栏颜色
|
||
.statusBarDarkFont(true) // 设置状态栏字体为黑色
|
||
.titleBar(viewBinding.rlTitle)
|
||
.init();
|
||
|
||
Bundle bundle = getIntent().getExtras();
|
||
if (bundle != null) {
|
||
mIsEditMode = bundle.getBoolean("is_edit", false);
|
||
mEditEntity = (WaterPlanWeekEntity) bundle.getSerializable("plan_entity");
|
||
}
|
||
|
||
// 根据模式设置标题
|
||
if (mIsEditMode) {
|
||
viewBinding.includedTitle.tvTitle.setText(R.string.edit_water_plan_title);
|
||
viewBinding.tvBound.setVisibility(VISIBLE);
|
||
} else {
|
||
viewBinding.includedTitle.tvTitle.setText(R.string.add_water_plan_title);
|
||
viewBinding.tvBound.setVisibility(GONE);
|
||
}
|
||
|
||
mFragmentList.add(new WaterConfigFragment_copy());
|
||
mFragmentList.add(new PlanBoundDeviceFragment());
|
||
mFragmentList.add(new BindDeviceFragment());
|
||
ViewPagerAdapter adapter = new ViewPagerAdapter(mContext, mFragmentList);
|
||
viewBinding.viewpage.setAdapter(adapter);
|
||
viewBinding.viewpage.setCurrentItem(0);
|
||
//viewpage2 特有的 api,禁止滑动
|
||
viewBinding.viewpage.setUserInputEnabled(false);
|
||
|
||
viewBinding.tvConfig.setSelected(true);
|
||
viewBinding.tvBind.setSelected(false);
|
||
initListener();
|
||
|
||
// 编辑模式下,延迟传递数据给 WaterConfigFragment,等 viewBinding 初始化完成后调用
|
||
if (mIsEditMode && mEditEntity != null) {
|
||
viewBinding.viewpage.post(() -> {
|
||
WaterConfigFragment_copy configFragment = (WaterConfigFragment_copy) mFragmentList.get(0);
|
||
configFragment.setEditEntity(mEditEntity);
|
||
|
||
PlanBoundDeviceFragment boundDeviceFragment = (PlanBoundDeviceFragment) mFragmentList.get(1);
|
||
boundDeviceFragment.setEditEntity(mEditEntity);
|
||
});
|
||
}
|
||
}
|
||
|
||
private void initListener() {
|
||
setClick(viewBinding.includedTitle.imgBack);
|
||
setClick(viewBinding.tvConfig);
|
||
setClick(viewBinding.tvBound);
|
||
setClick(viewBinding.tvBind);
|
||
}
|
||
|
||
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.tv_config:
|
||
viewBinding.tvConfig.setSelected(true);
|
||
viewBinding.tvBind.setSelected(false);
|
||
viewBinding.tvBound.setSelected(false);
|
||
viewBinding.viewpage.setCurrentItem(0);
|
||
break;
|
||
|
||
case R.id.tv_bound:
|
||
viewBinding.tvConfig.setSelected(false);
|
||
viewBinding.tvBound.setSelected(true);
|
||
viewBinding.tvBind.setSelected(false);
|
||
viewBinding.viewpage.setCurrentItem(1);
|
||
|
||
// 传递编辑实体给 PlanBoundDeviceFragment
|
||
PlanBoundDeviceFragment boundDeviceFragment = (PlanBoundDeviceFragment) mFragmentList.get(1);
|
||
boundDeviceFragment.setEditEntity(mEditEntity);
|
||
break;
|
||
|
||
case R.id.tv_bind:
|
||
WaterConfigFragment_copy configFragment = (WaterConfigFragment_copy) mFragmentList.get(0);
|
||
|
||
// 检查是否有未保存的数据变更
|
||
if (configFragment.hasDataChanged()) {
|
||
showDialogtext(null, false, false, true,
|
||
"提示", "数据已发生变更,是否保存?",
|
||
getString(R.string.cancel_text), "保存", new BaseFragment.OnDialogClick() {
|
||
@Override
|
||
public void onCancelClick() {
|
||
}
|
||
|
||
@Override
|
||
public void onConfirmClick() {
|
||
// 更新配置
|
||
configFragment.updateConfig();
|
||
}
|
||
});
|
||
return;
|
||
}
|
||
|
||
if (!configFragment.isConfigSubmitted()) {
|
||
// 校验新增排程的配置
|
||
if (!mIsEditMode) {
|
||
if (TextUtils.isEmpty(configFragment.getPlanName())) {
|
||
ToastUtil.showShort(mContext, getString(R.string.plan_name_text_empty_hint));
|
||
return;
|
||
}
|
||
if (!configFragment.hasTimeConfig()) {
|
||
ToastUtil.showShort(mContext, "请至少配置一天的时间");
|
||
return;
|
||
}
|
||
}
|
||
showDialogtext(null, false, false, true,
|
||
"提示", "关联设备需要保存排程配置,是否继续?",
|
||
getString(R.string.cancel_text), "继续", new BaseFragment.OnDialogClick() {
|
||
@Override
|
||
public void onCancelClick() {
|
||
}
|
||
|
||
@Override
|
||
public void onConfirmClick() {
|
||
configFragment.commitConfig();
|
||
}
|
||
});
|
||
return;
|
||
}
|
||
|
||
proceedToBindDevice();
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
|
||
|
||
}
|
||
}
|
||
|
||
private void selectTabBind(WaterPlanWeekEntity entity) {
|
||
if (entity == null) {
|
||
entity = mIsEditMode ? mEditEntity : mNewAddEntity;
|
||
}
|
||
if (entity == null) {
|
||
ToastUtil.showShort(mContext, "请先保存排程");
|
||
return;
|
||
}
|
||
viewBinding.tvConfig.setSelected(false);
|
||
viewBinding.tvBound.setSelected(false);
|
||
viewBinding.tvBind.setSelected(true);
|
||
viewBinding.viewpage.setCurrentItem(2);
|
||
|
||
// 传递排程数据给 BindDeviceFragment
|
||
BindDeviceFragment bindDeviceFragment = (BindDeviceFragment) mFragmentList.get(2);
|
||
bindDeviceFragment.setPlanEntity(entity);
|
||
}
|
||
|
||
/**
|
||
* 切换到绑定设备页面
|
||
*/
|
||
private void proceedToBindDevice() {
|
||
WaterConfigFragment_copy configFragment = (WaterConfigFragment_copy) mFragmentList.get(0);
|
||
WaterPlanWeekEntity entity = mIsEditMode ? mEditEntity : mNewAddEntity;
|
||
if (entity == null) {
|
||
entity = configFragment.getRemoteEntity();
|
||
}
|
||
selectTabBind(entity);
|
||
}
|
||
|
||
public void onConfigSaved(WaterPlanWeekEntity entity) {
|
||
mNewAddEntity = entity;
|
||
selectTabBind(entity);
|
||
}
|
||
|
||
@Override
|
||
public int getLayoutResId(Bundle savedInstanceState) {
|
||
return 0;
|
||
}
|
||
|
||
@Override
|
||
public void showError(String 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) {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void updatePlanStatusSuccess(BaseBean bean, String status) {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void getPlanDetailInfo(WaterPlanWeekEntity entity) {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void getPlanBindDeviceList(WaterDeviceEntity bean) {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void planBindDeviceSuccess(BaseBean bean) {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void deletePlanSuccess(BaseBean bean) {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void planUnbindDeviceSuccess(BaseBean bean, int position) {
|
||
|
||
}
|
||
|
||
|
||
}
|