diff options
Diffstat (limited to 'examples/multimedia/video/qmlvideo/qml/qmlvideo/SeekControl.qml')
-rw-r--r-- | examples/multimedia/video/qmlvideo/qml/qmlvideo/SeekControl.qml | 152 |
1 files changed, 0 insertions, 152 deletions
diff --git a/examples/multimedia/video/qmlvideo/qml/qmlvideo/SeekControl.qml b/examples/multimedia/video/qmlvideo/qml/qmlvideo/SeekControl.qml deleted file mode 100644 index fbba32903..000000000 --- a/examples/multimedia/video/qmlvideo/qml/qmlvideo/SeekControl.qml +++ /dev/null @@ -1,152 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the Qt Mobility Components. -** -** $QT_BEGIN_LICENSE:BSD$ -** 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 https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 2.0 - -Item { - id: seekControl - height: Math.min(parent.width, parent.height) / 20 - property int duration: 0 - property int playPosition: 0 - property int seekPosition: 0 - property bool enabled: true - property bool seeking: false - - Rectangle { - id: background - anchors.fill: parent - color: "white" - opacity: 0.3 - radius: parent.height / 15 - } - - Rectangle { - id: progressBar - anchors { left: parent.left; top: parent.top; bottom: parent.bottom } - width: seekControl.duration == 0 ? 0 : background.width * seekControl.playPosition / seekControl.duration - color: "black" - opacity: 0.7 - } - - Text { - width: 90 - anchors { left: parent.left; top: parent.top; bottom: parent.bottom; leftMargin: 10 } - horizontalAlignment: Text.AlignLeft - verticalAlignment: Text.AlignVCenter - color: "white" - smooth: true - text: formatTime(playPosition) - } - - Text { - width: 90 - anchors { right: parent.right; top: parent.top; bottom: parent.bottom; rightMargin: 10 } - horizontalAlignment: Text.AlignRight - verticalAlignment: Text.AlignVCenter - color: "white" - smooth: true - text: formatTime(duration) - } - - Rectangle { - id: progressHandle - height: parent.height - width: parent.height / 2 - color: "white" - opacity: 0.5 - anchors.verticalCenter: progressBar.verticalCenter - x: seekControl.duration == 0 ? 0 : seekControl.playPosition / seekControl.duration * background.width - - MouseArea { - id: mouseArea - anchors { horizontalCenter: parent.horizontalCenter; bottom: parent.bottom } - height: parent.height - width: parent.height * 2 - enabled: seekControl.enabled - drag { - target: progressHandle - axis: Drag.XAxis - minimumX: 0 - maximumX: background.width - } - onPressed: { - seekControl.seeking = true; - } - onCanceled: { - seekControl.seekPosition = progressHandle.x * seekControl.duration / background.width - seekControl.seeking = false - } - onReleased: { - seekControl.seekPosition = progressHandle.x * seekControl.duration / background.width - seekControl.seeking = false - mouse.accepted = true - } - } - } - - Timer { // Update position also while user is dragging the progress handle - id: seekTimer - repeat: true - interval: 300 - running: seekControl.seeking - onTriggered: { - seekControl.seekPosition = progressHandle.x*seekControl.duration / background.width - } - } - - function formatTime(timeInMs) { - if (!timeInMs || timeInMs <= 0) return "0:00" - var seconds = timeInMs / 1000; - var minutes = Math.floor(seconds / 60) - seconds = Math.floor(seconds % 60) - if (seconds < 10) seconds = "0" + seconds; - return minutes + ":" + seconds - } -} |