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.

352 lines
7.6 KiB

import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Controls.Styles 1.1
import QtQuick.Dialogs 1.1
import QtQuick.Layouts 1.1
import Qt.labs.settings 1.0
import "js/Debugger.js" as Debugger
import "js/ErrorLocationFormater.js" as ErrorLocationFormater
import "."
ColumnLayout
{
10 years ago
id: root
property variant transactions
property string status
property int number
property int blockWidth: Layout.preferredWidth - statusWidth - horizontalMargin
property int horizontalMargin: 10
10 years ago
property int trHeight: 35
10 years ago
spacing: 0
property int openedTr: 0
property int blockIndex
property variant scenario
property string labelColor: "#414141"
signal txSelected(var txIndex)
10 years ago
function calculateHeight()
{
if (transactions)
{
if (index >= 0)
10 years ago
return trHeight + trHeight * transactions.count + openedTr
10 years ago
else
10 years ago
return trHeight
10 years ago
}
else
10 years ago
return trHeight
10 years ago
}
function editTx(txIndex)
{
transactionDialog.stateAccounts = scenario.accounts
transactionDialog.execute = false
10 years ago
transactionDialog.editMode = true
transactionDialog.open(txIndex, blockIndex, transactions.get(txIndex))
}
10 years ago
onOpenedTrChanged:
{
Layout.preferredHeight = calculateHeight()
height = calculateHeight()
}
10 years ago
DebuggerPaneStyle {
id: dbgStyle
}
10 years ago
Rectangle
{
id: top
Layout.preferredWidth: blockWidth
height: 10
anchors.bottom: rowHeader.top
color: "#DEDCDC"
radius: 15
anchors.left: parent.left
anchors.leftMargin: statusWidth
anchors.bottomMargin: -5
}
10 years ago
RowLayout
{
Layout.preferredHeight: trHeight
Layout.preferredWidth: blockWidth
id: rowHeader
spacing: 0
10 years ago
Rectangle
{
Layout.preferredWidth: blockWidth
Layout.preferredHeight: trHeight
color: "#DEDCDC"
10 years ago
anchors.left: parent.left
anchors.leftMargin: statusWidth
10 years ago
Label {
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: horizontalMargin
10 years ago
font.pointSize: dbgStyle.absoluteSize(1)
color: "#adadad"
10 years ago
text:
{
if (number === -2)
return qsTr("STARTING PARAMETERS")
else if (status === "mined")
10 years ago
return qsTr("BLOCK") + " " + number
else
return qsTr("PENDING TRANSACTIONS")
}
}
Label
{
text: qsTr("EDIT")
color: "#1397da"
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: 14
MouseArea
{
anchors.fill: parent
onClicked:
{
// load edit block panel
}
10 years ago
}
}
}
}
10 years ago
Repeater // List of transactions
{
id: transactionRepeater
model: transactions
RowLayout
{
id: rowTransaction
Layout.preferredHeight: trHeight
spacing: 0
10 years ago
function displayContent()
{
logsText.text = ""
if (index >= 0 && transactions.get(index).logs && transactions.get(index).logs.count)
{
for (var k = 0; k < transactions.get(index).logs.count; k++)
{
var log = transactions.get(index).logs.get(k)
if (log.name)
logsText.text += log.name + ":\n"
else
logsText.text += "log:\n"
10 years ago
if (log.param)
for (var i = 0; i < log.param.count; i++)
{
var p = log.param.get(i)
logsText.text += p.name + " = " + p.value + " - indexed:" + p.indexed + "\n"
}
else {
10 years ago
logsText.text += "From : " + log.address + "\n"
}
}
logsText.text += "\n\n"
}
rowDetailedContent.visible = !rowDetailedContent.visible
}
10 years ago
Rectangle
{
id: trSaveStatus
Layout.preferredWidth: statusWidth
Layout.preferredHeight: parent.height
10 years ago
color: "transparent"
anchors.top: parent.top
property bool saveStatus
Image {
anchors.top: parent.top
10 years ago
anchors.left: parent.left
10 years ago
anchors.leftMargin: -4
anchors.topMargin: 0
10 years ago
id: saveStatusImage
source: "qrc:/qml/img/recyclediscard@2x.png"
10 years ago
width: statusWidth + 10
10 years ago
fillMode: Image.PreserveAspectFit
}
10 years ago
Component.onCompleted:
{
if (index >= 0)
saveStatus = transactions.get(index).saveStatus
}
10 years ago
onSaveStatusChanged:
{
if (saveStatus)
saveStatusImage.source = "qrc:/qml/img/recyclekeep@2x.png"
else
saveStatusImage.source = "qrc:/qml/img/recyclediscard@2x.png"
10 years ago
if (index >= 0)
transactions.get(index).saveStatus = saveStatus
}
10 years ago
MouseArea {
id: statusMouseArea
anchors.fill: parent
onClicked:
{
parent.saveStatus = !parent.saveStatus
}
}
}
10 years ago
Rectangle
{
Layout.preferredWidth: blockWidth
Layout.preferredHeight: trHeight
height: trHeight
10 years ago
color: "#DEDCDC"
id: rowContentTr
anchors.top: parent.top
property bool selected: false
Connections
{
target: blockChainPanel
onTxSelected: {
if (root.blockIndex !== blockIndex || index !== txIndex)
rowContentTr.deselect()
}
}
function deselect()
{
rowContentTr.selected = false
rowContentTr.color = "#DEDCDC"
hash.color = labelColor
func.color = labelColor
}
MouseArea
{
anchors.fill: parent
onClicked: {
if (!rowContentTr.selected)
{
rowContentTr.selected = true
rowContentTr.color = "#4F4F4F"
hash.color = "#EAB920"
func.color = "#EAB920"
txSelected(index)
}
else
rowContentTr.deselect()
}
onDoubleClicked:
{
root.editTx(index)
}
}
RowLayout
10 years ago
{
Layout.fillWidth: true
Layout.preferredHeight: trHeight - 10
anchors.verticalCenter: parent.verticalCenter
Rectangle
10 years ago
{
Layout.preferredWidth: fromWidth
anchors.left: parent.left
anchors.leftMargin: horizontalMargin
Text
10 years ago
{
id: hash
width: parent.width - 30
elide: Text.ElideRight
anchors.verticalCenter: parent.verticalCenter
maximumLineCount: 1
color: labelColor
font.pointSize: dbgStyle.absoluteSize(1)
font.bold: true
text: {
if (index >= 0)
return clientModel.resolveAddress(transactions.get(index).sender)
10 years ago
else
return ""
10 years ago
}
}
}
Rectangle
{
Layout.preferredWidth: toWidth
Text
10 years ago
{
id: func
text: {
if (index >= 0)
parent.parent.userFrienldyToken(transactions.get(index).label)
else
return ""
10 years ago
}
elide: Text.ElideRight
anchors.verticalCenter: parent.verticalCenter
color: labelColor
font.pointSize: dbgStyle.absoluteSize(1)
font.bold: true
maximumLineCount: 1
width: parent.width
10 years ago
}
}
function userFrienldyToken(value)
10 years ago
{
if (value && value.indexOf("<") === 0)
10 years ago
{
if (value.split("> ")[1] === " - ")
return value.split(" - ")[0].replace("<", "")
10 years ago
else
return value.split(" - ")[0].replace("<", "") + "." + value.split("> ")[1] + "()";
10 years ago
}
else
return value
}
10 years ago
}
}
Rectangle
{
width: debugActionWidth
10 years ago
height: trHeight - 10
anchors.right: rowContentTr.right
anchors.top: rowContentTr.top
10 years ago
anchors.rightMargin: 10
color: "transparent"
Image {
id: debugImg
source: "qrc:/qml/img/rightarrow@2x.png"
width: debugActionWidth
fillMode: Image.PreserveAspectFit
anchors.horizontalCenter: parent.horizontalCenter
visible: transactions.get(index).recordIndex !== undefined
}
MouseArea
{
anchors.fill: parent
onClicked:
{
if (transactions.get(index).recordIndex !== undefined)
{
debugTrRequested = [ blockIndex, index ]
clientModel.debugRecord(transactions.get(index).recordIndex);
}
}
}
}
10 years ago
}
}
}