summaryrefslogtreecommitdiffstats
path: root/res/qml
diff options
context:
space:
mode:
authorBe <be@mixxx.org>2021-09-30 10:44:39 -0500
committerBe <be@mixxx.org>2021-09-30 10:44:39 -0500
commitf58f68ebb52c3d9af85101985a99800f0dd47487 (patch)
treeb8b68d79b3355707fab512226d846f64c5a43529 /res/qml
parent4d7bde1d00dd445b47edb46d93709a52bfc5a0fd (diff)
parent49e87f9889b9eef5c9cc7d13fa9395555b7729eb (diff)
Merge remote-tracking branch 'upstream/main' into effects_refactoring
Diffstat (limited to 'res/qml')
-rw-r--r--res/qml/AuxiliaryUnit.qml119
-rw-r--r--res/qml/Button.qml128
-rw-r--r--res/qml/ComboBox.qml64
-rw-r--r--res/qml/ControlButton.qml35
-rw-r--r--res/qml/ControlKnob.qml22
-rw-r--r--res/qml/ControlMiniKnob.qml22
-rw-r--r--res/qml/ControlSlider.qml20
-rw-r--r--res/qml/CrossfaderRow.qml108
-rw-r--r--res/qml/Deck.qml387
-rw-r--r--res/qml/DeckInfoBar.qml226
-rw-r--r--res/qml/DeckRow.qml125
-rw-r--r--res/qml/EffectRow.qml44
-rw-r--r--res/qml/EffectSlot.qml199
-rw-r--r--res/qml/EffectUnit.qml212
-rw-r--r--res/qml/EmbeddedBackground.qml11
-rw-r--r--res/qml/EmbeddedText.qml6
-rw-r--r--res/qml/EqColumn.qml51
-rw-r--r--res/qml/EqKnob.qml54
-rw-r--r--res/qml/FadeBehavior.qml36
-rw-r--r--res/qml/Hotcue.qml52
-rw-r--r--res/qml/HotcueButton.qml51
-rw-r--r--res/qml/HotcuePopup.qml95
-rw-r--r--res/qml/InfoBarButton.qml78
-rw-r--r--res/qml/Knob.qml58
-rw-r--r--res/qml/Library.qml91
-rw-r--r--res/qml/MicrophoneDuckingPanel.qml62
-rw-r--r--res/qml/MicrophoneUnit.qml125
-rw-r--r--res/qml/MiniKnob.qml9
-rw-r--r--res/qml/Mixer.qml50
-rw-r--r--res/qml/MixerColumn.qml85
-rw-r--r--res/qml/Mixxx/Controls/Knob.qml148
-rw-r--r--res/qml/Mixxx/Controls/Slider.qml43
-rw-r--r--res/qml/Mixxx/Controls/Spinny.qml90
-rw-r--r--res/qml/Mixxx/Controls/WaveformOverview.qml71
-rw-r--r--res/qml/Mixxx/Controls/WaveformOverviewHotcueMarker.qml80
-rw-r--r--res/qml/Mixxx/Controls/WaveformOverviewMarker.qml48
-rw-r--r--res/qml/Mixxx/Controls/qmldir8
-rw-r--r--res/qml/Mixxx/MathUtils.mjs3
-rw-r--r--res/qml/Mixxx/PlayerDropArea.qml29
-rw-r--r--res/qml/Mixxx/qmldir3
-rw-r--r--res/qml/OrientationToggleButton.qml79
-rw-r--r--res/qml/Sampler.qml196
-rw-r--r--res/qml/SamplerRow.qml18
-rw-r--r--res/qml/SectionBackground.qml16
-rw-r--r--res/qml/SectionText.qml12
-rw-r--r--res/qml/Slider.qml55
-rw-r--r--res/qml/SyncButton.qml70
-rw-r--r--res/qml/Theme/Theme.qml57
-rw-r--r--res/qml/Theme/qmldir1
-rw-r--r--res/qml/VuMeter.qml84
-rw-r--r--res/qml/WaveformOverview.qml152
-rw-r--r--res/qml/images/auto@2x.pngbin0 -> 1482 bytes
-rw-r--r--res/qml/images/button.svg2
-rw-r--r--res/qml/images/button_pressed.svg2
-rw-r--r--res/qml/images/icon_passthrough.svg2
-rw-r--r--res/qml/images/icon_quantize.svg35
-rw-r--r--res/qml/images/knob.svg2
-rw-r--r--res/qml/images/knob_shadow.svg2
-rw-r--r--res/qml/images/miniknob.svg2
-rw-r--r--res/qml/images/miniknob_shadow.svg2
-rw-r--r--res/qml/images/realty@2x.pngbin0 -> 1173 bytes
-rw-r--r--res/qml/images/section.svg2
-rw-r--r--res/qml/images/services@2x.pngbin0 -> 1115 bytes
-rw-r--r--res/qml/images/slider_bpm.svg1812
-rw-r--r--res/qml/images/slider_crossfader.svg2
-rw-r--r--res/qml/images/slider_handle.svg2
-rw-r--r--res/qml/images/slider_handle_crossfader.svg2
-rw-r--r--res/qml/images/slider_handle_micducking.svg2
-rw-r--r--res/qml/images/slider_micducking.svg2
-rw-r--r--res/qml/images/slider_volume.svg2
-rw-r--r--res/qml/images/work@2x.pngbin0 -> 1770 bytes
-rw-r--r--res/qml/main.qml158
-rw-r--r--res/qml/skin.ini4
-rw-r--r--res/qml/skin_preview.pngbin0 -> 20265 bytes
74 files changed, 5925 insertions, 0 deletions
diff --git a/res/qml/AuxiliaryUnit.qml b/res/qml/AuxiliaryUnit.qml
new file mode 100644
index 0000000000..62eb11118f
--- /dev/null
+++ b/res/qml/AuxiliaryUnit.qml
@@ -0,0 +1,119 @@
+import "." as Skin
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+import QtQuick.Layouts 1.12
+import "Theme"
+
+Row {
+ id: root
+
+ property int unitNumber // required
+ property string group: "[Auxiliary" + unitNumber + "]"
+
+ spacing: 5
+
+ Skin.VuMeter {
+ id: vuMeter
+
+ group: root.group
+ key: "VuMeter"
+ width: 4
+ height: parent.height
+ }
+
+ Rectangle {
+ id: gainKnobFrame
+
+ width: 52
+ height: width
+ color: Theme.knobBackgroundColor
+ radius: 5
+
+ Skin.ControlKnob {
+ id: gainKnob
+
+ anchors.centerIn: parent
+ width: 48
+ height: width
+ arcStart: Knob.ArcStart.Minimum
+ group: root.group
+ key: "pregain"
+ color: Theme.gainKnobColor
+ }
+
+ }
+
+ Column {
+ Skin.SectionText {
+ width: parent.width
+ height: root.height / 2
+ text: "AUX " + root.unitNumber
+ }
+
+ Skin.ControlButton {
+ id: pflButton
+
+ group: root.group
+ key: "pfl"
+ text: "PFL"
+ activeColor: Theme.pflActiveButtonColor
+ toggleable: true
+ }
+
+ }
+
+ Skin.EmbeddedBackground {
+ id: embedded
+
+ height: parent.height
+ width: 56
+
+ Skin.OrientationToggleButton {
+ id: orientationButton
+
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.top: parent.top
+ anchors.bottom: parent.verticalCenter
+ group: root.group
+ key: "orientation"
+ color: Theme.crossfaderOrientationColor
+ }
+
+ Skin.InfoBarButton {
+ id: fx1Button
+
+ anchors.left: parent.left
+ anchors.right: parent.horizontalCenter
+ anchors.top: parent.verticalCenter
+ anchors.bottom: parent.bottom
+ group: "[EffectRack1_EffectUnit1]"
+ key: "group_" + root.group + "_enable"
+ activeColor: Theme.deckActiveColor
+
+ foreground: Skin.EmbeddedText {
+ anchors.centerIn: parent
+ text: "FX1"
+ }
+
+ }
+
+ Skin.InfoBarButton {
+ group: "[EffectRack1_EffectUnit2]"
+ anchors.left: parent.horizontalCenter
+ anchors.right: parent.right
+ anchors.top: parent.verticalCenter
+ anchors.bottom: parent.bottom
+ key: "group_" + root.group + "_enable"
+ activeColor: Theme.deckActiveColor
+
+ foreground: Skin.EmbeddedText {
+ anchors.centerIn: parent
+ text: "FX2"
+ }
+
+ }
+
+ }
+
+}
diff --git a/res/qml/Button.qml b/res/qml/Button.qml
new file mode 100644
index 0000000000..133ce7e213
--- /dev/null
+++ b/res/qml/Button.qml
@@ -0,0 +1,128 @@
+import "." as Skin
+import QtGraphicalEffects 1.12
+import QtQml 2.12
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+import "Theme"
+
+AbstractButton {
+ id: root
+
+ property color normalColor: Theme.buttonNormalColor
+ property color activeColor // required
+ property color pressedColor: activeColor
+ property bool highlight: false
+
+ implicitWidth: 52
+ implicitHeight: 26
+ states: [
+ State {
+ name: "pressed"
+ when: root.pressed
+
+ PropertyChanges {
+ target: backgroundImage
+ source: Theme.imgButtonPressed
+ }
+
+ PropertyChanges {
+ target: label
+ color: root.pressedColor
+ }
+
+ PropertyChanges {
+ target: labelGlow
+ visible: true
+ }
+
+ },
+ State {
+ name: "active"
+ when: (root.highlight || root.checked) && !root.pressed
+
+ PropertyChanges {
+ target: backgroundImage
+ source: Theme.imgButton
+ }
+
+ PropertyChanges {
+ target: label
+ color: root.activeColor
+ }
+
+ PropertyChanges {
+ target: labelGlow
+ visible: true
+ }
+
+ },
+ State {
+ name: "inactive"
+ when: !root.checked && !root.highlight && !root.pressed
+
+ PropertyChanges {
+ target: backgroundImage
+ source: Theme.imgButton
+ }
+
+ PropertyChanges {
+ target: label
+ color: root.normalColor
+ }
+
+ PropertyChanges {
+ target: labelGlow
+ visible: false
+ }
+
+ }
+ ]
+
+ background: BorderImage {
+ id: backgroundImage
+
+ anchors.fill: parent
+ horizontalTileMode: BorderImage.Stretch
+ verticalTileMode: BorderImage.Stretch
+ source: Theme.imgButton
+
+ border {
+ top: 10
+ left: 10
+ right: 10
+ bottom: 10
+ }
+
+ }
+
+ contentItem: Item {
+ anchors.fill: parent
+
+ Glow {
+ id: labelGlow
+
+ anchors.fill: parent
+ radius: 5
+ spread: 0.1
+ samples: 1 + radius * 2
+ color: label.color
+ source: label
+ }
+
+ Label {
+ id: label
+
+ anchors.fill: parent
+ text: root.text
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ font.family: Theme.fontFamily
+ font.capitalization: Font.AllUppercase
+ font.bold: true
+ font.pixelSize: Theme.buttonFontPixelSize
+ color: root.normalColor
+ }
+
+ }
+
+}
diff --git a/res/qml/ComboBox.qml b/res/qml/ComboBox.qml
new file mode 100644
index 0000000000..d5d5e82ae5
--- /dev/null
+++ b/res/qml/ComboBox.qml
@@ -0,0 +1,64 @@
+import "." as Skin
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+import "Theme"
+
+ComboBox {
+ id: root
+
+ background: Skin.EmbeddedBackground {
+ }
+
+ delegate: ItemDelegate {
+ width: parent.width
+ highlighted: root.highlightedIndex === index
+ text: root.textAt(index)
+
+ contentItem: Text {
+ text: parent.text
+ color: Theme.deckTextColor
+ elide: Text.ElideRight
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ background: Rectangle {
+ radius: 5
+ border.width: highlighted ? 1 : 0
+ border.color: Theme.deckLineColor
+ color: "transparent"
+ }
+
+ }
+
+ contentItem: Text {
+ leftPadding: 5
+ rightPadding: root.indicator.width + root.spacing
+ text: root.displayText
+ font: root.font
+ color: Theme.deckTextColor
+ verticalAlignment: Text.AlignVCenter
+ elide: Text.ElideRight
+ }
+
+ popup: Popup {
+ y: root.height
+ width: root.width
+ implicitHeight: contentItem.implicitHeight
+
+ contentItem: ListView {
+ clip: true
+ implicitHeight: contentHeight
+ model: root.popup.visible ? root.delegateModel : null
+ currentIndex: root.highlightedIndex
+
+ ScrollIndicator.vertical: ScrollIndicator {
+ }
+
+ }
+
+ background: Skin.EmbeddedBackground {
+ }
+
+ }
+
+}
diff --git a/res/qml/ControlButton.qml b/res/qml/ControlButton.qml
new file mode 100644
index 0000000000..6a44ef06e2
--- /dev/null
+++ b/res/qml/ControlButton.qml
@@ -0,0 +1,35 @@
+import "." as Skin
+import Mixxx 0.1 as Mixxx
+
+Skin.Button {
+ id: root
+
+ property string group // required
+ property string key // required
+ property bool toggleable: false
+
+ function toggle() {
+ control.value = !control.value;
+ }
+
+ highlight: control.value
+ onPressed: {
+ if (toggleable)
+ toggle();
+ else
+ control.value = 1;
+ }
+ onReleased: {
+ if (!toggleable)
+ control.value = 0;
+
+ }
+
+ Mixxx.ControlProxy {
+ id: control
+
+ group: root.group
+ key: root.key
+ }
+
+}
diff --git a/res/qml/ControlKnob.qml b/res/qml/ControlKnob.qml
new file mode 100644
index 0000000000..6808070808
--- /dev/null
+++ b/res/qml/ControlKnob.qml
@@ -0,0 +1,22 @@
+import "." as Skin
+import Mixxx 0.1 as Mixxx
+import QtQuick 2.12
+
+Skin.Knob {
+ id: root
+
+ property alias group: control.group
+ property alias key: control.key
+
+ value: control.parameter
+ onTurned: control.parameter = value
+
+ Mixxx.ControlProxy {
+ id: control
+ }
+
+ TapHandler {
+ onDoubleTapped: control.reset()
+ }
+
+}
diff --git a/res/qml/ControlMiniKnob.qml b/res/qml/ControlMiniKnob.qml
new file mode 100644
index 0000000000..5cdffcac25
--- /dev/null
+++ b/res/qml/ControlMiniKnob.qml
@@ -0,0 +1,22 @@
+import "." as Skin
+import Mixxx 0.1 as Mixxx
+import QtQuick 2.12
+
+Skin.MiniKnob {
+ id: root
+
+ property alias group: control.group
+ property alias key: control.key
+
+ value: control.parameter
+ onTurned: control.parameter = value
+
+ Mixxx.ControlProxy {
+ id: control
+ }
+
+ TapHandler {
+ onDoubleTapped: control.reset()
+ }
+
+}
diff --git a/res/qml/ControlSlider.qml b/res/qml/ControlSlider.qml
new file mode 100644
index 0000000000..add929ffc9
--- /dev/null
+++ b/res/qml/ControlSlider.qml
@@ -0,0 +1,20 @@
+import "." as Skin
+import Mixxx 0.1 as Mixxx
+import QtQuick 2.12
+
+Skin.Slider {
+ property alias group: control.group
+ property alias key: control.key
+
+ value: control.parameter
+ onMoved: control.parameter = value
+
+ Mixxx.ControlProxy {
+ id: control
+ }
+
+ TapHandler {
+ onDoubleTapped: control.reset()
+ }
+
+}
diff --git a/res/qml/CrossfaderRow.qml b/res/qml/CrossfaderRow.qml
new file mode 100644
index 0000000000..a3a35530b1
--- /dev/null
+++ b/res/qml/CrossfaderRow.qml
@@ -0,0 +1,108 @@
+import "." as Skin
+import Mixxx 0.1 as Mixxx
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+import "Theme"
+
+Item {
+ id: root
+
+ property real crossfaderWidth // required
+
+ implicitHeight: crossfader.height
+
+ Skin.SectionBackground {
+ anchors.fill: microphoneRow
+ }
+
+ Row {
+ id: microphoneRow
+
+ anchors.top: parent.top
+ anchors.bottom: parent.bottom
+ anchors.left: parent.left
+ anchors.right: crossfader.left
+ layoutDirection: Qt.RightToLeft
+ padding: 5
+ spacing: 10
+
+ Skin.MicrophoneUnit {
+ unitNumber: 1
+ }
+
+ Skin.MicrophoneUnit {
+ unitNumber: 2
+ }
+
+ Skin.MicrophoneUnit {
+ unitNumber: 3
+ }
+
+ Skin.MicrophoneUnit {
+ unitNumber: 4
+ }
+
+ Skin.MicrophoneDuckingPanel {
+ }
+
+ }
+
+ Skin.SectionBackground {
+ id: crossfader
+
+ anchors.centerIn: parent
+ width: root.crossfaderWidth
+ height: crossfaderSlider.height + 20
+
+ Skin.ControlSlider {
+ id: crossfaderSlider
+
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.leftMargin: 5
+ anchors.rightMargin: 5
+ anchors.verticalCenter: parent.verticalCenter
+ orientation: Qt.Horizontal
+ group: "[Master]"
+ key: "crossfader"
+ barColor: Theme.crossfaderBarColor
+ barStart: 0.5
+ fg: Theme.imgCrossfaderHandle
+ bg: Theme.imgCrossfaderBackground
+ }
+
+ }
+
+ Row {
+ id: auxiliaryRow
+
+ anchors.left: crossfader.right
+ anchors.top: parent.top
+ anchors.bottom: parent.bottom
+ anchors.right: parent.right
+ padding: 5
+ spacing: 10
+
+ Skin.AuxiliaryUnit {
+ layoutDirection: Qt.RightToLeft
+ unitNumber: 1
+ }
+
+ Skin.AuxiliaryUnit {
+ layoutDirection: Qt.RightToLeft
+ unitNumber: 2
+ }
+
+ Skin.AuxiliaryUnit {
+ layoutDirection: Qt.RightToLeft
+ unitNumber: 3
+ }
+
+ Skin.AuxiliaryUnit {
+ layoutDirection: Qt.RightToLeft
+ unitNumber: 4
+ }
+
+ }
+
+}
diff --git a/res/qml/Deck.qml b/res/qml/Deck.qml
new file mode 100644
index 0000000000..d3661dc5d6
--- /dev/null
+++ b/res/qml/Deck.qml
@@ -0,0 +1,387 @@
+import "." as Skin
+import Mixxx 0.1 as Mixxx
+import Mixxx.Controls 0.1 as MixxxControls
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+import QtQuick.Layouts 1.11
+import "Theme"
+
+Item {
+ id: root
+
+ property string group // required
+ property bool minimized: false
+ property var deckPlayer: Mixxx.PlayerManager.getPlayer(group)
+
+ Drag.active: dragArea.drag.active
+ Drag.dragType: Drag.Automatic
+ Drag.supportedActions: Qt.CopyAction
+ Drag.mimeData: {
+ let data = {
+ "mixxx/player": group
+ };
+ const trackLocationUrl = deckPlayer.trackLocationUrl;
+ if (trackLocationUrl)