mirror of
https://github.com/overte-org/overte.git
synced 2025-05-06 15:49:39 +02:00
229 lines
5.6 KiB
QML
229 lines
5.6 KiB
QML
//
|
|
// MicBar.qml
|
|
// qml/hifi/audio
|
|
//
|
|
// Created by Zach Pomerantz on 6/14/2017
|
|
// Copyright 2017 High Fidelity, Inc.
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
|
|
import QtQuick 2.5
|
|
import QtGraphicalEffects 1.0
|
|
|
|
import TabletScriptingInterface 1.0
|
|
|
|
Rectangle {
|
|
readonly property var level: AudioScriptingInterface.inputLevel;
|
|
|
|
property bool standalone: false;
|
|
property var dragTarget: null;
|
|
|
|
width: 240;
|
|
height: 50;
|
|
|
|
radius: 5;
|
|
|
|
color: "#00000000";
|
|
border {
|
|
width: mouseArea.containsMouse || mouseArea.containsPress ? 2 : 0;
|
|
color: colors.border;
|
|
}
|
|
|
|
// borders are painted over fill, so reduce the fill to fit inside the border
|
|
Rectangle {
|
|
color: standalone ? colors.fill : "#00000000";
|
|
width: 236;
|
|
height: 46;
|
|
|
|
radius: 5;
|
|
|
|
anchors {
|
|
verticalCenter: parent.verticalCenter;
|
|
horizontalCenter: parent.horizontalCenter;
|
|
}
|
|
}
|
|
|
|
MouseArea {
|
|
id: mouseArea;
|
|
|
|
anchors {
|
|
left: icon.left;
|
|
right: bar.right;
|
|
top: icon.top;
|
|
bottom: icon.bottom;
|
|
}
|
|
|
|
hoverEnabled: true;
|
|
scrollGestureEnabled: false;
|
|
onClicked: {
|
|
AudioScriptingInterface.muted = !AudioScriptingInterface.muted;
|
|
Tablet.playSound(TabletEnums.ButtonClick);
|
|
}
|
|
drag.target: dragTarget;
|
|
onContainsMouseChanged: {
|
|
if (containsMouse) {
|
|
Tablet.playSound(TabletEnums.ButtonHover);
|
|
}
|
|
}
|
|
}
|
|
|
|
QtObject {
|
|
id: colors;
|
|
|
|
readonly property string unmuted: "#FFF";
|
|
readonly property string muted: "#E2334D";
|
|
readonly property string gutter: "#575757";
|
|
readonly property string greenStart: "#39A38F";
|
|
readonly property string greenEnd: "#1FC6A6";
|
|
readonly property string red: colors.muted;
|
|
readonly property string fill: "#55000000";
|
|
readonly property string border: standalone ? "#80FFFFFF" : "#55FFFFFF";
|
|
readonly property string icon: AudioScriptingInterface.muted ? muted : unmuted;
|
|
}
|
|
|
|
Item {
|
|
id: icon;
|
|
|
|
anchors {
|
|
left: parent.left;
|
|
leftMargin: 5;
|
|
verticalCenter: parent.verticalCenter;
|
|
}
|
|
|
|
width: 40;
|
|
height: 40;
|
|
|
|
Item {
|
|
Image {
|
|
readonly property string unmutedIcon: "../../../icons/tablet-icons/mic-unmute-i.svg";
|
|
readonly property string mutedIcon: "../../../icons/tablet-icons/mic-mute-i.svg";
|
|
|
|
id: image;
|
|
source: AudioScriptingInterface.muted ? mutedIcon : unmutedIcon;
|
|
|
|
width: 30;
|
|
height: 30;
|
|
anchors {
|
|
left: parent.left;
|
|
leftMargin: 5;
|
|
top: parent.top;
|
|
topMargin: 5;
|
|
}
|
|
}
|
|
|
|
ColorOverlay {
|
|
anchors { fill: image }
|
|
source: image;
|
|
color: colors.icon;
|
|
}
|
|
}
|
|
}
|
|
|
|
Item {
|
|
id: status;
|
|
|
|
readonly property string color: AudioScriptingInterface.muted ? colors.muted : colors.unmuted;
|
|
|
|
visible: AudioScriptingInterface.muted;
|
|
|
|
anchors {
|
|
left: parent.left;
|
|
leftMargin: 50;
|
|
verticalCenter: parent.verticalCenter;
|
|
}
|
|
|
|
width: 170;
|
|
height: 8
|
|
|
|
Text {
|
|
anchors {
|
|
horizontalCenter: parent.horizontalCenter;
|
|
verticalCenter: parent.verticalCenter;
|
|
}
|
|
|
|
color: parent.color;
|
|
|
|
text: AudioScriptingInterface.muted ? "MUTED" : "MUTE";
|
|
font.pointSize: 12;
|
|
}
|
|
|
|
Rectangle {
|
|
anchors {
|
|
left: parent.left;
|
|
verticalCenter: parent.verticalCenter;
|
|
}
|
|
|
|
width: 50;
|
|
height: 4;
|
|
color: parent.color;
|
|
}
|
|
|
|
Rectangle {
|
|
anchors {
|
|
right: parent.right;
|
|
verticalCenter: parent.verticalCenter;
|
|
}
|
|
|
|
width: 50;
|
|
height: 4;
|
|
color: parent.color;
|
|
}
|
|
}
|
|
|
|
Item {
|
|
id: bar;
|
|
|
|
visible: !status.visible;
|
|
|
|
anchors.fill: status;
|
|
|
|
width: status.width;
|
|
|
|
Rectangle { // base
|
|
radius: 4;
|
|
anchors { fill: parent }
|
|
color: colors.gutter;
|
|
}
|
|
|
|
Rectangle { // mask
|
|
id: mask;
|
|
width: parent.width * level;
|
|
radius: 5;
|
|
anchors {
|
|
bottom: parent.bottom;
|
|
bottomMargin: 0;
|
|
top: parent.top;
|
|
topMargin: 0;
|
|
left: parent.left;
|
|
leftMargin: 0;
|
|
}
|
|
}
|
|
|
|
LinearGradient {
|
|
anchors { fill: mask }
|
|
source: mask
|
|
start: Qt.point(0, 0);
|
|
end: Qt.point(170, 0);
|
|
gradient: Gradient {
|
|
GradientStop {
|
|
position: 0;
|
|
color: colors.greenStart;
|
|
}
|
|
GradientStop {
|
|
position: 0.8;
|
|
color: colors.greenEnd;
|
|
}
|
|
GradientStop {
|
|
position: 0.81;
|
|
color: colors.red;
|
|
}
|
|
GradientStop {
|
|
position: 1;
|
|
color: colors.red;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|