import 'package:syncrow_app/features/devices/model/function_model.dart'; import 'package:syncrow_app/features/scene/enum/ac_values.dart'; import 'package:syncrow_app/features/scene/model/scene_static_function.dart'; import 'package:syncrow_app/generated/assets.dart'; import 'package:syncrow_app/utils/resource_manager/constants.dart'; mixin SceneOperationsDataHelper { List getFunctionsWithIcons({ DeviceType? type, required List functions, required String deviceId, required String deviceName, }) { switch (type) { case DeviceType.LightBulb: return lightBulbFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName); case DeviceType.CeilingSensor: return ceilingSensorFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName); case DeviceType.WallSensor: return wallSensorFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName); case DeviceType.AC: return acFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName); case DeviceType.DoorLock: return doorLockFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName); case DeviceType.Curtain: return curtainFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName); case DeviceType.ThreeGang: return threeGangFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName); case DeviceType.Gateway: return gatewayFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName); default: return lightBulbFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName); } } String getTitle({DeviceType? type}) { switch (type) { case DeviceType.LightBulb: return 'Light Bulb Functions'; case DeviceType.CeilingSensor: return 'Presence Sensor Functions'; case DeviceType.WallSensor: return 'Human Presence Sensor Functions'; case DeviceType.AC: return 'AC Functions'; case DeviceType.DoorLock: return 'Door Lock Functions'; case DeviceType.Curtain: return 'Curtain Functions'; case DeviceType.ThreeGang: return '3G Light Switch Functions'; case DeviceType.Gateway: return 'Gateway Functions'; default: return ''; } } /// presence sensor List ceilingSensorFunctions( {required List functions, required String deviceId, required String deviceName}) { return [ SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsSensitivityFunction, operationName: 'Sensitivity', code: 'sensitivity', operationalValues: [ SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 1, description: 1.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 2, description: 2.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 3, description: 3.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 4, description: 4.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 5, description: 5.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 6, description: 6.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 7, description: 7.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 8, description: 8.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 9, description: 9.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 10, description: 10.toString(), ), ], ), ]; } } List curtainFunctions( {required List functions, required String deviceId, required String deviceName}) { return []; } List doorLockFunctions( {required List functions, required String deviceId, required String deviceName}) { return []; } List wallSensorFunctions( {required List functions, required String deviceId, required String deviceName}) { return []; } List lightBulbFunctions( {required List functions, required String deviceId, required String deviceName}) { return []; } List gatewayFunctions( {required List functions, required String deviceId, required String deviceName}) { return []; } List threeGangFunctions( {required List functions, required String deviceId, required String deviceName}) { return [ SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsAcPower, operationName: 'Light 1 Switch', code: 'switch_1', operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false), SceneOperationalValue( icon: Assets.assetsSceneRefresh, description: "Reverse Switch", value: null, ), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsAcPower, operationName: 'Light 2 Switch', code: 'switch_2', operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false), SceneOperationalValue( icon: Assets.assetsSceneRefresh, description: "Reverse Switch", value: null, ), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsAcPower, operationName: 'Light 3 Switch', code: 'switch_3', operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false), SceneOperationalValue( icon: Assets.assetsSceneRefresh, description: "Reverse Switch", value: null, ), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsLightCountdown, operationName: 'Light 1 CountDown', code: 'countdown_1', operationalValues: [ SceneOperationalValue(icon: '', value: 0), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsLightCountdown, operationName: 'Light 2 CountDown', code: 'countdown_1', operationalValues: [ SceneOperationalValue(icon: '', value: 0), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsLightCountdown, operationName: 'Light 3 CountDown', code: 'countdown_1', operationalValues: [ SceneOperationalValue(icon: '', value: 0), ], ), ]; } /// smart ac thermostat List acFunctions( {required List functions, required String deviceId, required String deviceName}) { return [ SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsAcPower, operationName: 'Power', code: 'switch', operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true, ), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false, ), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsFreezing, operationName: 'Mode', code: 'mode', operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcCooling, description: AcValuesEnums.Cooling.name, value: TempModes.cold.name, ), SceneOperationalValue( icon: Assets.assetsAcHeating, description: AcValuesEnums.Heating.name, value: TempModes.hot.name, ), SceneOperationalValue( icon: Assets.assetsFanSpeed, description: AcValuesEnums.Ventilation.name, value: TempModes.wind.name, ), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsTempreture, operationName: 'Set Temperature', code: 'temp_set', operationalValues: [ SceneOperationalValue( icon: Assets.assetsCelsiusDegrees, value: 0, description: 'COOL TO', ), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsFanSpeed, operationName: 'Fan Speed', code: 'level', operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcFanLow, description: ValueACRange.LOW.name, value: FanSpeeds.low.name, ), SceneOperationalValue( icon: Assets.assetsAcFanMiddle, description: ValueACRange.MIDDLE.name, value: FanSpeeds.middle.name, ), SceneOperationalValue( icon: Assets.assetsAcFanHigh, description: ValueACRange.HIGH.name, value: FanSpeeds.high.name, ), SceneOperationalValue( icon: Assets.assetsAcFanAuto, description: ValueACRange.AUTO.name, value: FanSpeeds.auto.name, ), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsChildLock, operationName: 'Child Lock', code: 'child_lock', operationalValues: [ SceneOperationalValue( icon: Assets.assetsSceneChildLock, description: 'Lock', value: true, ), SceneOperationalValue( icon: Assets.assetsSceneChildUnlock, description: 'Unlock', value: false, ), ], ), ]; }