overte-HifiExperiments/interface/resources/qml/hifi/TextButton.qml
Alexander Ivash 27bb8a0de7 rename stylues-uit => stylesUit & controls-uit => controlsUit
note:
the idea is to make imports like 'import controlsUit 1.0' to work
with 'styles-uit'/'controls-uit' it is not possible because of two reasons:

1. import controls-uit 1.0 is invalid syntax
2. qmldir inside controls-uit is 'module controlsUit'
2018-11-06 14:21:14 +05:30

56 lines
2.1 KiB
QML

//
// TextButton.qml
//
// Created by Howard Stearns 11/12/16
// Copyright 2016 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 Hifi 1.0
import QtQuick 2.4
import stylesUit 1.0
Rectangle {
property alias text: label.text;
property alias pixelSize: label.font.pixelSize;
property bool selected: false;
property int spacing: 2;
property var action: function () { };
property string highlightColor: hifi.colors.blueHighlight;
width: label.width + 64;
height: 32;
color: "transparent";
HifiConstants { id: hifi; }
RalewaySemiBold {
id: label;
color: hifi.colors.white;
font.pixelSize: 20;
anchors {
horizontalCenter: parent.horizontalCenter;
verticalCenter: parent.verticalCenter;
}
}
Rectangle {
// This is crazy. All of this stuff (except the opacity) ought to be in the parent, with the label drawn on top.
// But there's a bug in QT such that if you select this TextButton, AND THEN enter the area of
// a TextButton created before this one, AND THEN enter a ListView with a highlight, then our label
// will draw as though it on the bottom. (If the phase of the moon is right, it will do this for a
// about half a second and then render normally. But if you're not lucky it just stays this way.)
// So.... here we deliberately put the rectangle on TOP of the text so that you can't tell when the bug
// is happening.
anchors.fill: parent;
radius: height / 2;
border.width: 4;
border.color: clickArea.containsMouse ? highlightColor : "transparent";
color: clickArea.containsPress ? hifi.colors.darkGray : (selected ? hifi.colors.blueAccent : "transparent");
opacity: (clickArea.containsMouse && !clickArea.containsPress) ? 0.8 : 0.5;
}
MouseArea {
id: clickArea;
anchors.fill: parent;
acceptedButtons: Qt.LeftButton;
onClicked: action(parent);
hoverEnabled: true;
}
}