diff --git a/sddm-theme/Background.qml b/sddm-theme/Background.qml --- a/sddm-theme/Background.qml +++ b/sddm-theme/Background.qml @@ -18,50 +18,51 @@ */ import QtQuick 2.2 +import QtMultimedia 5.8 FocusScope { id: sceneBackground property var sceneBackgroundType - property alias sceneBackgroundColor: sceneColorBackground.color - property alias sceneBackgroundImage: sceneImageBackground.source + property color sceneBackgroundColor + property url sceneBackgroundUrl - Rectangle { - id: sceneColorBackground + Loader { anchors.fill: parent + sourceComponent: switch(sceneBackground.sceneBackgroundType) { + case "color": return colorComponent; + case "image": return imageComponent; + case "video": return videoComponent; + } } - Image { - id: sceneImageBackground - anchors.fill: parent - fillMode: Image.PreserveAspectCrop - smooth: true; + Component { + id: colorComponent + Rectangle { + color: sceneBackground.sceneBackgroundColor + } } - states: [ - State { - name: "imageBackground" - when: sceneBackgroundType == "image" - PropertyChanges { - target: sceneColorBackground - visible: false - } - PropertyChanges { - target: sceneImageBackground - visible: true - } - }, - State { - name: "colorBackground" - when: sceneBackgroundType != "image" - PropertyChanges { - target: sceneColorBackground - visible: true - } - PropertyChanges { - target: sceneImageBackground - visible: false + Component { + id: imageComponent + Image { + fillMode: Image.PreserveAspectCrop + smooth: true + source: sceneBackground.sceneBackgroundUrl + } + } + + Component { + id: videoComponent + + VideoOutput { + fillMode: VideoOutput.PreserveAspectCrop + source: MediaPlayer { + id: mediaplayer + autoPlay: true + loops: MediaPlayer.Infinite + source: sceneBackground.sceneBackgroundUrl } } - ] + } }