Files
syncrow-app/lib/features/scene/helper/scene_helper.dart
2024-06-26 20:32:34 +03:00

312 lines
9.8 KiB
Dart

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<SceneStaticFunction> getFunctionsWithIcons({
DeviceType? type,
required List<FunctionModel> 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<SceneStaticFunction> ceilingSensorFunctions(
{required List<FunctionModel> 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<SceneStaticFunction> curtainFunctions(
{required List<FunctionModel> functions,
required String deviceId,
required String deviceName}) {
return [];
}
List<SceneStaticFunction> doorLockFunctions(
{required List<FunctionModel> functions,
required String deviceId,
required String deviceName}) {
return [];
}
List<SceneStaticFunction> wallSensorFunctions(
{required List<FunctionModel> functions,
required String deviceId,
required String deviceName}) {
return [];
}
List<SceneStaticFunction> lightBulbFunctions(
{required List<FunctionModel> functions,
required String deviceId,
required String deviceName}) {
return [];
}
List<SceneStaticFunction> gatewayFunctions(
{required List<FunctionModel> functions,
required String deviceId,
required String deviceName}) {
return [];
}
List<SceneStaticFunction> threeGangFunctions(
{required List<FunctionModel> 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<SceneStaticFunction> acFunctions(
{required List<FunctionModel> 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',
),
],
),
];
}