Files
qtmultimedia/examples/multimedia/video/qmlvideofx/qml/qmlvideofx/Main.qml
Antti Kokko bbfccc7135 Update copyright headers
Qt copyrights are now in The Qt Company, so we could update the source
code headers accordingly. In the same go we should also fix the links to
point to qt.io.

Change-Id: I1c6faa4f59f8eca54f01ef20941fa60161dd7872
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
2015-02-12 10:27:47 +00:00

280 lines
8.0 KiB
QML

/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the Qt Mobility Components.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.1
import QtQuick.Window 2.1
Rectangle {
id: root
color: "black"
property string fileName
property alias volume: content.volume
property bool perfMonitorsLogging: false
property bool perfMonitorsVisible: false
property int pixDens: Math.ceil(Screen.pixelDensity)
property int itemWidth: 25 * pixDens
property int itemHeight: 10 * pixDens
property int windowWidth: Screen.desktopAvailableWidth
property int windowHeight: Screen.desktopAvailableHeight
property int scaledMargin: 2 * pixDens
property int fontSize: 5 * pixDens
QtObject {
id: d
property real gripSize: 20
}
Content {
id: content
color: "transparent"
anchors {
top: parent.top
left: parent.left
right: parent.right
bottom: parameterPanel.top
margins: scaledMargin
leftMargin: scaledMargin + itemHeight
}
gripSize: d.gripSize
}
ParameterPanel {
id: parameterPanel
anchors {
left: parent.left
right: effectName.left
bottom: parent.bottom
margins: scaledMargin
leftMargin: scaledMargin + itemHeight
}
gripSize: d.gripSize
height: root.itemHeight * 2.5
width: root.itemWidth * 3
}
Button {
id: effectName
anchors {
right: parent.right
bottom: perfHolder.top
margins: scaledMargin
}
text: "No effect"
width: itemWidth * 2
height: itemHeight
onClicked: {
effectName.visible = false
listview.visible = true
lvbg.visible = true
}
color: "#303030"
}
Rectangle {
id: lvbg
width: itemWidth * 2
color: "black"
opacity: 0.8
visible: false
anchors {
right: parent.right
bottom: perfHolder.top
top: parent.top
margins: scaledMargin
}
ListView {
id: listview
width: itemWidth * 2
anchors.fill: parent
visible: false
model: EffectSelectionList {}
delegate: effectDelegate
clip: true
focus: true
Component {
id: effectDelegate
Button {
text: name
width: itemWidth * 2
onClicked: {
content.effectSource = source
listview.visible = false
lvbg.visible = false
effectName.text = name
effectName.visible = true
parameterPanel.model = content.effect.parameters
}
}
}
}
}
Rectangle {
id: perfHolder
color: "transparent"
anchors {
right: parent.right
bottom: parent.bottom
margins: scaledMargin
}
height: root.itemHeight * 1.5
width: root.itemWidth
Loader {
id: performanceLoader
function init() {
var enabled = root.perfMonitorsLogging || root.perfMonitorsVisible
source = enabled ? "../performancemonitor/PerformanceItem.qml" : ""
}
onLoaded: {
item.parent = perfHolder
item.anchors.top = perfHolder.top
item.anchors.bottom = perfHolder.bottom
item.anchors.left = perfHolder.left
item.anchors.right = perfHolder.right
item.logging = root.perfMonitorsLogging
item.displayed = root.perfMonitorsVisible
item.init()
}
}
}
FileOpen {
id: fileOpen
state: "collapsed"
anchors {
left: parent.left
top: parent.top
bottom: parent.bottom
margins: scaledMargin
}
width: itemHeight + scaledMargin
z: 2
opacity: 0.9
states: [
State {
name: "expanded"
PropertyChanges {
target: fileOpen
width: itemWidth * 1.5
opacity: 0.8
}
},
State {
name: "collapsed"
PropertyChanges {
target: fileOpen
width: itemHeight + scaledMargin
opacity: 0.9
}
}
]
transitions: [
Transition {
NumberAnimation { target: fileOpen; property: "width"; duration: 100 }
NumberAnimation { target: fileOpen; property: "opacity"; duration: 100 }
}
]
}
FileBrowser {
id: imageFileBrowser
anchors.fill: root
Component.onCompleted: fileSelected.connect(content.openImage)
}
FileBrowser {
id: videoFileBrowser
anchors.fill: root
Component.onCompleted: fileSelected.connect(content.openVideo)
}
Component.onCompleted: {
fileOpen.openImage.connect(openImage)
fileOpen.openVideo.connect(openVideo)
fileOpen.openCamera.connect(openCamera)
fileOpen.close.connect(close)
}
function init() {
if (Qt.platform.os === "linux" || Qt.platform.os === "windows" || Qt.platform.os === "osx" || Qt.platform.os === "unix") {
if (Screen.desktopAvailableWidth > 1280) {
windowWidth = 1280
}
if (Screen.desktopAvailableHeight > 720) {
windowHeight = 720
}
}
height = windowHeight
width = windowWidth
imageFileBrowser.folder = imagePath
videoFileBrowser.folder = videoPath
content.init()
performanceLoader.init()
if (fileName != "")
content.openVideo(fileName)
}
function qmlFramePainted() {
if (performanceLoader.item)
performanceLoader.item.qmlFramePainted()
}
function openImage() {
imageFileBrowser.show()
}
function openVideo() {
videoFileBrowser.show()
}
function openCamera() {
content.openCamera()
}
function close() {
content.init()
}
}