diff --git a/MiddlePanel.qml b/MiddlePanel.qml
index f5a4d285..680372c0 100644
--- a/MiddlePanel.qml
+++ b/MiddlePanel.qml
@@ -136,7 +136,7 @@ Rectangle {
}, State {
name: "Sign"
PropertyChanges { target: root; currentView: signView }
- PropertyChanges { target: mainFlickable; contentHeight: minHeight }
+ PropertyChanges { target: mainFlickable; contentHeight: 1200 * scaleRatio }
}, State {
name: "Settings"
PropertyChanges { target: root; currentView: settingsView }
diff --git a/components/InputMulti.qml b/components/InputMulti.qml
index f809ca10..9c74d0c1 100644
--- a/components/InputMulti.qml
+++ b/components/InputMulti.qml
@@ -29,6 +29,7 @@
import QtQuick.Controls 2.2
import QtQuick 2.10
+import "../js/TxUtils.js" as TxUtils
import "." 1.0
@@ -37,6 +38,7 @@ TextArea {
property bool addressValidation: false
property bool wrapAnywhere: true
property int fontSize: 18 * scaleRatio
+
id: textArea
font.family: Style.fontRegular
font.pixelSize: fontSize
@@ -56,6 +58,9 @@ TextArea {
if(addressValidation){
// js replacement for `RegExpValidator { regExp: /[0-9A-Fa-f]{95}/g }`
textArea.text = textArea.text.replace(/[^a-z0-9]/gi,'');
+ var address_ok = TxUtils.checkAddress(textArea.text, appWindow.persistentSettings.testnet);
+ if(!address_ok) error = true;
+ else error = false;
TextArea.cursorPosition = textArea.text.length;
}
}
diff --git a/components/LineEditMulti.qml b/components/LineEditMulti.qml
index dd5199d4..758755d0 100644
--- a/components/LineEditMulti.qml
+++ b/components/LineEditMulti.qml
@@ -35,7 +35,7 @@ ColumnLayout {
id: lineditmulti
property alias text: multiLine.text
property alias placeholderText: placeholderLabel.text
- property alias inputLabelText: inputLabel.text
+ property alias labelText: inputLabel.text
property alias error: multiLine.error
property alias readOnly: multiLine.readOnly
property alias addressValidation: multiLine.addressValidation
diff --git a/components/SubaddressTable.qml b/components/SubaddressTable.qml
index c35ef96e..88856ad3 100644
--- a/components/SubaddressTable.qml
+++ b/components/SubaddressTable.qml
@@ -65,6 +65,7 @@ ListView {
showingHeader: false
showBorder: false
+ addressValidation: false
}
IconButton {
diff --git a/pages/Sign.qml b/pages/Sign.qml
index b43985a4..287846f2 100644
--- a/pages/Sign.qml
+++ b/pages/Sign.qml
@@ -43,10 +43,6 @@ Rectangle {
Clipboard { id: clipboard }
- function checkAddress(address, nettype) {
- return walletManager.addressValid(address, nettype)
- }
-
MessageDialog {
// dynamically change onclose handler
property var onCloseCallback
@@ -88,302 +84,215 @@ Rectangle {
// sign / verify
ColumnLayout {
- anchors.margins: 17 * scaleRatio
+ anchors.top: parent.top
+ anchors.margins: 40 * scaleRatio
anchors.left: parent.left
anchors.right: parent.right
- anchors.top: parent.top
- anchors.bottom: parent.bottom
-
spacing: 20 * scaleRatio
// sign
ColumnLayout {
id: signBox
-
- RowLayout {
-
- Text {
- text: qsTr("Sign a message or file contents with your address:") + translationManager.emptyString
- wrapMode: Text.Wrap
- Layout.fillWidth: true
- font.family: Style.fontRegular
- font.pixelSize: 16 * scaleRatio
- color: Style.defaultFontColor
- }
- }
+ anchors.left: parent.left
+ anchors.right: parent.right
+ spacing: 20 * scaleRatio
Label {
- id: signMessageLabel
- text: qsTr("Either message:") + translationManager.emptyString
+ id: signTitleLabel
+ fontSize: 24 * scaleRatio
+ text: qsTr("Sign") + translationManager.emptyString
}
- RowLayout {
+ Text {
+ text: qsTr("This page lets you sign/verify a message (or file contents) with your address.") + translationManager.emptyString
+ wrapMode: Text.Wrap
+ Layout.fillWidth: true
+ font.family: Style.fontRegular
+ font.pixelSize: 14 * scaleRatio
+ color: Style.defaultFontColor
+ }
+
+ ColumnLayout{
id: signMessageRow
- anchors.topMargin: 17
- anchors.left: parent.left
- anchors.right: parent.right
- LineEdit {
- id: signMessageLine
- anchors.left: parent.left
- anchors.right: signMessageButton.left
- placeholderText: qsTr("Message to sign") + translationManager.emptyString;
- readOnly: false
- onTextChanged: signSignatureLine.text = ""
-
- IconButton {
- imageSource: "../images/copyToClipboard.png"
- onClicked: {
- if (signMessageLine.text.length > 0) {
- clipboard.setText(signMessageLine.text)
- }
- }
- }
- }
-
- StandardButton {
- id: signMessageButton
- anchors.right: parent.right
- text: qsTr("Sign") + translationManager.emptyString
- enabled: true
- onClicked: {
- var signature = appWindow.currentWallet.signMessage(signMessageLine.text, false)
- signSignatureLine.text = signature
- }
- }
- }
-
- Label {
- id: signMessageFileLabel
- text: qsTr("Or file:") + translationManager.emptyString
- }
-
- RowLayout {
- id: signFileRow
- anchors.topMargin: 17
- anchors.left: parent.left
- anchors.right: parent.right
-
- FileDialog {
- id: signFileDialog
- title: qsTr("Please choose a file to sign") + translationManager.emptyString;
- folder: "file://"
- nameFilters: [ "*"]
-
- onAccepted: {
- signFileLine.text = walletManager.urlToLocalPath(signFileDialog.fileUrl)
- }
- }
-
- StandardButton {
- id: loadFileToSignButton
- anchors.rightMargin: 17 * scaleRatio
- text: qsTr("Select") + translationManager.emptyString
- enabled: true
- onClicked: {
- signFileDialog.open()
- }
- }
- LineEdit {
- id: signFileLine
- anchors.left: loadFileToSignButton.right
- anchors.right: signFileButton.left
- placeholderText: qsTr("Filename with message to sign") + translationManager.emptyString;
- readOnly: false
+ RowLayout {
Layout.fillWidth: true
- onTextChanged: signSignatureLine.text = ""
- IconButton {
- imageSource: "../images/copyToClipboard.png"
- onClicked: {
- if (signFileLine.text.length > 0) {
- clipboard.setText(signFileLine.text)
- }
- }
+ LineEdit {
+ id: signMessageLine
+ Layout.fillWidth: true
+ placeholderText: qsTr("Message to sign") + translationManager.emptyString;
+ labelText: qsTr("Message") + translationManager.emptyString;
+ readOnly: false
+ onTextChanged: signSignatureLine.text = ""
}
}
- StandardButton {
- id: signFileButton
- anchors.right: parent.right
- text: qsTr("Sign") + translationManager.emptyString
- enabled: true
- onClicked: {
- var signature = appWindow.currentWallet.signMessage(signFileLine.text, true)
- signSignatureLine.text = signature
+ RowLayout{
+ Layout.fillWidth: true
+ Layout.topMargin: 18
+
+ StandardButton {
+ id: signMessageButton
+ text: qsTr("Sign") + translationManager.emptyString
+ enabled: signMessageLine.text !== ''
+ small: true
+ onClicked: {
+ var signature = appWindow.currentWallet.signMessage(signMessageLine.text, false)
+ signSignatureLine.text = signature
+ }
}
}
}
+ ColumnLayout {
+ id: signFileRow
+
+ RowLayout {
+ LineEdit {
+ id: signFileLine
+ labelText: "Message from file"
+ placeholderText: qsTr("Path to file") + translationManager.emptyString;
+ readOnly: false
+ Layout.fillWidth: true
+ onTextChanged: signSignatureLine.text = ""
+ }
+ }
+
+ RowLayout {
+ Layout.fillWidth: true
+ Layout.topMargin: 18
+
+ StandardButton {
+ id: loadFileToSignButton
+ small: true
+ text: qsTr("Browse") + translationManager.emptyString
+ enabled: true
+ onClicked: {
+ signFileDialog.open();
+ }
+ }
+
+ StandardButton {
+ id: signFileButton
+ small: true
+ anchors.left: loadFileToSignButton.right
+ anchors.leftMargin: 20
+ text: qsTr("Sign") + translationManager.emptyString
+ enabled: signFileLine.text !== ''
+ onClicked: {
+ var signature = appWindow.currentWallet.signMessage(signFileLine.text, true);
+ signSignatureLine.text = signature;
+ }
+ }
+ }
+
+ }
+
ColumnLayout {
id: signSignatureRow
- anchors.topMargin: 17 * scaleRatio
- Label {
- id: signSignatureLabel
- text: qsTr("Signature") + translationManager.emptyString
- }
-
- LineEdit {
- id: signSignatureLine
- placeholderText: qsTr("Signature") + translationManager.emptyString;
- readOnly: true
- Layout.fillWidth: true
-
- IconButton {
- imageSource: "../images/copyToClipboard.png"
- onClicked: {
- if (signSignatureLine.text.length > 0) {
- clipboard.setText(signSignatureLine.text)
- }
- }
- }
- }
- }
- }
-
-
- // verify
- ColumnLayout {
- id: verifyBox
-
- RowLayout {
- Text {
- text: qsTr("Verify a message or file signature from an address:") + translationManager.emptyString
- wrapMode: Text.Wrap
- Layout.fillWidth: true
- font.family: Style.fontRegular
- font.pixelSize: 16 * scaleRatio
- color: Style.defaultFontColor
- }
-
- }
-
- Label {
- id: verifyMessageLabel
- text: qsTr("Either message:") + translationManager.emptyString
- }
-
- RowLayout {
- id: verifyMessageRow
- anchors.topMargin: 17 * scaleRatio
- anchors.left: parent.left
- anchors.right: parent.right
-
- LineEdit {
- id: verifyMessageLine
- anchors.left: parent.left
- anchors.right: verifyMessageButton.left
- placeholderText: qsTr("Message to verify") + translationManager.emptyString;
- readOnly: false
- Layout.fillWidth: true
-
- IconButton {
- imageSource: "../images/copyToClipboard.png"
- onClicked: {
- if (verifyMessageLine.text.length > 0) {
- clipboard.setText(verifyMessageLine.text)
- }
- }
- }
- }
-
- StandardButton {
- id: verifyMessageButton
- anchors.right: parent.right
- text: qsTr("Verify") + translationManager.emptyString
- enabled: true
- onClicked: {
- var verified = appWindow.currentWallet.verifySignedMessage(verifyMessageLine.text, verifyAddressLine.text, verifySignatureLine.text, false)
- displayVerificationResult(verified)
+ RowLayout {
+ LineEdit {
+ id: signSignatureLine
+ labelText: qsTr("Signature")
+ placeholderText: qsTr("Signature") + translationManager.emptyString;
+ readOnly: true
+ Layout.fillWidth: true
+ copyButton: true
}
}
}
Label {
- id: verifyMessageFileLabel
- text: qsTr("Or file:") + translationManager.emptyString
+ id: verifyTitleLabel
+ fontSize: 24 * scaleRatio
+ Layout.topMargin: 40
+ text: qsTr("Verify") + translationManager.emptyString
}
- RowLayout {
- id: verifyFileRow
- anchors.topMargin: 17 * scaleRatio
- anchors.left: parent.left
- anchors.right: parent.right
+ ColumnLayout {
+ RowLayout {
+ id: verifyMessageRow
- FileDialog {
- id: verifyFileDialog
- title: qsTr("Please choose a file to verify") + translationManager.emptyString;
- folder: "file://"
- nameFilters: [ "*"]
-
- onAccepted: {
- verifyFileLine.text = walletManager.urlToLocalPath(verifyFileDialog.fileUrl)
+ LineEdit {
+ id: verifyMessageLine
+ Layout.fillWidth: true
+ labelText: qsTr("Verify message")
+ placeholderText: qsTr("Message to verify") + translationManager.emptyString;
+ readOnly: false
}
}
- StandardButton {
- id: loadFileToVerifyButton
- anchors.rightMargin: 17 * scaleRatio
- text: qsTr("Select") + translationManager.emptyString
- enabled: true
- onClicked: {
- verifyFileDialog.open()
- }
- }
- LineEdit {
- id: verifyFileLine
- anchors.left: loadFileToVerifyButton.right
- anchors.right: verifyFileButton.left
- placeholderText: qsTr("Filename with message to verify") + translationManager.emptyString;
- readOnly: false
+ RowLayout{
Layout.fillWidth: true
+ Layout.topMargin: 18
- IconButton {
- imageSource: "../images/copyToClipboard.png"
+ StandardButton {
+ id: verifyMessageButton
+ small: true
+ text: qsTr("Verify") + translationManager.emptyString
+ enabled: true
onClicked: {
- if (verifyFileLine.text.length > 0) {
- clipboard.setText(verifyFileLine.text)
- }
+ var verified = appWindow.currentWallet.verifySignedMessage(verifyMessageLine.text, verifyAddressLine.text, verifySignatureLine.text, false)
+ displayVerificationResult(verified)
}
}
}
+ }
- StandardButton {
- id: verifyFileButton
- anchors.right: parent.right
- text: qsTr("Verify") + translationManager.emptyString
- enabled: true
- onClicked: {
- var verified = appWindow.currentWallet.verifySignedMessage(verifyFileLine.text, verifyAddressLine.text, verifySignatureLine.text, true)
- displayVerificationResult(verified)
+ ColumnLayout {
+ RowLayout {
+ LineEdit {
+ id: verifyFileLine
+ labelText: qsTr("Verify file")
+ placeholderText: qsTr("Filename with message to verify") + translationManager.emptyString;
+ readOnly: false
+ Layout.fillWidth: true
+ }
+ }
+
+ RowLayout{
+ Layout.fillWidth: true
+ Layout.topMargin: 18
+
+ StandardButton {
+ id: loadFileToVerifyButton
+ small: true
+ text: qsTr("Browse") + translationManager.emptyString
+ enabled: true
+ onClicked: {
+ verifyFileDialog.open()
+ }
+ }
+
+ StandardButton {
+ id: verifyFileButton
+ small: true
+ anchors.left: loadFileToVerifyButton.right
+ anchors.leftMargin: 20
+ text: qsTr("Verify") + translationManager.emptyString
+ enabled: true
+ onClicked: {
+ var verified = appWindow.currentWallet.verifySignedMessage(verifyFileLine.text, verifyAddressLine.text, verifySignatureLine.text, true)
+ displayVerificationResult(verified)
+ }
}
}
}
- Text {
- id: verifyAddressLabel
- text: "" +
- qsTr("Signing address") +
- " ( " +
- qsTr("Paste in or select from Address book") +
- " )" +
- translationManager.emptyString
- wrapMode: Text.Wrap
- font.pixelSize: 16 * scaleRatio
- Layout.fillWidth: true
- textFormat: Text.RichText
- onLinkActivated: appWindow.showPageRequest("AddressBook")
- }
+ ColumnLayout {
+ RowLayout{
- LineEdit {
- id: verifyAddressLine
- anchors.left: parent.left
- anchors.right: parent.right
- anchors.top: verifyAddressLabel.bottom
- anchors.topMargin: 5 * scaleRatio
- placeholderText: "4..."
- // validator: RegExpValidator { regExp: /[0-9A-Fa-f]{95}/g }
+ LineEditMulti {
+ id: verifyAddressLine
+ Layout.fillWidth: true
+ labelText: qsTr("Address")
+ addressValidation: true
+ anchors.topMargin: 5 * scaleRatio
+ placeholderText: "4..."
+ }
+ }
}
ColumnLayout {
@@ -399,18 +308,33 @@ Rectangle {
id: verifySignatureLine
placeholderText: qsTr("Signature") + translationManager.emptyString;
Layout.fillWidth: true
-
- IconButton {
- imageSource: "../images/copyToClipboard.png"
- onClicked: {
- if (verifySignatureLine.text.length > 0) {
- clipboard.setText(verifySignatureLine.text)
- }
- }
- }
+ copyButton: true
}
}
}
+
+
+ FileDialog {
+ id: signFileDialog
+ title: qsTr("Please choose a file to sign") + translationManager.emptyString;
+ folder: "file://"
+ nameFilters: [ "*"]
+
+ onAccepted: {
+ signFileLine.text = walletManager.urlToLocalPath(signFileDialog.fileUrl)
+ }
+ }
+
+ FileDialog {
+ id: verifyFileDialog
+ title: qsTr("Please choose a file to verify") + translationManager.emptyString;
+ folder: "file://"
+ nameFilters: [ "*"]
+
+ onAccepted: {
+ verifyFileLine.text = walletManager.urlToLocalPath(verifyFileDialog.fileUrl)
+ }
+ }
}
function onPageCompleted() {
diff --git a/pages/Transfer.qml b/pages/Transfer.qml
index a52a8f92..fa33c49b 100644
--- a/pages/Transfer.qml
+++ b/pages/Transfer.qml
@@ -205,7 +205,7 @@ Rectangle {
LineEditMulti {
id: addressLine
spacing: 0
- inputLabelText: qsTr("\
+ labelText: qsTr("\
Address ( Address book )")
+ translationManager.emptyString
labelButtonText: qsTr("Resolve") + translationManager.emptyString
diff --git a/pages/TxKey.qml b/pages/TxKey.qml
index 18a65abf..febcb31b 100644
--- a/pages/TxKey.qml
+++ b/pages/TxKey.qml
@@ -132,7 +132,6 @@ Rectangle {
Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter
anchors.bottomMargin: 3 * scaleRatio
-
}
Label {