// Copyright © SixtyFPS GmbH // SPDX-License-Identifier: MIT import { AppState, WidgetType, ComponentData } from "../../appState.slint"; import { Lamp } from "../lamp.slint"; import { Appliance } from "../appliance.slint"; import { Overhead } from "../overhead.slint"; import { Info } from "../info.slint"; import { Graph } from "../graph.slint"; import { Control } from "../control.slint"; import { MusicPlayer } from "../musicPlayer.slint"; import { Camera } from "../camera.slint"; import { HVAC } from "../hvac.slint"; import { Alarm } from "../alarm.slint"; import { Animation } from "../../common.slint"; export component FullScreenWidgetLoader { in property index; in property data; property show: false; property moveMode: false; in property skip-initial-fade: false; in property type; property animTargetX: data.x * 1px; property animTargetY: data.y * 1px; property animTargetWidth: data.width * 1px; property animTargetHeight: data.height * 1px; animate animTargetX, animTargetY, animTargetWidth, animTargetHeight { duration: Animation.full-screen-duration; easing: ease-in-out-sine; } changed data => { animTargetX = self.data.x * 1px; animTargetY = self.data.y * 1px; animTargetWidth = self.data.width * 1px; animTargetHeight = self.data.height * 1px; } opacity: 1; x: animTargetX * AppState.x-scale; y: animTargetY * AppState.y-scale; width: animTargetWidth * AppState.x-scale; height: animTargetHeight * AppState.y-scale; // Use the correct component based on type if root.type == WidgetType.lamp: Lamp { name: AppState.component-details[root.index].name; id: AppState.component-details[root.index].id; width: root.width; height: root.height; full-screen: true; } if root.type == WidgetType.appliance: Appliance { name: AppState.component-details[root.index].name; id: AppState.component-details[root.index].id; width: root.width; height: root.height; full-screen: true; } if root.type == WidgetType.overhead: Overhead { name: AppState.component-details[root.index].name; id: AppState.component-details[root.index].id; width: root.width; height: root.height; full-screen: true; } if root.type == WidgetType.info: Info { name: AppState.component-details[root.index].name; id: AppState.component-details[root.index].id; width: root.width; height: root.height; full-screen: true; } if root.type == WidgetType.graph: Graph { name: AppState.component-details[root.index].name; id: AppState.component-details[root.index].id; width: root.width; height: root.height; full-screen: true; } if root.type == WidgetType.control: Control { name: AppState.component-details[root.index].name; id: AppState.component-details[root.index].id; width: root.width; height: root.height; full-screen: true; } if root.type == WidgetType.music: MusicPlayer { name: AppState.component-details[root.index].name; id: AppState.component-details[root.index].id; width: root.width; height: root.height; full-screen: true; } if root.type == WidgetType.hvac: HVAC { name: AppState.component-details[root.index].name; id: AppState.component-details[root.index].id; index: root.index; width: root.width; height: root.height; full-screen: true; } if root.type == WidgetType.camera: Camera { name: AppState.component-details[root.index].name; id: AppState.component-details[root.index].id; width: root.width; height: root.height; full-screen: true; } if root.type == WidgetType.alarm: Alarm { name: AppState.component-details[root.index].name; id: AppState.component-details[root.index].id; width: root.width; height: root.height; full-screen: true; } }