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