57 changed files with 1470 additions and 439 deletions
@ -1,5 +1,7 @@ |
|||||
#if defined(_MSC_VER) |
#if defined(_MSC_VER) |
||||
#pragma warning(pop) |
#pragma warning(pop) |
||||
|
#elif defined(__clang__) |
||||
|
#pragma clang diagnostic pop |
||||
#else |
#else |
||||
#pragma GCC diagnostic pop |
#pragma GCC diagnostic pop |
||||
#endif |
#endif |
||||
|
@ -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