diff --git a/components/InlineButton.qml b/components/InlineButton.qml
index cdbcd2ef..7bd1f7d2 100644
--- a/components/InlineButton.qml
+++ b/components/InlineButton.qml
@@ -42,6 +42,7 @@ Item {
property string textColor: "#FFFFFF"
property int fontSize: 12 * scaleRatio
property alias text: inlineText.text
+ property alias buttonColor: rect.color
signal clicked()
function doClick() {
@@ -55,7 +56,7 @@ Item {
color: MoneroComponents.Style.buttonBackgroundColorDisabled
border.color: "black"
height: 28 * scaleRatio
- width: inlineText.width + 22 * scaleRatio
+ width: inlineText.text ? (inlineText.width + 22) * scaleRatio : inlineButton.icon ? (inlineImage.width + 16) * scaleRatio : rect.height
radius: 4
anchors.top: parent.top
@@ -71,6 +72,13 @@ Item {
anchors.horizontalCenter: parent.horizontalCenter
}
+ Image {
+ id: inlineImage
+ visible: inlineButton.icon !== ""
+ anchors.centerIn: parent
+ source: inlineButton.icon
+ }
+
MouseArea {
id: buttonArea
cursorShape: rect.enabled ? Qt.PointingHandCursor : Qt.ArrowCursor
@@ -78,12 +86,12 @@ Item {
anchors.fill: parent
onClicked: doClick()
onEntered: {
- rect.color = "#707070";
+ rect.color = buttonColor ? buttonColor : "#707070";
rect.opacity = 0.8;
}
onExited: {
rect.opacity = 1.0;
- rect.color = "#808080";
+ rect.color = buttonColor ? buttonColor : "#808080";
}
}
}
diff --git a/components/LineEditMulti.qml b/components/LineEditMulti.qml
index 17b50b2e..73033c7e 100644
--- a/components/LineEditMulti.qml
+++ b/components/LineEditMulti.qml
@@ -83,6 +83,9 @@ ColumnLayout {
property alias addressValidation: input.addressValidation
property string backgroundColor: "" // mock
+ property alias inlineButton: inlineButtonId
+ property bool inlineButtonVisible: false
+
signal labelButtonClicked();
signal inputLabelLinkActivated();
signal editingFinished();
@@ -183,5 +186,14 @@ ColumnLayout {
anchors.fill: parent
visible: !item.borderDisabled
}
+
+ MoneroComponents.InlineButton {
+ id: inlineButtonId
+ visible: (inlineButtonId.text || inlineButtonId.icon) && inlineButtonVisible ? true : false
+ anchors.right: parent.right
+ anchors.rightMargin: 8 * scaleRatio
+ anchors.top: parent.top
+ anchors.topMargin: 4 * scaleRatio
+ }
}
}
diff --git a/images/qr.png b/images/qr.png
new file mode 100644
index 00000000..017f523b
Binary files /dev/null and b/images/qr.png differ
diff --git a/images/qr@2x.png b/images/qr@2x.png
new file mode 100644
index 00000000..36b8e479
Binary files /dev/null and b/images/qr@2x.png differ
diff --git a/pages/AddressBook.qml b/pages/AddressBook.qml
index 56774bb3..fecb9d05 100644
--- a/pages/AddressBook.qml
+++ b/pages/AddressBook.qml
@@ -28,14 +28,16 @@
import QtQuick 2.0
import QtQuick.Layouts 1.1
-import "../components"
+import "../components" as MoneroComponents
import moneroComponents.AddressBook 1.0
import moneroComponents.AddressBookModel 1.0
+import moneroComponents.Clipboard 1.0
ColumnLayout {
id: root
property var model
property bool selectAndSend: false
+ Clipboard { id: clipboard }
ColumnLayout {
Layout.margins: (isMobile ? 17 : 20) * scaleRatio
@@ -44,34 +46,27 @@ ColumnLayout {
spacing: 26 * scaleRatio
visible: !root.selectAndSend
- RowLayout {
- StandardButton {
- id: qrfinderButton
- text: qsTr("Qr Code") + translationManager.emptyString
- visible : appWindow.qrScannerEnabled
- enabled : visible
- width: visible ? 60 * scaleRatio : 0
- onClicked: {
- cameraUi.state = "Capture"
- cameraUi.qrcode_decoded.connect(updateFromQrCode)
- }
- }
-
- LineEditMulti {
- Layout.fillWidth: true;
- id: addressLine
- labelText: qsTr("Address") + translationManager.emptyString
- error: true;
- placeholderText: qsTr("4.. / 8..") + translationManager.emptyString
- wrapMode: Text.WrapAnywhere
- addressValidation: true
+ MoneroComponents.LineEditMulti {
+ id: addressLine
+ Layout.fillWidth: true
+ fontBold: true
+ labelText: qsTr("Address") + translationManager.emptyString
+ placeholderText: qsTr("4.. / 8..") + translationManager.emptyString
+ wrapMode: Text.WrapAnywhere
+ addressValidation: true
+ inlineButton.icon: "../images/qr.png"
+ inlineButton.buttonColor: MoneroComponents.Style.orange
+ inlineButton.onClicked: {
+ cameraUi.state = "Capture"
+ cameraUi.qrcode_decoded.connect(updateFromQrCode)
}
+ inlineButtonVisible : appWindow.qrScannerEnabled && !addressLine.text
}
- LineEditMulti {
+ MoneroComponents.LineEditMulti {
id: paymentIdLine
visible: appWindow.persistentSettings.showPid
- Layout.fillWidth: true;
+ Layout.fillWidth: true
labelText: qsTr("Payment ID (Optional)") + translationManager.emptyString
placeholderText: qsTr("Paste 64 hexadecimal characters") + translationManager.emptyString
wrapMode: Text.WrapAnywhere
@@ -79,9 +74,9 @@ ColumnLayout {
// + translationManager.emptyString
}
- LineEditMulti {
+ MoneroComponents.LineEditMulti {
id: descriptionLine
- Layout.fillWidth: true;
+ Layout.fillWidth: true
labelText: qsTr("Description (Optional)") + translationManager.emptyString
placeholderText: qsTr("Give this entry a name or description") + translationManager.emptyString
wrapMode: Text.WrapAnywhere
@@ -91,7 +86,7 @@ ColumnLayout {
RowLayout {
id: addButton
Layout.bottomMargin: 17 * scaleRatio
- StandardButton {
+ MoneroComponents.StandardButton {
text: qsTr("Add") + translationManager.emptyString
enabled: checkInformation(addressLine.text, paymentIdLine.text, appWindow.persistentSettings.nettype)
@@ -129,16 +124,16 @@ ColumnLayout {
NumberAnimation { duration: 200; easing.type: Easing.InQuad }
}
- Scroll {
+ MoneroComponents.Scroll {
id: flickableScroll
anchors.right: table.right
- anchors.rightMargin: -14
+ anchors.rightMargin: -14 * scaleRatio
anchors.top: table.top
anchors.bottom: table.bottom
flickable: table
}
- AddressBookTable {
+ MoneroComponents.AddressBookTable {
id: table
anchors.left: parent.left
anchors.right: parent.right
@@ -179,7 +174,6 @@ ColumnLayout {
console.log("updateFromQrCode")
addressLine.text = address
paymentIdLine.text = payment_id
- //amountLine.text = amount
descriptionLine.text = recipient_name + " " + tx_description
cameraUi.qrcode_decoded.disconnect(updateFromQrCode)
}
diff --git a/pages/Transfer.qml b/pages/Transfer.qml
index aba47b45..c326ff0e 100644
--- a/pages/Transfer.qml
+++ b/pages/Transfer.qml
@@ -168,7 +168,7 @@ Rectangle {
Layout.topMargin: 12 * scaleRatio
text: qsTr("Transaction priority") + translationManager.emptyString
fontBold: false
- fontSize: 16
+ fontSize: 16 * scaleRatio
}
// Note: workaround for translations in listElements
// ListElement: cannot use script for property value, so
@@ -235,24 +235,19 @@ Rectangle {
addressLine.text = clipboardText;
}
}
- }
-
- StandardButton {
- id: qrfinderButton
- text: qsTr("QR Code") + translationManager.emptyString
- visible : appWindow.qrScannerEnabled
- enabled : visible
- width: visible ? 60 * scaleRatio : 0
- onClicked: {
+ inlineButton.icon: "../images/qr.png"
+ inlineButton.buttonColor: MoneroComponents.Style.orange
+ inlineButton.onClicked: {
cameraUi.state = "Capture"
cameraUi.qrcode_decoded.connect(updateFromQrCode)
}
+ inlineButtonVisible : appWindow.qrScannerEnabled && !addressLine.text
}
}
StandardButton {
id: resolveButton
- width: 80
+ width: 80 * scaleRatio
text: qsTr("Resolve") + translationManager.emptyString
visible: TxUtils.isValidOpenAliasAddress(addressLine.text)
enabled : visible
diff --git a/qml.qrc b/qml.qrc
index 1a234299..ee75a59a 100644
--- a/qml.qrc
+++ b/qml.qrc
@@ -213,6 +213,8 @@
components/RadioButton.qml
images/editIcon.png
images/editIcon@2x.png
+ images/qr.png
+ images/qr@2x.png
pages/settings/Settings.qml
pages/settings/SettingsWallet.qml
pages/settings/SettingsNode.qml