-
Notifications
You must be signed in to change notification settings - Fork 79
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(Communities): Refactor token holder list item to separate file
Close #11858
- Loading branch information
1 parent
f3526d6
commit 25eda78
Showing
4 changed files
with
230 additions
and
178 deletions.
There are no files selected for viewing
183 changes: 183 additions & 0 deletions
183
ui/app/AppLayouts/Communities/controls/TokenHolderListItem.qml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,183 @@ | ||
import QtQuick 2.15 | ||
import QtQuick.Layouts 1.15 | ||
import QtQuick.Controls 2.15 | ||
|
||
import StatusQ.Core 0.1 | ||
import StatusQ.Core.Theme 0.1 | ||
import StatusQ.Components 0.1 | ||
import StatusQ.Core.Utils 0.1 as StatusQUtils | ||
|
||
import utils 1.0 | ||
|
||
/*! | ||
\qmltype TokenHolderListItem | ||
\inherits ItemDelegate | ||
\brief Represents a token holder which can be a community member or a bare wallet address | ||
*/ | ||
|
||
ItemDelegate { | ||
id: root | ||
|
||
property int usernameHeaderWidth: 0 | ||
property int noOfMessagesHeaderWidth: 0 | ||
property int holdingHeaderWidth: 0 | ||
property bool isCurrentItem: false | ||
|
||
property bool remotelyDestructInProgress: false | ||
property bool showSeparator: false | ||
property bool isFirstRowAddress: false | ||
|
||
property string name | ||
property string contactId | ||
property string walletAddress | ||
property string imageSource | ||
property int noOfMessages | ||
property int amount | ||
|
||
property var contactDetails | ||
|
||
signal clicked(var mouse) | ||
|
||
function updateContactDetails() { | ||
contactDetails = contactId !== "" ? Utils.getContactDetailsAsJson(contactId, false) : null | ||
} | ||
|
||
onContactIdChanged: root.updateContactDetails() | ||
|
||
onRemotelyDestructInProgressChanged: { | ||
if(!remotelyDestructInProgress) | ||
colorAnimation.restart() | ||
} | ||
|
||
padding: 0 | ||
horizontalPadding: Style.current.padding | ||
topPadding: showSeparator ? Style.current.halfPadding : 0 | ||
|
||
background: Item { | ||
Rectangle { | ||
anchors.fill: parent | ||
anchors.topMargin: root.topPadding | ||
|
||
radius: Style.current.radius | ||
color: root.hovered || root.isCurrentItem ? Theme.palette.baseColor2 : "transparent" | ||
} | ||
|
||
Rectangle { | ||
anchors.fill: parent | ||
anchors.topMargin: root.topPadding | ||
|
||
radius: Style.current.radius | ||
color: "transparent" | ||
|
||
SequentialAnimation on color { | ||
id: colorAnimation | ||
|
||
running: false | ||
|
||
PropertyAction { value: Theme.palette.primaryColor3 } | ||
PauseAnimation { duration: 1000 } | ||
ColorAnimation { to: "transparent"; duration: 500 } | ||
} | ||
} | ||
|
||
Rectangle { | ||
visible: root.showSeparator | ||
|
||
anchors.top: parent.top | ||
anchors.left: parent.left | ||
anchors.right: parent.right | ||
|
||
height: 1 | ||
color: Theme.palette.baseColor2 | ||
} | ||
} | ||
|
||
contentItem: Item { | ||
implicitWidth: delegateRow.implicitWidth | ||
implicitHeight: delegateRow.implicitHeight | ||
|
||
RowLayout { | ||
id: delegateRow | ||
|
||
spacing: Style.current.padding | ||
|
||
StatusListItem { | ||
id: listItem | ||
|
||
readonly property bool unknownHolder: root.name === "" | ||
readonly property string formattedTitle: unknownHolder ? "?" : root.name | ||
|
||
readonly property string addressElided: | ||
StatusQUtils.Utils.elideText(root.walletAddress, 6, 3).replace("0x", | ||
"0" + String.fromCodePoint(0x00D7)) | ||
|
||
Layout.preferredWidth: root.usernameHeaderWidth | ||
|
||
color: "transparent" | ||
|
||
leftPadding: 0 | ||
rightPadding: 0 | ||
sensor.enabled: false | ||
title: unknownHolder ? addressElided : root.name | ||
|
||
statusListItemIcon.name: "?" | ||
|
||
subTitle: unknownHolder ? "" : addressElided | ||
|
||
statusListItemSubTitle.font.pixelSize: Theme.asideTextFontSize | ||
statusListItemSubTitle.lineHeightMode: Text.FixedHeight | ||
statusListItemSubTitle.lineHeight: 14 | ||
|
||
asset.name: root.imageSource | ||
asset.isImage: true | ||
asset.isLetterIdenticon: unknownHolder | ||
asset.color: Theme.palette.userCustomizationColors[d.red2Color] | ||
} | ||
|
||
TokenHolderNumberCell { | ||
Layout.preferredWidth: root.noOfMessagesHeaderWidth | ||
|
||
text: root.name | ||
? LocaleUtils.numberToLocaleString(root.noOfMessages) | ||
: "-" | ||
} | ||
|
||
RowLayout { | ||
Layout.preferredWidth: root.holdingHeaderWidth | ||
spacing: 4 | ||
|
||
StatusBaseText { | ||
Layout.fillWidth: true | ||
horizontalAlignment: Qt.AlignRight | ||
|
||
text: StatusQUtils.Emoji.fromCodePoint("1f525") // :fire: emoji | ||
font.pixelSize: Style.current.tertiaryTextFontSize | ||
visible: root.remotelyDestructInProgress | ||
color: Theme.palette.directColor1 | ||
} | ||
|
||
TokenHolderNumberCell { | ||
Layout.alignment: Qt.AlignRight | ||
text: LocaleUtils.numberToLocaleString(root.amount) | ||
} | ||
|
||
StatusLoadingIndicator { | ||
Layout.preferredHeight: Theme.primaryTextFontSize | ||
Layout.preferredWidth: Layout.preferredHeight | ||
Layout.leftMargin: 6 | ||
visible: root.remotelyDestructInProgress | ||
color: Theme.palette.primaryColor1 | ||
} | ||
} | ||
} | ||
} | ||
|
||
MouseArea { | ||
anchors.fill: parent | ||
|
||
acceptedButtons: Qt.AllButtons | ||
cursorShape: Qt.PointingHandCursor | ||
|
||
onClicked: root.clicked(mouse) | ||
} | ||
} |
21 changes: 21 additions & 0 deletions
21
ui/app/AppLayouts/Communities/controls/TokenHolderNumberCell.qml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
|
||
import QtQuick 2.15 | ||
|
||
import StatusQ.Core 0.1 | ||
import StatusQ.Core.Theme 0.1 | ||
import StatusQ.Components 0.1 | ||
|
||
import utils 1.0 | ||
|
||
StatusBaseText { | ||
id: root | ||
|
||
horizontalAlignment: Qt.AlignRight | ||
verticalAlignment: Qt.AlignVCenter | ||
|
||
font.weight: Font.Medium | ||
font.pixelSize: 13 | ||
|
||
color: Theme.palette.baseColor1 | ||
elide: Qt.ElideRight | ||
} |
Oops, something went wrong.