Arkadiy Paronyan
10 years ago
11 changed files with 620 additions and 42 deletions
@ -0,0 +1,232 @@ |
|||
import QtQuick 2.2 |
|||
import QtQuick.Controls 1.1 |
|||
import QtQuick.Layouts 1.1 |
|||
import QtQuick.Window 2.0 |
|||
import QtQuick.Dialogs 1.1 |
|||
import QtQuick.Controls.Styles 1.3 |
|||
import org.ethereum.qml.QEther 1.0 |
|||
import "js/TransactionHelper.js" as TransactionHelper |
|||
import "js/ProjectModel.js" as ProjectModelCode |
|||
import "js/QEtherHelper.js" as QEtherHelper |
|||
import "." |
|||
|
|||
|
|||
Window { |
|||
id: modalDeploymentDialog |
|||
modality: Qt.ApplicationModal |
|||
width: 600 |
|||
height: 350 |
|||
visible: false |
|||
property alias applicationUrlEth: applicationUrlEth.text |
|||
property alias applicationUrlHttp: applicationUrlHttp.text |
|||
property string urlHintContract: "c83d3e22645fb015d02043a744921cc2f828c64d" |
|||
property string packageHash |
|||
property alias packageBase64: base64Value.text |
|||
property string eth: "afb7cdbd076674fd2c67f8a66518e3145b184ae4"; |
|||
property string wallet: "c83d3e22645fb015d02043a744921cc2f828c64d"; |
|||
|
|||
color: Style.generic.layout.backgroundColor |
|||
|
|||
function close() |
|||
{ |
|||
visible = false; |
|||
} |
|||
|
|||
function open() |
|||
{ |
|||
modalDeploymentDialog.setX((Screen.width - width) / 2); |
|||
modalDeploymentDialog.setY((Screen.height - height) / 2); |
|||
visible = true; |
|||
} |
|||
|
|||
function pad(h) |
|||
{ |
|||
// TODO move this to QHashType class |
|||
while (h.length < 64) |
|||
{ |
|||
h = '0' + h; |
|||
} |
|||
return h; |
|||
} |
|||
|
|||
Rectangle |
|||
{ |
|||
anchors.fill : parent |
|||
anchors.margins: 10 |
|||
color: Style.generic.layout.backgroundColor |
|||
GridLayout |
|||
{ |
|||
columns: 2 |
|||
anchors.top: parent.top |
|||
anchors.left: parent.left |
|||
width: parent.width |
|||
DefaultLabel |
|||
{ |
|||
text: qsTr("Ethereum Application URL: ") |
|||
} |
|||
|
|||
DefaultTextField |
|||
{ |
|||
Layout.fillWidth: true |
|||
id: applicationUrlEth |
|||
} |
|||
|
|||
DefaultLabel |
|||
{ |
|||
text: qsTr("Web Application Ressources URL: ") |
|||
} |
|||
|
|||
DefaultTextField |
|||
{ |
|||
Layout.fillWidth: true |
|||
id: applicationUrlHttp |
|||
} |
|||
|
|||
DefaultLabel |
|||
{ |
|||
text: qsTr("Package (Base64): ") |
|||
} |
|||
|
|||
TextArea |
|||
{ |
|||
Layout.fillWidth: true |
|||
readOnly: true |
|||
id: base64Value |
|||
height: 60 |
|||
enabled: base64Value.text != "" |
|||
} |
|||
} |
|||
|
|||
MessageDialog { |
|||
id: deployDialog |
|||
standardButtons: StandardButton.Ok |
|||
icon: StandardIcon.Warning |
|||
} |
|||
|
|||
RowLayout |
|||
{ |
|||
anchors.bottom: parent.bottom |
|||
anchors.right: parent.right; |
|||
anchors.bottomMargin: 10 |
|||
Button { |
|||
text: qsTr("Deploy to Ethereum"); |
|||
tooltip: qsTr("Deploy contract and package resources files.") |
|||
onClicked: { |
|||
deployWarningDialog.open(); |
|||
} |
|||
} |
|||
|
|||
Button { |
|||
text: qsTr("Register Web Application"); |
|||
tooltip: qsTr("Register hosted Web Application.") |
|||
onClicked: { |
|||
if (applicationUrlHttp.text === "" || deploymentDialog.packageHash === "") |
|||
{ |
|||
deployDialog.title = text; |
|||
deployDialog.text = qsTr("Please provide the link where the resources are stored and ensure the package is aleary built using the deployment step. ") |
|||
deployDialog.open(); |
|||
} |
|||
else |
|||
ProjectModelCode.registerToUrlHint(); |
|||
} |
|||
} |
|||
|
|||
Button { |
|||
text: qsTr("Close"); |
|||
onClicked: close(); |
|||
} |
|||
|
|||
Button { |
|||
text: qsTr("Check Ownership"); |
|||
visible : false |
|||
onClicked: { |
|||
var requests = []; |
|||
var ethStr = QEtherHelper.createString("wallet"); |
|||
|
|||
var ethHash = QEtherHelper.createHash(eth); |
|||
|
|||
requests.push({ //owner |
|||
jsonrpc: "2.0", |
|||
method: "eth_call", |
|||
params: [ { "to": '0x' + modalDeploymentDialog.eth, "data": "0xec7b9200" + ethStr.encodeValueAsString() } ], |
|||
id: 3 |
|||
}); |
|||
|
|||
requests.push({ //register |
|||
jsonrpc: "2.0", |
|||
method: "eth_call", |
|||
params: [ { "to": '0x' + modalDeploymentDialog.eth, "data": "0x6be16bed" + ethStr.encodeValueAsString() } ], |
|||
id: 4 |
|||
}); |
|||
|
|||
var jsonRpcUrl = "http://localhost:8080"; |
|||
var rpcRequest = JSON.stringify(requests); |
|||
var httpRequest = new XMLHttpRequest(); |
|||
httpRequest.open("POST", jsonRpcUrl, true); |
|||
httpRequest.setRequestHeader("Content-type", "application/json"); |
|||
httpRequest.setRequestHeader("Content-length", rpcRequest.length); |
|||
httpRequest.setRequestHeader("Connection", "close"); |
|||
httpRequest.onreadystatechange = function() { |
|||
if (httpRequest.readyState === XMLHttpRequest.DONE) { |
|||
if (httpRequest.status === 200) { |
|||
console.log(httpRequest.responseText); |
|||
} else { |
|||
var errorText = qsTr("path registration failed ") + httpRequest.status; |
|||
console.log(errorText); |
|||
} |
|||
} |
|||
} |
|||
httpRequest.send(rpcRequest); |
|||
} |
|||
} |
|||
|
|||
|
|||
Button { |
|||
text: qsTr("Generate registrar init"); |
|||
visible: false |
|||
onClicked: { |
|||
console.log("registering eth/wallet") |
|||
var jsonRpcRequestId = 0; |
|||
|
|||
var requests = []; |
|||
|
|||
var walletStr = QEtherHelper.createString("wallet"); |
|||
|
|||
requests.push({ //reserve |
|||
jsonrpc: "2.0", |
|||
method: "eth_transact", |
|||
params: [ { "to": '0x' + modalDeploymentDialog.eth, "data": "0x1c83171b" + walletStr.encodeValueAsString() } ], |
|||
id: jsonRpcRequestId++ |
|||
}); |
|||
|
|||
|
|||
requests.push({ //setRegister |
|||
jsonrpc: "2.0", |
|||
method: "eth_transact", |
|||
params: [ { "to": '0x' + modalDeploymentDialog.eth, "data": "0x96077307" + walletStr.encodeValueAsString() + pad(wallet) } ], |
|||
id: jsonRpcRequestId++ |
|||
}); |
|||
|
|||
var jsonRpcUrl = "http://localhost:8080"; |
|||
var rpcRequest = JSON.stringify(requests); |
|||
var httpRequest = new XMLHttpRequest(); |
|||
httpRequest.open("POST", jsonRpcUrl, true); |
|||
httpRequest.setRequestHeader("Content-type", "application/json"); |
|||
httpRequest.setRequestHeader("Content-length", rpcRequest.length); |
|||
httpRequest.setRequestHeader("Connection", "close"); |
|||
httpRequest.onreadystatechange = function() { |
|||
if (httpRequest.readyState === XMLHttpRequest.DONE) { |
|||
if (httpRequest.status === 200) { |
|||
console.log(httpRequest.responseText); |
|||
} else { |
|||
var errorText = qsTr("path registration failed ") + httpRequest.status; |
|||
console.log(errorText); |
|||
} |
|||
} |
|||
} |
|||
httpRequest.send(rpcRequest); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
Loading…
Reference in new issue