From 3aef04f82474054a47a2e649bde11b6a0ac051fa Mon Sep 17 00:00:00 2001 From: Sander van Grieken Date: Thu, 14 Apr 2022 12:21:11 +0200 Subject: [PATCH] factor out InvoiceDelegate --- electrum/gui/qml/components/Receive.qml | 127 +---------------- electrum/gui/qml/components/Send.qml | 127 +---------------- .../components/controls/InvoiceDelegate.qml | 129 ++++++++++++++++++ 3 files changed, 131 insertions(+), 252 deletions(-) create mode 100644 electrum/gui/qml/components/controls/InvoiceDelegate.qml diff --git a/electrum/gui/qml/components/Receive.qml b/electrum/gui/qml/components/Receive.qml index 20c74792b..ddf2c00b8 100644 --- a/electrum/gui/qml/components/Receive.qml +++ b/electrum/gui/qml/components/Receive.qml @@ -180,137 +180,12 @@ Pane { model: DelegateModel { id: delegateModel model: Daemon.currentWallet.requestModel - - delegate: ItemDelegate { - id: root - height: item.height - width: ListView.view.width - + delegate: InvoiceDelegate { onClicked: { var dialog = requestdialog.createObject(app, {'modelItem': model}) dialog.open() } - - font.pixelSize: constants.fontSizeSmall // set default font size for child controls - - GridLayout { - id: item - - anchors { - left: parent.left - right: parent.right - leftMargin: constants.paddingSmall - rightMargin: constants.paddingSmall - } - - columns: 2 - - Rectangle { - Layout.columnSpan: 2 - Layout.fillWidth: true - Layout.preferredHeight: constants.paddingTiny - color: 'transparent' - } - - Image { - Layout.rowSpan: 2 - Layout.preferredWidth: constants.iconSizeLarge - Layout.preferredHeight: constants.iconSizeLarge - source: model.type == 0 ? "../../icons/bitcoin.png" : "../../icons/lightning.png" - } - - RowLayout { - Layout.fillWidth: true - Label { - Layout.fillWidth: true - text: model.message ? model.message : model.address - elide: Text.ElideRight - wrapMode: Text.Wrap - maximumLineCount: 2 - font.pixelSize: model.message ? constants.fontSizeMedium : constants.fontSizeSmall - } - - Label { - id: amount - text: model.amount == 0 ? '' : Config.formatSats(model.amount) - font.pixelSize: constants.fontSizeMedium - font.family: FixedFont - } - - Label { - text: model.amount == 0 ? '' : Config.baseUnit - font.pixelSize: constants.fontSizeMedium - color: Material.accentColor - } - } - - RowLayout { - Layout.fillWidth: true - Label { - text: model.status_str - color: Material.accentColor - } - Item { - Layout.fillWidth: true - Layout.preferredHeight: status_icon.height - Image { - id: status_icon - source: model.status == 0 - ? '../../icons/unpaid.png' - : model.status == 1 - ? '../../icons/expired.png' - : model.status == 3 - ? '../../icons/confirmed.png' - : model.status == 7 - ? '../../icons/unconfirmed.png' - : '' - width: constants.iconSizeSmall - height: constants.iconSizeSmall - } - } - Label { - id: fiatValue - visible: Daemon.fx.enabled - Layout.alignment: Qt.AlignRight - text: model.amount == 0 ? '' : Daemon.fx.fiatValue(model.amount, false) - font.family: FixedFont - font.pixelSize: constants.fontSizeSmall - } - Label { - visible: Daemon.fx.enabled - Layout.alignment: Qt.AlignRight - text: model.amount == 0 ? '' : Daemon.fx.fiatCurrency - font.pixelSize: constants.fontSizeSmall - color: Material.accentColor - } - } - - Rectangle { - Layout.columnSpan: 2 - Layout.fillWidth: true - Layout.preferredHeight: constants.paddingTiny - color: 'transparent' - } - } - - Connections { - target: Config - function onBaseUnitChanged() { - amount.text = model.amount == 0 ? '' : Config.formatSats(model.amount) - } - function onThousandsSeparatorChanged() { - amount.text = model.amount == 0 ? '' : Config.formatSats(model.amount) - } - } - Connections { - target: Daemon.fx - function onQuotesUpdated() { - fiatValue.text = model.amount == 0 ? '' : Daemon.fx.fiatValue(model.amount, false) - } - } - } - } remove: Transition { diff --git a/electrum/gui/qml/components/Send.qml b/electrum/gui/qml/components/Send.qml index f97e048eb..1751fbb03 100644 --- a/electrum/gui/qml/components/Send.qml +++ b/electrum/gui/qml/components/Send.qml @@ -205,132 +205,7 @@ Pane { model: DelegateModel { id: delegateModel model: Daemon.currentWallet.invoiceModel - - delegate: ItemDelegate { - id: root - height: item.height - width: ListView.view.width - - font.pixelSize: constants.fontSizeSmall // set default font size for child controls - - GridLayout { - id: item - - anchors { - left: parent.left - right: parent.right - leftMargin: constants.paddingSmall - rightMargin: constants.paddingSmall - } - - columns: 2 - - Rectangle { - Layout.columnSpan: 2 - Layout.fillWidth: true - Layout.preferredHeight: constants.paddingTiny - color: 'transparent' - } - - Image { - Layout.rowSpan: 2 - Layout.preferredWidth: constants.iconSizeLarge - Layout.preferredHeight: constants.iconSizeLarge - source: model.type == 0 ? "../../icons/bitcoin.png" : "../../icons/lightning.png" - } - - RowLayout { - Layout.fillWidth: true - Label { - Layout.fillWidth: true - text: model.message ? model.message : model.address - elide: Text.ElideRight - wrapMode: Text.Wrap - maximumLineCount: 2 - font.pixelSize: model.message ? constants.fontSizeMedium : constants.fontSizeSmall - } - - Label { - id: amount - text: model.amount == 0 ? '' : Config.formatSats(model.amount) - font.pixelSize: constants.fontSizeMedium - font.family: FixedFont - } - - Label { - text: model.amount == 0 ? '' : Config.baseUnit - font.pixelSize: constants.fontSizeMedium - color: Material.accentColor - } - } - - RowLayout { - Layout.fillWidth: true - Label { - text: model.status_str - color: Material.accentColor - } - Item { - Layout.fillWidth: true - Layout.preferredHeight: status_icon.height - Image { - id: status_icon - source: model.status == 0 - ? '../../icons/unpaid.png' - : model.status == 1 - ? '../../icons/expired.png' - : model.status == 3 - ? '../../icons/confirmed.png' - : model.status == 7 - ? '../../icons/unconfirmed.png' - : '' - width: constants.iconSizeSmall - height: constants.iconSizeSmall - } - } - Label { - id: fiatValue - visible: Daemon.fx.enabled - Layout.alignment: Qt.AlignRight - text: model.amount == 0 ? '' : Daemon.fx.fiatValue(model.amount, false) - font.family: FixedFont - font.pixelSize: constants.fontSizeSmall - } - Label { - visible: Daemon.fx.enabled - Layout.alignment: Qt.AlignRight - text: model.amount == 0 ? '' : Daemon.fx.fiatCurrency - font.pixelSize: constants.fontSizeSmall - color: Material.accentColor - } - } - - Rectangle { - Layout.columnSpan: 2 - Layout.fillWidth: true - Layout.preferredHeight: constants.paddingTiny - color: 'transparent' - } - } - - Connections { - target: Config - function onBaseUnitChanged() { - amount.text = model.amount == 0 ? '' : Config.formatSats(model.amount) - } - function onThousandsSeparatorChanged() { - amount.text = model.amount == 0 ? '' : Config.formatSats(model.amount) - } - } - Connections { - target: Daemon.fx - function onQuotesUpdated() { - fiatValue.text = model.amount == 0 ? '' : Daemon.fx.fiatValue(model.amount, false) - } - } - - } - + delegate: InvoiceDelegate {} } remove: Transition { diff --git a/electrum/gui/qml/components/controls/InvoiceDelegate.qml b/electrum/gui/qml/components/controls/InvoiceDelegate.qml new file mode 100644 index 000000000..00b14bf2a --- /dev/null +++ b/electrum/gui/qml/components/controls/InvoiceDelegate.qml @@ -0,0 +1,129 @@ +import QtQuick 2.6 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.0 +import QtQuick.Controls.Material 2.0 + +ItemDelegate { + id: root + height: item.height + width: ListView.view.width + + font.pixelSize: constants.fontSizeSmall // set default font size for child controls + + GridLayout { + id: item + + anchors { + left: parent.left + right: parent.right + leftMargin: constants.paddingSmall + rightMargin: constants.paddingSmall + } + + columns: 2 + + Rectangle { + Layout.columnSpan: 2 + Layout.fillWidth: true + Layout.preferredHeight: constants.paddingTiny + color: 'transparent' + } + + Image { + Layout.rowSpan: 2 + Layout.preferredWidth: constants.iconSizeLarge + Layout.preferredHeight: constants.iconSizeLarge + source: model.type == 0 ? "../../../icons/bitcoin.png" : "../../../icons/lightning.png" + } + + RowLayout { + Layout.fillWidth: true + Label { + Layout.fillWidth: true + text: model.message ? model.message : model.address + elide: Text.ElideRight + wrapMode: Text.Wrap + maximumLineCount: 2 + font.pixelSize: model.message ? constants.fontSizeMedium : constants.fontSizeSmall + } + + Label { + id: amount + text: model.amount == 0 ? '' : Config.formatSats(model.amount) + font.pixelSize: constants.fontSizeMedium + font.family: FixedFont + } + + Label { + text: model.amount == 0 ? '' : Config.baseUnit + font.pixelSize: constants.fontSizeMedium + color: Material.accentColor + } + } + + RowLayout { + Layout.fillWidth: true + Label { + text: model.status_str + color: Material.accentColor + } + Item { + Layout.fillWidth: true + Layout.preferredHeight: status_icon.height + Image { + id: status_icon + source: model.status == 0 + ? '../../../icons/unpaid.png' + : model.status == 1 + ? '../../../icons/expired.png' + : model.status == 3 + ? '../../../icons/confirmed.png' + : model.status == 7 + ? '../../../icons/unconfirmed.png' + : '' + width: constants.iconSizeSmall + height: constants.iconSizeSmall + } + } + Label { + id: fiatValue + visible: Daemon.fx.enabled + Layout.alignment: Qt.AlignRight + text: model.amount == 0 ? '' : Daemon.fx.fiatValue(model.amount, false) + font.family: FixedFont + font.pixelSize: constants.fontSizeSmall + } + Label { + visible: Daemon.fx.enabled + Layout.alignment: Qt.AlignRight + text: model.amount == 0 ? '' : Daemon.fx.fiatCurrency + font.pixelSize: constants.fontSizeSmall + color: Material.accentColor + } + } + + Rectangle { + Layout.columnSpan: 2 + Layout.fillWidth: true + Layout.preferredHeight: constants.paddingTiny + color: 'transparent' + } + } + + Connections { + target: Config + function onBaseUnitChanged() { + amount.text = model.amount == 0 ? '' : Config.formatSats(model.amount) + } + function onThousandsSeparatorChanged() { + amount.text = model.amount == 0 ? '' : Config.formatSats(model.amount) + } + } + Connections { + target: Daemon.fx + function onQuotesUpdated() { + fiatValue.text = model.amount == 0 ? '' : Daemon.fx.fiatValue(model.amount, false) + } + } + +}