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.
403 lines
8.9 KiB
403 lines
8.9 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
|
|
{
|
|
id: root
|
|
property variant transactions
|
|
property string status
|
|
property int number
|
|
property int blockWidth: Layout.preferredWidth - statusWidth - horizontalMargin
|
|
property int horizontalMargin: 10
|
|
property int trHeight: 35
|
|
spacing: 0
|
|
property int openedTr: 0
|
|
property int blockIndex
|
|
property variant scenario
|
|
property string labelColor: "#414141"
|
|
|
|
function calculateHeight()
|
|
{
|
|
if (transactions)
|
|
{
|
|
if (index >= 0)
|
|
return trHeight + trHeight * transactions.count + openedTr
|
|
else
|
|
return trHeight
|
|
}
|
|
else
|
|
return trHeight
|
|
}
|
|
|
|
onOpenedTrChanged:
|
|
{
|
|
Layout.preferredHeight = calculateHeight()
|
|
height = calculateHeight()
|
|
}
|
|
|
|
DebuggerPaneStyle {
|
|
id: dbgStyle
|
|
}
|
|
|
|
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
|
|
}
|
|
|
|
RowLayout
|
|
{
|
|
Layout.preferredHeight: trHeight
|
|
Layout.preferredWidth: blockWidth
|
|
id: rowHeader
|
|
spacing: 0
|
|
Rectangle
|
|
{
|
|
Layout.preferredWidth: blockWidth
|
|
Layout.preferredHeight: trHeight
|
|
color: "#DEDCDC"
|
|
anchors.left: parent.left
|
|
anchors.leftMargin: statusWidth
|
|
Label {
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
anchors.left: parent.left
|
|
anchors.leftMargin: horizontalMargin
|
|
font.pointSize: dbgStyle.absoluteSize(1)
|
|
color: "#adadad"
|
|
text:
|
|
{
|
|
if (number === -2)
|
|
return qsTr("STARTING PARAMETERS")
|
|
else if (status === "mined")
|
|
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
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Repeater // List of transactions
|
|
{
|
|
id: transactionRepeater
|
|
model: transactions
|
|
RowLayout
|
|
{
|
|
id: rowTransaction
|
|
Layout.preferredHeight: trHeight
|
|
spacing: 0
|
|
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"
|
|
|
|
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 {
|
|
logsText.text += "From : " + log.address + "\n"
|
|
}
|
|
}
|
|
logsText.text += "\n\n"
|
|
}
|
|
rowDetailedContent.visible = !rowDetailedContent.visible
|
|
}
|
|
|
|
Rectangle
|
|
{
|
|
id: trSaveStatus
|
|
Layout.preferredWidth: statusWidth
|
|
Layout.preferredHeight: parent.height
|
|
color: "transparent"
|
|
anchors.top: parent.top
|
|
property bool saveStatus
|
|
Image {
|
|
anchors.top: parent.top
|
|
anchors.left: parent.left
|
|
anchors.leftMargin: -9
|
|
anchors.topMargin: -9
|
|
id: saveStatusImage
|
|
source: "qrc:/qml/img/recyclediscard@2x.png"
|
|
width: statusWidth + 20
|
|
fillMode: Image.PreserveAspectFit
|
|
}
|
|
|
|
Component.onCompleted:
|
|
{
|
|
if (index >= 0)
|
|
saveStatus = transactions.get(index).saveStatus
|
|
}
|
|
|
|
onSaveStatusChanged:
|
|
{
|
|
if (saveStatus)
|
|
saveStatusImage.source = "qrc:/qml/img/recyclekeep@2x.png"
|
|
else
|
|
saveStatusImage.source = "qrc:/qml/img/recyclediscard@2x.png"
|
|
|
|
if (index >= 0)
|
|
transactions.get(index).saveStatus = saveStatus
|
|
}
|
|
|
|
MouseArea {
|
|
id: statusMouseArea
|
|
anchors.fill: parent
|
|
onClicked:
|
|
{
|
|
parent.saveStatus = !parent.saveStatus
|
|
}
|
|
}
|
|
}
|
|
|
|
Rectangle
|
|
{
|
|
Layout.preferredWidth: blockWidth
|
|
Layout.preferredHeight: parent.height
|
|
color: "#DEDCDC"
|
|
id: rowContentTr
|
|
anchors.top: parent.top
|
|
|
|
MouseArea
|
|
{
|
|
anchors.fill: parent
|
|
onDoubleClicked:
|
|
{
|
|
transactionDialog.stateAccounts = scenario.accounts
|
|
transactionDialog.execute = false
|
|
transactionDialog.open(index, blockIndex, transactions.get(index))
|
|
}
|
|
}
|
|
|
|
ColumnLayout
|
|
{
|
|
anchors.top: parent.top
|
|
width: parent.width
|
|
spacing: 20
|
|
RowLayout
|
|
{
|
|
anchors.top: parent.top
|
|
Layout.fillWidth: true
|
|
Rectangle
|
|
{
|
|
Layout.preferredWidth: fromWidth
|
|
anchors.left: parent.left
|
|
anchors.leftMargin: horizontalMargin
|
|
Text
|
|
{
|
|
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 transactions.get(index).sender
|
|
else
|
|
return ""
|
|
}
|
|
}
|
|
}
|
|
|
|
Rectangle
|
|
{
|
|
Layout.preferredWidth: toWidth
|
|
Text
|
|
{
|
|
id: func
|
|
text: {
|
|
if (index >= 0)
|
|
parent.parent.userFrienldyToken(transactions.get(index).label)
|
|
else
|
|
return ""
|
|
}
|
|
elide: Text.ElideRight
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
color: labelColor
|
|
font.pointSize: dbgStyle.absoluteSize(1)
|
|
font.bold: true
|
|
maximumLineCount: 1
|
|
width: parent.width
|
|
}
|
|
}
|
|
|
|
function userFrienldyToken(value)
|
|
{
|
|
if (value && value.indexOf("<") === 0)
|
|
{
|
|
if (value.split("> ")[1] === " - ")
|
|
return value.split(" - ")[0].replace("<", "")
|
|
else
|
|
return value.split(" - ")[0].replace("<", "") + "." + value.split("> ")[1] + "()";
|
|
}
|
|
else
|
|
return value
|
|
}
|
|
|
|
Rectangle
|
|
{
|
|
Layout.preferredWidth: valueWidth
|
|
Text
|
|
{
|
|
id: returnValue
|
|
elide: Text.ElideRight
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
maximumLineCount: 1
|
|
color: labelColor
|
|
font.bold: true
|
|
font.pointSize: dbgStyle.absoluteSize(1)
|
|
width: parent.width - 30
|
|
text: {
|
|
if (index >= 0 && transactions.get(index).returned)
|
|
return transactions.get(index).returned
|
|
else
|
|
return ""
|
|
}
|
|
}
|
|
}
|
|
|
|
Rectangle
|
|
{
|
|
Layout.preferredWidth: logsWidth
|
|
Layout.preferredHeight: trHeight - 10
|
|
width: logsWidth
|
|
color: "transparent"
|
|
Text
|
|
{
|
|
id: logs
|
|
anchors.left: parent.left
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
anchors.leftMargin: 10
|
|
color: labelColor
|
|
font.bold: true
|
|
font.pointSize: dbgStyle.absoluteSize(1)
|
|
text: {
|
|
if (index >= 0 && transactions.get(index).logs && transactions.get(index).logs.count)
|
|
return transactions.get(index).logs.count
|
|
else
|
|
return ""
|
|
}
|
|
}
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
onClicked: {
|
|
rowTransaction.displayContent();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
RowLayout
|
|
{
|
|
id: rowDetailedContent
|
|
visible: false
|
|
Layout.preferredHeight:{
|
|
if (index >= 0 && transactions.get(index).logs)
|
|
return 100 * transactions.get(index).logs.count
|
|
else
|
|
return 100
|
|
}
|
|
onVisibleChanged:
|
|
{
|
|
var lognb = transactions.get(index).logs.count
|
|
if (visible)
|
|
{
|
|
rowContentTr.Layout.preferredHeight = trHeight + 100 * lognb
|
|
openedTr += 100 * lognb
|
|
}
|
|
else
|
|
{
|
|
rowContentTr.Layout.preferredHeight = trHeight
|
|
openedTr -= 100 * lognb
|
|
}
|
|
}
|
|
|
|
Text {
|
|
anchors.left: parent.left
|
|
anchors.leftMargin: horizontalMargin
|
|
id: logsText
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Rectangle
|
|
{
|
|
width: debugActionWidth
|
|
height: trHeight
|
|
anchors.left: rowContentTr.right
|
|
anchors.topMargin: -6
|
|
anchors.top: rowContentTr.top
|
|
anchors.leftMargin: -50
|
|
color: "transparent"
|
|
|
|
Image {
|
|
id: debugImg
|
|
source: "qrc:/qml/img/rightarrow@2x.png"
|
|
width: debugActionWidth
|
|
fillMode: Image.PreserveAspectFit
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|