Skip to content
Introducao.qml 3.67 KiB
Newer Older
/*
    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 <http://www.gnu.org/licenses/>.

    Updated: 07/08/2015 by: Gabriel F.
*/

import QtQuick 2.4

Item {
    id: root
    anchors.fill: parent
    visible: false
    opacity: 0.0

    property var panEndCallback:     function() {  }
    property var fadeOutEndCallback: function() {  }
    property var fadeInEndCallback:  function() {  }

    function reset() {
        imagePan.y = 0
    }

    NumberAnimation {
        id: fadeIn
        target: root
        property: "opacity"
        duration: 1000
        easing.type: Easing.InOutQuad
        to: 1.0

        onStarted: { root.visible = true }
        onStopped: {
            fadeInEndCallback()
            imagePanAnimation.start()
        }
    }

    NumberAnimation {
        id: fadeOut
        target: root
        property: "opacity"
        duration: 1000
        easing.type: Easing.InOutQuad
        to: 0.0

        onStopped: {
            imagePan.y = 0
            root.visible = false
            fadeOutEndCallback()
        }
    }

    function show() { fadeIn.start() }
    function hide() { fadeOut.start() }

    Rectangle {
        width: parent.width
        height: parent.height
        anchors.fill: parent
        gradient: Gradient {
            GradientStop {
                position: 0.00;
                color: "#063d9c";
            }
            GradientStop {
                position: 1.00;
                color: "#5bcbe4";
            }
        }
    }

    Item {
        width: stereo ? parent.width*0.5 : parent.width
        height: parent.height
        anchors.verticalCenter: parent.verticalCenter
        anchors.left: parent.left
        clip: true
        Image {
            id: imagePan
            fillMode: Image.PreserveAspectCrop
            width: 3*parent.width
            height: width*0.5625
            source: "qrc:/images/panImage.jpg"
            anchors.horizontalCenter: parent.horizontalCenter
            y: 0
        }
    }

    Item {
        visible: stereo
        width: parent.width*0.5
        height: parent.height
        anchors.verticalCenter: parent.verticalCenter
        anchors.right: parent.right
        clip: true
        Image {
            fillMode: Image.PreserveAspectCrop
            width: imagePan.width
            height: imagePan.height
            source: "qrc:/images/panImage.jpg"
            anchors.horizontalCenter: parent.horizontalCenter
            y: imagePan.y
        }
    }

    Rectangle {
        opacity: 0.4
        gradient: Gradient {
            GradientStop {
                position: 0.00;
                color: "#000000ff";
            }
            GradientStop {
                position: 1.00;
                color: "#000000";
            }
        }
        anchors.fill: parent
    }

    NumberAnimation {
        id: imagePanAnimation
        target: imagePan
        property: "y"
        duration: 5000
        easing.type: Easing.InOutQuad
        to: - (imagePan.height - parent.height)

        onStopped: {
            panEndCallback()
            root.hide()
        }
    }

}