Warning, /multimedia/kdenlive/src/monitor/view/kdenlivemonitorsplit.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2015 Jean-Baptiste Mardelle <jb@kdenlive.org>
0003 SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0004 */
0005
0006 import QtQuick 2.15
0007 import QtQuick.Controls 2.15
0008
0009 Item {
0010 id: root
0011 objectName: "rootsplit"
0012 SystemPalette { id: activePalette }
0013
0014 // default size, but scalable by user
0015 height: 300; width: 400
0016 property double timeScale: 1
0017 property int duration: 300
0018 property int mouseRulerPos: 0
0019 property int splitterPos
0020 property rect framesize
0021 property real baseUnit: fontMetrics.font.pixelSize * 0.8
0022 // percentage holds splitter pos relative to the scene percentage
0023 property double percentage
0024 property point profile: controller.profile
0025 property point center
0026 property double offsetx
0027 property double offsety
0028 property double scalex
0029 property double scaley
0030 property bool captureRightClick: false
0031 // Zoombar properties
0032 property double zoomStart: 0
0033 property double zoomFactor: 1
0034 property int zoomOffset: 0
0035 property bool showZoomBar: false
0036
0037 signal qmlMoveSplit()
0038
0039 function updateClickCapture() {
0040 root.captureRightClick = false
0041 }
0042
0043 FontMetrics {
0044 id: fontMetrics
0045 font.family: "Arial"
0046 }
0047
0048 percentage: 0.5
0049 splitterPos: this.width / 2
0050
0051 onDurationChanged: {
0052 clipMonitorRuler.updateRuler()
0053 }
0054 onWidthChanged: {
0055 clipMonitorRuler.updateRuler()
0056 }
0057
0058 MouseArea {
0059 width: root.width; height: root.height
0060 anchors.centerIn: parent
0061 hoverEnabled: true
0062 cursorShape: Qt.SizeHorCursor
0063 acceptedButtons: Qt.LeftButton
0064 onWheel: wheel => {
0065 controller.seek(wheel.angleDelta.x + wheel.angleDelta.y, wheel.modifiers)
0066 }
0067 onPressed: {
0068 root.captureRightClick = true
0069 root.percentage = (mouseX - (root.width - (root.profile.x * root.scalex)) / 2) / (root.profile.x * root.scalex)
0070 root.splitterPos = mouseX
0071 root.qmlMoveSplit()
0072 }
0073 onPositionChanged: {
0074 if (pressed) {
0075 root.percentage = (mouseX - (root.width - (root.profile.x * root.scalex)) / 2) / (root.profile.x * root.scalex)
0076 root.splitterPos = mouseX
0077 root.qmlMoveSplit()
0078 }
0079 timer.restart()
0080 splitter.visible = true
0081 }
0082 onReleased: {
0083 root.captureRightClick = false
0084 }
0085 //onEntered: { splitter.visible = true }
0086 onExited: { splitter.visible = false }
0087 }
0088
0089 Rectangle {
0090 id: splitter
0091 x: root.splitterPos
0092 y: 0
0093 width: 1
0094 height: root.height
0095 color: "red"
0096 visible: false
0097 Text {
0098 text: i18n("Effect")
0099 color: "red"
0100 anchors {
0101 right: parent.left
0102 top: parent.top
0103 topMargin: 10
0104 rightMargin: 10
0105 }
0106 }
0107 }
0108 MonitorRuler {
0109 id: clipMonitorRuler
0110 anchors {
0111 left: root.left
0112 right: root.right
0113 bottom: root.bottom
0114 }
0115 height: controller.rulerHeight
0116 }
0117
0118 Timer {
0119 id: timer
0120
0121 interval: 1000; running: false; repeat: false
0122 onTriggered: {
0123 splitter.visible = false
0124 }
0125 }
0126 }