Warning, /multimedia/kdenlive/src/timeline2/view/qml/AudioLevels.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2019 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 import QtQuick.Layouts 1.15 0009 0010 Item { 0011 id: recContainer 0012 property int trackId: -1 0013 property int recState: audiorec.recordState 0014 width: parent.width 0015 implicitHeight: root.baseUnit * 1.5 0016 0017 onRecStateChanged: { 0018 if (recState == 1) { 0019 // Recording 0020 recbutton.color = 'orange' 0021 recbutton.ToolTip.text = i18n("Stop") 0022 } else if (recState == 2) { 0023 // Paused 0024 recbutton.color = 'white' 0025 recbutton.ToolTip.text = i18n("Paused") 0026 } else { 0027 recbutton.color = 'darkred' 0028 recbutton.ToolTip.text = i18n("Record") 0029 } 0030 } 0031 RowLayout { 0032 spacing: 4 0033 Layout.fillWidth: true 0034 Rectangle { 0035 id: recbutton 0036 width: root.baseUnit * 1.5 0037 height: root.baseUnit * 1.5 0038 radius: root.baseUnit * .75 0039 color: trackHeadRoot.isLocked ? 'grey' : 'darkred' 0040 border.color: 'black' 0041 ToolTip.visible: buttonArea.containsMouse 0042 ToolTip.delay: 1000 0043 ToolTip.timeout: 5000 0044 ToolTip.text: i18n("Record") 0045 MouseArea { 0046 id: buttonArea 0047 anchors.fill: parent 0048 hoverEnabled: true 0049 cursorShape: Qt.PointingHandCursor 0050 enabled: !trackHeadRoot.isLocked 0051 onEntered: { 0052 parent.border.color = 'red' 0053 parent.border.width = 4 0054 } 0055 onExited: { 0056 parent.border.color = 'black' 0057 parent.border.width = 1 0058 } 0059 onClicked: { 0060 timeline.switchRecording(trackId, recState == 1 ? 0 : 1) 0061 } 0062 } 0063 } 0064 Rectangle { 0065 id: levelsContainer 0066 width: recContainer.width - recbutton.width - 8 0067 height: recbutton.height - 1 0068 x: 1 0069 y: 1 0070 ToolTip.text: i18n("Mic level") 0071 ToolTip.visible: levelArea.containsMouse 0072 ToolTip.delay: 1000 0073 ToolTip.timeout: 5000 0074 color: Qt.lighter(activePalette.base) 0075 Repeater { 0076 model: audiorec.levels.length === 0 ? 2 : audiorec.levels.length 0077 id: bgRepeater 0078 Rectangle { 0079 required property int index 0080 width: levelsContainer.width - 2 0081 height: Math.max(1, levelsContainer.height / bgRepeater.count - 2) 0082 x: 1 0083 y: (height + 1) * index 0084 gradient: Gradient { 0085 orientation: Gradient.Horizontal 0086 GradientStop { position: 0.0; color: "darkgreen" } 0087 GradientStop { position: 0.69; color: "darkgreen" } 0088 GradientStop { position: 0.7; color: "green" } 0089 GradientStop { position: 0.84; color: "green" } 0090 GradientStop { position: 0.85; color: "yellow" } 0091 GradientStop { position: 0.99; color: "yellow" } 0092 GradientStop { position: 1.0; color: "red" } 0093 } 0094 } 0095 } 0096 Repeater { 0097 model: audiorec.levels.length === 0 ? 2 : audiorec.levels.length 0098 id: levelRepeater 0099 property int lastPos: 0 0100 property int currentPos: 0 0101 Item { 0102 anchors.fill: parent 0103 anchors.margins: 1 0104 property double currentLevel: audiorec.levels.length <= 0 ? 0 : audiorec.levels[index] 0105 property double peak: 0 0106 Rectangle { 0107 color: activePalette.base 0108 opacity: 0.8 0109 width: parent.width * (1.0 - currentLevel) 0110 anchors.right: parent.right 0111 height: parent.height / levelRepeater.count 0112 y: height * index 0113 } 0114 onCurrentLevelChanged: { 0115 if (currentLevel > peak) { 0116 peak = currentLevel 0117 } else if (peak > 0) { 0118 peak -= 0.02 0119 } 0120 } 0121 Rectangle { 0122 visible: peak > 0 0123 color: activePalette.text 0124 width: 2 0125 height: parent.height / levelRepeater.count 0126 x: parent.width * peak 0127 y: height * index 0128 } 0129 } 0130 } 0131 Repeater { 0132 model: 8 0133 Rectangle { 0134 color: "#000000" 0135 width: 1 0136 y: 1 0137 height: parent.height - 2 0138 x: parent.width * (index + 1) / 9 0139 } 0140 } 0141 Rectangle { 0142 // main frame 0143 anchors.fill: parent 0144 color: "#00000000" 0145 border.color: "#000000" 0146 border.width: 1 0147 } 0148 MouseArea { 0149 id: levelArea 0150 hoverEnabled: true 0151 anchors.fill: parent 0152 acceptedButtons: Qt.NoButton 0153 } 0154 } 0155 } 0156 }