From e23dc533bd4e9aaf131e8bce6b8a50eb12b8057c Mon Sep 17 00:00:00 2001 From: Pascal Precht Date: Wed, 3 Nov 2021 11:54:26 +0100 Subject: [PATCH] fix(StatusExpandibleItem): add missing hover indicator in `Secondary` type Fixes #478 --- .../Components/StatusExpandableItem.qml | 207 ++++++++++-------- 1 file changed, 115 insertions(+), 92 deletions(-) diff --git a/src/StatusQ/Components/StatusExpandableItem.qml b/src/StatusQ/Components/StatusExpandableItem.qml index 33d78fae..68ec9395 100644 --- a/src/StatusQ/Components/StatusExpandableItem.qml +++ b/src/StatusQ/Components/StatusExpandableItem.qml @@ -58,105 +58,128 @@ Rectangle { } - StatusSmartIdenticon { - id: identicon + Rectangle { + id: header anchors.top: parent.top - anchors.topMargin: 25 - anchors.left: parent.left - anchors.leftMargin: (statusExpandableItem.type === StatusExpandableItem.Type.Secondary) ? 0 : 11 - image: statusExpandableItem.image - icon: statusExpandableItem.icon - name: primaryText.text - active: (statusExpandableItem.type !== StatusExpandableItem.Type.Tertiary) - } + width: parent.width + height: 64 + radius: (statusExpandableItem.type === StatusExpandableItem.Type.Secondary) ? 8 : 0 + color: statusExpandableItem.type === StatusExpandableItem.Type.Secondary && sensor.containsMouse ? Theme.palette.baseColor2 : "transparent" - StatusBaseText { - id: primaryText - anchors.top: (statusExpandableItem.type === StatusExpandableItem.Type.Primary) || - (statusExpandableItem.type === StatusExpandableItem.Type.Tertiary) ? parent.top : undefined - anchors.topMargin: (statusExpandableItem.type === StatusExpandableItem.Type.Tertiary) ? 29 : 17 - anchors.left: identicon.active ? identicon.right : parent.left - anchors.leftMargin: (statusExpandableItem.type === StatusExpandableItem.Type.Primary) ? 10 : 16 - - anchors.verticalCenter: (statusExpandableItem.type === StatusExpandableItem.Type.Secondary) ? identicon.verticalCenter : undefined - - width: !!additionalText.text ? (button.visible ? parent.width - icon.background.width - button.width - additionalText.contentWidth - 110 : - parent.width - icon.background.width - additionalText.contentWidth - 110) : - (button.visible ? parent.width - icon.background.width - button.width - 70 : - parent.width - icon.background.width - 70) - - font.weight: (statusExpandableItem.type === StatusExpandableItem.Type.Primary) ? Font.Medium : Font.Normal - font.pixelSize: (statusExpandableItem.type === StatusExpandableItem.Type.Primary) ? 15 : 17 - lineHeight: (statusExpandableItem.type === StatusExpandableItem.Type.Primary) ? 22 : 24 - lineHeightMode: Text.FixedHeight - elide: Text.ElideRight - color: (statusExpandableItem.type === StatusExpandableItem.Type.Tertiary) ? Theme.palette.baseColor1 : Theme.palette.directColor1 - } - - StatusBaseText { - id: secondaryText - anchors.top: primaryText.bottom - anchors.topMargin: 4 - anchors.left: primaryText.left - anchors.right: primaryText.right - - font.pixelSize: 15 - lineHeight: 22 - lineHeightMode: Text.FixedHeight - elide: Text.ElideRight - color: Theme.palette.directColor3 - } - - StatusBaseText { - id: additionalText - anchors.verticalCenter: primaryText.verticalCenter - anchors.verticalCenterOffset: 2 - anchors.right: expandImage.left - anchors.rightMargin: 16 - - font.pixelSize: 15 - lineHeight: 24 - lineHeightMode: Text.FixedHeight - elide: Text.ElideRight - color: Theme.palette.baseColor1 - } - - StatusButton { - id: button - anchors.top: parent.top - anchors.topMargin: 19 - anchors.right: parent.right - anchors.rightMargin: 16 - visible: !!text - } - - StatusIcon { - id: expandImage - anchors.verticalCenter: (statusExpandableItem.type === StatusExpandableItem.Type.Tertiary) ? - primaryText.verticalCenter : identicon.verticalCenter - anchors.verticalCenterOffset:(statusExpandableItem.type === StatusExpandableItem.Type.Tertiary) ? -3 : -1 - anchors.right: parent.right - anchors.rightMargin: (statusExpandableItem.type === StatusExpandableItem.Type.Primary) ? 23 : 6 - visible: expandable && !button.visible - color: (statusExpandableItem.type === StatusExpandableItem.Type.Tertiary) ? - Theme.palette.baseColor1 : - Theme.palette.directColor1 - } - - MouseArea { - anchors.fill: parent - onClicked: { - if(expandable) { - expanded = !expanded - } + StatusSmartIdenticon { + id: identicon + anchors.top: parent.top + anchors.topMargin: (statusExpandableItem.type === StatusExpandableItem.Type.Secondary) ? 12.5 : 25 + anchors.left: parent.left + anchors.leftMargin: (statusExpandableItem.type === StatusExpandableItem.Type.Secondary) ? 16 : 11 + image: statusExpandableItem.image + icon: statusExpandableItem.icon + name: primaryText.text + active: (statusExpandableItem.type !== StatusExpandableItem.Type.Tertiary) + } + + StatusBaseText { + id: primaryText + anchors.top: (statusExpandableItem.type === StatusExpandableItem.Type.Primary) || + (statusExpandableItem.type === StatusExpandableItem.Type.Tertiary) ? parent.top : undefined + anchors.topMargin: (statusExpandableItem.type === StatusExpandableItem.Type.Tertiary) ? 29 : 17 + anchors.left: identicon.active ? identicon.right : parent.left + anchors.leftMargin: (statusExpandableItem.type === StatusExpandableItem.Type.Primary) ? 10 : 16 + + anchors.verticalCenter: (statusExpandableItem.type === StatusExpandableItem.Type.Secondary) ? identicon.verticalCenter : undefined + + width: !!additionalText.text ? (button.visible ? parent.width - icon.background.width - button.width - additionalText.contentWidth - 110 : + parent.width - icon.background.width - additionalText.contentWidth - 110) : + (button.visible ? parent.width - icon.background.width - button.width - 70 : + parent.width - icon.background.width - 70) + + font.weight: (statusExpandableItem.type === StatusExpandableItem.Type.Primary) ? Font.Medium : Font.Normal + font.pixelSize: (statusExpandableItem.type === StatusExpandableItem.Type.Primary) ? 15 : 17 + lineHeight: (statusExpandableItem.type === StatusExpandableItem.Type.Primary) ? 22 : 24 + lineHeightMode: Text.FixedHeight + elide: Text.ElideRight + color: (statusExpandableItem.type === StatusExpandableItem.Type.Tertiary) ? Theme.palette.baseColor1 : Theme.palette.directColor1 + } + + StatusBaseText { + id: secondaryText + anchors.top: primaryText.bottom + anchors.topMargin: 4 + anchors.left: primaryText.left + anchors.right: primaryText.right + + font.pixelSize: 15 + lineHeight: 22 + lineHeightMode: Text.FixedHeight + elide: Text.ElideRight + color: Theme.palette.directColor3 + } + + StatusBaseText { + id: additionalText + anchors.verticalCenter: primaryText.verticalCenter + anchors.verticalCenterOffset: 2 + anchors.right: expandImage.left + anchors.rightMargin: 16 + + font.pixelSize: 15 + lineHeight: 24 + lineHeightMode: Text.FixedHeight + elide: Text.ElideRight + color: Theme.palette.baseColor1 + } + + StatusButton { + id: button + anchors.top: parent.top + anchors.topMargin: 19 + anchors.right: parent.right + anchors.rightMargin: 16 + visible: !!text + } + + StatusIcon { + id: expandImage + anchors.verticalCenter: (statusExpandableItem.type === StatusExpandableItem.Type.Tertiary) ? + primaryText.verticalCenter : identicon.verticalCenter + anchors.verticalCenterOffset:(statusExpandableItem.type === StatusExpandableItem.Type.Tertiary) ? -3 : -1 + anchors.right: parent.right + anchors.rightMargin: { + switch (statusExpandableItem.type) { + case StatusExpandableItem.Type.Primary: + return 23 + break; + case StatusExpandableItem.Type.Secondary: + return 16 + break; + default: + return 6 + + } + } + visible: expandable && !button.visible + color: (statusExpandableItem.type === StatusExpandableItem.Type.Tertiary) ? + Theme.palette.baseColor1 : + Theme.palette.directColor1 + } + + MouseArea { + id: sensor + anchors.fill: parent + onClicked: { + if(expandable) { + expanded = !expanded + } + } + cursorShape: Qt.PointingHandCursor + visible: !button.visible && expandable + hoverEnabled: true } - cursorShape: Qt.PointingHandCursor - visible: !button.visible && expandable } Loader { id: expandableRegion - anchors.top: !!secondaryText.text ? secondaryText.bottom: primaryText.bottom + anchors.top: header.bottom anchors.topMargin: 16 anchors.left: parent.left anchors.leftMargin: (statusExpandableItem.type === StatusExpandableItem.Type.Primary) ? 48 : 0