1
mirror of https://github.com/monero-project/monero-gui synced 2024-12-01 08:11:54 +01:00
monero-gui/components/PrivacyLevelSmall.qml

194 lines
6.1 KiB
QML
Raw Normal View History

2018-01-07 06:20:45 +01:00
// Copyright (c) 2014-2018, The Monero Project
2015-04-01 10:56:05 +02:00
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// @TODO: Remove component after wizard redesign
2014-07-19 16:52:05 +02:00
import QtQuick 2.0
Item {
id: item
2014-08-21 12:09:52 +02:00
property alias interactive: mouseArea.enabled
property alias background: bar.color
2014-07-19 16:52:05 +02:00
property int fillLevel: 0
height: 40
clip: true
2016-02-06 17:19:54 +01:00
onFillLevelChanged: {
if (!interactive) {
//print("fillLevel: " + fillLevel)
fillRect.width = ruler.positions[fillLevel].currentX + ruler.x
2016-02-06 17:19:54 +01:00
}
}
2014-07-19 16:52:05 +02:00
Rectangle {
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
height: 24
//radius: 4
color: "#DBDBDB"
}
Rectangle {
id: bar
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
anchors.topMargin: 1
height: 24
//radius: 4
color: "#FFFFFF"
Rectangle {
id: fillRect
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.margins: 4
//radius: 2
width: ruler.x
2014-07-19 16:52:05 +02:00
2018-04-15 15:45:30 +02:00
color: "#FF6C3C"
2014-07-19 16:52:05 +02:00
Timer {
interval: 500
running: true
repeat: false
onTriggered: fillRect.loaded = true
}
property bool loaded: false
Behavior on width {
enabled: fillRect.loaded
NumberAnimation { duration: 100; easing.type: Easing.InQuad }
}
}
Text {
anchors.verticalCenter: parent.verticalCenter
font.family: "Arial"
2017-02-28 01:50:58 +01:00
font.pixelSize: 15
2014-07-19 16:52:05 +02:00
color: "#000000"
x: ruler.x + (ruler.positions[0] !== undefined ? ruler.positions[0].currentX - 3 : 0) - width
2017-02-28 01:50:58 +01:00
text: qsTr("Low") + translationManager.emptyString
2014-07-19 16:52:05 +02:00
}
Text {
anchors.verticalCenter: parent.verticalCenter
font.family: "Arial"
2017-02-28 01:50:58 +01:00
font.pixelSize: 15
2014-07-19 16:52:05 +02:00
color: "#000000"
x: ruler.x + (ruler.positions[4] !== undefined ? ruler.positions[4].currentX - 3 : 0) - width
2017-02-28 01:50:58 +01:00
text: qsTr("Medium") + translationManager.emptyString
2014-07-19 16:52:05 +02:00
}
Text {
anchors.verticalCenter: parent.verticalCenter
font.family: "Arial"
2017-02-28 01:50:58 +01:00
font.pixelSize: 15
2014-07-19 16:52:05 +02:00
color: "#000000"
x: ruler.x + (ruler.positions[13] !== undefined ? ruler.positions[13].currentX - 3 : 0) - width
2017-02-28 01:50:58 +01:00
text: qsTr("High") + translationManager.emptyString
2014-07-19 16:52:05 +02:00
}
MouseArea {
2014-08-21 12:09:52 +02:00
id: mouseArea
2014-07-19 16:52:05 +02:00
anchors.fill: parent
function positionBar() {
var xDiff = 999999
var index = -1
for(var i = 0; i < 14; ++i) {
var tmp = Math.abs(ruler.positions[i].currentX + ruler.x - mouseX)
2014-07-19 16:52:05 +02:00
if(tmp < xDiff) {
xDiff = tmp
index = i
}
}
if(index !== -1) {
fillRect.width = Qt.binding(function(){ return ruler.positions[index].currentX + ruler.x })
2014-07-19 16:52:05 +02:00
item.fillLevel = index
2016-02-06 17:19:54 +01:00
print ("fillLevel: " + item.fillLevel)
2014-07-19 16:52:05 +02:00
}
}
onClicked: positionBar()
onMouseXChanged: positionBar()
}
}
Row {
id: ruler
2014-07-19 16:52:05 +02:00
anchors.right: bar.right
anchors.rightMargin: 8
anchors.top: bar.bottom
anchors.topMargin: 5
2016-02-06 17:19:54 +01:00
property var positions: []
2014-07-19 16:52:05 +02:00
Row {
id: row2
2014-07-19 17:11:16 +02:00
spacing: ((bar.width - 8) / 2.23) / 4
2014-07-19 16:52:05 +02:00
Repeater {
model: 4
delegate: Rectangle {
id: delegateItem2
property int currentX: x + row2.x
height: 8
width: 1
color: "#DBDBDB"
Component.onCompleted: {
ruler.positions[index] = delegateItem2
2014-07-19 16:52:05 +02:00
}
}
}
}
Row {
id: row1
2014-07-19 17:11:16 +02:00
spacing: ((bar.width - 8) / 2.23) / 10
2014-07-19 16:52:05 +02:00
Repeater {
model: 10
delegate: Rectangle {
id: delegateItem1
property int currentX: x + row1.x
height: index === 4 ? 8 : 4
width: 1
color: "#DBDBDB"
Component.onCompleted: {
ruler.positions[index + 4] = delegateItem1
2014-07-19 16:52:05 +02:00
}
}
}
}
}
}