From e0796b24c98ac1c20a140ee1d194e62efe3b00a7 Mon Sep 17 00:00:00 2001 From: xiphon Date: Sat, 8 Dec 2018 21:26:33 +0000 Subject: [PATCH 1/3] standard-button: fix layout --- components/StandardButton.qml | 82 +++++++++++++++-------------------- 1 file changed, 35 insertions(+), 47 deletions(-) diff --git a/components/StandardButton.qml b/components/StandardButton.qml index 8f552ac7..88076894 100644 --- a/components/StandardButton.qml +++ b/components/StandardButton.qml @@ -46,22 +46,9 @@ Item { } signal clicked() - // Dynamic height/width - Layout.minimumWidth: { - var _padding = 22; - if(button.rightIcon !== ""){ - _padding += 60; - } - - var _width = label.contentWidth + _padding; - if(_width <= 50) { - return 60; - } - - return _width; - } - height: small ? 30 * scaleRatio : 36 * scaleRatio + width: buttonLayout.width + 22 * scaleRatio + Component.onCompleted: width = width function doClick() { // Android workaround @@ -70,9 +57,7 @@ Item { } Rectangle { - anchors.left: parent.left - anchors.right: parent.right - height: parent.height - 1 + anchors.fill: parent radius: 3 color: parent.enabled ? MoneroComponents.Style.buttonBackgroundColor : MoneroComponents.Style.buttonBackgroundColorDisabled border.width: parent.focus ? 1 : 0 @@ -96,38 +81,41 @@ Item { } } - Text { - id: label - anchors.verticalCenter: parent.verticalCenter - anchors.left: parent.left - anchors.right: parent.right - horizontalAlignment: textAlign === "center" ? Text.AlignHCenter : Text.AlignLeft - anchors.leftMargin: textAlign === "center" ? 0 : 11 - font.family: MoneroComponents.Style.fontBold.name - font.bold: true - font.pixelSize: buttonArea.pressed ? button.fontSize - 1 : button.fontSize - color: parent.textColor - visible: parent.icon === "" - } - - Image { + RowLayout { + id: buttonLayout + height: button.height + spacing: 11 * scaleRatio anchors.centerIn: parent - visible: parent.icon !== "" - source: parent.icon - } - Image { - visible: parent.rightIcon !== "" - anchors.right: parent.right - anchors.rightMargin: 11 * scaleRatio - anchors.verticalCenter: parent.verticalCenter - width: parent.small ? 16 * scaleRatio : 20 * scaleRatio - height: parent.small ? 16 * scaleRatio : 20 * scaleRatio - source: { - if(parent.rightIconInactive !== "" && !parent.enabled){ - return parent.rightIconInactive; + Text { + id: label + Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter + horizontalAlignment: textAlign === "center" ? Text.AlignHCenter : Text.AlignLeft + font.family: MoneroComponents.Style.fontBold.name + font.bold: true + font.pixelSize: buttonArea.pressed ? button.fontSize - 1 : button.fontSize + color: button.textColor + visible: button.icon === "" + } + + Image { + Layout.alignment: Qt.AlignVCenter | Qt.AlignRight + visible: button.icon !== "" + source: button.icon + } + + + Image { + visible: button.rightIcon !== "" + Layout.alignment: Qt.AlignVCenter | Qt.AlignRight + width: button.small ? 16 * scaleRatio : 20 * scaleRatio + height: button.small ? 16 * scaleRatio : 20 * scaleRatio + source: { + if(button.rightIconInactive !== "" && !button.enabled) { + return button.rightIconInactive; + } + return button.rightIcon; } - return parent.rightIcon; } } From f8a920dc38d1af80148cbc88fb820871e4ba41cf Mon Sep 17 00:00:00 2001 From: xiphon Date: Sat, 8 Dec 2018 21:33:04 +0000 Subject: [PATCH 2/3] standard-button: add hover color animation --- components/StandardButton.qml | 47 +++++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/components/StandardButton.qml b/components/StandardButton.qml index 88076894..bfb90716 100644 --- a/components/StandardButton.qml +++ b/components/StandardButton.qml @@ -57,27 +57,41 @@ Item { } Rectangle { + id: buttonRect anchors.fill: parent radius: 3 - color: parent.enabled ? MoneroComponents.Style.buttonBackgroundColor : MoneroComponents.Style.buttonBackgroundColorDisabled border.width: parent.focus ? 1 : 0 - MouseArea { - anchors.fill: parent - cursorShape: Qt.PointingHandCursor - hoverEnabled: true - - propagateComposedEvents: true - - // possibly do some hover effects here - onEntered: { -// if(button.enabled) parent.color = Style.buttonBackgroundColorHover; -// else parent.color = Style.buttonBackgroundColorDisabledHover; - } - onExited: { -// if(button.enabled) parent.color = Style.buttonBackgroundColor; -// else parent.color = Style.buttonBackgroundColorDisabled; + state: button.enabled ? "active" : "disabled" + Component.onCompleted: state = state + states: [ + State { + name: "hover" + when: buttonArea.containsMouse || button.focus + PropertyChanges { + target: buttonRect + color: MoneroComponents.Style.buttonBackgroundColorHover + } + }, + State { + name: "active" + when: button.enabled + PropertyChanges { + target: buttonRect + color: MoneroComponents.Style.buttonBackgroundColor + } + }, + State { + name: "disabled" + when: !button.enabled + PropertyChanges { + target: buttonRect + color: MoneroComponents.Style.buttonBackgroundColorDisabled + } } + ] + transitions: Transition { + ColorAnimation { duration: 100 } } } @@ -122,6 +136,7 @@ Item { MouseArea { id: buttonArea anchors.fill: parent + hoverEnabled: true onClicked: doClick() cursorShape: Qt.PointingHandCursor } From 831dc59013a2af28eaae9ee83e1e1811a7ccc090 Mon Sep 17 00:00:00 2001 From: xiphon Date: Sat, 8 Dec 2018 21:34:53 +0000 Subject: [PATCH 3/3] standard-button: remove redundant 'icon' property --- components/StandardButton.qml | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/components/StandardButton.qml b/components/StandardButton.qml index bfb90716..37c4c6a3 100644 --- a/components/StandardButton.qml +++ b/components/StandardButton.qml @@ -35,7 +35,6 @@ Item { id: button property string rightIcon: "" property string rightIconInactive: "" - property string icon: "" property string textColor: button.enabled? MoneroComponents.Style.buttonTextColor: MoneroComponents.Style.buttonTextColorDisabled property string textAlign: rightIcon !== "" ? "left" : "center" property bool small: false @@ -109,15 +108,8 @@ Item { font.bold: true font.pixelSize: buttonArea.pressed ? button.fontSize - 1 : button.fontSize color: button.textColor - visible: button.icon === "" + visible: text !== "" } - - Image { - Layout.alignment: Qt.AlignVCenter | Qt.AlignRight - visible: button.icon !== "" - source: button.icon - } - Image { visible: button.rightIcon !== ""