/* This file is part of Gabriel's Qt/QML CardBoard Sample (or short GQQCS) GQQCS is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. GQQCS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Foobar. If not, see . Updated: 07/08/2015 by: Gabriel F. */ import QtMultimedia 5.0 import QtQuick 2.4 Item { id: root anchors.fill: parent visible: false opacity: 0.0 property var fadeInEndCallback: function() { console.log("Detail fadeInEndCallback()") } property var fadeOutEndCallback: function() { console.log("Detail fadeOutCallback()") } property string videoFile: "videoteste.mp4" property int timerCount: 60 property bool hiding: false property double posVideo: video.position/video.duration function playVideo() { video.play(); videoTimer.interval = timerCount*1000; videoTimer.start(); } Rectangle { anchors.fill: parent color: "black" } Timer { id: videoTimer interval: 60*1000 running: false repeat: false onTriggered: { if (!hiding) { hiding = true detail.hide() videoTimer.stop() video.stop() } } } NumberAnimation { id: fadeIn target: root property: "opacity" duration: 1000 easing.type: Easing.InOutQuad to: 1.0 onStarted: { root.visible = true; hiding = false } onStopped: { fadeInEndCallback() } } NumberAnimation { id: fadeOut target: root property: "opacity" duration: 1000 easing.type: Easing.InOutQuad to: 0.0 onStopped: { root.visible = false fadeOutEndCallback() } } function show() { fadeIn.start() } function hide() { fadeOut.start() } Video { id: video visible: position > 1000 ? true : false muted: true width: stereo ? parent.width : 2*parent.width height: parent.height source: "qrc:/videos/"+videoFile+".mp4" anchors.verticalCenter: parent.verticalCenter fillMode: stereo ? VideoOutput.PreserveAspectFit : VideoOutput.Stretch onPositionChanged: { posVideo = video.position/video.duration } onSourceChanged: { video.seek(0) } onStopped: { if (!hiding) { console.log("Video Stopped") hiding = true detail.hide() videoTimer.stop() } } } Item { width: stereo ? parent.width*0.5 : parent.width height: parent.height*0.02 anchors.bottom: parent.bottom anchors.left: parent.left opacity: 0.7 Rectangle { width: posVideo*parent.width height: parent.height anchors.bottom: parent.bottom anchors.left: parent.left color: "steelblue" } } Item { visible: stereo width: parent.width*0.5 height: parent.height*0.02 anchors.bottom: parent.bottom anchors.right: parent.right opacity: 0.7 Rectangle { width: posVideo*parent.width height: parent.height anchors.bottom: parent.bottom anchors.left: parent.left color: "steelblue" } } MouseArea { anchors.fill: parent onClicked: { video.stop() } } }