From 72b46c3b94b36808fcbbe86aa9f88d56f0f15ade Mon Sep 17 00:00:00 2001 From: Pascal Precht Date: Tue, 26 Oct 2021 11:40:22 +0200 Subject: [PATCH] refactor: remove/replace StatusContextMenuButton with StatusQ components --- .../AcceptRejectOptionsButtonsPanel.qml | 64 +++--- .../Profile/panels/ContactPanel.qml | 182 +++++++----------- ui/shared/status/StatusContextMenuButton.qml | 16 -- 3 files changed, 94 insertions(+), 168 deletions(-) delete mode 100644 ui/shared/status/StatusContextMenuButton.qml diff --git a/ui/app/AppLayouts/Chat/panels/AcceptRejectOptionsButtonsPanel.qml b/ui/app/AppLayouts/Chat/panels/AcceptRejectOptionsButtonsPanel.qml index bce388fbca..3be8e6cb12 100644 --- a/ui/app/AppLayouts/Chat/panels/AcceptRejectOptionsButtonsPanel.qml +++ b/ui/app/AppLayouts/Chat/panels/AcceptRejectOptionsButtonsPanel.qml @@ -2,14 +2,10 @@ import QtQuick 2.13 import QtQuick.Controls 2.13 import QtQuick.Layouts 1.13 -import utils 1.0 - import StatusQ.Controls 0.1 +import StatusQ.Popups 0.1 -import "../../../../shared" -import "../../../../shared/popups" -import "../../../../shared/panels" -import "../../../../shared/status" +import utils 1.0 Row { signal acceptClicked() @@ -43,42 +39,38 @@ Row { onClicked: root.declineClicked() } - StatusContextMenuButton { - property int iconSize: 14 + + StatusFlatRoundButton { id: menuButton anchors.verticalCenter: parent.verticalCenter - - MouseArea { - id: mouseArea - cursorShape: Qt.PointingHandCursor - anchors.fill: parent - - onClicked: { - contactContextMenu.open() - } + width: 32 + height: 32 + icon.name: "more" + type: StatusFlatRoundButton.Type.Secondary + onClicked: { + highlighted = true + contactContextMenu.popup(-contactContextMenu.width+menuButton.width, menuButton.height + 4) } - // TODO: replace with StatusPopupMenu - PopupMenu { + StatusPopupMenu { id: contactContextMenu - hasArrow: false - Action { - icon.source: Style.svg("profileActive") - icon.width: menuButton.iconSize - icon.height: menuButton.iconSize - //% "View Profile" - text: qsTrId("view-profile") - onTriggered: root.profileClicked() - enabled: true + + onClosed: { + menuButton.highlighted = false } - Separator {} - Action { - icon.source: Style.svg("block-icon") - icon.width: menuButton.iconSize - icon.height: menuButton.iconSize - icon.color: Style.current.danger - //% "Decline and block" - text: qsTrId("decline-and-block") + + StatusMenuItem { + text: qsTr("View Profile") + icon.name: "profile" + onTriggered: root.profileClicked() + } + + StatusMenuSeparator {} + + StatusMenuItem { + text: qsTr("Decline and block") + icon.name: "cancel" + type: StatusMenuItem.Type.Danger onTriggered: root.blockClicked() } } diff --git a/ui/app/AppLayouts/Profile/panels/ContactPanel.qml b/ui/app/AppLayouts/Profile/panels/ContactPanel.qml index 13dee4c0a6..44b26499c3 100644 --- a/ui/app/AppLayouts/Profile/panels/ContactPanel.qml +++ b/ui/app/AppLayouts/Profile/panels/ContactPanel.qml @@ -2,15 +2,13 @@ import QtQuick 2.13 import QtQuick.Controls 2.13 import QtQuick.Layouts 1.13 -import utils 1.0 -import "../../../../shared" -import "../../../../shared/popups" -import "../../../../shared/panels" -import "../../../../shared/status" - import StatusQ.Components 0.1 +import StatusQ.Controls 0.1 +import StatusQ.Popups 0.1 -Rectangle { +import utils 1.0 + +StatusListItem { property string name: "Jotaro Kujo" property string address: "0x04d8c07dd137bd1b73a6f51df148b4f77ddaa11209d36e43d8344c0a7d6db1cad6085f27cfb75dd3ae21d86ceffebe4cf8a35b9ce8d26baa19dc264efe6d8f221b" property string identicon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=" @@ -19,145 +17,97 @@ Rectangle { property bool isContact: true property bool isBlocked: false property string searchStr: "" - signal clicked() signal sendMessageActionTriggered() signal unblockContactActionTriggered() signal blockContactActionTriggered(name: string, address: string) signal removeContactActionTriggered(address: string) - property bool isHovered: false + id: container visible: isContact && (searchStr == "" || name.includes(searchStr)) - height: visible ? 64 : 0 + height: visible ? implicitHeight : 0 + anchors.right: parent.right anchors.left: parent.left anchors.leftMargin: -Style.current.padding anchors.rightMargin: -Style.current.padding - border.width: 0 - radius: Style.current.radius - color: isHovered ? Style.current.backgroundHover : Style.current.transparent - StatusSmartIdenticon { - id: accountImage - anchors.left: parent.left - anchors.leftMargin: Style.current.padding - anchors.verticalCenter: parent.verticalCenter - image.source: identicon - image.isIdenticon: true - } + title: name + image.source: identicon - StyledText { - id: usernameText - text: name - elide: Text.ElideRight - anchors.right: parent.right - anchors.rightMargin: Style.current.padding - font.pixelSize: 17 - anchors.top: accountImage.top - anchors.topMargin: Style.current.smallPadding - anchors.left: accountImage.right - anchors.leftMargin: Style.current.padding - } - - MouseArea { - cursorShape: Qt.PointingHandCursor - anchors.fill: parent - hoverEnabled: true - onEntered: container.isHovered = true - onExited: container.isHovered = false - acceptedButtons: Qt.LeftButton | Qt.RightButton - onClicked: { - if (mouse.button === Qt.RightButton) { - contactContextMenu.popup() - return - } - container.clicked(); - } - } - - StatusContextMenuButton { - property int iconSize: 14 - id: menuButton - anchors.verticalCenter: parent.verticalCenter - anchors.right: parent.right - anchors.rightMargin: Style.current.padding - - MouseArea { - id: mouseArea - cursorShape: Qt.PointingHandCursor - anchors.fill: parent - hoverEnabled: true - onExited: { - container.isHovered = false - menuButton.highlighted = false - } - onEntered: { - container.isHovered = true - menuButton.highlighted = true - } + components: [ + StatusFlatRoundButton { + id: menuButton + width: 32 + height: 32 + icon.name: "more" + type: StatusFlatRoundButton.Type.Secondary onClicked: { - contactContextMenu.popup() + highlighted = true + contactContextMenu.popup(-contactContextMenu.width+menuButton.width, menuButton.height + 4) } - // TODO: replace with StatusPopupMenu - PopupMenu { + StatusPopupMenu { id: contactContextMenu - hasArrow: false - Action { - icon.source: Style.svg("profileActive") - icon.width: menuButton.iconSize - icon.height: menuButton.iconSize - //% "View Profile" - text: qsTrId("view-profile") - onTriggered: profileClick(true, name, address, identicon, "", localNickname) - enabled: true + + onClosed: { + menuButton.highlighted = false } - Action { - icon.source: Style.svg("message") - icon.width: menuButton.iconSize - icon.height: menuButton.iconSize - //% "Send message" - text: qsTrId("send-message") - onTriggered: container.sendMessageActionTriggered() - enabled: !container.isBlocked - } - Action { - icon.source: Style.svg("block-icon") - icon.width: menuButton.iconSize - icon.height: menuButton.iconSize - //% "Block User" - text: qsTrId("block-user") - enabled: !container.isBlocked + + StatusMenuItem { + text: qsTr("View Profile") + icon.name: "profile" onTriggered: { - container.blockContactActionTriggered(name, address) + container.profileClick(true, name, address, identicon, "", localNickname) + menuButton.highlighted = false } } - Action { - icon.source: Style.svg("remove-contact") - icon.width: menuButton.iconSize - icon.height: menuButton.iconSize - icon.color: Style.current.red - text: qsTrId("remove-contact") + + StatusMenuItem { + text: qsTr("Send message") + icon.name: "chat" + onTriggered: { + container.sendMessageActionTriggered() + menuButton.highlighted = false + } + enabled: !container.isBlocked + } + + StatusMenuItem { + text: qsTr("Block User") + icon.name: "cancel" + enabled: !container.isBlocked + type: StatusMenuItem.Type.Danger + onTriggered: { + container.blockContactActionTriggered(name, address) + menuButton.highlighted = false + } + } + + StatusMenuItem { + text: qsTr("Remove contact") + icon.name: "remove-contact" enabled: container.isContact + type: StatusMenuItem.Type.Danger onTriggered: { - container.removeContactActionTriggered(address) + container.removeContactActionTriggered(address) + menuButton.highlighted = false } } - Action { - icon.source: Style.svg("block-icon") - icon.width: menuButton.iconSize - icon.height: menuButton.iconSize - icon.color: Style.current.red - //% "Unblock User" - text: qsTrId("unblock-user") + + StatusMenuItem { + text: qsTr("Unblock user") + icon.name: "cancel" enabled: container.isBlocked + type: StatusMenuItem.Type.Danger onTriggered: { - container.unblockContactActionTriggered() - contactContextMenu.close() + container.unblockContactActionTriggered() + menuButton.highlighted = false + contactContextMenu.close() } } } } - } + ] } diff --git a/ui/shared/status/StatusContextMenuButton.qml b/ui/shared/status/StatusContextMenuButton.qml deleted file mode 100644 index 292df53e04..0000000000 --- a/ui/shared/status/StatusContextMenuButton.qml +++ /dev/null @@ -1,16 +0,0 @@ -import QtQuick 2.13 - -import utils 1.0 - -import StatusQ.Core.Theme 0.1 -import StatusQ.Controls 0.1 - -StatusFlatRoundButton { - id: moreActionsBtn - implicitHeight: 32 - implicitWidth: 32 - anchors.verticalCenter: parent.verticalCenter - icon.name: "more" - type: StatusFlatRoundButton.Type.Secondary - backgroundHoverColor: Style.current.contextMenuButtonBackgroundHoverColor -}