package com.lechange.demo.ui; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.text.Editable; import android.text.InputFilter; import android.text.TextUtils; import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Toast; import com.common.openapi.ClassInstanceManager; import com.common.openapi.DeviceDetailService; import com.common.openapi.IGetDeviceInfoCallBack; import com.common.openapi.MethodConst; import com.common.openapi.entity.DeviceDetailListData; import com.common.openapi.entity.DeviceModifyNameData; import com.lechange.demo.R; import com.mm.android.deviceaddmodule.helper.DeviceAddHelper; import com.mm.android.deviceaddmodule.mobilecommon.utils.LogUtil; import com.mm.android.deviceaddmodule.mobilecommon.utils.NameLengthFilter; import com.mm.android.deviceaddmodule.mobilecommon.utils.WordInputFilter; import com.mm.android.deviceaddmodule.mobilecommon.widget.ClearEditText; public class DeviceDetailModifyNameFragment extends Fragment implements View.OnClickListener, IGetDeviceInfoCallBack.IModifyDeviceCallBack { private static final String TAG = DeviceDetailModifyNameFragment.class.getSimpleName(); private Bundle arguments; private ClearEditText newName; private DeviceDetailListData.ResponseData.DeviceListBean deviceListBean; private DeviceDetailActivity deviceDetailActivity; private final int MAXLETHER = 40; private IGetDeviceInfoCallBack.IModifyDeviceName modifyNameListener; private String name; private String fromWhere; public static DeviceDetailModifyNameFragment newInstance() { DeviceDetailModifyNameFragment fragment = new DeviceDetailModifyNameFragment(); return fragment; } public void setModifyNameListener(IGetDeviceInfoCallBack.IModifyDeviceName modifyNameListener) { this.modifyNameListener = modifyNameListener; } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); arguments = getArguments(); if (arguments == null) { return; } deviceListBean = (DeviceDetailListData.ResponseData.DeviceListBean) arguments.getSerializable(MethodConst.ParamConst.deviceDetail); //不为空 列表页跳转 fromWhere = arguments.getString(MethodConst.ParamConst.fromList); if (deviceListBean == null) { return; } deviceDetailActivity = (DeviceDetailActivity) getActivity(); deviceDetailActivity.llOperate.setVisibility(View.VISIBLE); deviceDetailActivity.llOperate.setOnClickListener(this); } @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_device_modify_name, container, false); } @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); DeviceDetailActivity deviceDetailActivity = (DeviceDetailActivity) getActivity(); deviceDetailActivity.tvTitle.setText(getResources().getString(R.string.lc_demo_device_detail_title)); initView(view); } private void initView(View view) { newName = view.findViewById(R.id.et_new_name); if (deviceListBean.channels.size() > 1) { //多通道 if (MethodConst.ParamConst.fromList.equals(fromWhere)) { newName.setText(deviceListBean.name); } else { newName.setText(deviceListBean.channels.get(deviceListBean.checkedChannel).channelName); } } else if (deviceListBean.channels.size() == 1) { newName.setText(deviceListBean.channels.get(deviceListBean.checkedChannel).channelName); } else { newName.setText(deviceListBean.name); } if (!TextUtils.isEmpty(newName.getText().toString())) { newName.setSelection(newName.getText().toString().length()); } newName.setFilters(new InputFilter[]{new WordInputFilter(WordInputFilter.REX_NAME), new NameLengthFilter(MAXLETHER)}); newName.addTextChangedListener(mTextWatcher); } private final TextWatcher mTextWatcher = new TextWatcher() { @Override public void onTextChanged(CharSequence s, int arg1, int arg2, int arg3) { String devName = s.toString().trim(); if (!TextUtils.isEmpty(devName)) { deviceDetailActivity.llOperate.setEnabled(true); newName.removeTextChangedListener(mTextWatcher); String filterDevName = DeviceAddHelper.strDeviceNameFilter(devName); if (!filterDevName.equals(devName)) { newName.setText(filterDevName); newName.setSelection(filterDevName.length()); } newName.addTextChangedListener(mTextWatcher); } else { deviceDetailActivity.llOperate.setEnabled(false); } } @Override public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { } @Override public void afterTextChanged(Editable arg0) { } }; @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); } @Override public void onClick(View v) { //修改名称 deviceDetailActivity.rlLoading.setVisibility(View.VISIBLE); if (newName == null || newName.getText().toString().trim() == null || newName.getText().toString().trim().isEmpty()) { return; } name = newName.getText().toString().trim(); DeviceDetailService deviceDetailService = ClassInstanceManager.newInstance().getDeviceDetailService(); DeviceModifyNameData deviceModifyNameData = new DeviceModifyNameData(); deviceModifyNameData.data.name = name; deviceModifyNameData.data.deviceId = deviceListBean.deviceId; if (deviceListBean.channels.size() > 1 && !MethodConst.ParamConst.fromList.equals(fromWhere)) { //多通道 deviceModifyNameData.data.channelId = deviceListBean.channels.get(deviceListBean.checkedChannel).channelId; } deviceDetailService.modifyDeviceName(deviceModifyNameData, this); } @Override public void deviceModify(boolean result) { if (!isAdded()) { return; } deviceDetailActivity.llOperate.setVisibility(View.GONE); deviceDetailActivity.rlLoading.setVisibility(View.GONE); Toast.makeText(getContext(), getResources().getString(R.string.lc_demo_device_modify_success), Toast.LENGTH_SHORT).show(); if (modifyNameListener != null) { modifyNameListener.deviceName(name); } //多通道设备详情 if (deviceListBean.channels.size() == 0 || (deviceListBean.channels.size() > 1 && MethodConst.ParamConst.fromList.equals(fromWhere))) { deviceListBean.name = name; } else { deviceListBean.channels.get(deviceListBean.checkedChannel).channelName = name; } getActivity().getSupportFragmentManager().popBackStack(); } @Override public void onError(Throwable throwable) { if (!isAdded()) { return; } deviceDetailActivity.rlLoading.setVisibility(View.GONE); LogUtil.errorLog(TAG, "error", throwable); Toast.makeText(getContext(), throwable.getMessage(), Toast.LENGTH_SHORT).show(); } }