Files
Android-WaterProject/app/src/main/java/com/ckkj/water/device/DeviceSettingsActivity.java
2026-06-17 08:42:54 +08:00

233 lines
7.2 KiB
Java

package com.ckkj.water.device;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import androidx.annotation.Nullable;
import com.ckkj.water.ConstantUtil;
import com.ckkj.water.EventMessage;
import com.ckkj.water.R;
import com.ckkj.water.base.BaseActivity;
import com.ckkj.water.base.BaseFragment;
import com.ckkj.water.databinding.DeviceSettingsLayoutBinding;
import com.ckkj.water.device.mvp.DeviceContract;
import com.ckkj.water.device.mvp.DeviceImpl;
import com.ckkj.water.device.mvp.DevicePresenter;
import com.ckkj.water.index.entity.WaterDeviceEntity;
import com.ckkj.water.network.BaseBean;
import com.ckkj.water.utils.manager.ThemeManager;
import com.ckkj.water.utils.show.ToastUtil;
import com.gyf.immersionbar.ImmersionBar;
import de.greenrobot.event.EventBus;
/**
* 设备控制页面
*/
public class DeviceSettingsActivity extends BaseActivity<DeviceSettingsLayoutBinding, DevicePresenter>
implements DeviceContract.DeviceView {
private WaterDeviceEntity mDeviceEntity;
@Override
public DevicePresenter createPresenter() {
return new DevicePresenter(new DeviceImpl());
}
@Override
public void initData(Bundle savedInstanceState) {
super.initData(savedInstanceState);
Bundle bundle = getIntent().getExtras();
if(bundle != null){
mDeviceEntity = (WaterDeviceEntity) bundle.getSerializable("device_entity");
viewBinding.tvDeviceName.setText(mDeviceEntity.getDeviceName());
viewBinding.tvWifiName.setText(mDeviceEntity.getWifiName());
}
ImmersionBar.with(this)
.statusBarDarkFont(ThemeManager.isAppThemeLight(mContext)) // 白色状态栏图标
.navigationBarColor(R.color.mainBackgroundColor)
.titleBar(viewBinding.rlTitle)
.init();
viewBinding.includedTitle.tvTitle.setText(R.string.settings_title);
initListener();
}
private void initListener() {
setClick(viewBinding.includedTitle.imgBack);
setClick(viewBinding.rlDevName);
setClick(viewBinding.rlDevInfo);
setClick(viewBinding.rlDevWifiManager);
setClick(viewBinding.rlDevUnbind);
}
private void setClick(View view) {
view.setOnClickListener(this::onClick);
}
public void onClick(View v){
switch (v.getId()){
case R.id.img_back:
Intent intent = new Intent();
intent.putExtra("device_entity",mDeviceEntity);
setResult(RESULT_OK,intent);
finish();
break;
case R.id.rl_dev_name:
showEditDialog(getString(R.string.device_setting_name),
getString(R.string.input_device_name_hint),
mDeviceEntity.getDeviceName(),
true,
getString(R.string.cancel_text),
getString(R.string.confirm_text),
BaseActivity.INPUT_TYPE_NORMAL,
new OnDialogClick() {
@Override
public void onCancelClick() {
}
@Override
public void onConfirmClisk() {
}
@Override
public void onConfirmClisk(String content) {
viewBinding.tvDeviceName.setText(content);
mDeviceEntity.setDeviceName(content);
mPresenter.updateDeviceInfo(mDeviceEntity);
}
@Override
public void onView1Click() {
}
});
break;
case R.id.rl_dev_info:
Bundle bundleDev = new Bundle();
bundleDev.putSerializable("device_entity",mDeviceEntity);
goTo(mContext, DeviceInfoActivity.class,bundleDev);
break;
case R.id.rl_dev_wifi_manager:
Bundle bundle = new Bundle();
bundle.putInt(ConstantUtil.ACTIVITY_NAVIGATE_FLAG,200);
goToForResult(mContext, SelectWifiActivity.class,REQUEST_EVENT_CODE_10001,bundle);
break;
case R.id.rl_dev_unbind:
showDialogtext(null, false, false, true,
getString(R.string.tip_text), getString(R.string.tip_unbind_device),
getString(R.string.cancel_text), getString(R.string.confirm_text), new BaseFragment.OnDialogClick() {
@Override
public void onCancelClick() {
}
@Override
public void onConfirmClick() {
mPresenter.unBindDevice(mDeviceEntity);
}
});
break;
}
}
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("device_entity",mDeviceEntity);
setResult(RESULT_OK,intent);
super.onBackPressed();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (data != null) {
if (resultCode == RESULT_OK) {
switch (requestCode) {
case REQUEST_EVENT_CODE_10001:
viewBinding.tvWifiName.setText(data.getStringExtra("wifi_name"));
mDeviceEntity.setWifiName(data.getStringExtra("wifi_name"));
mDeviceEntity.setWifiPassword(data.getStringExtra("wifi_psd"));
mPresenter.updateDeviceInfo(mDeviceEntity);
break;
}
}
}
}
/**
* 修改设备信息成功
* @param bean
*/
@Override
public void editDeviceInfoSuccess(BaseBean bean) {
hideDialogLoading();
}
@Override
public void finish() {
super.finish();
}
@Override
public void deleteDeviceSuccess(BaseBean bean) {
hideDialogLoading();
ToastUtil.showShort(mContext, getString(R.string.unbind_success));
EventBus.getDefault().post(new EventMessage(EventMessage.ACTIVITY_FINISH));
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
finish();
}
},500);
}
@Override
public int getLayoutResId(Bundle savedInstanceState) {
return 0;
}
@Override
public void showError(String message) {
}
@Override
public void logOut(BaseBean bean) {
}
@Override
public void addDeviceSuccess(WaterDeviceEntity bean) {
}
@Override
public void getDeviceDetailInfo(WaterDeviceEntity bean) {
}
@Override
public void turnOnOffDeviceSuccess(BaseBean bean) {
}
@Override
public void queryDeviceBindStatusSuccess(WaterDeviceEntity bean) {
}
}