Browse Source

qml: make dialog content flickable for small displays for CloseChannelDialog, OpemChannelDialog and InvoiceDialog

master
Sander van Grieken 3 years ago
parent
commit
90d64a004b
  1. 192
      electrum/gui/qml/components/CloseChannelDialog.qml
  2. 472
      electrum/gui/qml/components/InvoiceDialog.qml
  3. 216
      electrum/gui/qml/components/OpenChannelDialog.qml

192
electrum/gui/qml/components/CloseChannelDialog.qml

@ -32,121 +32,129 @@ ElDialog {
anchors.fill: parent
spacing: 0
GridLayout {
id: layout
Layout.preferredWidth: parent.width - 2*constants.paddingLarge
Layout.leftMargin: constants.paddingLarge
Layout.rightMargin: constants.paddingLarge
columns: 2
Label {
Layout.fillWidth: true
visible: channeldetails.name
text: qsTr('Channel name')
color: Material.accentColor
}
Flickable {
Layout.preferredWidth: parent.width
Layout.fillHeight: true
Label {
Layout.fillWidth: true
visible: channeldetails.name
text: channeldetails.name
}
leftMargin: constants.paddingLarge
rightMargin: constants.paddingLarge
Label {
text: qsTr('Remote node ID')
Layout.columnSpan: 2
color: Material.accentColor
}
contentHeight: rootLayout.height
clip:true
interactive: height < contentHeight
TextHighlightPane {
Layout.columnSpan: 2
Layout.fillWidth: true
padding: 0
leftPadding: constants.paddingSmall
GridLayout {
id: rootLayout
width: parent.width
columns: 2
Label {
width: parent.width
text: channeldetails.pubkey
font.pixelSize: constants.fontSizeLarge
font.family: FixedFont
Layout.fillWidth: true
wrapMode: Text.Wrap
visible: channeldetails.name
text: qsTr('Channel name')
color: Material.accentColor
}
}
Label {
text: qsTr('Short channel ID')
color: Material.accentColor
}
Label {
text: channeldetails.short_cid
}
Item { Layout.preferredHeight: constants.paddingMedium; Layout.preferredWidth: 1; Layout.columnSpan: 2 }
InfoTextArea {
Layout.columnSpan: 2
Layout.fillWidth: true
text: qsTr(channeldetails.message_force_close)
}
Label {
text: qsTr('Choose closing method')
Layout.columnSpan: 2
color: Material.accentColor
}
Label {
Layout.fillWidth: true
visible: channeldetails.name
text: channeldetails.name
}
ColumnLayout {
Layout.columnSpan: 2
Layout.alignment: Qt.AlignHCenter
Label {
text: qsTr('Remote node ID')
Layout.columnSpan: 2
color: Material.accentColor
}
ButtonGroup {
id: closetypegroup
TextHighlightPane {
Layout.columnSpan: 2
Layout.fillWidth: true
padding: 0
leftPadding: constants.paddingSmall
Label {
width: parent.width
text: channeldetails.pubkey
font.pixelSize: constants.fontSizeLarge
font.family: FixedFont
Layout.fillWidth: true
wrapMode: Text.Wrap
}
}
RadioButton {
ButtonGroup.group: closetypegroup
property string closetype: 'cooperative'
checked: true
enabled: !closing && channeldetails.canCoopClose
text: qsTr('Cooperative close')
Label {
text: qsTr('Short channel ID')
color: Material.accentColor
}
RadioButton {
ButtonGroup.group: closetypegroup
property string closetype: 'remote_force'
enabled: !closing && channeldetails.canForceClose
text: qsTr('Request Force-close')
Label {
text: channeldetails.short_cid
}
RadioButton {
ButtonGroup.group: closetypegroup
property string closetype: 'local_force'
enabled: !closing && channeldetails.canForceClose && !channeldetails.isBackup
text: qsTr('Local Force-close')
Item { Layout.preferredHeight: constants.paddingMedium; Layout.preferredWidth: 1; Layout.columnSpan: 2 }
InfoTextArea {
Layout.columnSpan: 2
Layout.fillWidth: true
text: qsTr(channeldetails.message_force_close)
}
}
ColumnLayout {
Layout.columnSpan: 2
Layout.alignment: Qt.AlignHCenter
Label {
id: errorText
visible: !closing && errorText
wrapMode: Text.Wrap
Layout.preferredWidth: layout.width
text: qsTr('Choose closing method')
Layout.columnSpan: 2
color: Material.accentColor
}
Label {
text: qsTr('Closing...')
visible: closing
ColumnLayout {
Layout.columnSpan: 2
Layout.alignment: Qt.AlignHCenter
ButtonGroup {
id: closetypegroup
}
RadioButton {
ButtonGroup.group: closetypegroup
property string closetype: 'cooperative'
checked: true
enabled: !closing && channeldetails.canCoopClose
text: qsTr('Cooperative close')
}
RadioButton {
ButtonGroup.group: closetypegroup
property string closetype: 'remote_force'
enabled: !closing && channeldetails.canForceClose
text: qsTr('Request Force-close')
}
RadioButton {
ButtonGroup.group: closetypegroup
property string closetype: 'local_force'
enabled: !closing && channeldetails.canForceClose && !channeldetails.isBackup
text: qsTr('Local Force-close')
}
}
BusyIndicator {
visible: closing
ColumnLayout {
Layout.columnSpan: 2
Layout.alignment: Qt.AlignHCenter
Label {
id: errorText
visible: !closing && errorText
wrapMode: Text.Wrap
Layout.preferredWidth: layout.width
}
Label {
text: qsTr('Closing...')
visible: closing
}
BusyIndicator {
visible: closing
}
}
}
}
Item { Layout.fillHeight: true; Layout.preferredWidth: 1 }
FlatButton {
Layout.columnSpan: 2
Layout.fillWidth: true

472
electrum/gui/qml/components/InvoiceDialog.qml

@ -30,305 +30,313 @@ ElDialog {
property bool _canMax: invoice.invoiceType == Invoice.OnchainInvoice
ColumnLayout {
width: parent.width
height: parent.height
anchors.fill: parent
spacing: 0
GridLayout {
id: layout
width: parent.width
Layout.leftMargin: constants.paddingLarge
Layout.rightMargin: constants.paddingLarge
columns: 2
Flickable {
Layout.preferredWidth: parent.width
Layout.fillHeight: true
Label {
text: qsTr('Type')
color: Material.accentColor
}
leftMargin: constants.paddingLarge
rightMargin: constants.paddingLarge
RowLayout {
Layout.fillWidth: true
Image {
Layout.preferredWidth: constants.iconSizeSmall
Layout.preferredHeight: constants.iconSizeSmall
source: invoice.invoiceType == Invoice.LightningInvoice
? "../../icons/lightning.png"
: "../../icons/bitcoin.png"
}
contentHeight: rootLayout.height
clip:true
interactive: height < contentHeight
GridLayout {
id: rootLayout
width: parent.width
columns: 2
Label {
text: invoice.invoiceType == Invoice.OnchainInvoice
? qsTr('On chain')
: invoice.invoiceType == Invoice.LightningInvoice
? qsTr('Lightning')
: ''
text: qsTr('Type')
color: Material.accentColor
}
RowLayout {
Layout.fillWidth: true
Image {
Layout.preferredWidth: constants.iconSizeSmall
Layout.preferredHeight: constants.iconSizeSmall
source: invoice.invoiceType == Invoice.LightningInvoice
? "../../icons/lightning.png"
: "../../icons/bitcoin.png"
}
Label {
text: invoice.invoiceType == Invoice.OnchainInvoice
? qsTr('On chain')
: invoice.invoiceType == Invoice.LightningInvoice
? qsTr('Lightning')
: ''
Layout.fillWidth: true
}
}
}
Label {
text: qsTr('Status')
color: Material.accentColor
}
Label {
text: qsTr('Status')
color: Material.accentColor
}
Label {
text: invoice.status_str
}
Label {
text: invoice.status_str
}
Label {
visible: invoice.invoiceType == Invoice.OnchainInvoice
Layout.columnSpan: 2
text: qsTr('Address')
color: Material.accentColor
}
Label {
visible: invoice.invoiceType == Invoice.OnchainInvoice
Layout.columnSpan: 2
text: qsTr('Address')
color: Material.accentColor
}
TextHighlightPane {
visible: invoice.invoiceType == Invoice.OnchainInvoice
TextHighlightPane {
visible: invoice.invoiceType == Invoice.OnchainInvoice
Layout.columnSpan: 2
Layout.fillWidth: true
Layout.columnSpan: 2
Layout.fillWidth: true
padding: 0
leftPadding: constants.paddingMedium
padding: 0
leftPadding: constants.paddingMedium
Label {
width: parent.width
text: invoice.address
font.family: FixedFont
wrapMode: Text.Wrap
}
}
Label {
width: parent.width
text: invoice.address
font.family: FixedFont
wrapMode: Text.Wrap
visible: invoice.invoiceType == Invoice.LightningInvoice
text: qsTr('Remote Pubkey')
color: Material.accentColor
}
}
Label {
visible: invoice.invoiceType == Invoice.LightningInvoice
text: qsTr('Remote Pubkey')
color: Material.accentColor
}
TextHighlightPane {
visible: invoice.invoiceType == Invoice.LightningInvoice
TextHighlightPane {
visible: invoice.invoiceType == Invoice.LightningInvoice
Layout.columnSpan: 2
Layout.fillWidth: true
Layout.columnSpan: 2
Layout.fillWidth: true
padding: 0
leftPadding: constants.paddingMedium
padding: 0
leftPadding: constants.paddingMedium
Label {
width: parent.width
text: 'pubkey' in invoice.lnprops ? invoice.lnprops.pubkey : ''
font.family: FixedFont
wrapMode: Text.Wrap
}
}
Label {
width: parent.width
text: 'pubkey' in invoice.lnprops ? invoice.lnprops.pubkey : ''
font.family: FixedFont
wrapMode: Text.Wrap
visible: invoice.invoiceType == Invoice.LightningInvoice
text: qsTr('Payment hash')
color: Material.accentColor
}
}
Label {
visible: invoice.invoiceType == Invoice.LightningInvoice
text: qsTr('Payment hash')
color: Material.accentColor
}
TextHighlightPane {
visible: invoice.invoiceType == Invoice.LightningInvoice
TextHighlightPane {
visible: invoice.invoiceType == Invoice.LightningInvoice
Layout.columnSpan: 2
Layout.fillWidth: true
Layout.columnSpan: 2
Layout.fillWidth: true
padding: 0
leftPadding: constants.paddingMedium
padding: 0
leftPadding: constants.paddingMedium
Label {
width: parent.width
text: 'payment_hash' in invoice.lnprops ? invoice.lnprops.payment_hash : ''
font.family: FixedFont
wrapMode: Text.Wrap
}
}
Label {
width: parent.width
text: 'payment_hash' in invoice.lnprops ? invoice.lnprops.payment_hash : ''
font.family: FixedFont
wrapMode: Text.Wrap
text: qsTr('Description')
visible: invoice.message
Layout.columnSpan: 2
color: Material.accentColor
}
}
Label {
text: qsTr('Description')
visible: invoice.message
Layout.columnSpan: 2
color: Material.accentColor
}
TextHighlightPane {
visible: invoice.message
TextHighlightPane {
visible: invoice.message
Layout.columnSpan: 2
Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter
Layout.columnSpan: 2
Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter
padding: 0
leftPadding: constants.paddingMedium
padding: 0
leftPadding: constants.paddingMedium
Label {
text: invoice.message
width: parent.width
font.pixelSize: constants.fontSizeXLarge
wrapMode: Text.Wrap
elide: Text.ElideRight
}
}
Label {
text: invoice.message
width: parent.width
font.pixelSize: constants.fontSizeXLarge
wrapMode: Text.Wrap
elide: Text.ElideRight
text: qsTr('Amount to send')
color: Material.accentColor
Layout.columnSpan: 2
}
}
Label {
text: qsTr('Amount to send')
color: Material.accentColor
Layout.columnSpan: 2
}
TextHighlightPane {
id: amountContainer
TextHighlightPane {
id: amountContainer
Layout.columnSpan: 2
Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter
Layout.columnSpan: 2
Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter
padding: 0
leftPadding: constants.paddingXXLarge
padding: 0
leftPadding: constants.paddingXXLarge
property bool editmode: false
property bool editmode: false
RowLayout {
id: amountLayout
width: parent.width
RowLayout {
id: amountLayout
width: parent.width
GridLayout {
visible: !amountContainer.editmode
columns: 2
Label {
visible: invoice.amount.isMax
Layout.columnSpan: 2
font.pixelSize: constants.fontSizeXLarge
font.bold: true
Layout.fillWidth: true
text: qsTr('All on-chain funds')
}
GridLayout {
visible: !amountContainer.editmode
columns: 2
Label {
visible: !invoice.amount.isMax
font.pixelSize: constants.fontSizeXLarge
font.family: FixedFont
font.bold: true
text: Config.formatSats(invoice.amount, false)
}
Label {
visible: invoice.amount.isMax
Layout.columnSpan: 2
font.pixelSize: constants.fontSizeXLarge
font.bold: true
Layout.fillWidth: true
text: qsTr('All on-chain funds')
}
Label {
visible: !invoice.amount.isMax
Layout.fillWidth: true
text: Config.baseUnit
color: Material.accentColor
font.pixelSize: constants.fontSizeXLarge
}
Label {
visible: !invoice.amount.isMax
font.pixelSize: constants.fontSizeXLarge
font.family: FixedFont
font.bold: true
text: Config.formatSats(invoice.amount, false)
}
Label {
id: fiatValue
visible: Daemon.fx.enabled && !invoice.amount.isMax
text: Daemon.fx.fiatValue(invoice.amount, false)
font.pixelSize: constants.fontSizeMedium
color: constants.mutedForeground
}
Label {
visible: !invoice.amount.isMax
Layout.fillWidth: true
text: Config.baseUnit
color: Material.accentColor
font.pixelSize: constants.fontSizeXLarge
}
Label {
visible: Daemon.fx.enabled && !invoice.amount.isMax
Layout.fillWidth: true
text: Daemon.fx.fiatCurrency
font.pixelSize: constants.fontSizeMedium
color: constants.mutedForeground
}
Label {
id: fiatValue
visible: Daemon.fx.enabled && !invoice.amount.isMax
text: Daemon.fx.fiatValue(invoice.amount, false)
font.pixelSize: constants.fontSizeMedium
color: constants.mutedForeground
}
}
Label {
visible: Daemon.fx.enabled && !invoice.amount.isMax
Layout.fillWidth: true
text: Daemon.fx.fiatCurrency
font.pixelSize: constants.fontSizeMedium
color: constants.mutedForeground
}
ToolButton {
visible: !amountContainer.editmode
icon.source: '../../icons/pen.png'
icon.color: 'transparent'
onClicked: {
amountBtc.text = invoice.amount.satsInt == 0 ? '' : Config.formatSats(invoice.amount)
amountMax.checked = invoice.amount.isMax
amountContainer.editmode = true
amountBtc.focus = true
}
}
GridLayout {
visible: amountContainer.editmode
Layout.fillWidth: true
columns: 3
BtcField {
id: amountBtc
fiatfield: amountFiat
enabled: !amountMax.checked
}
Label {
text: Config.baseUnit
color: Material.accentColor
Layout.fillWidth: amountMax.visible ? false : true
Layout.columnSpan: amountMax.visible ? 1 : 2
ToolButton {
visible: !amountContainer.editmode
icon.source: '../../icons/pen.png'
icon.color: 'transparent'
onClicked: {
amountBtc.text = invoice.amount.satsInt == 0 ? '' : Config.formatSats(invoice.amount)
amountMax.checked = invoice.amount.isMax
amountContainer.editmode = true
amountBtc.focus = true
}
}
Switch {
id: amountMax
text: qsTr('Max')
visible: _canMax
GridLayout {
visible: amountContainer.editmode
Layout.fillWidth: true
checked: invoice.amount.isMax
onCheckedChanged: {
if (activeFocus) {
invoice.amount.isMax = checked
columns: 3
BtcField {
id: amountBtc
fiatfield: amountFiat
enabled: !amountMax.checked
}
Label {
text: Config.baseUnit
color: Material.accentColor
Layout.fillWidth: amountMax.visible ? false : true
Layout.columnSpan: amountMax.visible ? 1 : 2
}
Switch {
id: amountMax
text: qsTr('Max')
visible: _canMax
Layout.fillWidth: true
checked: invoice.amount.isMax
onCheckedChanged: {
if (activeFocus) {
invoice.amount.isMax = checked
}
}
}
}
FiatField {
id: amountFiat
btcfield: amountBtc
visible: Daemon.fx.enabled && !amountMax.checked
enabled: !amountMax.checked
}
FiatField {
id: amountFiat
btcfield: amountBtc
visible: Daemon.fx.enabled && !amountMax.checked
enabled: !amountMax.checked
}
Label {
Layout.columnSpan: 2
visible: Daemon.fx.enabled && !amountMax.checked
text: Daemon.fx.fiatCurrency
color: Material.accentColor
Label {
Layout.columnSpan: 2
visible: Daemon.fx.enabled && !amountMax.checked
text: Daemon.fx.fiatCurrency
color: Material.accentColor
}
}
}
ToolButton {
visible: amountContainer.editmode
Layout.fillWidth: false
icon.source: '../../icons/confirmed.png'
icon.color: 'transparent'
onClicked: {
amountContainer.editmode = false
invoice.amount = amountMax.checked ? MAX : Config.unitsToSats(amountBtc.text)
invoiceAmountChanged()
ToolButton {
visible: amountContainer.editmode
Layout.fillWidth: false
icon.source: '../../icons/confirmed.png'
icon.color: 'transparent'
onClicked: {
amountContainer.editmode = false
invoice.amount = amountMax.checked ? MAX : Config.unitsToSats(amountBtc.text)
invoiceAmountChanged()
}
}
ToolButton {
visible: amountContainer.editmode
Layout.fillWidth: false
icon.source: '../../icons/closebutton.png'
icon.color: 'transparent'
onClicked: amountContainer.editmode = false
}
}
ToolButton {
visible: amountContainer.editmode
Layout.fillWidth: false
icon.source: '../../icons/closebutton.png'
icon.color: 'transparent'
onClicked: amountContainer.editmode = false
}
}
}
}
Item { Layout.preferredHeight: constants.paddingLarge; Layout.preferredWidth: 1 }
Item { Layout.preferredHeight: constants.paddingLarge; Layout.preferredWidth: 1 }
InfoTextArea {
Layout.columnSpan: 2
Layout.alignment: Qt.AlignHCenter
Layout.preferredWidth: parent.width * 3/4
visible: invoice.userinfo
text: invoice.userinfo
InfoTextArea {
Layout.columnSpan: 2
Layout.alignment: Qt.AlignHCenter
Layout.preferredWidth: parent.width * 3/4
visible: invoice.userinfo
text: invoice.userinfo
}
}
}
Item { Layout.fillHeight: true; Layout.preferredWidth: 1 }
FlatButton {
Layout.fillWidth: true
text: qsTr('Pay')

216
electrum/gui/qml/components/OpenChannelDialog.qml

@ -29,136 +29,144 @@ ElDialog {
anchors.fill: parent
spacing: 0
GridLayout {
id: form
Layout.fillWidth: true
Layout.leftMargin: constants.paddingLarge
Layout.rightMargin: constants.paddingLarge
Flickable {
Layout.preferredWidth: parent.width
Layout.fillHeight: true
columns: 4
leftMargin: constants.paddingLarge
rightMargin: constants.paddingLarge
Label {
text: qsTr('Node')
color: Material.accentColor
}
contentHeight: rootLayout.height
clip:true
interactive: height < contentHeight
GridLayout {
id: rootLayout
width: parent.width
// gossip
TextArea {
id: node
visible: Config.useGossip
Layout.columnSpan: 2
Layout.fillWidth: true
font.family: FixedFont
wrapMode: Text.Wrap
placeholderText: qsTr('Paste or scan node uri/pubkey')
onActiveFocusChanged: {
if (!activeFocus)
channelopener.nodeid = text
columns: 4
Label {
text: qsTr('Node')
color: Material.accentColor
}
}
RowLayout {
visible: Config.useGossip
spacing: 0
ToolButton {
icon.source: '../../icons/paste.png'
icon.height: constants.iconSizeMedium
icon.width: constants.iconSizeMedium
onClicked: {
if (channelopener.validate_nodeid(AppController.clipboardToText())) {
channelopener.nodeid = AppController.clipboardToText()
node.text = channelopener.nodeid
}
// gossip
TextArea {
id: node
visible: Config.useGossip
Layout.columnSpan: 2
Layout.fillWidth: true
font.family: FixedFont
wrapMode: Text.Wrap
placeholderText: qsTr('Paste or scan node uri/pubkey')
onActiveFocusChanged: {
if (!activeFocus)
channelopener.nodeid = text
}
}
ToolButton {
icon.source: '../../icons/qrcode.png'
icon.height: constants.iconSizeMedium
icon.width: constants.iconSizeMedium
scale: 1.2
onClicked: {
var page = app.stack.push(Qt.resolvedUrl('Scan.qml'))
page.onFound.connect(function() {
if (channelopener.validate_nodeid(page.scanData)) {
channelopener.nodeid = page.scanData
RowLayout {
visible: Config.useGossip
spacing: 0
ToolButton {
icon.source: '../../icons/paste.png'
icon.height: constants.iconSizeMedium
icon.width: constants.iconSizeMedium
onClicked: {
if (channelopener.validate_nodeid(AppController.clipboardToText())) {
channelopener.nodeid = AppController.clipboardToText()
node.text = channelopener.nodeid
}
app.stack.pop()
})
}
}
ToolButton {
icon.source: '../../icons/qrcode.png'
icon.height: constants.iconSizeMedium
icon.width: constants.iconSizeMedium
scale: 1.2
onClicked: {
var page = app.stack.push(Qt.resolvedUrl('Scan.qml'))
page.onFound.connect(function() {
if (channelopener.validate_nodeid(page.scanData)) {
channelopener.nodeid = page.scanData
node.text = channelopener.nodeid
}
app.stack.pop()
})
}
}
}
}
// trampoline
ComboBox {
visible: !Config.useGossip
Layout.columnSpan: 3
Layout.fillWidth: true
model: channelopener.trampolineNodeNames
onCurrentValueChanged: {
if (activeFocus)
channelopener.nodeid = currentValue
}
// preselect a random node
Component.onCompleted: {
if (!Config.useGossip) {
currentIndex = Math.floor(Math.random() * channelopener.trampolineNodeNames.length)
channelopener.nodeid = currentValue
// trampoline
ComboBox {
visible: !Config.useGossip
Layout.columnSpan: 3
Layout.fillWidth: true
model: channelopener.trampolineNodeNames
onCurrentValueChanged: {
if (activeFocus)
channelopener.nodeid = currentValue
}
// preselect a random node
Component.onCompleted: {
if (!Config.useGossip) {
currentIndex = Math.floor(Math.random() * channelopener.trampolineNodeNames.length)
channelopener.nodeid = currentValue
}
}
}
}
Label {
text: qsTr('Amount')
color: Material.accentColor
}
BtcField {
id: amount
fiatfield: amountFiat
Layout.preferredWidth: parent.width /3
onTextChanged: channelopener.amount = Config.unitsToSats(amount.text)
enabled: !is_max.checked
}
RowLayout {
Layout.columnSpan: 2
Layout.fillWidth: true
Label {
text: Config.baseUnit
text: qsTr('Amount')
color: Material.accentColor
}
Switch {
id: is_max
text: qsTr('Max')
onCheckedChanged: {
channelopener.amount = checked ? MAX : Config.unitsToSats(amount.text)
BtcField {
id: amount
fiatfield: amountFiat
Layout.preferredWidth: parent.width /3
onTextChanged: channelopener.amount = Config.unitsToSats(amount.text)
enabled: !is_max.checked
}
RowLayout {
Layout.columnSpan: 2
Layout.fillWidth: true
Label {
text: Config.baseUnit
color: Material.accentColor
}
Switch {
id: is_max
text: qsTr('Max')
onCheckedChanged: {
channelopener.amount = checked ? MAX : Config.unitsToSats(amount.text)
}
}
}
}
Item { width: 1; height: 1; visible: Daemon.fx.enabled }
Item { width: 1; height: 1; visible: Daemon.fx.enabled }
FiatField {
id: amountFiat
btcfield: amount
visible: Daemon.fx.enabled
Layout.preferredWidth: parent.width /3
enabled: !is_max.checked
}
FiatField {
id: amountFiat
btcfield: amount
visible: Daemon.fx.enabled
Layout.preferredWidth: parent.width /3
enabled: !is_max.checked
}
Label {
visible: Daemon.fx.enabled
text: Daemon.fx.fiatCurrency
color: Material.accentColor
Layout.fillWidth: true
}
Label {
visible: Daemon.fx.enabled
text: Daemon.fx.fiatCurrency
color: Material.accentColor
Layout.fillWidth: true
}
Item { visible: Daemon.fx.enabled ; height: 1; width: 1 }
Item { visible: Daemon.fx.enabled ; height: 1; width: 1 }
}
}
Item { Layout.fillHeight: true; Layout.preferredWidth: 1 }
FlatButton {
Layout.fillWidth: true
text: qsTr('Open Channel')

Loading…
Cancel
Save