Warning, /maui/index-fm/src/widgets/previewer/VideoPreview.qml is written in an unsupported language. File is not indexed.

0001 import QtQuick 2.9
0002 import QtQuick.Controls 2.2
0003 import QtQuick.Layouts 1.3
0004 
0005 import QtMultimedia 5.8
0006 
0007 import org.mauikit.controls 1.0 as Maui
0008 
0009 Maui.Page
0010 {
0011     id: control
0012     property alias player : player
0013     headBar.visible: false
0014 
0015     Video
0016     {
0017         id: player
0018         anchors.fill: parent
0019         source: currentUrl
0020         autoLoad: true
0021         autoPlay: appSettings.autoPlayPreviews
0022         loops: 3
0023         flushMode: VideoOutput.FirstFrame
0024         property string codec : player.metaData.videoCodec
0025 
0026         onCodecChanged:
0027         {
0028             infoModel.append({key:"Title", value: player.metaData.title})
0029             infoModel.append({key:"Camera", value: player.metaData.cameraModel})
0030             infoModel.append({key:"Zoom Ratio", value: player.metaData.digitalZoomRatio})
0031             infoModel.append({key:"Author", value: player.metaData.author})
0032             infoModel.append({key:"Audio Codec", value: player.metaData.audioCodec})
0033             infoModel.append({key:"Video Codec", value: player.metaData.videoCodec})
0034             infoModel.append({key:"Copyright", value: player.metaData.copyright})
0035             infoModel.append({key:"Duration", value: player.metaData.duration})
0036             infoModel.append({key:"Framerate", value: player.metaData.videoFrameRate})
0037             infoModel.append({key:"Year", value: player.metaData.year})
0038             infoModel.append({key:"Aspect Ratio", value: player.metaData.pixelAspectRatio})
0039             infoModel.append({key:"Resolution", value: player.metaData.resolution})
0040         }
0041 
0042         ToolButton
0043         {
0044             visible: player.playbackState == MediaPlayer.StoppedState
0045             anchors.centerIn: parent
0046             icon.color: "transparent"
0047             flat: true
0048             icon.width: Maui.Style.iconSizes.huge
0049             icon.name: iteminfo.icon
0050         }
0051 
0052         focus: true
0053         Keys.onSpacePressed: player.playbackState == MediaPlayer.PlayingState ? player.pause() : player.play()
0054         Keys.onLeftPressed: player.seek(player.position - 5000)
0055         Keys.onRightPressed: player.seek(player.position + 5000)
0056 
0057         RowLayout
0058         {
0059             anchors.fill: parent
0060 
0061             MouseArea
0062             {
0063                 Layout.fillWidth: true
0064                 Layout.fillHeight: true
0065                 onDoubleClicked: player.seek(player.position - 5000)
0066             }
0067 
0068             MouseArea
0069             {
0070                 Layout.fillWidth: true
0071                 Layout.fillHeight: true
0072                 onClicked: player.playbackState === MediaPlayer.PlayingState ? player.pause() : player.play()
0073             }
0074 
0075             MouseArea
0076             {
0077                 Layout.fillWidth: true
0078                 Layout.fillHeight: true
0079                 onDoubleClicked: player.seek(player.position + 5000)
0080             }
0081         }
0082     }
0083 
0084     footBar.visible: true
0085     footBar.background: null   
0086 
0087     footBar.leftContent: ToolButton
0088                         {
0089                             icon.name: player.playbackState === MediaPlayer.PlayingState ? "media-playback-pause" : "media-playback-start"
0090                             onClicked: 
0091                             {
0092                                 if(player.playbackState === MediaPlayer.PlayingState)
0093                                     player.pause()
0094                                     else
0095                                         player.play()
0096                             }
0097                         }
0098     footBar.middleContent : Slider
0099     {
0100         id: _slider
0101         Layout.fillWidth: true
0102         orientation: Qt.Horizontal
0103         from: 0
0104         to: 1000
0105         value: (1000 * player.position) / player.duration
0106 
0107         onMoved: player.seek((_slider.value / 1000) * player.duration)
0108     }
0109 }