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 SceneHelper { 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"), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: "2"), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: "3"), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: "4"), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: "5"), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: "6"), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: "7"), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: "8"), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: "9"), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: "10"), ], ), ]; } } 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, value: "ON"), SceneOperationalValue(icon: Assets.assetsAcPowerOFF, value: "OFF"), SceneOperationalValue( icon: Assets.assetsSceneRefresh, value: "Reverse Switch"), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsAcPower, operationName: 'Light 2 Switch', code: 'switch_2', operationalValues: [ SceneOperationalValue(icon: Assets.assetsAcPower, value: "ON"), SceneOperationalValue(icon: Assets.assetsAcPowerOFF, value: "OFF"), SceneOperationalValue( icon: Assets.assetsSceneRefresh, value: "Reverse Switch"), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsAcPower, operationName: 'Light 3 Switch', code: 'switch_3', operationalValues: [ SceneOperationalValue(icon: Assets.assetsAcPower, value: "ON"), SceneOperationalValue(icon: Assets.assetsAcPowerOFF, value: "OFF"), SceneOperationalValue( icon: Assets.assetsSceneRefresh, value: "Reverse Switch"), ], ), 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, value: "ON"), SceneOperationalValue(icon: Assets.assetsAcPowerOFF, value: "OFF"), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsFreezing, operationName: 'Mode', code: 'mode', operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcCooling, value: AcValuesEnums.Cooling.name, ), SceneOperationalValue( icon: Assets.assetsAcHeating, value: AcValuesEnums.Heating.name, ), SceneOperationalValue( icon: Assets.assetsFanSpeed, value: AcValuesEnums.Ventilation.name, ), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsTempreture, operationName: 'Set Temperature', code: 'temp_set', operationalValues: [ SceneOperationalValue( icon: Assets.assetsCelsiusDegrees, value: "COOL TO"), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsFanSpeed, operationName: 'Fan Speed', code: 'level', operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcFanLow, value: ValueACRange.LOW.name, ), SceneOperationalValue( icon: Assets.assetsAcFanMiddle, value: ValueACRange.MIDDLE.name, ), SceneOperationalValue( icon: Assets.assetsAcFanHigh, value: ValueACRange.HIGH.name, ), SceneOperationalValue( icon: Assets.assetsAcFanAuto, value: ValueACRange.AUTO.name, ), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsChildLock, operationName: 'Child Lock', code: 'child_lock', operationalValues: [ SceneOperationalValue( icon: Assets.assetsSceneChildLock, value: 'Lock', ), SceneOperationalValue( icon: Assets.assetsSceneChildUnlock, value: 'Unlock', ), ], ), ]; }