forked from wowlet/wowlet
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
188 lines
7.2 KiB
188 lines
7.2 KiB
import QtQuick 2.7
|
|
import QtQuick.Controls 2.0
|
|
import QtQuick.Layouts 1.2
|
|
|
|
import wowlet.Wallet 1.0
|
|
import wowlet.WalletManager 1.0
|
|
import wowlet.TransactionHistory 1.0
|
|
import wowlet.TransactionInfo 1.0
|
|
import wowlet.TransactionHistoryModel 1.0
|
|
import wowlet.TransactionHistoryProxyModel 1.0
|
|
|
|
import "../common"
|
|
|
|
Item {
|
|
id: root
|
|
property var txModel
|
|
property int txCount: 0
|
|
|
|
property var txModelData: []
|
|
property int sideMargin: 20
|
|
|
|
ListModel { id: txListViewModel }
|
|
|
|
ColumnLayout {
|
|
anchors.fill: parent
|
|
spacing: 0
|
|
|
|
MyText {
|
|
visible: txCount == 0
|
|
text: "No transactions to display."
|
|
fontColor: Style.fontColorBright
|
|
}
|
|
|
|
ListView {
|
|
id: listView
|
|
visible: true
|
|
|
|
Layout.fillWidth: true
|
|
Layout.fillHeight: true
|
|
spacing: 10
|
|
model: txModel
|
|
interactive: false
|
|
|
|
delegate: Rectangle {
|
|
id: delegate
|
|
anchors.left: parent ? parent.left : undefined
|
|
anchors.right: parent ? parent.right : undefined
|
|
height: 54
|
|
color: Style.historyBackgroundColor
|
|
|
|
property bool isout: false;
|
|
property string amount: "0";
|
|
property string description: "";
|
|
property string date: "2021-13-37";
|
|
|
|
property bool confirmed: false
|
|
property bool failed: false
|
|
property bool pending: false
|
|
property int confirmations: 0
|
|
property int confirmationsRequired: 0
|
|
|
|
Component.onCompleted: {
|
|
isout = getTxData(index, TransactionHistoryModel.TransactionIsOutRole);
|
|
amount = getTxData(index, TransactionHistoryModel.Amount);
|
|
description = getTxData(index, TransactionHistoryModel.Description);
|
|
date = getTxData(index, TransactionHistoryModel.Date);
|
|
|
|
failed = getTxData(index, TransactionHistoryModel.TransactionFailedRole);
|
|
pending = getTxData(index, TransactionHistoryModel.TransactionPendingRole);
|
|
confirmations = getTxData(index, TransactionHistoryModel.TransactionConfirmationsRole);
|
|
confirmationsRequired = getTxData(index, TransactionHistoryModel.TransactionConfirmationsRequiredRole);
|
|
|
|
confirmed = confirmations >= confirmationsRequired;
|
|
root.txCount = index;
|
|
}
|
|
|
|
RowLayout {
|
|
spacing: 0
|
|
clip: true
|
|
height: parent.height
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
|
|
Rectangle {
|
|
Layout.preferredWidth: 56
|
|
Layout.fillHeight: true
|
|
color: Style.historyBackgroundColorBright
|
|
|
|
Image {
|
|
width: 32
|
|
height: 32
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
source: {
|
|
if(failed) return "qrc:/assets/images/warning.png"
|
|
else if(pending) return "qrc:/assets/images/unconfirmed.png"
|
|
else if(!confirmed) return "qrc:/assets/images/clock1.png"
|
|
|
|
else return "qrc:/assets/images/confirmed.png"
|
|
//confirmed ? "qrc:/checkmark_icon" : "qrc:/expired_icon"
|
|
}
|
|
}
|
|
}
|
|
|
|
Rectangle {
|
|
Layout.preferredWidth: 300
|
|
Layout.leftMargin: 10
|
|
Layout.rightMargin: 10
|
|
Layout.fillHeight: true
|
|
color: "transparent"
|
|
|
|
MyText {
|
|
// date
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
fontSize: 22
|
|
fontColor: Style.fontColorBright
|
|
text: date
|
|
|
|
Component.onCompleted: {
|
|
parent.Layout.preferredWidth = width;
|
|
}
|
|
}
|
|
}
|
|
|
|
Rectangle {
|
|
Layout.fillHeight: true
|
|
Layout.leftMargin: 10
|
|
color: "transparent"
|
|
|
|
MyText {
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
fontSize: 22
|
|
text: description !== "" ? description : "..."
|
|
fontColor: description !== "" ? Style.fontColorBright : Style.fontColorDimmed
|
|
Component.onCompleted: {
|
|
parent.Layout.preferredWidth = width;
|
|
}
|
|
}
|
|
}
|
|
|
|
Item {
|
|
Layout.fillWidth: true
|
|
}
|
|
|
|
Rectangle {
|
|
Layout.preferredWidth: 420
|
|
Layout.fillHeight: true
|
|
color: Style.historyBackgroundColorBright
|
|
|
|
MyText {
|
|
anchors.right: parent.right
|
|
anchors.rightMargin: 10
|
|
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
fontSize: 24
|
|
fontBold: true
|
|
text: amount
|
|
fontColor: !isout ? Style.historyFontColorPlusAmount : Style.historyFontColorMinAmount
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Item {
|
|
Layout.fillHeight: true
|
|
}
|
|
}
|
|
|
|
Rectangle {
|
|
z: parent.z - 1
|
|
color: "transparent"
|
|
anchors.fill: parent
|
|
}
|
|
|
|
function getTxData(x, y) {
|
|
var idx = txModel.index(x, y);
|
|
return txModel.data(idx, 0);
|
|
}
|
|
|
|
function onPageCompleted() {
|
|
if(currentWallet == null || typeof currentWallet.history === "undefined" ) return;
|
|
root.txCount = 0;
|
|
root.txModel = appWindow.currentWallet.historyModel;
|
|
//root.model.sortRole = TransactionHistoryModel.TransactionBlockHeightRole;
|
|
//root.model.sort(0, Qt.DescendingOrder);
|
|
}
|
|
} |