178 lines
6.6 KiB
Dart
Executable File
178 lines
6.6 KiB
Dart
Executable File
import 'package:get/get.dart';
|
||
import 'package:get/get_rx/get_rx.dart';
|
||
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
|
||
import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart';
|
||
|
||
class CatEyeSetState {
|
||
CatEyeSetState() {
|
||
Map map = Get.arguments;
|
||
lockSetInfoData.value = map['lockSetInfoData'];
|
||
|
||
if (lockSetInfoData.value != null &&
|
||
lockSetInfoData.value.lockSettingInfo != null) {
|
||
selectBrightDuration.value =
|
||
'${lockSetInfoData.value.lockSettingInfo?.autoLightScreenTime} ${'秒'.tr}';
|
||
if (lockSetInfoData.value.lockSettingInfo?.autoLightScreen == 1) {
|
||
isAutoBright.value = true;
|
||
} else {
|
||
isAutoBright.value = false;
|
||
}
|
||
|
||
if (lockSetInfoData.value.lockSettingInfo?.stayWarn == 1) {
|
||
isStayWarning.value = true;
|
||
} else {
|
||
isStayWarning.value = false;
|
||
}
|
||
|
||
if (lockSetInfoData.value.lockSettingInfo?.abnormalWarn == 1) {
|
||
isExceptionWarning.value = true;
|
||
} else {
|
||
isExceptionWarning.value = false;
|
||
}
|
||
selectCatEyeWorkMode.value = ''; //猫眼工作模式
|
||
if (lockSetInfoData.value.lockSettingInfo != null &&
|
||
lockSetInfoData.value.lockSettingInfo!.catEyeConfig != null &&
|
||
lockSetInfoData.value.lockSettingInfo!.catEyeConfig!.length > 0) {
|
||
if (lockSetInfoData
|
||
.value.lockSettingInfo!.catEyeConfig![0].catEyeMode ==
|
||
XSConstantMacro.catEyeWorkModePowerSaving) {
|
||
selectCatEyeWorkMode.value = '省电模式'.tr;
|
||
} else if (lockSetInfoData
|
||
.value.lockSettingInfo!.catEyeConfig![0].catEyeMode ==
|
||
XSConstantMacro.catEyeWorkModeStayCapture) {
|
||
selectCatEyeWorkMode.value = '逗留抓拍模式'.tr;
|
||
} else if (lockSetInfoData
|
||
.value.lockSettingInfo!.catEyeConfig![0].catEyeMode ==
|
||
XSConstantMacro.catEyeWorkModeRealTimeMonitoring) {
|
||
selectCatEyeWorkMode.value = '实时监控模式'.tr;
|
||
} else if (lockSetInfoData
|
||
.value.lockSettingInfo!.catEyeConfig![0].catEyeMode ==
|
||
XSConstantMacro.catEyeWorkModeCustom) {
|
||
selectCatEyeWorkMode.value = '自定义模式'.tr;
|
||
}
|
||
}
|
||
updateCatEyeSetByState();
|
||
}
|
||
}
|
||
|
||
RxList<String> brightDurationTimeList =
|
||
<String>['10${'秒'.tr}', '15${'秒'.tr}', '20${'秒'.tr}'].obs;
|
||
RxString selectBrightDuration = '10 ${'秒'.tr}'.obs; //选中的亮屏持续时间
|
||
RxBool isAutoBright = false.obs; //自动亮屏
|
||
RxBool isStayWarning = false.obs; //逗留警告
|
||
RxBool isExceptionWarning = false.obs; //异常警告
|
||
Rx<LockSetInfoData> lockSetInfoData = LockSetInfoData().obs;
|
||
RxString selectCatEyeWorkMode = ''.obs; //猫眼工作模式
|
||
RxInt settingOptions = 0.obs; // 设置项
|
||
final String settingSuccess = '设置成功'.tr;
|
||
|
||
/// 猫眼配置
|
||
Rx<CatEyeSetEntity> catEyeConfig = CatEyeSetEntity().obs;
|
||
|
||
// 更新state中的猫眼设置
|
||
updateCatEyeSetByState() async {
|
||
int originalCatEyeMode = 0;
|
||
int recordMode = 0;
|
||
int recordStartTime = 0;
|
||
int recordEndTime = 0;
|
||
int recordTime = 0;
|
||
int detectionDistance = 0;
|
||
int realTimeMode = 0;
|
||
if (lockSetInfoData.value.lockSettingInfo!.catEyeConfig != null &&
|
||
lockSetInfoData.value.lockSettingInfo!.catEyeConfig!.length > 0) {
|
||
originalCatEyeMode =
|
||
lockSetInfoData.value.lockSettingInfo!.catEyeConfig![0].catEyeMode!;
|
||
recordMode = lockSetInfoData.value.lockSettingInfo!.catEyeConfig![0]
|
||
.catEyeModeConfig!.recordMode!;
|
||
recordStartTime = _handleTimeToM(lockSetInfoData.value.lockSettingInfo!
|
||
.catEyeConfig![0].catEyeModeConfig!.recordStartTime!);
|
||
recordEndTime = _handleTimeToM(lockSetInfoData.value.lockSettingInfo!
|
||
.catEyeConfig![0].catEyeModeConfig!.recordEndTime!);
|
||
recordTime = int.parse(lockSetInfoData.value.lockSettingInfo!
|
||
.catEyeConfig![0].catEyeModeConfig!.recordTime!);
|
||
if (lockSetInfoData.value.lockSettingInfo!.catEyeConfig![0]!
|
||
.catEyeModeConfig!.detectionDistance !=
|
||
null) {
|
||
detectionDistance = int.parse(lockSetInfoData.value.lockSettingInfo!
|
||
.catEyeConfig![0].catEyeModeConfig!.detectionDistance!);
|
||
}
|
||
realTimeMode = lockSetInfoData.value.lockSettingInfo!.catEyeConfig![0]
|
||
.catEyeModeConfig!.realTimeMode!;
|
||
}
|
||
|
||
int stayWarn = lockSetInfoData.value.lockSettingInfo!.stayWarn!;
|
||
int abnormalWarn = lockSetInfoData.value.lockSettingInfo!.abnormalWarn!;
|
||
int autoLightScreen =
|
||
lockSetInfoData.value.lockSettingInfo!.autoLightScreen!;
|
||
|
||
// 根据需要调整 catEyeMode 的值
|
||
int adjustedCatEyeMode = originalCatEyeMode;
|
||
int brightScreenTime =
|
||
lockSetInfoData.value.lockSettingInfo!.autoLightScreenTime!;
|
||
|
||
/// 对照星锁接口文档v0.2 的猫眼设置接口,获取出猫眼的所有设置
|
||
catEyeConfig.value = CatEyeSetEntity(
|
||
catEyeMode: adjustedCatEyeMode,
|
||
// 猫眼模式 看常量表
|
||
recordMode: recordMode,
|
||
//录像时段 0全天 1自定义时间
|
||
recordStartTime: recordStartTime,
|
||
//自定义时间需要填:recordStartTime与recordEndTime参数
|
||
recordEndTime: recordEndTime,
|
||
//自定义时间需要填:recordStartTime与recordEndTime参数
|
||
realTimeMode: realTimeMode,
|
||
autoLightScreenTime: brightScreenTime,
|
||
stayWarn: stayWarn,
|
||
autoLightScreen: autoLightScreen,
|
||
// 打开自动亮屏
|
||
abnormalWarn: abnormalWarn,
|
||
// 有人出现时录像时间
|
||
recordTime: recordTime,
|
||
// 人体检测距离
|
||
detectionDistance: detectionDistance,
|
||
realTimePicture: realTimeMode,
|
||
);
|
||
catEyeConfig.refresh();
|
||
}
|
||
|
||
int _handleTimeToM(int recordStartTime) {
|
||
// 转换为 DateTime 对象
|
||
DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(recordStartTime);
|
||
|
||
// 计算从当天0点开始的分钟数
|
||
int minutesSinceMidnight = dateTime.hour * 60 + dateTime.minute;
|
||
return minutesSinceMidnight;
|
||
}
|
||
}
|
||
|
||
class CatEyeSetEntity {
|
||
int? catEyeMode; // 猫眼工作模式
|
||
|
||
int? recordMode; // 自定义模式下录像时段,是否
|
||
int? recordTime; //
|
||
int? realTimeMode;
|
||
int? recordEndTime;
|
||
int? recordStartTime;
|
||
int? detectionDistance;
|
||
int? autoLightScreen;
|
||
int? autoLightScreenTime;
|
||
int? stayWarn;
|
||
int? abnormalWarn;
|
||
int? realTimePicture;
|
||
|
||
CatEyeSetEntity({
|
||
this.catEyeMode,
|
||
this.recordMode,
|
||
this.recordTime,
|
||
this.realTimeMode,
|
||
this.recordEndTime,
|
||
this.recordStartTime,
|
||
this.detectionDistance,
|
||
this.autoLightScreen,
|
||
this.autoLightScreenTime,
|
||
this.stayWarn,
|
||
this.abnormalWarn,
|
||
this.realTimePicture,
|
||
});
|
||
}
|